一、单选题(每题 2 分,共 30 分)
第 1 题 C++表达式 (3 - 2) * 3 + 5 的值是( )。
答案:B
解析:略
答案:D
解析:略
答案:D
解析:

答案:A
解析:粗看感觉A,B都对,主要选项A 等于号后面多了个空格,因为代码中的双引号

答案:B
解析:参考第4题,主要是仔细看

答案:A
解析:分支结构,选择符合要求的语句执行,21能被3整除,所以执行第4行

答案:B
解析:从-10到9,注意中间还有0

答案:D
解析:
分析:
-
初始化变量
tnt = 0
。 -
for
循环从i = 0
开始,i
每次递增 1,直到i = 9
(因为i < 10
)。 -
在每次循环中,检查
i % 3
和i % 7
的结果是否都不为零。i % 3
计算i
除以 3 的余数。i % 7
计算i
除以 7 的余数。- 如果
i % 3
不为零且i % 7
不为零,则执行tnt += i;
。
逐步计算:
- 当
i = 0
时,i % 3 = 0
,条件不满足,不执行加法。 - 当
i = 1
时,i % 3 = 1
,i % 7 = 1
,条件满足,tnt += 1
,tnt = 1
。 - 当
i = 2
时,i % 3 = 2
,i % 7 = 2
,条件满足,tnt += 2
,tnt = 3
。 - 当
i = 3
时,i % 3 = 0
,条件不满足,不执行加法。 - 当
i = 4
时,i % 3 = 1
,i % 7 = 4
,条件满足,tnt += 4
,tnt = 7
。 - 当
i = 5
时,i % 3 = 2
,i % 7 = 5
,条件满足,tnt += 5
,tnt = 12
。 - 当
i = 6
时,i % 3 = 0
,条件不满足,不执行加法。 - 当
i = 7
时,i % 7 = 0
,条件不满足,不执行加法。 - 当
i = 8
时,i % 3 = 2
,i % 7 = 1
,条件满足,tnt += 8
,tnt = 20
。 - 当
i = 9
时,i % 3 = 0
,条件不满足,不执行加法。

答案:B
解析:
分析:
- 初始化变量
N = 10
。 while(N)
循环在N
不为零的情况下持续执行。- 每次循环中,
N
减 1,然后检查N % 3 == 0
。N % 3
计算N
除以 3 的余数。- 如果
N % 3 == 0
,则输出N
的值,后跟#
。
逐步计算:
- 初始
N = 10
N -= 1
->N = 9
N % 3 == 0
(因为9 % 3 == 0
),输出9#
N = 9
N -= 1
->N = 8
N % 3 != 0
(因为8 % 3 == 2
),不输出。
N = 8
N -= 1
->N = 7
N % 3 != 0
(因为7 % 3 == 1
),不输出。
N = 7
N -= 1
->N = 6
N % 3 == 0
(因为6 % 3 == 0
),输出6#
N = 6
N -= 1
->N = 5
N % 3 != 0
(因为5 % 3 == 2
),不输出。
N = 5
N -= 1
->N = 4
N % 3 != 0
(因为4 % 3 == 1
),不输出。
N = 4
N -= 1
->N = 3
N % 3 == 0
(因为3 % 3 == 0
),输出3#
N = 3
N -= 1
->N = 2
N % 3 != 0
(因为2 % 3 == 2
),不输出。
N = 2
N -= 1
->N = 1
N % 3 != 0
(因为1 % 3 == 1
),不输出。
N = 1
N -= 1
->N = 0
N % 3 == 0
(因为0 % 3 == 0
),输出0#
N = 0
- 循环结束(因为
N = 0
,条件while(N)
不再满足)。
- 循环结束(因为

答案:B
解析:根据题目横线上应该填写,N是否能被i整除,质数是只能被1和它本身整除的数,如果cnt是2,那么就是质数,否则就不是质数
答案:D
解析:
- A.
x=(3.16);
虽然有括号,但没有语法错误,这将把 3.16 隐式转换为整数 3,然后赋值给x
。 - B.
x=3.16;
将 3.16 隐式转换为整数 3,然后赋值给x
。 - C.
x=int(3.16);
先将 3.16 显式转换为整数 3,再赋值给x
。
答案:B
解析:略
答案:C
解析:略
答案:C
解析:略
答案:C
解析:略
二、判断题(每题 2 分,共 20 分)
答案:对
解析:略
答案:对
解析:略
答案:错
解析:
在 C++ 中,scanf()
函数的参数必须是格式化字符串,用于指定如何读取输入的数据。虽然格式化字符串通常是一个字符串型字面量,但这个字符串不是用来提示输入的,而是用来指定如何解释输入数据。例如,"%d"
用于读取一个整数,"%f"
用于读取一个浮点数。
另外,scanf()
的功能不是提示输入,而是从标准输入中读取数据并将其存储到指定的变量中。提示输入通常是通过 printf()
或 cout
实现的,而不是 scanf()
。
因此,正确的说法应该是:scanf()
函数的参数必须包含一个格式化字符串,用于指定如何读取输入的数据。scanf()
的功能是从标准输入读取数据,并将其存储到相应的变量中,而不是提示输入。
答案:对
解析:略
答案:错
解析:while可能是死循环,而for循环也可能是死循环。
#include <iostream>int main() {for (;;) {std::cout << "This is an infinite loop!" << std::endl;}return 0;
}
答案:错
解析:
在 C++ 中,break
语句可以用于提前终止当前层次的循环,并且它不仅适用于 while
循环,还同样适用于 for
循环。
正确的解释:
break
语句用于立即退出包含它的循环,不论该循环是for
循环、while
循环还是do-while
循环。- 一旦执行了
break
语句,程序会跳出当前循环,继续执行循环后面的代码。
答案:错
解释:
- 在 C++ 中,
3
和3.0
是不同的数据类型。3
是一个整数(int
类型),而3.0
是一个浮点数(double
类型)。 - 虽然在数值上它们是相等的,但由于它们的数据类型不同,所占用的存储空间也不同。
存储空间:
int
类型通常占用 4个字节(32位),但这可能会因平台或编译器的不同而有所不同。double
类型通常占用 8个字节(64位),用来表示更大的范围和更精确的数值。
因此,虽然 3
和 3.0
在值上相等,但它们的数据类型和所占用的存储空间是不同的。
答案:对
解析:

答案:对
解析:略
答案:对
解析:略
三、编程题(每题 25 分,共 50 分)
编程题 1


#include<bits/stdc++.h>
using namespace std;
int main(){int m;cin >> m;cout << m / 13 << endl;cout << m % 13 << endl;return 0;
}
编程题 2

#include<bits/stdc++.h>
using namespace std;
int main(){int a;cin >> a;for (int i = 1; i <= a; ++i) {if (a % i == 0) {cout << i << endl;}}return 0;
}