发布时间:2026/7/7 14:01:04
考情分析一、单项选择题共15题题号考察知识点1计算机基础— 输入设备辨析湿度传感器采集数据送入系统属于输入设备2计算机操作— IDE编辑区功能支持查找替换、多步撤销、缩进调整注释可混用中英文3C语法— 类型转换int与double混合运算时自动提升为浮点型33.56.54运算符优先级— 一元负号-优先级高于*和%*与%同优先级左结合-2*(2%4)-4与原式0不同5变量赋值— 值传递ba后修改a不影响b输出4 36输入输出—cin读取int时遇非数字字符停止2026-6-27读取到20267条件分支—else包含NM情况输入3 3输出B 08运算符辨析—、区别cnt1等价于cnt(1)即赋值为19循环逻辑— 观察输出序列找规律num到11后/2得5其余110循环控制—continue跳过其后所有语句cout i #永不执行11循环与条件— 从i2开始试探因子15输出0#1#12循环执行— 原代码tot累加10次得10修改条件后循环次数变少13数位提取— 十位数字(n/10)%10先去掉个位再取余14取模运算— 秒针循环位置(startn)%60回到12点方向即pos015质数判定—iN会导致N%N0恒成立所有数被判为非质数二、判断题共10题题号考察知识点答案1AI眼镜内置操作系统并支持无线连接A2(n/10)%10与(n%100)/10都取十位数字A3i从0开始每次加3i%3恒为0break永不执行输出21B4rst初始化为0累乘结果恒为0B5N%10取个位N/10去个位可逐位输出A6printf(\n)与printf(%c,\n)都输出换行符A7%操作数需为整型2.5%2编译报错B8total未初始化值为随机数结果不可预测B9true转整型为1123非4B10删除continue后x2时也会输出输出变为1,2,3,4B三、编程题共2题题号题目名称难度考察算法一句话思路总结A去旅行⭐直接模拟读入四个价格计算三种方案总价直飞a aa、高铁飞机b c bcbc、高铁高铁b d bdbd用min({a, bc, bd})取最小值输出时间复杂度O ( 1 ) O(1)O(1)空间复杂度O ( 1 ) O(1)O(1)B交税⭐直接模拟 / 分段函数循环 12 个月每月若报酬x 800 x 800x800则累加( x − 800 ) × 0.2 (x-800) \times 0.2(x−800)×0.2最后printf(%.2lf, ans)保留两位小数输出时间复杂度O ( 1 ) O(1)O(1)空间复杂度O ( 1 ) O(1)O(1)单选题第1题学校组织到未来农场参观小明听讲解员介绍在智能温室中湿度传感器可以连续检测土壤的湿度变化并将检测到的湿度数据实时发送给中央控制器。中央控制器根据这些数据判断是否开启灌溉系统。请问这里的湿度传感器所发挥的作用类似于计算机系统中的哪一类组件 A. 处理器B. 存储器C. 输入设备D. 输出设备【答案】C【解析】湿度传感器的作用是采集外界环境数据土壤湿度并将数据传送给中央控制器这与计算机中输入设备的功能完全一致——输入设备负责将外部信息转换为计算机可识别的数据送入系统。处理器负责运算和控制存储器负责保存数据输出设备负责将计算机处理结果向外呈现均不符合传感器“采集并送入数据“的特征。故选C。第2题在使用某集成开发环境比如 Dev-C来编辑源代码文件时程序员经常需要在编辑区中对代码进行各种修改。以下关于在编辑区中执行的操作描述不正确的 。A. 可以将变量名count统一修改为numberB. 可以连续撤销最近2 22次输入的内容C. 可以调整代码行的缩进如按 Tab 键D. 在注释文本中间不能混用中英文【答案】D【解析】集成开发环境的编辑区支持查找替换功能可以批量将变量名 count 改为numberA正确。编辑器支持多步撤销可以连续撤销最近的多次操作正确。按Tab键可以调整缩进C正确。注释文本只是被编译器忽略的文字其中完全可以混用中文和英文没有任何限制D的说法不正确。故选D。第3题有关如下 C 代码的说法正确的是 。floata33.5;couta;A. 代码执行将报错。如果将a 3 3.5改为a 3 3 1/2将能正常执行。B. 代码执行将报错。如果将a 3 3.5改为a 3.0 3.5将能正常执行。C. 代码能正常执行将输出6。D. 代码能正常执行将输出6.5。【答案】D【解析】表达式式 33.5 中3是int 类型3.5是double 类型。C在混合运算时会将整型自动提升为浮点型因此33.56.5赋值给 float 类型的 a 后值为6.5输出6.5代码不会报错。A选项和选项都认为代码会报错不正确且A选项中的1/2是整数除法结果为0并非等价写法。C选项输出值应为6.5而非6。故选D。第4题下列 C 表达式与- 2 * 2 % 4的值不同的是 。A.- (2 * 2) % 4B.(- 2 * 2) % 4C.- 2 * (2 % 4)D.(2 * 2) % - 4【答案】C【解析】一元负号 - 的优先级高于 * 和 % 且 * 和 % 同优先级从左到右结合。原式 -2 * 2 % 4 中一元负号先作用于2得到-2然后 -2 * 2 -4最后 -4 % 4 0。A选项-(2*2)%4 -(4)%4 -4%4 0相同。B选项(-2*2)%4 -(4)%4 0相同。C选项-2*(2%4) -2*2 -4结果为-4与原式0不同。D选项(2*2)%-4 4%-4 0相同。故选C。第5题执行如下 C 代码片段其输出是 。inta3;intba;a4;printf(%d %d,a,b);A.3 3B.4 3C.4 4D.3 4【答案】B【解析】执行 int a 3 后 a 为3int b a 将 a 的当前值3赋给b此时b为3。随后a4讲a修改为4但b中保存的是之前拷贝的值3不受影响。因此输出 4 3。故选B。第6题如下 C 代码执行时输入2026-6-27下列说法正确的是 。intN;cinN;coutN;A. 输入失败不允许输入减号没有输出B. 允许输入输出1993C. 允许输入并原样输出2026-6-27D. 允许输入并输出2026【答案】D【解析】cin N 中N是int 类型cin 在读取整数时会逐字符解析遇到非数字字符减号 - 不是负号开头位置即停止读取。输入 2026-6-27 时cin 读取到 2026 后遇到减号 - 停止N的值为2026缓冲区中剩余 -6-27 未被读取。因此输出2026。故选D。第7题如下 C 代码执行时其说法错误的是 。intN,M;cinNM;if(NM)coutA (N-M);elsecoutB (M-N);A. 如果输入4 3将输出A 1B. 如果输入3 4将输出B 1C. 如果输入3 3将输出A 0D. 如果输入4 4将输出B 0【答案】C【解析】代码逻辑为当 NM 时输出 A 和 N-M否则包括N M的情况输出 B 和 M-N。输入 4 3 时43成立输出 A 1A正确。输入 3 4 时34不成立走else分支输出 B 1B正确。输入 3 3 时33不成立走else分支输出 B 0 而非 A 0C说法错误。输入 4 4 时44不成立走else 分支输出 B 0D正确。故选C。第8题阅读如下 C 代码下列说法错误的是 。intcnt0;for(inti0;i5;i)cnt1;coutcnt;A. 将cnt 1修改为cnt cnt 1执行效果相同B. 将cnt 1修改为cnt 1 cnt执行效果相同C. 将cnt 1修改为cnt 1执行效果相同D. 将cnt 1修改为cnt 1 cnt执行效果相同【答案】C【解析】cnt 1等价于cnt cnt 1A正确。cnt 1 cnt 与cntcnt 1结果相同B正确。。cnt 1实际上被编译器解析为cnt(1)即把cnt赋值为正整数1而非在原值上加1执行效果完全不同C错误。cnt 1cnt 解析为cnt (1)cnt 即cnt1cnt 效果相同D正确。故选C。第9题如下 C 代码执行后输出是1 2 3 4 5 6 7 8 9 10 11 5 6 7 8 9 10 11 5 6 7 8 9 10 11 5 6 7 8 9 10 11 5 6 7。横线处应该先后依次填入的运算符是 。intnum1;for(inti0;i35;i){printf(%d ,num);if(num _______10)num _______2;elsenum _______1;}A. / B. % C. % D. / 【答案】A【解析】观察输出序列1到11递增到11后回到5再递增到11如此循环。这说明num到11后执行了除以2的操作11/25其余时候每次加1。因此第一个空填大于10时触发除法第二个空填 /除以2第三个空填 加1。A选项 / 完全匹配。B选项用 % 会让num对2取余11%21不符合输出。D选项 会被解析为 赋正值num会变为1而非加1。故选A。第10题如下 C 代码可以执行其输出是 。inti;for(i1;i5;i)if(i%20){continue;couti#;}coutiEND#;A.5END#B.5#ENDC.1#3#4#ENDD.1#3#4 END#【答案】A【解析】循环中当 i % 2 0即i为偶数时执行 continue跳过后面的 cout 语句直接进入下一次循环。continue 之后的 cout i “#” 永远不会执行。循环正常结束后 i 的值为5i 从 1 到 4 循环退出时 i 自增为5。因此输出 5END#。故选A。第11题如下 C 代码执行时下列说法正确的是 。intN,i;cinN;for(i2;iN;i)if(N%i0){cout1#;break;}elsecout0#;A. 如果输入2将输出1#。B. 如果输入15将输出0#1#。C. 如果输入1将输出0#。D. 如果输入3将输出1#。【答案】B【解析】代码从 i2 开始试探 N 是否能被 i 整除若能整除则输出 1# 并跳出否则输出 0# 继续循环。输入 2 时循环条件 iN 即 22 为假循环不执行无输出A错误。输入15时i2时 15%2≠0 输出 0#i3 时 15%3 0 输出 1# 并 break最终输出 0#1#B正确。输入1时21为假循环不执行无输出C错误。输入3时i2时3%2≠0输出 0#循环结束i3不满足i3输出 0# 而非 1#D错误。故选B。第12题有关如下 C 代码下列说法中错误的是 。inti,tot;i0,tot0;while(0ii10){tot1;i1;}couttot;A. 如果调整0 i i 10为1 i i 10输出同样为45因为加上0不影响结果。B. 如果将i 0和tot 0合并为i tot 0执行结果与修改前相同。C. 将tot 1与i 1交换顺序执行结果与修改前相同。D. 将i 0与tot 0交换顺序执行结果与修改前相同。【答案】A【解析】原代码中 i 从0到9共循环10次tot 最终为10并非45。A选项声称输出为45且修改条件后结果不变这个说法本身就是错误的——实际输出为10。B选项i tot 0从右向左赋值i和tot都被赋为0与原代码效果相同正确。C选项交换tot 1和i 1的顺序不影响结果因为两者之间无依赖关系循环仍执行10次tot为10正确。D选项交换i0和tot0的顺序两个独立赋值交换不影响结果D正确。故选A。第13题以下 C 代码可以找出千位、百位、十位和个位满足特定条件的四位数例如各位数字的四次方和等于原 数即“四叶玫瑰数”横线处应该填入的是 。intcount0;for(intn1000;n9999;n){intan/1000;intb(n/100)%10;_________________________// L1intdn%10;if(a*a*a*ab*b*b*bc*c*c*cd*d*d*dn){// 特定条件count;}}A.int c (n / 10) / 10;B.int c (n / 10) % 10;C.int c (n % 10) / 10;D.int c (n % 10) % 10;【答案】B【解析】代码中a取千位n/1000b取百位(n/100)%10、d取个位n%10缺少的是十位c的取法。取十位数字的方法是先将n除以10去掉个位再对10取余得到十位数字即(n/10)%10。A选项(n/10)/10得到的是n/100会包含百位和千位不是单个数字。C选项(n%10)/10中n%10是个位数字0-9再除以10结果恒为0。D选项(n%10)%10等于n%10是个位数字而非十位。故选B。第14题下面的 C 代码用于计算经过n秒后的秒针位置0 ∼ 59 0\sim 590∼59两处横线处分别应填入的代码是 。intstart,n,pos;cout当前秒数0-59: ;cinstart;cout经过多少秒: ;cinn;pos____________;// L1if(____________)// L2coutn秒后回到12点方向endl;elsecoutn秒后指向pos秒刻度endl;A.(start n) / 60和pos 0B.(start n) % 60和pos 0C.(start n) / 60和pos 0D.(start n) % 60 和pos 0【答案】B【解析】秒针在0-59秒之间循环经过n秒后的位置应该用取模运算(start n) % 60来计算排除A和C。当秒针回到12点方向时pos为0判断条件应为pos 0相等比较。D选项中pos 0是赋值语句而非比较会在条件中把 pos 赋为0且条件恒为真逻辑错误。故选B。第15题如果正整数 N 只能被 1 和它本身整除则它是一个质数或素数。下面的 C 代码用于判断正整数 N 是否为质数素数。若 N 是质数输出 YES 否则输出 NO 。横线处不应填入的代码是 。intN,i;cinN;if(N1){coutNO;return0;}for(i2;______;i){if(N%i0){coutNO;return0;}}coutYES;A.i NB.i NC.i N / 2D.i * i N【答案】B【解析】判断质数需要在2到N-1范围内试探是否有因子。A选项iN是标准写法正确。C选项 iN/2也是可行的因为N的最小因子不超过N/2除了N本身正确。D选项 i * i N 利用了因子成对出现的性质只需试到 √N 即可是优化写法正确。B选项 i N 会让循环执行到 iN此时N %N 0必然成立导致所有正整数都被判为非质数包括真正的质数因此是不应填入的代码。故选B。判断题第1题又到期末考试周小明发现这次许多闭卷考试不仅禁止携带手机、平板电脑还有最近比较时髦的各类 AI 眼镜也有叫智能眼镜也同样不允许带入考场。这些 AI 眼镜应该也是内置了操作系统并可能支持 Wi-Fi 或蓝牙连接。A. 正确B. 错误【答案】A【解析】AI眼镜智能眼镜是一种可穿戴计算设备内部集成了处理器、存储器等硬件组件运行嵌入式操作系统并通常支持Wi-Fi或蓝牙等无线连接方式可以独立进行计算和通信。因此将其视为带有操作系统和网络连接能力的设备是正确的考场禁止携带也正是因为其具备信息获取和通信能力。第2题如果n为大于 的整数则 C 表达式(n / 10) % 10与(n % 100) / 10的结果相同。A. 正确B. 错误【答案】A【解析】两个表达式都是取十位数字。(n/10)%10先去掉个位再取余得到十位。(n%100)/10先取后两位十位和个位再除以10去掉个位得到十位。对于任意正整数n两种写法的结果都是n的十位数字结果相同。第3题下面 C 代码执行后将输出19。inti;for(i0;i20;i3)if(i%3!0)break;couti;A. 正确B. 错误【答案】B【解析】i 从0开始每次加3因此的 i 值依次为0、3、6、9、12、15、18。每次循环中i%3的结果都是0条件 i%3!0 恒为假break 永远不会执行。循环正常结束时i21i18时满足条件加3后i21不满足i20退出输出21而非19。第4题在数学中N ! N!N!称之为N NN的阶乘其含义是1 11到N NN之积包括N NN。如3 ! 1 × 2 × 3 6 3!1\times 2\times 3 63!1×2×36。如下 C 代码能输出N ! N!N!的结果。intN;cout请输入正整数;cinN;intrst0;for(inti1;iN1;i)rst*i;coutrst;A. 正确B. 错误【答案】B【解析】阶乘是从1乘到n的累乘初始值应为1。但代码中rst 初始化为0rst * i即rst rst * i0乘以任何数都是0因此无论输入什么N输出始终为0无法正确计算阶乘。应将int rst0改为int rst 1才能正确计算。第5题如下 C 代码能实现输出正整数N NN的各位数字。intN;cinN;while(N0){cout(N%10)endl;NN/10;}A. 正确B. 错误【答案】A【解析】代码通过N%10取个位数字N/10去掉个位循环执行可以逐位输出N的各个数字。虽然输出顺序是从低位到高位先个位、再十位、再百位……但题目表述为输出正整数N的各位数字并未限定必须按从高位到低位的顺序。因此该代码能够实现逐位输出N的各位数字判断正确。若题目要求按原数顺序输出则需要先将各位数字保存下来再逆序输出。第6题将如下 C 代码中的printf(\n)更换为printf(%c, \n)输出效果相同。for(inti0;i100;i){if(i%50)printf(\n);printf(%2d ,i);}A. 正确B. 错误【答案】A【解析】printf(“\n”)直接输出换行符字符串。printf(“%c”, ‘\n’)通过格式符%c 输出字符’\n’换行符。两者都是向输出流写入一个换行字符效果完全相同。\n’是转义字符表示换行与字符串“\n中包含的换行符一致。第7题C 代码cout (2.5 % 2)能够生成可执行代码但执行时将报错因为%只能适用于正整数。A. 正确B. 错误【答案】B【解析】取模运算符%的操作数必须是整型2.5是浮点数double 类型因此2.5%2在编译阶段就会报错“invalid operands of types ‘double’ and ‘int’ to binary operator%”无法生成可执行代码。题目说能够生成可执行代码是错误的实际上编译就不会通过。此外%适用于所有整型包括负整数并非只能用于正整数。第8题下面的 C 代码执行后将输出24。inttotal;for(intn1;n4;n){total*n;}couttotal;A. 正确B. 错误【答案】B【解析】代码中 total 声明后未初始化其值是未定义的在C中局部变量未初始化时为随机值。total * n在未初始化的随机值基础上累乘结果不可预测。即使假设 total 恰好为14的阶乘确实是24但由于未初始化结果并非确定的24。因此将输出24的说法不正确。第9题如果a是 C 的整型变量值为4则表达式(a % 2 0) (a / 2)的值为4。A. 正确B. 错误【答案】B【解析】a 为4时a% 2 0 即 4%2 0 为 true在C中 true 转换为整型值为1。a/2 即 4/2 为2。因此 (a % 2 0) (a / 2) 1 2 3。编译验证结果为3而非4。题目说值为4是错误的。第10题删除下面 C 代码中的continue后其输出与原来相同。intx0;while(x4){x;if(x2)continue;coutx,;}A. 正确B. 错误【答案】B【解析】原始代码中当 x 2 时执行 continue 跳过 cout 语句不输出2输出为1,3,4。删除 continue 后if (x 2) 的条件判断为空语句或条件成立后继续执行coutx为2时也会输出输出变为1,2,3,4。两者输出不同因此判断为错误。编程题题解洛谷 B4551 去旅行题解洛谷 B4552 交税