2024年9月真题
一、单选题(每题2分,共30分)
正确答案:A
考察知识点:计算机基础与编程环境
解析:磁心存储元件是早期计算机中用于存储数据的部件,它和现代计算机中的内存功能类似,都是用于临时存储计算机正在运行的程序和数据,具有较快的存取速度。磁盘是外部存储设备,存取速度相对较慢;CPU 是计算机的运算和控制核心,负责执行指令和处理数据;显示器是输出设备,用于显示计算机处理的结果等信息。所以磁心存储元件相当于现代计算机的内存。答案为A。
正确答案:D
考察知识点:计算机基础与编程环境
解析:阅读源代码、单步调试和输出执行中间结果都是常见的调试手段。跟踪汇编码需要对汇编语言有深入的了解,并且在 C++ 程序调试中,通常不需要深入到汇编层面去查找问题,这是相对不太常见的调试手段。答案为D。
正确答案:D
考察知识点:基本数据类型、输入输出语句
解析:A选项是 C++ 中标准的输出语句,"Hello, GESP!"是字符串字面量,输出字符串常量会原样输出双引号里的内容。A选项没有错误。
C选项当使用多个成对的双引号将字符串括起来进行输出,输出内容为最内层双引号里内容原样进行输出。C选项没有错误。
本题的迷惑选项是B和D,分别运行这两行代码,B会输出一组整数数字,D会报编译错误。实际上这两个选项都有问题,要避免使用,字符串常量要使用双引号进行包含,单引号包含单个字符,并且双引号和单引号都必须成对使用,而不能混合使用。
鉴于D报编译错误,错误更严重,答案为D。
正确答案:B
考察知识点:基本运算
解析:在 C++ 中,表达式的运算遵循一定的优先级规则。乘法和除法的优先级高于加法和减法。对于表达式 10 - 3 * 2,先计算乘法部分 3 * 2,结果为 6;然后再计算减法部分 10 - 6,结果为 4。答案为 B。
正确答案:C
考察知识点:基本运算
解析:N为正整数10,N/3整数除法,结果为商3,N%3得余数1,相加结果为4。答案为C。
正确答案:D
考察知识点:输入输出语句、基本运算
解析:用6%2的结果0替换占位符%d。答案为D。
正确答案:D
考察知识点:变量的定义与使用
解析:变量a和b并未进行定义和指明数据类型,因此执行结果不确定。答案为D。
正确答案:B
考察知识点:控制语句结构-循环
解析:代码功能:将循环变量累加到Sum上。循环变量从0开始,到9结束,每次增加1,因此Sum值为:0+1+2+…+9=45。答案为C。
正确答案:C
考察知识点:控制语句结构-循环
解析:代码功能:循环每进行一次,N增加1,循环变量从0开始,到9结束,每次增加1,一共执行了10次。答案为C。
正确答案:D
考察知识点:控制语句结构-选择、循环
解析:循环变量从1开始,到9结束,每次增加2,因此循环变量的值为:1、3、5、7、9,这些值都满足第3行的if条件,因此执行continue,跳过本次循环,进入下次循环,即第5行代码:N+=1一次也没有执行过。for循环结束,N的值依然为0。答案为D。
正确答案:A
考察知识点:控制语句结构-选择
解析:变量P为整型变量,因此输入14+7时,只会将14赋值给变量P。P为14,第4行 if 条件成立,14%3的结果为2,14%7的结果为0,正确的输出为A选项。答案为A。
正确答案:D
考察知识点:控制语句结构-循环、基本运算
解析:i++,自增运算符++,后加加,先使用再自增1。
for (i = 0, s = 0; i < 20; i++, count++) 中,初始化了两个变量 i = 0 和 s = 0 ;循环条件 i<20;每次循环,将 i 累计到 s 上,i 自增1;执行i++,count++;再判断循环条件。
因此 i 的变化为:0、2、4、6、8、10、12、14、16、18。执行结果 s为90,count为10。答案为D。
正确答案:C
考察知识点:控制语句结构-循环
解析:当N不为0,执行while循环,rc++,N/=10(去掉最后一个数字),N如果不为0,继续执行while循环,直到N为0。while循环执行完毕,rc保存了循环执行的次数,也即数字的位数,N为0。执行L11标记的代码会输出错我。要在执行while循环之前要保存输入的整数,变量N0的作用即为此,将L11标记代码中的N修改为N0才能正确输出。答案为C。
正确答案:D
考察知识点:控制语句结构-循环
解析:A选项:百位加起来为:2+4+3+1,结果为10,表述正确。
B选项:第6行代码 M=M/100%10,先除100去掉数据后两位,再对10取余得当前数个位,即得原数百位上的数字,输入的数据不论是多少位都能够正确执行,只不过位数低于3位等同于百位上数字为0。表述正确。
C选项:M = (M % 1000 / 100); ,先对1000取余得原数的后三位数字,再除100去掉数据后两位,效果得原数百位上的数字,能实现题目要求。表述正确。
D选项:M = (M % 100 / 10);,先对100取余得原数的后两位数字,再除10去掉数据后一位,效果得原数十位上的数字。不能实现题目要求。表述错误。
答案为D。
正确答案:B
考察知识点:控制语句结构-循环、选择
解析:N、i+1、i-1都为整数,因此N/(i+1)、N/(i-1)都为整数除法,会丢失数据,据此并不能判断兄弟数。
比如说N为7,N/3=2,2和3为X、X+1的形式,但7不等于3*2,其并非为一个兄弟数。
而另外两个填入都可以完成功能。答案为B。
二、判断题(每题2分,共20分)
正确答案:正确
考察知识点:计算机基础与编程环境
解析:C++ 支持面向对象编程范式,同时它相对机器语言和汇编语言等低级语言来说,属于高级语言,具有更丰富的抽象和更便捷的编程特性。答案正确。
正确答案:错误
考察知识点:基本运算
解析:在 C++ 中,10/4 是整数除法,结果为 2;10%4 是取余运算,结果也是 2,但 / 是除法运算符,% 是取余运算符,它们的运算规则和语义完全不同,不能相互替换。答案错误。
正确答案:错误
考察知识点:输入输出语句
解析:scanf(“%d”, &N) 能接收输入的正整数、负整数和 0,但如果输入包含字母或带小数点等非整数内容,会导致输入失败,程序后续行为可能异常,甚至崩溃,但不是无法执行,而是执行结果不符合预期。答案错误。
正确答案:错误
考察知识点:控制语句结构-循环
解析:代码中 Sum 没有初始化,在 for 循环中使用未初始化的变量是错误的,程序不能正确执行,也就不会输出 45(如果 Sum 初始化为 0,该循环计算的是 0 到 9 的累加和,结果为 45)。答案错误。
正确答案:错误
考察知识点:控制语句结构-循环
解析:在 C++ 中,int 类型变量不能存储小数,20.24 赋值给 int 类型的 X 时,会进行截断,X 的值为 20。逗号表达式 (X++, X + 1) 的值是 X + 1 的值,先执行 X++ 后 X 变为 21,所以 (X++, X + 1) 的值为 22,22 / 10 结果为 2(整数除法),而不是 2.124。答案正确。
正确答案:错误
考察知识点:控制语句结构-循环
解析:在 for (int i = 1; i < 10; i += 3) 循环中,i 初始值为 1,每次循环增加 3,依次取值为 1、4、7,当 i = 7 时,执行循环体输出 7,然后 i 变为 10,此时 i < 10 不成立,循环结束,最后一次输出是 7,不是 10。答案错误。
正确答案:错误
考察知识点:控制语句结构-分支、循环
解析:break 语句通常用于 switch 语句、for 循环、while 循环和 do - while 循环中,用于跳出当前循环体或 switch 结构,并不通常与 if 语句配合使用。答案错误。
正确答案:正确
考察知识点:变量的定义与使用
解析:在 C++ 中,变量名命名规则:只能由字母、数字和下划线组成;不能以数字开头;不能和关键字重名。不可以将变量命名为 five - star,因为其中出现了 -(减号)符号。答案正确。
正确答案:正确
考察知识点:基本数据类型
解析:整型、实数型、字符型,布尔型虽然是不同数据类型,但它们之前都可以比较大小。
其中字符型和布尔型可以转成对应的整型数据进行比较大小。字符型有对应的ASCII,布尔型true对应整数1,false对应整数0。答案正确。
正确答案:错误
考察知识点:基本运算
解析:在 C++ 中,表达式 (a < b < c) 按照从左到右的顺序计算。先计算 a < b,即 5 < 4,结果为 false(值为 0),然后计算 0 < c(c = 3),结果为 true(值为 1),所以该表达式的值为逻辑真,不是逻辑假。答案错误。
三、编程题(每题25分,共50分)
本题考察变量的定义与使用、基本运算、输入输出语句。
#include<iostream>
using namespace std;
int main() {
int n, a, b;
cin>>n>>a>>b;
cout<<n/(a+b);
return 0;
}
本题考察 控制语句结构-循环、基本运算等。
#include<iostream>
using namespace std;
int main() {
int n, a, cnt=0;
cin>>n;
while(n--){
cin>>a;
//美丽数字当且仅当该正整数是9的倍数但不是8的倍数
if(a%9==0 && a%8!=0) cnt++;
}
cout<<cnt<<endl;
return 0;
}