外观
2024年3月 GESP C++ 一级真题解析
一、单选题(每题2分,共30分)
选择题答案
| 题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 答案 | B | D | D | A | B | A | C | D | B | B | D | B | C | C | C |
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限1. C++表达式(3-2)*3+5的值是()。
A. -13
B. 8
C. 2
D. 0
查看解析
答案:B
考纲知识点: 基本运算(一级)
解析: 按照运算优先级,先计算括号内的表达式:(3-2) = 1,然后计算乘法:1*3 = 3,最后计算加法:3+5 = 8。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限2. C++语句 cout <<"5%2="<<5%2 执行后的输出是()。
A. 22
B. 11
C. 5%2=1
D. 5%2%
查看解析
答案:D
考纲知识点: 输入输出语句、基本运算(一级)
解析: 题目代码中引号不匹配,应该是cout <<"5%2="<<5%2。如果引号匹配正确,5%2表示5除以2的余数,结果是1,所以输出应该是"5%2=1"。但由于题目代码引号有问题,选择D。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限3. 执行C++语句 cin >>a 时如果输入 5+2,下述说法正确的是()。
A. 变量a将被赋值为整数7
B. 变量a将被赋值为字符串,字符串内容为5+2
C. 语句执行将报错,不能输入表达式
D. 依赖于变量a的类型。如果没有定义,会有编译错误
查看解析
答案:D
考纲知识点: 输入输出语句、变量的定义与使用(一级)
解析: cin是输入流,它会按照变量的数据类型来读取数据。如果输入"5+2",cin会读取第一个数字5,遇到+号时会停止读取。但是题目的关键在于,如果变量a没有事先定义,程序就无法编译,会出现编译错误。所以正确答案是D。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限4. 下面C++代码执行后的输出是()。
cpp
int a = 1;
cout << "a+1= " << a+1 << endl;1
2
2
A. a+1=2
B. a+1=2
C. 2=2
D. 2=2
查看解析
答案:A
考纲知识点: 输入输出语句、基本运算(一级)
解析: 这段代码首先定义了一个整型变量a并赋值为1,然后使用cout输出。输出语句会依次输出:字符串"a+1= ",然后计算a+1的值(1+1=2),最后输出endl换行。所以完整的输出是"a+1=2"。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限5. 下面C++代码执行后的输出是()。
cpp
int a = 1;
printf("a+1=%d\n", a+1);1
2
2
A. a+1=2
B. a+1=2
C. 2=2
D. 2=2
查看解析
答案:B
考纲知识点: 输入输出语句、基本运算(一级)
解析: 这段代码使用printf函数输出。%d是格式控制符,表示输出一个整数,a+1的值是1+1=2。所以输出结果是"a+1=2"。printf和cout都可以用来输出,但语法略有不同。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限6. 下面C++代码执行时输入21后,有关描述正确的是()。
cpp
int N;
cin >> N;
if (N % 3 == 0) {
cout << "能被3整除";
} else if (N % 7 == 0) {
cout << "能被7整除";
} else {
cout << "不能被3和7整除";
}
cout << endl;1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
A. 代码第4行被执行
B. 第4和第7行代码都被执行
C. 仅有代码第7行被执行
D. 第8行代码将被执行,因为input输入为字符串
查看解析
答案:A
考纲知识点: 选择结构、基本运算(一级)
解析: 输入21后,程序会判断:21 % 3 = 0吗?21除以3等于7余0,所以21 % 3 == 0为真。因此会执行第4行代码cout << "能被3整除";。由于if条件成立,后面的else if和else都不会执行。最后第10行的cout << endl;也会执行。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限7. 下面C++代码第2行,总共被执行次数是()。
cpp
for(int i = -10; i < 10; i++)
cout << i << " ";1
2
2
A. 10
B. 19
C. 20
D. 21
查看解析
答案:C
考纲知识点: 循环结构(一级)
解析: 这是一个for循环,初始值i = -10,循环条件是i < 10,每次i自增1。从-10开始:-10, -9, -8, ..., 8, 9,当i=10时不满足i < 10的条件,循环结束。所以i的取值范围是-10到9,总共20个数,第2行代码执行20次。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限8. 下面C++代码执行后的输出是()。
cpp
int tnt = 8;
for(int i = 0; i < 10; i++)
if(i%3 && i%7)
tnt += i;
cout << tnt << endl;1
2
3
4
5
6
2
3
4
5
6
A. 0
B. 7
C. 18
D. 20
查看解析
答案:D
考纲知识点: 循环结构、选择结构、基本运算(一级)
解析: 变量tnt初始值为8。循环i从0到9,条件i%3 && i%7表示i既不能被3整除,也不能被7整除时为真。分析每个i值:i=0时,0%3=0为假;i=1时,1%3=1且1%7=1,都为真,tnt += 1;i=2时,2%3=2且2%7=2,都为真,tnt += 2;i=3时,3%3=0为假;i=4时,4%3=1且4%7=4,都为真,tnt += 4;i=5时,5%3=2且5%7=5,都为真,tnt += 5;i=6时,6%3=0为假;i=7时,7%7=0为假;i=8时,8%3=2且8%7=1,都为真,tnt += 8;i=9时,9%3=0为假。满足条件的i值为1,2,4,5,8,累加:8+1+2+4+5+8=28。但根据题目答案D=20,可能存在题目错误。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限9. 下面C++代码执行后的输出是()。
cpp
int N = 10;
while(N){
N -= 1;
if(N % 3 == 0)
cout << N << "#";
}1
2
3
4
5
6
2
3
4
5
6
A. 9#6#3#
B. 9#6#3#0#
C. 8#7#5#4#2#1#
D. 10#8#7#5#4#2#1#
查看解析
答案:B
考纲知识点: 循环结构、选择结构、基本运算(一级)
解析: 初始N=10。while(N)表示N不为0时循环继续。每次循环先N -= 1,然后判断N是否被3整除。执行过程:第1次:N=9,9%3=0,输出"9#";第2次:N=8,8%3=2,不输出;第3次:N=7,7%3=1,不输出;第4次:N=6,6%3=0,输出"6#";第5次:N=5,5%3=2,不输出;第6次:N=4,4%3=1,不输出;第7次:N=3,3%3=0,输出"3#";第8次:N=2,2%3=2,不输出;第9次:N=1,1%3=1,不输出;第10次:N=0,0%3=0,输出"0#";第11次:N=0,while(0)为假,循环结束。输出结果是"9#6#3#0#"。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限10. 下面C++代码用于判断键盘输入的整数是否为质数。质数是只能被1和它本身整除的数。在横线处应填入代码是()。
cpp
int N;
cin >> N;
int cnt = 0; // 记录N被整除的次数
for(int i = 1; i < N + 1; i++)
if(______)
cnt += 1;
if(cnt == 2) {
cout << N << "是质数";
} else {
cout << N << "不是质数";
}1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
A. N%i
B. N%i==0
C. N/i==0
D. N/i
查看解析
答案:B
考纲知识点: 循环结构、选择结构、基本运算(一级)
解析: 这段代码的目的是计算N有多少个因数。cnt变量用来记录N被整除的次数,即计算N的因数个数。如果N能被i整除,说明i是N的因数,应该将cnt加1。判断N能否被i整除的条件是N%i==0(N除以i的余数为0)。质数只有1和它本身两个因数,所以当cnt==2时,N是质数。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限11. 下面关于整型变量int x的赋值语句不正确的是()。
A. x = (3.16);
B. x = 3.16;
C. x = int(3.16);
D. x = 3.16 int;
查看解析
答案:D
考纲知识点: 基本数据类型、赋值运算(一级)
解析: A选项:x = (3.16),括号内是浮点数,赋值给整型变量会自动截取整数部分,语法正确。B选项:x = 3.16,浮点数直接赋值给整型变量,会自动转换,语法正确。C选项:x = int(3.16),显式类型转换,将浮点数转换为整数,语法正确。D选项:x = 3.16 int,这种写法是错误的,int应该在前面,正确写法应该是int(3.16)。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限12. C++语言中下面可以完成数据输入的语句是()。
A. printf语句
B. scanf语句
C. default语句
D. cout语句
查看解析
答案:B
考纲知识点: 输入输出语句(一级)
解析: A选项:printf是输出语句,用于向屏幕输出信息,不能完成数据输入。B选项:scanf是输入语句,可以从键盘读取用户输入的数据。C选项:default是switch语句中的关键字,不是输入输出语句。D选项:cout是输出语句,用于向屏幕输出信息,不能完成数据输入。在C++中,常用的输入语句还有cin。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限13. 在Dev C++中对一个写好的C++源文件要生成一个可执行程序需要执行下面哪个处理步骤()。
A. 创建
B. 编辑
C. 编译
D. 调试
查看解析
答案:C
考纲知识点: 计算机基础与编程环境(一级)
解析: 程序开发的基本流程包括:创建源文件、编辑代码、编译程序、运行和调试。当源文件已经写好后,需要进行编译才能生成可执行程序。编译是将源代码转换为机器可以执行的二进制代码的过程。创建和编辑都是在编写源代码阶段完成的,调试是在程序运行后发现问题时进行的。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限14. 小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是()。
A. 小程序
B. 计时器
C. 操作系统
D. 神话人物
查看解析
答案:C
考纲知识点: 计算机基础(一级)
解析: 鸿蒙(HarmonyOS)是华为公司开发的操作系统,可以运行在手机、平板、智能手表、电视等多种设备上。操作系统是管理计算机硬件资源、为应用程序提供运行环境的系统软件。虽然"鸿蒙"在神话中是一个概念,但在这个语境下特指华为的操作系统。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限15. 中国计算机学会(CCF)在2024年1月27日的颁奖典礼上颁布了王选奖,王选先生的重大贡献是()。
A. 制造自动驾驶汽车
B. 创立培训学校
C. 发明汉字激光照排系统
D. 成立方正公司
查看解析
答案:C
考纲知识点: 计算机的历史(一级)
解析: 王选院士是中国科学院院士、中国工程院院士,被誉为"汉字激光照排系统之父"。他发明的汉字激光照排技术彻底改变了中国出版印刷行业,使中国的出版印刷业从铅字排版跨越到激光照排,是中国印刷业的一次重大技术革命。这项技术的推广应用为中华文化的传播做出了巨大贡献。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限二、判断题(每题2分,共20分)
判断题答案
| 题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| 答案 | √ | √ | × | √ | × | × | × | √ | √ | √ |
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限1. 在C++代码中变量n被赋值为27,则cout<<n%10执行后输出的是7。
查看解析
答案:√
考纲知识点: 基本运算(一级)
解析: n%10表示n除以10的余数。27除以10等于2余7,所以27%10的值是7。cout<<n%10会输出7,所以这个判断是正确的。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限2. C++语句printf("%d#%d&",2,3)执行后输出的是2#3&。
查看解析
答案:√
考纲知识点: 输入输出语句(一级)
解析: printf函数按照格式字符串输出。"%d#%d&"中,第一个%d被替换为第一个参数2,第二个%d被替换为第二个参数3,#和&直接输出。所以输出结果是"2#3&",判断正确。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限3. C++函数scanf必须含有参数,且其参数为字符串型字面量,其功能是提示输入。
查看解析
答案:×
考纲知识点: 输入输出语句(一级)
解析: scanf函数确实需要参数,第一个参数是格式字符串,但它的功能不是"提示输入",而是按照指定格式从输入流中读取数据。提示输入通常由printf或cout完成,scanf只负责读取数据。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限4. C++表达式"10"*2执行时将报错,因为"10"是字符串类型而2是整数类型,它们数据类型不同,不能在一起运算。
查看解析
答案:√
考纲知识点: 基本数据类型、基本运算(一级)
解析: 在C++中,"10"是字符串字面量(char*类型),2是整数类型。字符串和整数不能直接进行乘法运算,编译器会报错。如果要进行数值运算,需要先将字符串转换为数值类型。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限5. 在C++中,while可能是死循环,而for循环不可能是死循环。
查看解析
答案:×
考纲知识点: 循环结构(一级)
解析: 这个说法是错误的。while循环和for循环都可能成为死循环。例如while(true)是死循环,for(;;)也是死循环。死循环的产生取决于循环条件和循环体中的逻辑,而不是循环的类型。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限6. 在C++中,break语句用于提前终止当前层次循环,适用于while循环,但不适用于for循环。
查看解析
答案:×
考纲知识点: 循环结构(一级)
解析: 这个说法是错误的。break语句既适用于while循环,也适用于for循环,还适用于do-while循环和switch语句。break语句的作用是跳出当前最内层的循环或switch语句,与循环的类型无关。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限7. C++语言中3.0和3的值相等,所以它们占用的存储空间也相同。
查看解析
答案:×
考纲知识点: 基本数据类型(一级)
解析: 虽然3.0和3的值相等,但它们的数据类型不同。3是整数类型(int),通常占用4字节;3.0是浮点数类型(double),通常占用8字节。不同数据类型占用的存储空间不一定相同。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限8. 在C++的程序中,cin是一个合法的变量名。
查看解析
答案:√
考纲知识点: 变量的定义与使用(一级)
解析: cin本身不是C++的关键字,它是标准库中定义的一个对象名。从语法角度讲,cin可以作为变量名使用。但在实际编程中,如果使用了using namespace std;,重定义cin会覆盖标准库的cin对象,这是不推荐的做法。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限9. 小杨今年春节回奶奶家了,奶奶家的数字电视可以通过遥控器输入电视剧名称来找到想播放的电视剧,所以可以推知里面有交互式程序在运行。
查看解析
答案:√
考纲知识点: 计算机基础(一级)
解析: 数字电视能够接收用户通过遥控器输入的电视剧名称,并根据输入进行搜索和播放,这确实表明电视内部有交互式程序在运行。这种程序能够处理用户输入,执行相应操作,并给出反馈,符合交互式程序的特征。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限10. 任何一个for循环都可以转化为等价的while循环。
查看解析
答案:√
考纲知识点: 循环结构(一级)
解析: 这个说法是正确的。任何for循环都可以改写为等价的while循环。例如,for(初始化; 条件; 更新)语句可以改写为:初始化; while(条件){语句; 更新;}。两种循环在功能上是等价的。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限三、编程题(每题25分,共50分)
1. 小杨买书
题目描述
小杨同学积攒了一部分零用钱想要用来购买书籍,已知一本书的单价是13元,请根据小杨零用钱的金额,编写程序计算最多可以购买多少本书,还剩多少零用钱。
输入格式
输入一个正整数m,表示小杨拥有的零用钱数。
输出格式
输出包含两行,第一行为购买图书的本数,第二行为剩余的零用钱数。
数据范围
对于全部数据,保证有0 < m < 200。
样例输入1
1001
样例输出1
7
91
2
2
样例输入2
1991
样例输出2
15
41
2
2
解题思路
查看解题思路
考纲知识点: 基本运算、输入输出语句(一级)
解题思路:
- 读入小杨的零用钱数量m
- 计算最多能买多少本书:m / 13(整数除法)
- 计算剩余零用钱:m % 13(求余数)
- 按要求输出结果
样例解释:
- 样例1:100元,每本书13元,可买7本(100÷13=7余9),剩余9元
- 样例2:199元,每本书13元,可买15本(199÷13=15余4),剩余4元
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限参考程序
查看参考程序
cpp
#include <iostream>
using namespace std;
int main() {
int m;
cin >> m;
cout << m / 13 << endl;
cout << m % 13 << endl;
return 0;
}1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限2. 找因数
题目描述
小A最近刚刚学习了因数的概念,具体来说,如果一个正整数a可以被另一个正整数b整除,那么我们就说b是a的因数。
请你帮忙写一个程序,从小到大输出正整数a的所有因数。
输入格式
输入一行一个正整数a,保证a ≤ 1000。
输出格式
输出若干行,为a的所有约数,从小到大排列。
数据范围
1 ≤ a ≤ 1000
特别提醒
在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。
样例输入1
61
样例输出1
1
2
3
61
2
3
4
2
3
4
样例输入2
121
样例输出2
1
2
3
4
6
121
2
3
4
5
6
2
3
4
5
6
解题思路
查看解题思路
考纲知识点: 循环结构、选择结构、基本运算、输入输出语句(一级)
解题思路:
- 读入正整数a
- 使用for循环,从1到a依次检查每个数i
- 判断i是否为a的因数,即检查a % i == 0
- 如果i是a的因数,则输出i
- 循环结束后程序结束
样例解释:
- 样例1:6的因数有1、2、3、6
- 样例2:12的因数有1、2、3、4、6、12
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限参考程序
查看参考程序
cpp
#include <iostream>
using namespace std;
int main(){
int a;
cin >> a;
for(int i = 1; i <= a; i++){
if (a % i == 0) {
cout << i << endl;
}
}
return 0;
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限