GESP二级C++2023年12月选择题+判断题解析

大家好,我是莫小特。
这篇文章给大家带来 GESP C++ 二级 2023 年 12 月的选择题和判断题的解析。
先看第一部分:选择题。
一、选择题
1~5 题
1、以下不可以做为C++变量的是( )。
A. FiveStar
B. fiveStar
C. 5Star
D. Star5
答案:C
解析:
变量的命名规则:
(1)由数字、字母、下划线组成
(2)数字不能开头
(3)不能使用关键字
(4)区分大小写
很明显,C选项不符合。
2、在C++中,与 for(int i = 10; i < 20; i +=2) cout << i; 输出结果相同的是( )。
A. for(int i = 10; i < 19; i +=2) cout << i;
B. for(int i = 11; i < 19; i +=2) cout << i;
C. for(int i = 10; i < 21; i +=2) cout << i;
D. 以上均不对
答案:A
解析:
for 循环从 10 遍历到 19,每次加 2,输出的是:10、12、14、16、18。
A 选项,for 循环从 10 遍历到 18,每次加 2,输出的是:10、12、14、16、18。
B 选项,for 循环从 11 遍历到 18,每次加 2,输出的是:11、13、15、17不一致。
C 选项,for 循环从 10 遍历到 20,每次加 2,输出的是:10、12、14、16、18、20,不一致。
因此选 A。
3、以下C++代码实现从小到大的顺序输出能整除N的数(N的因子),例如N=18时输出1 2 3 6 9 18,横线处应填( )。
cin>>N;
for(__________________)
if(N%i==0)
cout<<i<<" ";
A. int i = 0; i < N; i++
B. int i = 1; i < N; i++
C. int i = 0; i < N+1; i++
D. int i = 1; i < N+1; i++
答案:D
解析:判断语句的内容是判断是否整除,而 N=18,要输出 N 的所有因子,遍历就需要从 1 开始到 N 结束,只有 D 选项符合!
A 选项,从 0 开始到 N-1 结束,并不正确。
B 选项,从 1 开始到 N-1 结束,也不正确。
C 选项,从 0 开始到 N 结束,除数不能为 0,不正确。
4、下面C++代码用于判断输入的整数是否为对称数,如1221、12321是对称数,但123、972不是对称数。下面对该题对应代码的说法,正确的是( )。
cin>>N;
newNum=0;
while(N){
newNum=newNum*10+N%10;
N=N/10;
}
if(newNum==N)
cout<<N<<"为对称数";
A. 代码没有语法错误,如果N为对称数,第8行将能正确输出。
B. 代码没有语法错误,但如果N为负数,将导致死循环。
C. 代码存在语法错误,程序不能被执行。
D. 代码没有语法错误,但不能达到预期目标,因为循环结束N总为0。
答案:D
解析:
仔细查看代码下来,并没有语法错误,语法错误一般是少了分号,或者是if、for、while等有括号的少了括号,这段代码并没有语法错误。
如果严格说下来,这段代码是有语法错误的,因为 N、newNum 没有定义,也没有主函数,这段代码是执行不起来的,此题出的还不够严谨。
还是根据题目意思来分析,该程序的目的是判断是否为对称数。
可以将一个数据代入进去模拟程序运行,这个方法是很常用的,建议多使用。
在 while(N) 中 N 是不断除以 10,最后变成 0 的,而 newNum 是不断获得原始数字的反转。
在最后 N 的值变成了 0,这样是无法判断,正确的做法是新定义一个变量将 N 存储下来,用 newNum 和它进行判断。
5、下面C++代码用于判断N(大于等于2的正整数)是否为质数(素数)。下面对如下代码的说法,正确的是( )。
cin>>N;
for(i=2;i<N/2;i++)
if(N%i==0){
cout<<N<<""不是质数";
break;
}
if
2023年12月GESP C++二级题解析

最低0.47元/天 解锁文章
669

被折叠的 条评论
为什么被折叠?



