#G1183. 客观题
客观题
一、单选题(每题 2 分,共 30 分)
- 年春节有两件轰动全球的事件,一个是 DeepSeek 横空出世,另一个是贺岁片《哪吒 2》票房惊人,入了全球票房榜。下面关于 DeepSeek 与《哪吒 2》的描述成立的是( )。
{{ select(1) }}
- 《哪吒 2》是一款新型操作系统
- DeepSeek 是深海钻探软件
- 《哪吒 2》可以生成新的软件
- DeepSeek 可以根据《哪吒 2》的场景生成剧情脚本
- 对整型变量 ,如果它能够同时被 和 整除,则输出
N 是含有至少两个质因数
。如果用流程图来描述处理过程,则输出语句应该在哪种图形框中?( )
{{ select(2) }}
- 圆形框
- 椭圆形框
- 平行四边形框
- 菱形框
-
下面 C++ 代码执行,其输出是( )。
int a = 3, b = 4; a == b; b == a; cout << a << ' ' << b << endl;
{{ select(3) }}
3 4
3 3
4 4
4 3
-
求三色彩球的颜色。有数量无限的红(Red)绿(Green)蓝(Blue)三种彩球排成一行,每组先为 个红色球,随后 个绿色,最后为 个蓝色。每个球都有编号,从左到右依次为 。输入整数代表编号,求该编号球的颜色。下面是 C++ 代码是实现,正确说法是( )。
int N, remainder; cin >> N; remainder = N % 10; // remainder变量保存余数 if ((1 <= remainder) && (remainder<= 5)) cout << "Red"; else if ((6 <= remainder) && (remainder <= 8)) cout << "Green"; else if ((remainder == 9) || (remainder == 0)) cout << "Blue";
{{ select(4) }}
- 将
else if ((remainder == 9) || (remainder == 0))
修改为else
效果相同 - 将
((1 <= remainder) && (remainder<= 5))
修改为(remainder <= 5)
效果相同 else if ((6 <= remainder) && (remainder <= 8))
写法错误,应修改为else if (6 <= remainder <= 8)
- 根据题意
remainder = N % 10
应修改为remainder = N / 10
-
下面 C++ 代码执行后其输出是( )。
int tnt = 0; for (int i = 0; i < 10; i++) if (i % 3) tnt += 1; else tnt += 2; cout << tnt;
{{ select(5) }}
-
下面 C++ 代码执行后输出是( )。
int i; for (i = 10; i > 0; i -= 2) break; cout << i;
{{ select(6) }}
- 因为循环执行时会执行
break
语句而终止循环,所以i
的值不确定
-
下面 C++ 代码执行后输出是( )。
int i; for (i = 0; i < 10; i++) { if (i % 3 == 0) continue; cout << "0" << "#"; } if (i >= 10) cout << "1" << "#";
{{ select(7) }}
0#0#0#0#0#0#
0#0#0#0#0#0#0#1#
0#0#0#0#1#
0#0#0#0#0#0#1#
-
下面 C++ 代码执行后的输出是( )。
int i,j; for (i = 0; i < 5; i++) for (j = i; j > 0; j -= 1) printf("%d-", j);
{{ select(8) }}
1-2-1-3-2-1-4-3-2-1-
1-2-1-3-2-1-4-3-2-1
0-0-1-0-1-2-0-1-2-3-
0-0-1-0-1-2-0-1-2-3
-
下面 C++ 代码执行后,将输出能被 整除且除以 余数为 的数。下列选项不能实现的是( )。
for (int i = 0; i < 100; i++) if _______________________ cout << i << " ";
{{ select(9) }}
((i % 2 == 0) && (i % 7 == 2))
((!(i % 2)) && (i % 7 == 2))
((!(i % 2)) && (!(i % 7)))
((i % 2 != 1) && (i % 7 == 2))
-
下面 C++ 代码用于求 到 之间正整数中含有 的数的个数,比如 和 都是符合条件的数。则前后两处横线应填入代码分别是( )。
int i, j; int cnt = 0, N; cout << "请输入正整数N:"; cin >> N; for (i = 1; (j=i) < N; i++) while (j != 0) if (j % 10 == 3){ cnt +=1; __________; } else __________; cout << cnt << " ";
{{ select(10) }}
-
continue j /= 10
-
break j /= 10
-
continue j %= 10
-
break j %= 10
-
在数学中 表示 的阶乘,即 到 的乘积,如 ,且 。下面的两段 C++ 代码用于求 到 的阶乘之和,如 为 ,则结果是 ( 的值)。选项中的说法正确的是( )。
// 实现1 int i, N; cin >> N; int tnt = 0, last = 1; for (i = 1; i < N + 1; i++) { last *= i; tnt += last; } cout << tnt << endl;
// 实现2 int i, N; cin >> N; int tnt = 0, tmp; for (i = 1; i < N + 1; i++) { tmp = 1; for (int j = 1; j < i + 1; j++) tmp *= j; tnt += tmp; } cout << tnt << endl;
{{ select(11) }}
- 虽然实现 的代码短小,但效率并不高
- 实现 的代码效率更高,且更易于理解
- 实现 因为应用了前项计算结果,计算量更小,因此效率高
- 两种实现,效率几乎一致
-
哥德巴赫猜想是指大于 的偶数都可以分解为两个质数之和,下面的代码用于验证 之内的偶数能否分解为两个质数之和。下面 C++ 代码中假设
isPrime()
是已经定义好用于判断正整数 是否为质数,返回bool
值。对该段代码,错误的说法是( )。for (i = 4; i < 1000; i += 2) for (j = 2; j < i; j++) if (isPrime(j) && isPrime(i-j)) { printf("%d=%d+%d\n", i, j, i-j); break; }
{{ select(12) }}
- 将代码
isPrime(j) && isPrime(i-j)
修改为isPrime(j) == true && isPrime(i-j) == true
效果相同 - 代码执行后,输出的一对质数,一定是小的数在前
- 即便将外层循环中 的上界 修改为很大的整数,也不能说从数学上证明了哥德巴赫猜想
- 根据题意,
break
语句应该移到if
语句块之外
-
已知 C++ 代码和执行后的期望输出如下,相关说法正确的是( )。
int i, j; int last, N; cout << "请输入层数N:"; cin >> N; last = 1; for (i = 1; i < N; i++) { for (j = 1; j < i + 1; j++) { // L1 if (last > 9) last = 1; cout << last << " "; last += 1; } printf("\n"); }
请输入层数N:10 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9
{{ select(13) }}
- 倒数第二行的
printf("\n")
有错,应该修改为cout << endl;
,printf()
函数不能输出换行 last += 1
修改为last = last + 1
执行效果相同- 代码中 标记行中的
j < i + 1
应修改为j < i
- 外层
for
循环前的last = 1
修改为last = 0
执行效果相同
-
在 C++ 中,( )最适合填入横线处连续 次正确生成 到 之间的随机整数?
for (int i = 0; i < 5; i++) __________________;
{{ select(14) }}
rand() % 11
rand() % 10
rand() % 10 + 1
rand() % 9 + 1
- 在 C++ 中,如果 和 均为
float
类型的变量,那么二者如果相差足够小(比如 ),就可以视作相等。比如 和 就可以视作相等。下列哪个表达式能用来正确判断 “a等于b”( )。
{{ select(15) }}
((b-a) < 0.000001)
((b-a) <= 0.000001)
(abs(b-a) <= 0.000001)
(sqrt(b-a) <= 0.000001)
二、判断题(每题 2 分,共 20 分)
- C++、Python 都是高级编程语言,它们的每条语句最终都要通过机器指令来完成。( )
{{ select(16) }}
- 正确
- 错误
- 在 C++ 代码中,假设 为正整数,则
N - N / 10 * 10
与N % 10
都将获得 的个位数。( )
{{ select(17) }}
- 正确
- 错误
- C++ 语句
cout << ((10 <= N <= 12)? "true":"false")
中,假设整型变量 为 ,则其输出为true
。原因是执行10 <= N
后其值为true
,true
与 相比仍然是true
。( )
{{ select(18) }}
- 正确
- 错误
- C++ 表达式
(sqrt(N) * sqrt(N)) == N
中的 如果为正整数,则表达式的值为true
,相当于开平方后平方是本身。( )
{{ select(19) }}
- 正确
- 错误
-
下面 C++ 执行后将输出
3*2=6
。( )int a = 2, b = 3; a = a - b; b = a + b; a = b - a; printf("%d*%d=%d\n", a, b, a*b);
{{ select(20) }}
- 正确
- 错误
-
下面 C++ 代码执行后将输出 。( )
int i; for (i = 0; i < 10; i++) continue; cout << i << endl;
{{ select(21) }}
- 正确
- 错误
-
下面 C++ 代码执行后将输出 。( )
int i; for (i = 1; i < 10; i++) { break; continue; } cout << i << endl;
{{ select(22) }}
- 正确
- 错误
-
下面的 C++ 代码执行后将输出 行
OK
。( )for (int i = 0; i < 5; i++) for(int j = 0; j < i; j++) printf("OK\n");
{{ select(23) }}
- 正确
- 错误
-
将下面 C++ 代码中的
for
循环中的i = 1
调整为i = 0
的输出结果相同。( )int tnt = 0; for (int i = 1; i < 5; i++) // i = 0 tnt += i; cout << tnt;
{{ select(24) }}
- 正确
- 错误
-
下面 C++ 代码执行后将输出
0123
。( )for (i = 0; i < 5; i++) for (i = 0; i < i; i++) continue; printf("%d\n", i);
{{ select(25) }}
- 正确
- 错误