2024年9月真题
一、单选题(每题2分,共30分)
正确答案:A
考察知识点:计算机存储
解析:磁心存储元件是早期计算机中用于存储数据的部件,它和现代计算机中的内存功能类似,都是用于临时存储计算机正在运行的程序和数据,具有较快的存取速度。磁盘是外部存储设备,存取速度相对较慢;CPU 是计算机的运算和控制核心,负责执行指令和处理数据;显示器是输出设备,用于显示计算机处理的结果等信息。所以磁心存储元件相当于现代计算机的内存。答案为A。
正确答案:C
考察知识点:计算机网络
解析:在 IPv4 地址中,A 类地址的网络号规定第一个字节的第一位为 0,剩下的 7 位用来表示网络号。那么 A 类地址网络号的取值范围是 00000000 - 01111110(0 - 126),因为全 0 和全 1 有特殊用途(全 0 表示本网络,全 1 表示所有网络),所以可用于表示 A 类地址网络的数量是 126 个。答案为C。
正确答案:A
考察知识点:变量的定义与使用
解析:变量的命名规则:1、只能包含字母、数字、下划线;2、不能以数字开头;3、不能和关键字重名。A 选项中含有特殊符号,答案为A。
正确答案:C
考察知识点:控制语句结构-循环
解析:题干中for循环 循环变量从1开始,到9结束,i++,即i每次增加1。
选项A、选项B、选项D 循环变量从0开始,表述错误。答案为 C。
正确答案:C
考察知识点:基本运算
解析:除法运算符/:在 C++ 中,两个整数相除,结果为整数,会舍去小数部分。例如5 / 2,5除以2商为2.5,但因为是两个整数相除,结果取整为2。
取余运算符%:a % b表示a除以b的余数,5 % 3即5除以3的余数,结果为2。答案为C。
正确答案:D
考察知识点:基本数据类型
解析:当a、b都为整型,输出1;当a为整型,b为浮点型,输出1.14;当a为字符型,b为整型,输出47。也即选项A、选项B、选项C都是可能的输出结果。答案为D。
正确答案:A
考察知识点:基本运算
解析:在 C++ 中,取余运算符%的作用是求两个数相除的余数。对于一个正整数N,用N除以10取余,得到的结果就是N的个位数。答案为A。
正确答案:A
考察知识点:多层分支/循环结构
解析:定义了一个整型变量i,然后进入for循环,初始化i = 0,判断条件为i < 10,每次循环后i++。
在循环体中,首先执行if (i % 2),当i = 0时,0 % 2 = 0,条件if (i % 2)不成立,继续执行循环体中的下一条语句,即cout << “0#”;,此时会输出0#。
当i变为1时,1 % 2 = 1,条件if (i % 2)成立,执行break语句,break语句会立即终止当前所在的循环,所以for循环结束。
接着执行循环后面的if语句if(i == 10),此时i = 1,条件不成立,不会执行cout << “1#”;。
综上,代码执行后的输出是0#,答案选 A。
正确答案:C
考察知识点:控制语句结构-选择、逻辑运算符
解析:输入1和0,整型变量a值为1,整型变量b值为0。
逻辑运算符&&运算规则,一假为假,a为1为真,b为0为假,则a&&b为假,第3行条件不成立;往下执行;
逻辑运算符||运算规则,一真为真,a为1为真,b为0为假,则a||b为真,逻辑运算符!运算规则,非真为假,非假为真,!(a||b)为假,第5行条件不成立;往下执行;
第7行条件成立,执行第8行,输出3。答案为C。
正确答案:B
考察知识点:控制语句结构-循环
解析:for循环 循环变量从1开始,i<5 到4结束,i+=2 每循环一次增加2。则循环变量值为:1、3,循环次数为2。答案为B。
正确答案:C
考察知识点:多层分支/循环结构
解析:外层循环控制行,从1开始,到lineNum结束,每次增加1。内层循环 循环变量 也为输出的内容,从输出结果可知:第 i 行从 i 开始输出,一共输出 i 个数,只有C符合要求。答案为C。
正确答案:A
考察知识点:控制语句结构-循环
解析:要得到一个整数的逆序数,核心思路是每次取出原数的个位数字,将其添加到结果数的末尾,然后去掉原数已经处理过的个位数字,重复这个过程,直到原数变为 0。
A选项:rst = rst * 10 + N % 10:N % 10可以获取N的个位数,将其添加到rst的末尾(通过rst * 10将rst当前的值扩大 10 倍,为添加个位数腾出位置)。
N = N / 10:去掉N的个位数字,例如N为 123 时,执行后N变为 12。
该选项的代码符合获取逆序数的算法逻辑,是正确的。答案为A。
正确答案:A
考察知识点:多层分支/循环结构
解析:选项 A:while (1)在 C++ 中是合法的写法,它表示一个无限循环,通常需要在循环内部通过break等语句来控制循环的结束,所以该选项说法错误。答案为A。
正确答案:B
考察知识点:多层分支/循环结构
解析:质数是指仅能被1和它本身整除的正整数。如果可以在2到num-1之间再找到可以整除的数,则可以证明不是质数。而整除意味着余数为0。答案为B。
正确答案:A
考察知识点:多层分支/循环结构
解析:删除break语句后,当M的某一位是7时,Flag会被置为true,但循环不会立即结束,而是继续执行M /= 10,直到M为0,不会导致死循环。Flag的值决定了最后的输出结果,删除break语句,并不会影响Flag的赋值,因此不会导致结果错误,只是求解的效率会降低。答案为A。
二、判断题(每题2分,共20分)
正确答案:正确
考察知识点:计算机基础与编程环境
解析:C++ 支持面向对象编程范式,同时它相对机器语言和汇编语言等低级语言来说,属于高级语言,具有更丰富的抽象和更便捷的编程特性。答案正确。
正确答案:错误
考察知识点:表达式、基本运算
解析:在 C++ 中,(3, 4, 5)是一个逗号表达式,逗号表达式的值是最后一个表达式的值,即 5。cout << (3, 4, 5)只会输出 5,而不是3 4 5。答案错误。
正确答案:正确
考察知识点:表达式、基本运算
解析:在 C++ 中,取余运算从左到右进行。先计算12 % 10,结果为 2;再计算2 % 10,结果为 2。答案正确。
正确答案:错误
考察知识点:常用数学函数
解析:rand()函数用于生成伪随机数,每次调用rand()生成的随机数是不确定的,不能保证第二个输出值较大。答案错误。
正确答案:错误
考察知识点:数据类型的转换
解析:字符’1’对应的 ASCII 码值是 49,将字符’1’赋值给int类型变量ch,再使用cout << int(ch);输出的是字符’1’的 ASCII 码值 49,而不是 1。答案错误。
正确答案:正确
考察知识点:控制语句结构-循环、分支
解析:在for循环中,continue语句只是跳过本次循环的剩余语句,继续下一次循环条件的判断。for循环结束后,i的值为 10,此时if(i == 10)条件成立,会输出 10。答案正确。
正确答案:错误
考察知识点:变量的定义与使用、控制语句结构-循环、分支
解析:这段代码存在错误,虽然思路是先确保 N 小于等于 M,然后通过循环累加 N 到 M 之间的整数,但变量 Sum 没有初始化。在 C++ 中,使用未初始化的变量是未定义行为,可能导致程序出现错误结果或崩溃。答案错误。
正确答案:正确
考察知识点:多层分支/循环结构
解析:这段代码中loopCount记录了循环执行的次数。调整之前:外层循环 i 从 1 开始到 4,内层循环 j 从 0 到 i - 1。此时 loopCount 累加的是 1 + 2 + 3 + 4 = 10。
调整之后:外层循环 i 从 0 开始到 4,内层循环 j 从 0 到 i - 1。此时 loopCount 累加的是 0 + 1 + 2 + 3 + 4 = 10。输出结果相同,答案正确。
正确答案:正确
考察知识点:控制语句结构-循环
解析:for 循环来计算数列中从第 3 项开始到第 N 项的值。在每次循环中,用 tmp 存储当前两个数(start1 和 start2)的和,然后将 start2 的值赋给 start1,将 tmp 的值赋给 start2,不断重复这个过程,使得 start1 和 start2 始终表示当前相邻的两个数。当循环结束时,start2 存储的就是第 N 个数的值,最后输出 start2。答案正确。
正确答案:错误
考察知识点:多层分支/循环结构
解析:flag为0,输入2024。
N为2024,第3行条件成立,第4行条件成立,输出N%10,即输出4,执行第5行,N值为202,执行第6行,flag值为1;
N为202,第3行条件成立,第4行条件不成立,执行第5行,N值为20,执行第6行,flag值为0;
N为20,第3行条件成立,第4行条件成立,输出N%10,即输出0,执行第5行,N值为2,执行第6行,flag值为1;
N为2,第3行条件成立,第4行条件不成立,执行第5行,N值为0,执行第6行,flag值为0;
N为0,第3行条件不成立,循环结束。
综上,代码功能从右往左数,输出奇数次出现的数,输出结果为40,答案错误。
三、编程题(每题25分,共50分)
本题考察 多层分支/循环结构、数位分离。
数位分离是二级之前的常见考察内容
#include<iostream>
using namespace std;
int main() {int n, a, sum;cin>>n;while(n--){cin>>a;sum=0; //数位分离求a的各位数字之和while(a){sum += a%10;a /= 10;}if(sum%7==0) cout<<"Yes"<<endl; else cout<<"No"<<endl;}return 0;
}
本题考察 本题考察 多层循环结构-输出图形。
#include<iostream>
using namespace std;
int main() {int n;cin>>n;//n*n的矩阵图形 for(int i=0; i<n; i++) { //行 for(int j=0; j<n; j++) { //列//根据条件进行输出 if(j==0 || j==n-1 || i==j) cout<<"+";else cout<<"-";}cout<<endl;}return 0;
}