本文为 2026 年 6 月 GESP C++ 一级试卷选择题个人解析,所有答案与思路仅代表个人做题思路,若存在疏漏、理解偏差,欢迎各位老师、同学在评论区交流指正,共同讨论学习!

一、单选题

第 1 题

学校组织到未来农场参观,小明听讲解员介绍,在智能温室中,湿度传感器可以连续检测土壤的湿度变化,并将检测到的湿度数据实时发送给中央控制器。中央控制器根据这些数据判断是否开启灌溉系统。请问,这里的湿度传感器所发挥的作用,类似于计算机系统中的哪一类组件?

A. 处理器

B. 存储器

C. 输入设备

D. 输出设备

解析:传感器采集外界湿度数据传给控制器,对应计算机输入设备(向主机传入信息)选C

第 2 题

在使用某集成开发环境(比如 Dev-C++)来编辑源代码文件时,程序员经常需要在编辑区中对代码进行各种修改。以下关于在编辑区中执行的操作描述不正确的()。

A. 可以将变量名 count 统一修改为 number

B. 可以连续撤销最近次输入的内容

C. 可以调整代码行的缩进(如按 Tab 键)

D. 在注释文本中间不能混用中英文

解析:注释里中英文可以随意混用,选D

第 3 题

有关如下 C++ 代码的说法,正确的是。

float a = 3 + 3.5;

cout << a;

A. 代码执⾏将报错。如果将 a=3+3.5 改为 a=3+3+1/2 将能正常执行

B. 代码执行将报错。如果将 a = 3 + 3.5 改为 a=3.6+3.5 将能正常执行

C. 代码能正常执行,将输出 6

D. 代码能正常执行,将输出 6.5

解析:D选项中,3+3.5 运算结果 6.5 存入 float 变量,输出 6.5。首先代码不会报错,A和B选项排除,C选项计算结果错,另外,A 选项中 1/2 是整数除法得 0,式子结果 6;选 D。

第 4 题

下列 C++ 表达式与 -2 * 2 % 4 的值不同的是()。

A. - (2 * 2) % 4

B. (- 2 * 2) % 4

C. -2 *(2 % 4)

D. (2 * 2) % -4

解析:-2 * 2 % 4的计算顺序是先算-2 * 2,再算 % 4,选项C先算的是2 % 4很明显与其他选项不同,选 C

第 5 题

执行如下 C++ 代码片段,其输出是()。

int a = 3;

int b = a;

a = 4;

printf("%d %d", a, b);

A. 3 3

B. 4 3

C. 4 4

D. 3 4

解析:int b=a 此时b获取到的数值是3,后续修改 a=4 ,最终输出结果为 4 3,选 B。

第 6 题

如下 C++ 代码执行时输入 2026-6-27,下列说法正确的是。

int N;

cin >> N;

cout << N;

A. 输入失败,不允许输入减号,没有输出

B. 允许输入,输出 1993

C. 允许输入并原样输出 2026-6-27

D. 允许输入并输出 2026

解析:这道题中cin 读取 int类型的数据,遇到非数字 '-' 就会停止,最后只读取 2026 存入变量,输出 2026,减号及后面内容舍弃,选 D。

第 7 题

如下 C++ 代码执行时,下列说法错误的是。

int N, M;

cin >> N >> M;

if (N > M)

        cout << "A " << (N - M);

else

        cout << "B " << (M - N);

A. 如果输入 4 3,将输出 A 1

B. 如果输入 3 4,将输出 B 1

C. 如果输入 3 3,将输出 A 0

D. 如果输入 4 4,将输出 B 0

解析:N、M 相等时执行 else 分支,应该是输出 B 0,题目中C选项输入 3 3 输出 A 0,说法错误,选 C。

第 8 题

阅读如下 C++ 代码,下列说法错误的是。

int cnt = 0;

for (int i = 0; i < 5; i++)

        cnt += 1;

cout << cnt;

A. 将 cnt += 1 修改为 cnt = cnt + 1,执行效果相同

B. 将 cnt += 1 修改为 cnt = 1 + cnt,执行效果相同

C. 将 cnt += 1 修改为 cnt =+ 1,执行效果相同

D. 将 cnt += 1 修改为 cnt = + 1 + cnt,执行效果相同

解析:cnt =+ 1 相当于 cnt = 1直接赋值 1,不会累加,和 cnt+=1 效果不同,选 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。横线处应该先后依次填⼊的运算符是( )。

int num = 1;

for (int i = 0; i < 35; i++) {

        printf("%d ", num);

        if (num ____ 10)

                num ____ 2;

        else

                num ____ 1;

}

A. >    /=  +=

B. >= %= +=

C. >   %= +=

D. >   /=            =+

解析:if语句中是num  10 进行比较,再看if和else里的式子,依次能实现加1的是else分支,再从题目里的数字看,小于等于10的是依次加1,由此推出第一个空是 >, 第三个空是+=, 可以排除B、D选项,数字从11变到5,num和2要进行除法才可以得到上述结果,所以选 A。

第 10 题

如下 C++ 代码可以执行,其输出是。

int i;

for (i = 1; i < 5; i++)

        if (i % 2 == 0) {

                continue;

                cout << i << "#";

        }

cout << i << "END#";

A. 5END#

B. 5#END

C. 1#3#4#END

D. 1#3#4 END#

解析:i 循环 1、2、3、4,偶数时执行 continue 跳过输出,i=5循环结束 ,只执行最后一行的 cout,输出 5END#,选 A。

第 11 题

如下 C++ 代码执行时,下列说法正确的是。

int N, i;

cin >> N;

for (i = 2; i < N; i++)

        if (N % i == 0) {

                cout << "1#";

                break;

        } else

                cout << "0#";  

A. 如果输入 2,将输出 1#

B. 如果输入 15,将输出 0#1#

C. 如果输入 1,将输出 0#

D. 如果输入 3,将输出 1#

解析:A选项,N为2循环条件不符,进不去循环无输出;C选项,N为1同样无法进入循环无输出;D选项,N为3,i为2,执行else分支输出0#;B选项,N=15,i=2,执行else分支先输出0#,接下来i=3执行if分支再输出1#,执行break结束循环,最终输出结果为0#1#,B选项正确

第 12 题

有关如下 C++ 代码,下列说法中错误的是。

int i, tot;

i = 0, tot = 0;

while (0 <= i && i < 10) {

        tot += 1;

        i += 1;   

}

cout << tot; 

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 交换顺序,执行结果与修改前相同

解析:原循环 i 从 0 到 9 共 10 ,修改后 i 从 1 到 9 仅 9,tot 累加和改变,而且题目中的代码输出结果为10,A 说法错误。

第 13 题

以下 C++ 代码可以找出千位、百位、⼗位和个位满⾜特定条件的四位数(例如各位数字的四次⽅和等于原 数,即“四叶玫瑰数”),横线处应该填⼊的是( )。

int count = 0;

for (int n = 1000; n <= 9999; n++) {

        int a = n / 1000;

        int b = (n / 100) % 10;

        _________________________       // L1

        int d = n % 10;

        if (a * a * a * a + b * b * b * b + c * c * c * c + d * d * d * d == n) { // 特定条件

                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;

解析:从横线处上方代码可以看出变量a是计算千位,变量b是计算百位,变量d是计算个位ie,横线处需要填写计算是十位的式子,n 除以 10 去掉个位,再对 10 取余即可得到十位数字,对应 int c=(n/10)%10,选 B。

第 14 题

下⾯的 C++ 代码⽤于计算经过 n 秒后的秒针位置(0 ~ 59),两处横线处分别应填⼊的代码是( )。

int start, n, pos;

cout << "当前秒数(0-59): ";

cin >> start;

cout << "经过多少秒: ";

cin >> n;

pos = ____________;  // L1

if (____________)     // L2

        cout << n << "秒后回到12点方向" << endl;

else

        cout << n << "秒后指向" << pos << "秒刻度" << endl;

A. (start + n) / 60 和 pos == 0

B. (start + n) % 60 和 pos == 0

C. (start + n) / 60 和 pos <= 0

D. (start + n) % 60 和 pos = 0

解析:秒数 模 60 可以得到 0-59 刻度,如果pos 等于 0 代表回到 12 点,L1 填取模,L2 判断 pos==0,选 B。

第 15 题

如果正整数 N 只能被 1 和它本⾝整除,则它是⼀个质数(或素数)。下⾯的 C++ 代码⽤于判断正整数 N 是否为质数(素数)。若 N 是质数,输出 YES ,否则输出 NO。横线处不应填⼊的代码是( )。

int N, i;

cin >> N;

if (N <= 1) {

        cout << "NO";

        return 0;

}

for (i = 2; ______; i++) {

        if (N % i == 0) {

                cout << "NO";

                return 0;

        }

}

cout << "YES";

A. i < N

B. i <= N

C. i <= N / 2

D. i * i <= N

解析:B选项中,循环条件 i<=N 时,i 最终会等于 N,N% N=0 会误判为合数,该条件不可用,其余循环条件合理,选 B。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐