外观
2023年3月 GESP C++ 一级真题解析
一、单选题(每题2分,共30分)
选择题答案
| 题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 答案 | B | A | A | C | B | D | D | A | A | D | B | C | D | B | C |
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限1. 以下不属于计算机输入设备的有()。
A. 键盘
B. 音箱
C. 鼠标
D. 传感器
查看解析
答案:B
考纲知识点: 计算机基础(一级)
解析: 本题属于考察计算机基础知识中的"输入"和"输出"概念;"输入"指外界向机器内部传递信息,"输出"指计算机内部信息向外界展示。此题中,"音箱"属于向外部播放声音,故属于输出概念。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限2. 计算机系统中存储的基本单位用B来表示,它代表的是()。
A. Byte
B. Block
C. Bulk
D. Bit
查看解析
答案:A
考纲知识点: 计算机基础(一级)
解析: 本题属于考察计算机基础知识中,关于存储的基本单位;计算机中,表示存储大小的最小单位为"字节",英文为"Byte",表示一个字节存储空间大小的单位,用大写字母B表示。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限3. 常量7.0的数据类型是()。
A. double
B. float
C. void
D. int
查看解析
答案:A
考纲知识点: 基本数据类型(一级)
解析: 本题考察考生对于基本数据类型的了解:关于基本数据类型,有整型int,浮点型double、float,字符型char,布尔型bool,本题中7.0是小数形式,属于浮点型,C++中浮点型默认是double。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限4. 下列关于C++语言的叙述,不正确的是()。
A. 变量定义时可以不初始化
B. 变量被赋值之后的类型不变
C. 变量没有定义也能够使用
D. 变量名必须是合法的标识符
查看解析
答案:C
考纲知识点: 变量的定义与使用(一级)
解析: 本题考察C++语言中变量的定义与使用;关于变量的定义与使用,变量在定义时可以不初始化,变量名必须是合法的标识符,并且变量被赋值之后的类型不变,均不符合题意;选项C变量必须定义才能使用,没有定义变量就使用会造成编译错误。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限5. 以下不可以作为C++标识符的是()。
A. x321
B. 0x321
C. x321_
D. _x321
查看解析
答案:B
考纲知识点: 变量的定义与使用(一级)
解析: 本题考察C++语言中变量的定义与使用;根据变量的命名规则:1.只能包含大小写字母、数字、下划线;2.必须以大小写字母或者下划线开头;3.不能使用C++的指令或关键字。选项B为0x321,以数字开头,违反变量的命名规则。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限6. 以下哪个不是C++语言的关键字。
A. int
B. for
C. do
D. cout
查看解析
答案:D
考纲知识点: 计算机基础与编程环境(一级)
解析: 本题考察输入输出语句及变量的定义与使用两部分内容;输入输出的cin和cout都是C++的常对象,但不是关键字。cout是标准输出流对象,而int、for、do都是C++的关键字。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限7. 如果a、b和c都是int类型的变量,下列哪个语句不符合C++语法。
A. c = a + b;
B. c += a + b;
C. c = a = b;
D. c = a++b;
查看解析
答案:D
考纲知识点: 基本运算(一级)
解析: 本题属于考察C++基本运算中的算术运算;选项A是将a加b的和赋值给c;选项B等价于c = c + (a + b);选项C是将b赋给a,再将a赋给c;选项D中++是自增运算符,a++表示a在原本的值上自增1,后面直接跟上b不符合C++语法。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限8. 如果用两个int类型的变量a和b分别表达长方形的长和宽,则下列哪个表达式不能用来计算长方形的周长。
A. a + b * 2
B. 2 * a + 2 * b
C. a + b + a + b
D. b + a * 2 + b
查看解析
答案:A
考纲知识点: 基本运算(一级)
解析: 本题主要考察基本运算中的算术运算;长方形的周长公式是(长+宽)2或者长2+宽2或四条边相加;选项A根据运算规则,先算乘法b2,后算加法a+b*2,不能用来计算长方形的周长。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限9. 表达式((3==0)+'A'+1+3.0)的结果类型为()。
A. double
B. int
C. char
D. bool
查看解析
答案:A
考纲知识点: 基本运算(一级)
解析: 本题考察C++基本运算过程中的隐式类型转换;算式中,(3==0)的计算结果为bool类型、'A'为char类型常量、1为int类型常量、3.0为double类型常量,将它们相加时会从低精度向高精度进行类型转换,最终结果为double类型。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限10. 如果a为int类型的变量,且a的值为6,则执行a*=3;之后,a的值会是()。
A. 3
B. 6
C. 9
D. 18
查看解析
答案:D
考纲知识点: 基本运算(一级)
解析: 本题考察C++基本运算;a*=3相当于a=a3,a的值一开始是6,所以a=63=18,将这个结果再赋给a,a的值变为18。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限11. 如果a和b均为int类型的变量,下列表达式不能正确判断"a等于0且b等于0"的是()。
A. a==0 && b==0
B. (a==b)==0
C. (!a) && (!b)
D. (a==0)+(b==0)==2
查看解析
答案:B
考纲知识点: 基本运算(一级)
解析: 本题主要考察C++基本运算中的逻辑运算;选项A直接判断a等于0且b等于0,符合题意;选项B是先判断a和b是否相等,若相等表达式的值为1,若不相等的值为0,再判断表达式a==b的值是否等于0,只有a和b不相等时,整个表达式成立;选项C当a为0时,!a为1,当b为0时,!b为1,两个条件都满足时整个条件成立;选项D中a==0条件满足为1,b==0条件满足也为1,两个都满足相加结果为2。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限12. 如果a为int类型的变量,下列哪个表达式可以正确求出满足"大于等于a且是4的倍数"的整数中最小的。
A. a4
B. a/44
C. (a+3)/4*4
D. a-a%4+4
查看解析
答案:C
考纲知识点: 基本运算(一级)
解析: 本题考察C++基本运算中的算术运算;选项C通过(a+3)/4*4的计算方式,当a是4的倍数时,结果等于a;当a不是4的倍数时,结果是大于a且是4的倍数的最小整数。这个表达式能正确求出满足条件的最小整数。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限13. 在下列代码的横线处填写(),可以使得输出是"2010"。
c++
#include <iostream>
using namespace std;
int main(){
int a = 10, b = 20;
a = ______; //在此处填入代码
b = a / 100;
a = a % 100;
cout << a << b << endl;
return 0;
}1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
A. a+b
B. (a+b)100
C. b100+a
D. a*100+b
查看解析
答案:D
考纲知识点: 基本运算(一级)
解析: 由于题目中没有分支、循环语句,可以尝试由结果反推。已知输出"2010",因此此时a为20、b为10。通过逆向分析,第6行语句执行前a应为1020。第5行语句执行前,a为10、b为20,四个选项中,只有选项D的表达式a*100+b的计算结果为1020。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限14. 在下列代码的横线处填写(),可以使得输出是"1248"。
c++
#include <iostream>
using namespace std;
int main(){
for (int i = 1; i <= 8; ______) //在此处填入代码
cout << i;
return 0;
}1
2
3
4
5
6
7
2
3
4
5
6
7
A. i++
B. i*=2
C. i+=2
D. i*2
查看解析
答案:B
考纲知识点: 控制语句结构(一级)
解析: 本题考察控制语句结构中的循环结构。变量i的初始值是1,循环条件是i小于等于8,循环体中输出i,得到的输出是1248,规律是在前一个的基础上乘2,每次i*=2之后赋给i。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限15. 执行以下C++语言程序后,输出结果是()。
c++
#include <iostream>
using namespace std;
int main(){
int sum = 0;
for(int i = 1; i <= 20; i++)
if(i % 3 == 0 || i % 5 == 0)
sum += i;
cout << sum << endl;
return 0;
}1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
A. 210 B. 113
C. 98
D. 15
查看解析
答案:C
考纲知识点: 控制语句结构(一级)
解析: 本题考察循环结构和选择结构。循环范围是从1到20,每次循环结束后i++,i自增1;循环内判断当前数是3或者是5的倍数,就将i累加到sum当中,故从1到20,满足条件的数有3、5、6、9、10、12、15、18、20,相加结果为98。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限二、判断题(每题2分,共20分)
判断题答案
| 题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| 答案 | √ | × | × | √ | × | × | × | × | √ | √ |
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限1. 在Windows系统中通过键盘完成对选定文本移动的按键组合是先Ctrl+X,移动到目标位置后按Ctrl+V。
查看解析
答案:√
考纲知识点: 计算机基础(一级)
解析: 本题考察计算机基础中快捷键的使用。Ctrl+X表示剪切文件(复制并从原位置删除),Ctrl+V表示粘贴所剪切的文件。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限2. 程序员用C、C++、Python、Scratch等编写的程序能在CPU上直接执行。
查看解析
答案:×
考纲知识点: 计算机基础(一级)
解析: 本题属于对编程语言特点的考察。题目中所列举的编程语言,均无法在CPU上直接执行,而是需要通过各自的方式,转换成机器语言后才能被CPU识别和执行。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限3. 在C++语言中,注释不宜写得过多,否则会使得程序运行速度变慢。
查看解析
答案:×
考纲知识点: 计算机编程环境(一级)
解析: 本题考察计算机的编程环境。注释信息是写在代码当中方便程序阅读者理解代码的,养成书写注释的好习惯能够为编写更大规模的程序及团队合作打好基础。注释信息会在编译过程中被去掉,不会产生机器指令,也就不会影响程序运行速度。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限4. 在C++语言中,标识符中可以有数字,但不能以数字开头。
查看解析
答案:√
考纲知识点: 变量的定义与使用(一级)
解析: 本题考察C++语言中变量的定义与使用。根据变量的命名规则:1.只能包含大小写字母、数字、下划线;2.必须以大小写字母或者下划线开头;3.不能使用C++的关键字。故标识符中可以有数字,但不能以数字开头。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限5. '3'是一个int类型常量。
查看解析
答案:×
考纲知识点: 基本数据类型(一级)
解析: 本题主要考察基本数据类型。int是整型,例如3是一个int类型常量。但3加上单引号之后'3'在C++语言中表示字符,它是char类型常量。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限6. if语句中的条件表达式的结果必须为bool类型。
查看解析
答案:×
考纲知识点: 控制语句结构(一级)
解析: 本题主要考察控制语句结构。if语句的条件表达式不一定是bool类型,也可能是其他类型,任何非零值都会被视为真,而零值会被视为假。例如,如果a为int类型变量,则if(a)是符合C++语法的if语句,表示判断a是否为0。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限7. for语句的循环体至少会执行一次。
查看解析
答案:×
考纲知识点: 控制语句结构(一级)
解析: 本题主要考察for循环结构,for循环分四步走:1.执行第一个分号前的初始表达式;2.判断两个分号之间的循环条件表达式结果是否为真;3.执行循环体;4.执行第二个分号后的步进表达式,并回到第2步重新判断。其中第2步,如果执行初始表达式后的状态循环条件表达式为假,则不会执行循环体。此时循环体一次也没有执行就结束了循环。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限8. 如果a为int类型的变量,则赋值语句a=a+3是错误的,因为这条语句会导致a无意义。
查看解析
答案:×
考纲知识点: 变量的定义与使用(一级)
解析: 本题主要考察变量的定义与使用。尽管数学上a=a+3是无解的,但在C++语言中=并不表示方程或恒等式。a为int类型的变量,执行a=a+3;,会让a的值变为在原值的基础上增加3,不会导致a无意义。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限9. 如果a为int类型的变量,则表达式(a/4==2)和表达式(a>=8&&a<=11)的结果总是相同的。
查看解析
答案:√
考纲知识点: 基本运算(一级)
解析: 本题考察基本运算。由于a为int类型,表达式a/4中的除号/为整除运算。因此表达式(a/4==2)表示a除以4的商为2,于是a的值从8到11时表达式结果为真,否则为假。这与表达式(a>=8&&a<=11)的结果总是相同的。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限10. 表达式(3.5*2)的计算结果为7.0,且结果类型为double。
查看解析
答案:√
考纲知识点: 基本运算(一级)
解析: 本题考察了基本运算中的算术运算,在C++语言中,3.5为double类型常量,2为int类型的常量,double类型与int类型做乘法运算的结果是double类型,结果为7.0。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限三、编程题(每题25分,共50分)
1. 每月天数
题目描述
小明刚刚学习了每月有多少天,以及如何判断平年和闰年,想到可以使用编程方法求出给定的月份有多少天。你能做到吗?
输入格式
输入一行,包含两个整数,分别表示一个日期的年、月。
输出格式
输出一行,包含一个整数,表示输入月份有多少天。
数据范围
无特殊限制。
解题思路
查看解题思路
考纲知识点: 基本数据类型、控制语句结构、输入输出语句、变量的定义与使用(一级)
解题思路:
- 定义变量:年份y、月份m为int类型、判断是否为闰年的bool类型leap并赋值为false(一开始让它为平年)
- 输入年份、月份
- 判断是否为闰年,如果是400的倍数,或者是4的倍数但不是100的倍数,就是闰年,将leap改为true
- 判断是否为大月:1、3、5、7、8、10、12月为大月,输出31;小月:4、6、9、11月为小月,输出30;如果不是大月也不是小月,看是否为闰年,闰年输出29,否则输出28
样例解释:
- 样例1:2022年1月,是大月,输出31
- 样例2:2020年2月,2020年是闰年,输出29
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限参考程序
查看参考程序
c++
#include <iostream>
using namespace std;
int main() {
int y = 0, m = 0;
cin >> y >> m;
bool leap = false; // 判断闰年变量,初始值为false,意思为是平年
if (y % 400 == 0) // 是400的倍数为闰年
leap = true;
if (y % 4 == 0 && y % 100 != 0) // 是4的倍数但不是100的倍数为闰年
leap = true;
if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)
cout << 31 << endl; // 大月
else if (m == 4 || m == 6 || m == 9 || m == 11)
cout << 30 << endl; // 小月
else if (leap)
cout << 29 << endl; // 闰年2月
else
cout << 28 << endl; // 平年2月
return 0;
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限2. 长方形面积
题目描述
小明刚刚学习了如何计算长方形面积。他发现,如果一个长方形的长和宽都是整数,它的面积一定也是整数。现在,小明想知道如果给定长方形的面积,有多少种可能的长方形,满足长和宽都是整数?
如果两个长方形的长相等、宽也相等,则认为是同一种长方形。约定长方形的长大于等于宽。正方形是长方形的特例,即长方形的长和宽可以相等。
输入格式
输入一行,包含一个整数,表示长方形的面积。
输出格式
输出一行,包含一个整数,表示有多少种可能的长方形。
数据范围
1 ≤ A ≤ 10000
解题思路
查看解题思路
考纲知识点: 变量的定义与使用、控制语句、基本运算、输入输出语句(一级)
解题思路:
- 定义变量:面积area、计数变量cnt、宽w
- 利用循环列举所有宽的可能性,从1开始,到宽*宽小于等于面积即可,后面大于宽的就是长了,和前面统计过的算一种情况,所以不用往后遍历
- 每次循环判断面积对宽取余是不是为0,如果为0,说明长、宽都是整数,满足题意,计数变量cnt++
- for循环结束后输出计数变量cnt
样例解释:
- 样例1:面积为4,可能的长方形有2×2和4×1,共2种
- 样例2:面积为6,可能的长方形有3×2和6×1,共2种
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限参考程序
查看参考程序
c++
#include <iostream>
using namespace std;
int main() {
int area = 0, cnt = 0; // 面积area、计数变量cnt
cin >> area; // 输入面积
for (int w = 1; w * w <= area; w++) { // 宽从1开始到宽*宽<=面积
if (area % w == 0) // 如果面积是宽的倍数,说明满足题意
cnt++;
}
cout << cnt << endl; // 输出cnt
return 0;
}1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限