2025年6月真题
一、单选题(每题2分,共30分)
正确答案:C
考察知识点:计算机相关知识
解析:传感器是获取外界信息(如姿态、平衡相关数据 )并传递给机器人系统,这和计算机输入设备(用于向计算机输入数据和信息,比如键盘输入字符、鼠标输入操作指令 )功能类似;处理器是处理数据,存储器是存储数据,输出设备是输出数据,均不符合传感器功能,所以 C 正确。
正确答案:A
考察知识点:计算机编程环境,断点调试,首次考察
解析:L1 是变量声明初始化代码行,可设断点;L2 执行前 N 已声明,暂停时能检测 N 值;调试暂停在 L3 时,可修改局部变量 i;若满足 i < 9 条件,执行可能暂停在 L4 。所以 A 说法错误。
正确答案:D
考察知识点:变量的定义与使用、输入输出语句
解析:考察C语言输出语句printf以及int类型占位符,变量的定义和使用。C++ 中变量区分大小写,first 和 First 是不同变量,代码中 printf 里用 First 但未定义,会编译报错 ,A、B、C 均不符合代码实际情况,所以选 D。
正确答案:D
考察知识点:变量的定义与使用
解析:根据变量的命名规则:只能包含字母、数字和下划线;不能以数字开头;不能和关键字重名。A、B、C选项包含了其他字符’.‘,’-‘,’#'。正确答案为D。
正确答案:C
考察知识点:基本运算
解析:算术运算符的优先级,先算 乘 3*3=9, 再算 取余 9%2=1,最后算 减 14-1=13。答案为C。
正确答案:B
考察知识点:基本运算
解析:利用加减运算实现两个整数变量值的交换。执行第二行后,x的值为30,y的值为20;执行第三行后,x的值为30,y的值为10;执行第4行后,x的值为20,y的值为10。x、y两个变量的值完成交换。答案为B。
正确答案:D
考察知识点:基本运算
解析:考察自增运算符和复合赋值运算符,运算符的优先级。自增运算符优先级高于复合赋值运算符。
前加加,先加再使用a,则执行复合赋值运算之前a的值为17,再 += 3,结果为20。答案为D。
注意:自增运算符 ++ 使得变量a增加1,自减运算符 – 使得变量a减少1。自增分前加加(++a)和后加加(a++),自减分前减减(–a)和后减减(a–),区别是表达式的值不同。前加加和前减减,表达式的值为操作之后的值。后加加和后减减,表达式的值是操作之前的值。
正确答案:C
考察知识点:基本运算
解析:括号提升优先级,执行++X,之后X的值为9,cout<<X++,输出表达式X++的值,后加加表达式的值是操作之前的值,因此输出9,但执行后X的值自增1,X的值为10。答案为C。
正确答案:A
考察知识点:基本输入输出
解析:在 C++ 中,C语言的printf函数使用格式控制字符串来格式化输出。
%02d:表示输出一个整数,并且宽度为 2,不足的部分用 0 补齐。
只有一个占位符,用其后a+b的值填充,其余原样输出。答案为A。
正确答案:B
考察知识点:基本运算
解析:求星期N后M天是星期几?若当前是星期天(用0表示)则1天、8天等后是星期一,2天、9天后是星期二,…;若当前是星期一,则1天、8天等后是星期二,2天、9天后是星期三,…;则该求解可用(N+M)%7做取余运算运算求解,余数为1~6对应星期一到星期六,余数为0对应星期天。答案为B。实际上,周期性问题都可以做类似解答。
正确答案:A
考察知识点:控制语句结构-循环、break、continue关键字
解析:break用于终止循环,跳到循环后边的语句;continue用于中断当次循环,进入下一次循环,会跳过其后的循环体语句,跳到for循环的第三条语句循环间隔的位置。
for循环的循环体第一条语句为continue,因此循环内除了continue,其他语句都未被执行过。循环结束于i>=11,8行if语句条件成立,执行第9行。答案为A。
正确答案:C
考察知识点:控制语句结构-循环、基本运算
解析:求N的所有因数,最小因数为1,最大因数是其本身。因此第9行输出了1,因此循环只需要从其本身循环到2,只有C满足。答案为C。
正确答案:D
考察知识点:控制语句结构-循环
解析:for循环从0循环到9。i为0,第3行if条件成立,执行continue进入下一次循环;i为1,第3行、第5行if条件都不成立,将其累加到Sum上;i为2,第3行if条件成立,执行continue进入下一次循环;i为3,第3行、第5行if条件都不成立,将其累加到Sum上;i为4,第3行if条件成立,执行continue进入下一次循环;i为5,第5行if条件成立,执行break终止循环。此时Sum中累加了1和3,结果为4,答案为D。
正确答案:C
考察知识点:基本运算
解析:自增/自减运算符相当于变量加1/减1之后再赋值给变量。
第3行x++,等价于x=x+1,执行完毕x的值为102,cout<<++x,输出表达式的值,前加加,表达式的值为加之后的值103。答案为C。
正确答案:B
考察知识点:控制语句结构-循环、选择、基本运算、数位分离
解析:利用除和取余进行数位分离取得个位、十位、百位上的数。第4行求十位上的数,只有B可以做到。答案为C。A取到的是百位上的数;C得到的是0;D得到的是个位上的数。
二、判断题(每题2分,共20分)
正确答案:正确
考察知识点:考试规范
解析:闭卷考试为防作弊,禁止带具有信息存储、通信等作弊可能功能的设备,智能手表因有嵌入式系统、通信功能,会被禁止携带,该表述符合实际考试规范 。答案正确。
正确答案:错误
考察知识点:基本运算、数据真假性
解析:所有数据都可以转为布尔类型,其中,非0数据为真,0数据为假。
N为5,!N,逻辑运算符非 (!) ,运算对象和运算结果都为布尔类型,因此 !N 为假,即0。表达式(N+!N)的值为5+0。答案错误。
正确答案:正确
考察知识点:控制语句结构-循环、break、continue
解析:break用于终止循环,跳到循环后边的语句;continue用于中断当次循环,进入下一次循环,会跳过其后的循环体语句,跳到for循环的第三条语句循环间隔的位置。
循环体第一条语句为continue,break没有机会被执行到,因此删除对结果没有影响。答案正确。
正确答案:错误
考察知识点:控制语句结构-循环、continue
解析:关键字continue跳过本次循环后续语句,执行下次循环。在本题代码中,continue之后并没有语句,因此删除并不影响。但本次输出应该是:0#2#4#6#8#END。答案错误。
正确答案:错误
考察知识点:控制语句结构-循环
解析:i = i+1,i 每次增加1; i += i+1,相当于 i = i+i+1,假如当前 i 为 1,则执行完毕,i 的值变为3;实现效果和之前大不相同,输出结果不可能相同。答案错误。
正确答案:错误
考察知识点:控制语句结构-循环
解析:cnt初值为0,每循环一次,cnt+=1,cnt用于记录循环次数,但循环变量 i 未赋初值,因此循环执行次数未知。不管是否交换 i += 2,和cnt += 1,每次运行结果都可能不同。答案错误。
正确答案:错误
考察知识点:控制语句结构-循环
解析:每循环一次,执行一次cnt+=1,若cnt初值为0,则cnt可以用来记录循环执行的次数——10次。但本题cnt未赋初值,因此输出cnt结果不确定。答案错误。
正确答案:错误
考察知识点:基本运算、类型转换
解析:整数常量12是int类型,浮点数常量12.12是double类型,它们之间可以进行运算,12会转成double类型继续运算,运算结果是double类型。答案错误。
正确答案:正确
考察知识点:false是C++关键字。答案正确。
正确答案:错误
考察知识点:基本运算
解析:数学中可以用3<X<5表示4,但在编程语言中,这里出现了两个关系运算符,先算第一个关系运算符组成的表达式3<X的值,再拿这个结果和5进行比较。不管第一个表达式是否成立,其结果要不是true(1),要不是false(0),都比5小,则表达式3<X<5的结果为true(1)。答案错误。
三、编程题(每题25分,共50分)
本题考察算术运算符、分支语句 。
注意:书的页数有可能不够读
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, k, t;
cin>>n>>k>>t;
if(n>=k*t) cout<<k*t;
else cout<<n;
return 0;
}
本题考察 算术运算符、分支语句、循环语句。
小杨每m天值日一次,小红每n天值日一次,因此小杨逢着m的倍数值日,小红逢着n的倍数值日,可以从num=1开始尝试,找到第一个即是m的倍数,又是n的倍数的num即为答案。——两个数的最小公倍数问题。
//找最小公倍数
#include <bits/stdc++.h>
using namespace std;
int main() {
int m, n;
cin>>m>>n;
int t=1; //int t=max(m, n); //优化 既然是倍数,至少是1倍,因此可以从m、n中的最大值开始尝试
while(true){
if(t%m==0 && t%n==0){
cout<<t<<endl;
break;
}
t++;
}
return 0;
}
对于已经学过递归且学过如何利用递归求解最大公约数的同学,这里有一个更快速的方法。当然这个方法是超纲一级,没学过的同学可以忽略。
对于任意两个数m和n,有: m∗n=最大公约数∗最小公倍数m*n =最大公约数*最小公倍数m∗n=最大公约数∗最小公倍数
而最大公约数有高效求解方法:辗转相除法(欧几里得算法)
//找最小公倍数
#include <bits/stdc++.h>
using namespace std;
//最大公约数
int gcd(int m, int n){
return n==0? m :gcd(n, m%n);
}
int main() {
int m, n;
cin>>m>>n;
//方法1:m*n/最大公约数
cout<<m*n/gcd(m, n)<<endl;
return 0;
}