CCF-GESP 等级考试 2025年3月认证C++一级真题解析

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++中*、%、/属于同一优先级,从左到右计算:

  1. 3*4=12

  2. 12%5=2(12除以5余2)

  3. 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位数字步骤:

  1. div通过循环变为10^(M-1)(如M=2时div=10)

  2. N/div将第M位数字移到个位(1234/10=123)

  3. %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++语法、控制结构、运算符、逻辑设计等考点。)

相关推荐
陌路202 小时前
S16 排序算法--堆排序
算法·排序算法
烛衔溟2 小时前
C语言算法:排序算法入门
c语言·算法·排序算法·插入排序·冒泡排序·选择排序·多关键字排序
一匹电信狗2 小时前
【C++】封装红黑树实现map和set容器(详解)
服务器·c++·算法·leetcode·小程序·stl·visual studio
Laity______2 小时前
指针(2)
c语言·开发语言·数据结构·算法
是苏浙2 小时前
零基础入门C语言之C语言实现数据结构之顺序表经典算法
c语言·开发语言·数据结构·算法
CoovallyAIHub5 小时前
空间智能!李飞飞、LeCun&谢赛宁联手提出“空间超感知”,长文阐述世界模型蓝图
深度学习·算法·计算机视觉
Dave.B5 小时前
【VTK核心过滤器详解】:vtkCleanPolyData 多边形数据清洗实战指南
算法·vtk
AiXed5 小时前
PC微信 device uuid 算法
前端·算法·微信
@木辛梓6 小时前
指针,数组,变量
开发语言·c++·算法