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:循环有点描述不清,但无论是移动第 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,因此本题代码实现的功能是将 099 累加到 cnt 上,将 i=0 修改为 i=1,代码功能变成了将 199 累加到 cnt 上,累计和上少一个 0 并不会改变结果,输出自然相同。表述正确。

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

正确答案:错误 考察知识点:控制语句结构 - 循环 解析: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。
#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 个石块。
#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;
}


