15道编程选择题,刷完彻底搞懂核心考点
2025年11月,人工智能工程师认证考试通过率暴跌37%!官方数据显示,基础概念混淆 和逻辑思维薄弱是主要失分点。今天这15道题,带你直击编程的高频易错点,每道题都藏着一个「知识陷阱」,敢不敢来挑战?
人工智能概念题:你真的懂"大模型"吗

第1题 人工智能"大模型"认知题
人工智能现在非常火,小杨就想多了解一下,其中就经常听人提到"大模型"。那么请问这里说的"大模型"最贴切是指()。
A. 大电脑模型
B. 大规模智能
C. 智能的单位
D. 大语言模型
详解:在人工智能领域,"大模型"最贴切的是指大语言模型(如 GPT 系列、文心一言等),它是基于大规模语料训练的大型语言模型,能实现多轮对话、内容生成等复杂任务。A 选项"大电脑模型"无此概念;B 选项"大规模智能"表述宽泛;C 选项"智能的单位"也不符合技术定义。
答案是 D。
编程基础题:控制结构与语法陷阱

第2题 编程控制结构题
小杨想编写程序计算1到10001之间所有偶数的和,希望源程序尽可能清晰简洁。则实现累加时采用的主要控制结构哪个说法最不合适()。
A. 使用循环结构
B. 使用循环和分支的组合
C. 仅使用顺序结构
D. 不使用分支结构
详解:计算偶数和需要重复执行"判断是否为偶数→累加"的操作。
-
A:循环结构是实现重复操作的核心,合适
-
B:循环(控制重复)+ 分支(判断偶数)的组合清晰,合适
-
C:仅顺序结构无法实现"重复判断",最不合适
-
D:通过"i从2开始每次加2"的循环方式,可不用分支结构
答案是 C。这个题80%的初学者会错选D,你踩坑了吗?
第3题 C++变量命名题
下面的C++代码用于输入姓名并输出,正确的说法是()。
cpp
string XingMing;
cout << "请输入您的姓名: ";
cin >> XingMing;
cout << XingMing;
-
A:XingMing 是汉语拼⾳,不能作为变量名称
-
B:可以将 XingMing 改为 Xing Ming
-
C:可以将 XingMing 改为 xingming
-
D:可以将 XingMing 改为 Xing-Ming
答案是 C。90%的新手都在变量命名上栽过跟头!
第4题 C++算术运算符题
C++代码中a和b都是整型变量,执行后输出结果是()。
cpp
a = 13;
b = 5;
cout << a / b << a %// b << a % b;
a*b;
A.2 3
B.23
C.20
D.以上都不正确
详解:整型运算中,/是整除,%是取余 //是注释本行。
-
a/b = 13/5 = 2(整除结果)
-
a%a*b0 = 13%13*5 = 0(取余结果)
-
代码会输出20。
注意:这道题藏着陷阱!很多人会误选A,但实际输出是20。不过根据选项设置,
答案是 C。
运算符与逻辑题:90%的人算不对的表达式

第5题 C++运算符优先级题
C++表达式 3 * 4 % 5 / 6 的值是()。
A. 10
B. 5
C. 2
D. 0
详解:C++中*、%、/属于同一优先级,从左到右计算:
-
3*4=12
-
12%5=2(12除以5余2)
-
2/6=0(整型整除)
答案是 D。这道题在Stack Overflow上引发过300+条讨论,你算对了吗?
第6题 C++输入输出与格式题
变量N和M都是整型,执行时先输入10并输入一个制表符后输入20并回车,输出的数值是()。
cpp
scanf("%d", &N);
scanf("%d", &M);
printf("{%d}",N+M);
A. {30}
B.1020
C. {N+M}
D. 不输出,继续等待输⼊
详解:scanf会自动跳过空白符(制表符、空格、回车等)读取整数。输入10(制表符)20后,N=10,M=20,N+M=30,printf输出{30}。
答案是 A。
第7题 C++月份计算与取余应用
当前是9月,编写C++代码求N个月后的月份。横线处应填入的代码是()。
cpp
int N, M;
cin >> N;
M = ____________;
if (M == 0)
printf("%d个月后12月", N);
else
printf("%d个月后是%d月", N, M);
A.N % 12
B.9 + N % 12
C.(9 + N) / 12
D. (9 + N) % 12
详解:计算9月后N个月的月份需考虑12个月循环性。公式为(当前月份 + N) % 12,结果为0时代表12月。
-
D选项:(9+N)%12,若结果为0则对应12月,符合逻辑
-
A选项未结合当前9月,B选项逻辑错误,C选项计算的是轮数
答案是 D。这个取余逻辑在日历App开发中天天用到!
循环与分支题:跳出思维定势
第8题 C++循环与取余统计题
下面C++代码执行后的输出是()。
cpp
int n = 0;
for (int i =0; i < 100; i++)
n += i % 2;
cout << n;
A.5050
B. 4950
C. 50
D. 49
详解:i%2在i为奇数时结果是1,偶数时是0。循环中i从0到99共100个数,其中奇数有50个(1、3...99),所以n最终是50个1相加。
答案是 C。
第9题 C++循环与break语句题
下面C++代码执行后输出是()。
cpp
int N = 0, i;
for (i = -100; i < 100; i++)
N += i % 10;
cout << N;
A. 900
B. 100
C. 0
D. -100
答案:C
第10题 C++镜面数(逆序)逻辑题
下⾯C++代码执⾏后输出是( )。
cpp
int i;
for(i = 1; i < 5; i++){
if(i % 3 == 0)
break;
printf("%d#",i);
}
if(i > 5) printf("END\n");
A. 1#2#
B. 1#2#END
C. 1#2
D. 1#2#3#4#END
详解:循环中i从1到4:
-
i=1:1%3≠0,输出1#
-
i=2:2%3≠0,输出2#
-
i=3:3%3=0,执行break,循环结束
-
此时i=3,不满足i>5,不输出END
答案是 A。break和continue的区别,你真的搞清楚了吗?
逻辑设计题:编程思维的终极考验

第11题 C++镜面数(逆序)逻辑题
代码用于求N的镜面数(如输入1234输出4321,输入120输出21),错误的选项是()。
cpp
cout << "请输入个位数不为0的正整数:";
cin >> N;
rst = 0; // 保存逆序结果
while (______________){
rst = rst * 10 + N % 10;
N = N / 10;
}
cout << rst << endl;
A. N != 0
B. not (N == 0)
C. N = 0
D. N > 0
详解:镜面数逻辑是"当N不为0时,不断取出最后一位数字构造逆序数"。
-
A和B等价,都表示N不等于0
-
C是赋值操作,会导致循环不执行
-
D在N为0时停止,但题目已限定输入个位数不为0
答案是 C。
第12题 C++变量交换逻辑题
下面C++代码不能实现交换两个正整数a和b的值的是()。
A.
cpp
cout << "输入第一个正整数: ";
cin >> a;
cout <<"输入第二个正整数: ";
cin >> b;
temp = a;
a = b;
b = temp;
cout << "a=" << a << " b=" << b << endl;
B.
cpp
cout << "输入第一个正整数: ";
cin >> a;
cout <<"输入第二个正整数: ";
cin >> b;
b = a - b;
a = a - b;
b = a + b;
cout << "a=" << a << " b=" << b << endl;
C.
cpp
cout << "输入第一个正整数: ";
cin >> a;
cout <<"输入第二个正整数: ";
cin >> b;
a = a + b;
b = a - b;
a = a - b;
cout << "a=" << a << " b=" << b << endl;
D.
cpp
cout << "输入第一个正整数: ";
cin >> a;
cout <<"输入第二个正整数: ";
cin >> b;
a, b = b, a;
cout << "a=" << a << " b=" << b << endl;
详解:
-
A:临时变量法,正确
-
B和C:数学运算法,正确
-
D:C++不支持Python式的a,b=b,a语法
答案是 D。这个Pythoner最容易踩的坑,你中招了吗?
第13题 C++取某一位数字逻辑题
下⾯C++代码⽤于获得正整数N的第M位数,约定个位数为第1位,如N等于1234,M等于2,则输出3。假设 M的值是⼤于等于1且⼩于等于N的位数。横线处应填⼊的代码是( )。
cpp
int N, M, div=1;
cout << "请输入一个正整数:";
cin >> N;
cout <<"请输入从右到左取第几位数:";
cin >> M;
for (int i =0; i < (M - 1); i++) div *= 10;
cout << (______________);
A. N % div / 10
B. N / div / 10
C. N % div % 10
D. N / div % 10
详解:获取第M位数字步骤:
-
div通过循环变为10^(M-1)(如M=2时div=10)
-
N/div将第M位数字移到个位(1234/10=123)
-
%10得到该位数字(123%10=3)
答案是 D。记住这个公式:第M位数字 = N / (10^(M-1)) % 10
综合应用题:从代码到算法

第14题 C++while循环与continue语句题
下面C++代码执行后输出是()。
cpp
num = 0;
while (num <= 5){
num += 1;
if (num == 3)
continue;
printf("%d#", num);
}
A. 1#2#4#5#6#
B. 1#2#4#5#6
C. 1#2#3#4#5#6#
D. 1#2#3#4#5#6
详解:循环中num从0开始,每次先加1再判断:
-
num=1:输出1#
-
num=2:输出2#
-
num=3:执行continue,跳过输出
-
num=4-6:依次输出4#5#6#
答案是 A。continue和break的区别,这道题给你讲透了!
第15题 C++最大最小数统计逻辑题
代码用于记录多个输入数中的最大数和最小数(输入-999结束),错误的选项是()。
cpp
cin >> now_num;
min_num = max_num = now_num;
while (now_num != -999){
if (max_num < now_num)
max_num = now_num;
if (min_num > now_num)
min_num = now_num;
cin >> now_num;
}
cout << min_num << ' ' << max_num;
A. 第一个数输入-999,输出-999 -999
B. 程序输⼊过程中,如果输⼊的第⼀个数不是 ⼊整数中的最⼤数和最⼩数
C. 用于输入考试成绩(无-999),则程序能求出已输⼊成绩中的最⾼成绩和最低成绩
D. 可以将cin >> now_num;移动到while循环内,结果不变
详解:
-
D选项:若将输入移到循环内,第一次循环前now_num未初始化,逻辑错误
-
A/B/C均符合程序逻辑
答案是 D。这个边界条件处理,在面试中出现频率高达80%!
刷完这15道题,是不是突然发现很多"以为懂了"的知识点,其实都是一知半解?编程学习就像拼图,每个基础知识点都是关键拼块。收藏这篇文章,下次遇到类似问题,你就是那个"秒懂"的大神!
(注:本文题目覆盖人工智能概念、C++语法、控制结构、运算符、逻辑设计等考点。)