2025年9月真题
一、单选题(每题2分,共30分)

正确答案:D
考察知识点:计算机相关知识
解析:在人工智能领域,"大模型" 最贴切的通常是指大语言模型。大语言模型是基于大规模文本数据训练的,能够理解和生成自然语言等内容,像常见的 ChatGPT 等就属于大语言模型范畴。而选项 A "大电脑模型" 表述不准确;选项 B "大规模智能" 不是对 "大模型" 的准确指代;选项 C "智能的单位" 也不符合 "大模型" 的定义。答案为D。

正确答案:C
考察知识点:流程控制语句
解析:计算 1 到 10001 之间的所有偶数和,需要重复累加操作(循环结构),且需判断是否为偶数(分支结构)。仅用顺序结构无法实现重复操作和条件判断,所以C 选项最不合适。答案为C。

正确答案:C
考察知识点:标识符的命名规则
解析:根据变量的命名规则:只能包含字母、数字和下划线;不能以数字开头;不能和关键字重名。B、D选项包含了其他字符' ','-',不能作为变量名。A选项,汉语拼音只要符合变量的命名规则,也可以作为变量名。答案为C。


正确答案:C
考察知识点:基本运算符、C++语法、注释
解析:C++代码中,一条完整语句以 分号(;)结尾,因此本题中,输出语句是:cout << a/b << a%a*b;
a / b = 13 / 5 = 2,a % a * b = 13 % 13 * 5 = 0 *5 = 0,代码中输出格式无分隔,所以输出20。答案为C。
注释作用:提升代码的可读性和可维护性,它不会被编译器或解释器执行,仅为开发者服务。分当行注释、多行注释。
单行注释:使用//符号,从//开始到该行末尾的所有内容都会被编译器忽略。对本题来说,忽略 //之后所有内容,此时该行还没有 分号,也即语句没有结束,下一行直到 分号之前 属于同一条语句。

正确答案:D
考察知识点:基本运算符
解析:本题中,表示式中只存在乘、取余、除运算符,优先级相同,从左往右计算,3*4 结果为12, 12%5 结果为2,2/4 结果为0。答案为D。

正确答案:A
考察知识点:基本输入输出
解析:考察了C语言风格的输入输出;scanf("%d")会跳过制表符(tab键,空格组成)等空白字符,正确读取N=10、M=20,计算N+M=30,按格式输出{30}。答案为A。

正确答案:D
考察知识点:控制语句结构-选择
解析:需计算 9 月过N个月后的月份,利用取模运算处理循环。公式为(9 + N) % 12,当结果为 0 时对应 12 月,否则为计算结果。答案为D。刷过真题的一定做过关于星期的那道题,一样道理哈。

正确答案:C
考察知识点:控制语句结构-循环
解析:i从 0 到 99 循环,共 100 次。i%2在奇数时为 1,偶数时为 0。0 到 99 中有 50 个奇数,所以n累加后为 50。答案为C。


正确答案:C
考察知识点:控制语句结构-循环
解析:i从 - 100 到 99 循环,共 199 次。i % 10的结果在每 10 个数中对称抵消(如 - 100%10=0,-99%10=-9,9%10=9 等),总和为 0。因此N最终为 0。答案为C。

正确答案:A
考察知识点:控制语句结构-循环、break关键字
解析:循环中 i 取 1、2 时,因i%3 != 0,输出1#、2#;i 为 3 时 i%3 == 0,执行break跳出循环。
循环结束后 i 为 3,不满足i>5,END不输出。答案为A。

正确答案:C
考察知识点:流程控制语句-循环、数位分离
解析:该代码的逻辑是通过循环取出N的每一位数字,构建逆序结果rst。循环应在N的所有数字处理完毕(即N变为 0)时结束。
选项 A(N != 0)、B(not (N == 0),即N != 0)、D(N > 0)都能保证循环在N处理完后终止;而选项 C(N = 0)是赋值操作,会导致循环条件恒为0(逻辑假),循环一次都不执行,无法正确计算镜面数。答案为C。


正确答案:D
考察知识点:基本数据类型、基本运算符
解析:python语言中可以使用D选项的方式完成两个变量的交换,但C++不支持这种方式。答案为D。
A选项借助于第三个变量完成两个变量值的交换。
B、C选项借助于数的运算完成两个变量值的交换,可以自己手动推一推。

正确答案:D
考察知识点:基本运算符、流程控制语句-循环
解析:首先,div的作用是通过循环乘以 10,得到一个数,使得N / div可以把第M位及更高位的数保留,去掉低位。比如N = 1234,M = 2时,循环后div = 10。然后N / div得到123(整数除法),再对10取余,就得到第2位的数字3。所以横线处应填N / div % 10。答案为D。


正确答案:A
考察知识点:控制语句结构-循环、continue关键字
解析:初始num = 0,进入while循环(num <= 5)。
第一次循环:num += 1后num = 1,num != 3,执行printf,输出1#。
第二次循环:num += 1后num = 2,num != 3,执行printf,输出2#。
第三次循环:num += 1后num = 3,num == 3,执行continue,跳过printf。
第四次循环:num += 1后num = 4,num != 3,执行printf,输出4#。
第五次循环:num += 1后num = 5,num != 3,执行printf,输出5#。
第六次循环:num += 1后num = 6,num != 3,执行printf,输出6#。
最终输出为1#2#4#5#6#。答案为A。

正确答案:D
考察知识点:流程控制语句-循环
解析:选项 A:若第一个数输入-999,min_num和max_num会被赋值为-999,且循环不执行,输出-999 -999,该选项正确。
选项 B:若第一个数不是-999,且后续没有-999,程序会正常比较每个输入数,求出最大和最小数,该选项正确。
选项 C:考试成绩中无-999,程序能正常运行求出最高和最低成绩,该选项正确。
选项 D:D循环有点描述不清,但无论是移动第1行还是第11行,都会出现问题。
移动第一行,则min_num和max_num的初值变为未知值,后续无法比较。
移动第11行,输入的第一个数作为最大、最小值没问题,进入循环即输入下一个数,这个数参与比较,如果这个是-999,会产生错误。答案为D。
二、判断题(每题2分,共20分)

正确答案:错误
考察知识点:集成开发环境
解析: 在现代集成开发环境(如 Visual Studio、Eclipse 等)中,调试过程中是可以修改源程序的,很多集成开发环境支持 "编辑并继续" 功能,修改后不需要终止调试、关闭文件再重新打开,能在调试过程中直接应用修改并继续调试。表述错误。

正确答案:正确
考察知识点:基本运算符
解析:取余运算符的两个操作数要求必须是整数,小数会报错。表述正确。

正确答案:错误
考察知识点:流程控制语句-循环、break
解析:循环中只有一条语句,进入循环执行break,终止循环,此时 i 的值为0,因此输出为0。表述错误。

正确答案:错误
考察知识点:流程控制语句-循环
解析:for循环,循环变量 i 初始值为0,循环条件是i > -10,循环步长i--。所以i的取值依次为0, -1, -2, ..., -9,共10 次循环。每次循环,将 i*-1 累加到n上,计算可得 循环结束 n 的值为45。表述错误。

正确答案:正确
考察知识点:流程控制语句-循环
解析:for循环,循环变量 i 初始值为0,循环条件是i < 100,循环步长i++。所以i的取值依次为0, 1, 2, ..., 99。每次循环执行cnt+=i,因此本题代码实现的功能是将0~99累加到cnt上,将 i=0 修改为 i=1,代码功能变成了将1~99 累加到cnt上,累计和上少一个0并不会改变结果,输出自然相同。表述正确。

正确答案:错误
考察知识点:流程控制语句-循环
解析:变量 n 和变量 i 赋值为0,while循环 循环条件为 i<10,循环内执行语句 n+=i,i+=1,所以 i 的取值依次为0, 1, 2, ..., 9,每次将 i 累加到 n 上,代码实现的功能是0~9的累加和。如果将 i<10 更改为 i<=10,则代码实现的功能是0~10的累加和,输出结果显然不同,表述错误。

正确答案:错误
考察知识点:控制语句结构-循环
解析:while循环,i 从 0 开始,每次循环 i 加 1,直到 i < 10 不成立。i 的取值为 1,2,...,10,共循环 10 次。
n 初始为 0,每次循环 n += i,即 n = 1 + 2 + 3 + ... + 10,计算结果为 55,输出55。表述错误。

正确答案:错误
考察知识点:基本数据类型
解析:数字常量 12 默认为int类型,浮点数常量 12.12默认为double类型,int类型和double类型可以进行运算,运算中会将int类型转成double类型,运算结果为double类型,不会报错。表述错误。

正确答案:错误
考察知识点:控制语句结构-循环、continue语句
解析:count 初始为 0,循环条件是 count < 5。每次循环 count 加 1,当 count == 3 时执行 continue(跳过本次循环剩余代码,进入下一次循环)。
count 的取值依次为 1,2,4,5(当 count=3 时跳过输出但继续循环),当 count=5 时,循环条件 count < 5 不成立,循环结束。因此不会导致无限循环。 表述错误。

正确答案:正确
考察知识点:控制语句结构-循环
解析:初始化a = 0(对应斐波那契数列第 1 个数),b = 1(对应第 2 个数)。
循环执行n次:
每次先输出a;
然后通过b = b + a计算下一个数的和,再通过a = b - a更新a为原来的b(即下一个斐波那契数)。
例如,若n = 5,输出为0 1 1 2 3,符合斐波那契数列规律,因此该代码能实现功能。表述正确。
三、编程题(每题25分,共50分)



本题考察分支结构。
解析:方案1:满 x 元减 y 元,只能使用一次 。 方案2:直接打 n 折,也就是说价格变为原先的 n/10,输入为四个正整数,直接写n/10会导致丢小数点后数据,因此要写成n/10.0。
cpp
#include<bits/stdc++.h>
using namespace std;
int main() {
int x, y, n, p;
cin>>x>>y>>n>>p;
//方案1:满 x 元减 y 元,只能使用一次
double t1=(p>=x?p-y:p); //这里使用了条件运算符代替双分支语句
//方案2:直接打 n 折,注意数据类型
double t2=p*n/10.0;
//比较方案1和方案2,保留两位小数输出方案1和方案2中更小的那一个
if(t1<t2) printf("%.2lf", t1);
else printf("%.2lf", t2);
return 0;
}


本题考察 循环结构。
一共n层,遍历n层,依次将每层的石块进行累加,根据题意,第i层需要i*i个石块。
cpp
#include<bits/stdc++.h>
using namespace std;
int main() {
int n,s=0; //注意累加求和的s要初始化为0
cin>>n;
//遍历n层,依次将每层的石块进行累加
for(int i=1; i<=n; i++){
s+=i*i; //根据题意,第i层需要i*i个石块
}
cout<<s;
return 0;
}