2024年10月8日,诺贝尔物理学奖“意外地”颁给了两位计算机科学家约翰·霍普菲尔德(John J. Hopfield)和杰弗里·辛顿(Geoffrey E. Hinton)。这两位科学家的主要研究方向是( )。
C: 人工智能。霍普菲尔德网络+辛顿深度学习
计算机系统中存储的基本单位用 B 来表示,它代表的是( ),比如某个照片大小为 MB。
A: Byte。B=Byte字节
C++ 语句 cout << (3 + 3 % 3 * 2 - 1) 执行后输出的值是( )。
D: 2。3+3%32-1=3+02-1=3-1=2
下面 C++ 代码执行后其输出是( )。
01for (int i=0; i<10; i++) 02 printf("%d",i);
B: 0123456789。%d不补宽度,直接输出0-9
下面 C++ 代码的相关说法中,正确的是( )。
01int tnt; 02for (int i=0; i<10; i++) 03 tnt += i; 04cout << tnt;
B: 1-10和不含10(实际45不是1-10和,UB但常见值45)。题说"相当于"问对错,实际输出45不等于1-10=55(不含)也不等于1-10=55(含)但都是45. 答B
下面 C++ 代码执行后输出是( )。
01int i; 02for (i=1; i<10; i++) 03 if (i % 2) 04 continue; 05 else 06 break; 07cout << i;
B: 2。i=1%2=1 continue,i=2%2=0 break,i=2输出
下面 C++ 代码执行后的输出是( )。
01for (i=0; i<10; i++){ 02 if (i % 3) 03 continue; 04 printf("0#"); 05} 06if(i>=10) 07 printf("1#");
B: 0#×6+1#。i=0,3,6,9,12,15,18,21,24,27,33,...,96共34个0#,最后"1#"
下面 C++ 代码用于输出 0-100 之间(包含 100)能被 7 整除但不能被 3 整除的数,横线处不能填入的代码是( )。
01for (i=0; i<100; i++) 02 if(____________) 03 cout << i << endl;
C: i%7&&i%3。i%7非0排除(排除非7倍数),i%3非0排除(排除3倍数)→ 排除非7倍数且排除3倍数=7倍数且非3倍数,正确。但题问"不能填"实际C条件双"非0"也错(0也是0)→ 输出0(0%7=0,0%3=0)错. 选C
下面 C++ 代码用于求正整数各位数字之和,横线处不应填入的代码是( )。
01int tnt, N; 02printf("请输入正整数:"); 03cin >> N; 04tnt = 0; 05while (N != 0){ 06 ____________ 07 N /= 10; 08} 09cout <<tnt;
(题问"不应填",需看选项但只看到部分. 数位和必填tnt+=N%10和N/=10,不应填如tnt=N等)
下图的 C++ 程序执行后的输出是( )。
01for (i=0; i<5; i++) 02 for (j=0; j<i; j++) 03 cout <<j;
C: 001012012301234。i=0无j,i=1输出0,i=2输出0,1,i=3输出0,1,2,i=4输出0,1,2,3
下面 C++ 代码用于实现图示的九九乘法表。相关说法错误的是( )。
01/* 021*1=1 031*2=2 2*2=4 041*3=3 2*3=6 3*3=9 051*4=4 2*4=8 3*4=12 4*4=16 061*5=5 2*5=10 3*5=15 4*5=20 5*5=25 071*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 081*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 091*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 101*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 11*/ 12for (int Hang=1; Hang<10; Hang++){ 13 for (int Lie=1; Lie<Hang+1; Lie++){ 14 if (Lie * Hang > 9) 15 printf("%d*%d=%d ", Lie, Hang, Lie*Hang); 16 else 17 printf("%d*%d=%d ", Lie, Hang, Lie*Hang); 18 // L2 19 } 20 printf("\n"); // L1 21}
C: LieHang>9 改>=10错。9是1位数1,10是2位数1和0,在j=1时Lie=11=1<10 9>=10错(9应换行不换),10>=10应换行不换(两位数同行)
在数学中 表示 的阶乘,即 到 的乘积,如 。下面的 C++ 用于求 的阶乘之和,如 为 ,则是 。下面代码段补充选项后用于实现上述功能,其中不能实现阶乘和的选项是( )。
01int N; 02cin >> N; 03int tnt=0, nowNum = 1; //tnt保存求和之值,当前N的阶乘 04for (int i=1; i < N + 1; i++){ 05 ____________ // 基于上一个计算出当前数的阶乘 06 ____________ // 从1到i每个数阶乘之和 07} 08cout << tnt;
D: nowNum=nowNum+i;tnt*=nowNum。nowNum应是累乘nowNum*=i,tnt累加tnt+=nowNum
下面 C++ 代码用于输出 和 之间(可以包括 和 )的孪生素数。孪生素数是指间隔为 的两个数均为素数,如 和 分别是素数,且间隔为 。isPrime(N) 用于判断 是否为素数的函数。为完成上述功能,横线处应填上的代码是( )。
01int N,M; 02//本题假设N小于M 03cin >> N >> M; 04for (int i = N; i < ____________; i++) 05 if (isPrime(i) && isPrime(i + 2)) 06 printf("%d %d\n",i, i + 2);
A: M-2。i从N到M-2,查i和i+2(M-2和M)都< M+1不会越界
下面 C++ 代码实现输出如下图形,横线应填入的代码是( )。
高度:5
*
***
*****
*******
*********
01int height; 02cout << "高度: "; 03//获取用户输入的高度 04cin >> height; 05for (i=0; i<height; i++){ 06 //打印每行前面的空格 07 for (j = 0; j < ____________; j++) 08 cout << " "; 09 //打印每行的星号 10 for (k = 0; k < ____________; k++) 11 cout << "*"; 12 //输出一行后,换行 13 cout << endl; 14}
D: height-i-1空格, 2i+1星。5行金字塔i=0,1,2,3,4,空格4,3,2,1,0,星1,3,5,7,9
下面 C++ 代码执行后的输出是 30,则横线处不能填入( )。
01int a=10,b=20,c=30; 02cout << ____________ << endl; 03cout << endl;
C: sqrt(60)≈7.7非30。max/min/(a+b+c)/2均=30
在 Windows 的资源管理器中为已有文件 A 建立副本的操作是 Ctrl+C,然后 Ctrl+V。
正确。Windows复制文件Ctrl+C→Ctrl+V建副本
在 C++ 代码中,假设 为正整数,则 cout << (N - N / 10 * 10) 将获得 的个位数。
正确。N-N/10*10=N%10=个位数
在 C++ 语句 cout << (10 <= N <= 12) 中,假设 为 12,则其输出为 1。
正确。N=12,(10<=12)<=12→(1)<=12=1(true)
如果 C++ 表达式 int(sqrt(N))*int(sqrt(N)) == N 的值为 True,则说明 为完全平方数,如 4、9、25 等。
正确。int(sqrt(N))²==N判完全平方
下面 C++ 代码执行后将输出 2*3=6。
01int a = 2, b = 3; 02printf("%%a*%%b=%d",a*b);
错。printf("%%a*%%b=%d",6)→"%%a*%%b=6",不是"2*3=6"
以下 C++ 代码因为循环变量为 _ 将导致错误,即 _ 不能作为变量名称,不符合 C++ 变量命名规范。
01for (int _ = 0; _ < 10; _++) 02 continue;
错。_可作C++变量名(下划线开头合法)
下面 C++ 代码执行后因为有 break,将输出 0。
01int i; 02for (i = 0; i < 10; i++){ 03 continue; 04 break; 05} 06cout << i;
错。continue后break不达,实际输出i=0不是0
下面的 C++ 代码执行后将输出 18 行 "OK"。
01int i,j; 02for (i = 8; i > 2; i-=2) 03 for (j =0; j < i; j++) 04 printf("OK\n");
正确。i=8,6,4各j<i:8+6+4=18次OK
将下面 C++ 代码中的 i = 1 调整为 i = 0 的输出结果相同。
01int i; 02int cnt = 0; 03for (i = 1; i < 5; i++) 04 if(i%2) cnt += 1; 05cout << cnt;
正确。改i初值从1到0,奇数位不变,cnt=2同
下面两段 C++ 代码都是用于求 1-10 的和,其运行结果相同。通常说来,for 循环都可以用 while 循环实现。
01int tnt; 02int i; 03 04tnt = 0; 05for (i = 1; i < 10 + 1; i++) 06 tnt += i; 07cout << tnt << endl;
01int tnt; 02int i; 03 04tnt = 0; 05i = 1; 06while (i <= 10){ 07 tnt += i; 08 i += 1; 09} 10cout << tnt << endl;
正确。for和while都含循环条件/体/迭代可互转,两段结果相同