一、单选题(每题2分,共30分)
第1题
答案:B
解析: 输入设备是向计算机系统输入数据和信息的设备。
A. 重力传感器:检测重心变化,属于输入设备 B. 预装的AI算法程序:这是软件程序,不是硬件输入设备 ✓ C. 遥控器:接收外部指令,属于输入设备 D. 摄像头:拍摄图像,属于输入设备
第2题
答案:D
解析: 流程图中,if(val > max) 是条件判断语句。条件判断应使用菱形框(判断框)。圆形/椭圆形框用于开始/结束,平行四边形框用于输入/输出。
第3题
答案:D
解析:
A. 错误,C++变量名大小写敏感, PI和pi是不同的变量B. 错误, Pi与PI不同,若未定义会报错C. 错误, PI可以作为变量名,只是习惯上常量用大写D. 正确,将 PI全部替换为Pai后程序能正常执行,只是变量名改变了
第4题
答案:C
解析: 根据德摩根定律:!(A && B) 等价于 !A || !B
!(x > 5 && y <= 10)等价于 !(x > 5) || !(y <= 10)即 x <= 5 || y > 10
第5题
答案:B
解析: 浮点数在计算机中用二进制表示时,0.1、0.2、0.3 都是无限循环小数,无法精确表示。0.1 + 0.2 的实际结果约为 0.30000000000000004,与 0.3 存在微小误差,所以 == 比较结果为假(输出0)。
第6题
答案:A
解析: 追踪代码执行:
i=0:内层循环j<0不执行,tnt=0,输出0#i=1:j=0,tnt=1,输出1#i=2:j=0,1,tnt=3,输出3#i=3:j=0,1,2,tnt=6,输出6#i=4:j=0,1,2,3,tnt=10,输出10#最后输出 tnt的值10
第7题
答案:A
解析:if (not i % 3) 即 if (!(i % 3)),判断 i % 3 == 0
i=-2:-2 % 3 = -2,不为0,不输出i=-1:-1 % 3 = -1,不为0,不输出i=0:0 % 3 = 0,满足条件,输出0#i=1:1 % 3 = 1,不为0,不输出
第8题
答案:C
解析: 注意 break 只跳出内层循环:
i=1:输出0#,然后break跳出内层循环i=2:内层循环j=0,1,但j=0时输出0#后就break了实际上每次外层循环,内层循环只执行一次(遇到break)
仔细追踪:每次 i 循环,内层 j 从0开始,输出 0# 后立即 break,所以只输出 0#
第9题
答案:C
解析: (根据答案推断代码逻辑,原题代码显示异常) 从答案6推断,该代码计算的是某个累加或计数结果,最终输出为6。
第10题
答案:A
解析: 原代码是 while(i<5),输出0,1,2,3,4
A. for(i=0;i<5;)配合循环体内i+=1,效果相同 ✓B. 输出1,2,3,4,缺少0 C. 输出0,1,2,3,4,5,多了5 D. 输出1,2,3,4,5,起始和结束都不对
第11题
答案:B
解析: 追踪代码:
n=10:n-=1得9,9%3=0,continuen=9:n-=1得8,8%3≠0,不continue,n≠5n=8:n-=1得7,7%3≠0,不continue,n≠5n=7:n-=1得6,6%3=0,continuen=6:n-=1得5,5%3≠0,不continue,n==5,break
最终输出 5
第12题
答案:C
解析: 追踪循环:
i=0:i=-i得0,内层j=0; j<0不执行,i=-i恢复0i=1:i=-i得-1,内层j=-1; j<1,即j=-1,0,执行2次,i=-i恢复1i=2:i=-i得-2,内层j=-2; j<2,即j=-2,-1,0,1,执行4次i=3:i=-i得-3,内层j=-3; j<3,执行6次i=4:i=-i得-4,内层j=-4; j<4,执行8次
注意 i++ 在循环末尾执行,实际循环次数需要重新仔细计算...最终 cnt = 20
第13题
答案:B
解析:
第一空需要累加前5位的每一位: tnt += order_num % 10(取最后一位累加)第二空需要判断校验码是否正确: tnt % 10 == check_num(前5位之和的个位数等于校验码)
第14题
答案:A
解析: 代码输出:
i=1: j=1,输出 1i=2: j=1,2,输出 12i=3: j=1,2,3,输出 123i=4: j=1,2,3,4,输出 1234即左对齐的数字三角形。
第15题
答案:A
解析:
第一空需要累加总分: total_score += score第二空需要统计高分评委数量: high_count += 1
二、判断题(每题2分,共20分)
第1题
答案:√
解析: 电话手表具有通话、信息等功能,需要操作系统支持硬件管理和应用运行,推测装有特定操作系统(如RTOS、Android等)是正确的。
第2题
答案:×
解析:'4' 的ASCII码是52,'2' 是50。
'4' % '2'= 52 % 50 = 2'2' * '2'= 50 * 50 = 25002500 % 2 = 0 2 == 0为假,输出0,不是1。
第3题
答案:×
解析: C++中布尔类型可以自动转换为整数(true转1,false转0),10 + a 等于 10 + 1 = 11,可以正常执行不会报错。
第4题
答案:√
解析:i % 3 为0时(即i=0,3,6,9),continue 跳过,其他情况不执行。实际逻辑是:当 i % 3 != 0 时 continue,即只有 i % 3 == 0 时才输出。所以输出0,3,6,9,格式为 0-3-6-9-。
第5题
答案:√
解析: 代码片段为 while 后面直接 cout <<(N);,缺少循环条件和分号。这会导致:
如果 N为0或假值:while条件直接为假,执行0次否则:死循环(while后面语句作为循环体,条件永远为真)
第6题
答案:√
解析: 循环中 i += 1 后 continue,但 continue 只是跳过本次循环剩余部分,而循环体本来就只有 i += 1,所以删除 continue 不影响效果。
第7题
答案:√
解析:while(i != 0) 和 while(abs(i)) 在i为正整数时效果相同。因为 abs(i) 在i≠0时为真(非0),i=0时为假(0),与 i != 0 逻辑一致。
第8题
答案:×
解析:break 只跳出内层循环,外层循环继续执行。当 i=10 时,外层循环结束,此时 i >= 10 满足,会执行输出。
第9题
答案:×
解析: (根据答案推断)实际输出与 1#4#9#16#16 不符。
第10题
答案:√
解析:%3d 表示输出宽度为3的整数,可以实现右对齐的格式化输出,与右图格式一致。
三、编程题(每题25分,共50分)
3.1 数数
题目大意: 统计区间[L,R]中恰好包含3个数字2的正整数个数。
参考程序解析:
#include<iostream>using namespace std;intmain(){int l,r,ans =0;cin >>l >>r;for(int i =l;i <=r;i++){ // 遍历区间每个数int c =0,t =i; // c计数2的个数while(t){ // 逐位检查if(t %10==2) // 当前位是2 c++; t /=10; // 去掉最后一位 }if(c ==3) // 恰好3个2 ans++; }cout <<ans;return0;}算法: 枚举 + 数位分解。时间复杂度 O((R-L) × logR)
3.2 画画
题目大意: 输出n×n的正方形,四角为+,四边为-|,内部为*。
参考程序解析:
#include<iostream>using namespace std;intmain(){int n;cin >>n;for(int i =0;i <n;i++){ // 行for(int j =0;j <n;j++){ // 列if(j ==0||j ==n -1){ // 左右边界if(i ==0||i ==n -1)cout <<'+'; // 四角elsecout <<'|'; // 左右边(非角) }else {if(i ==0||i ==n -1)cout <<'-'; // 上下边(非角)elsecout <<'*'; // 内部 } }if(i +1!=n) // 非最后一行换行cout <<endl; }return0;}算法: 直接模拟,根据位置判断输出字符。时间复杂度 O(n²)