GESP2023年3月 c++一级考试答案详解

一、单选题(每题2分,共30分)

1.以下不属于计算机输入设备的有(B )。
A.键盘
B.音箱
C.鼠标
D.传感器
解释:这一题没什么好说的,A、C、D都是输入设备,而音箱不是输入设备,所以选B。

2.计算机系统中存储的基本单位用 B 来表示,它代表的是(A )。
A. Byte
B. Block
C. Bulk
D. Bit
解释:A Byte是字节,计算机存储信息的大小;B Block是数据库中的最小存储和处理单位;C Bulk是英文单词,意思为体积;D Bit是描述电脑数据量的最小单位。所以答案选择A。

3.常量 7.0 的数据类型是(A)。
A. double
B. float
C. void
D. int
解释:首先排除C与D,剩下A与B。c++中一般定义常量小数都是用double定义,在代码中也很少会用float。

4.下列关于 C++语言的叙述,不正确的是(C)。
A. 变量定义时可以不初始化
B. 变量被赋值之后的类型不变
C. 变量没有定义也能够使用
D. 变量名必须是合法的标识符
解释:c++的变量必须要经过定义才能使用,否则会出现代码错误。

5.以下不可以作为 C++标识符的是(B)。
A. x321 B. 0x321 C. x321_ D. _x321
解释:c++标识符定义规则:(1)只能包括英文字母,下划线与数字;(2)不能以数字开头;(3)不能定义已经是关键字的标识符(黑体字),如using、return等。

6.以下哪个不是 C++语言的关键字? (D)
A. int
B. for
C. do
D. cout
解释:关键字很好认,在编译器中是黑体的就是关键字。

7.如果 a、b 和 c 都是 int 类型的变量,下列哪个语句不符合 C++语法? (D)
A. c = a + b;
B. c += a + b;
C. c = a = b;
D. c = a ++ b;
解释:D选项中出现了两个加号,不符合c++语法。

8.如果用两个 int 类型的变量 a 和 b 分别表达长方形的长和宽,则下列哪个表达式不能用来计算长方形的周长? (A)
A. a + b * 2
B. 2 * a + 2 * b
C. a + b + a + b
D. b + a * 2 + b
解释:长方形周长=(长+宽)X2。

  1. 表达式((3 == 0) + ‘A’ + 1 + 3.0)的结果类型为(A)。
    A. double
    B. int
    C. char
    D. bool
    解释:(3==0)为bool型,'A’为字符型,’1‘为整形,’3.0‘为double型,因为式子中含有double型,所以最后的输出结果也会为double型。

10.如果 a 为 int 类型的变量,且 a 的值为 6,则执行 a = 3;之后,a 的值会是(D)。
A. 3
B. 6
C. 9
D. 18
解释:a
=3 == a=a*3

11.如果 a 和 b 均为 int 类型的变量,下列表达式不能正确判断“a 等于 0 且 b等于 0”的是(B)
A. (a == 0) && (b == 0)
B. (a == b == 0)
C. (!a) && (!b)
D. (a == 0) + (b == 0) == 2
解释:
A意思为:a等于0且b等于0
C意思为:a等于0且b等于0
D意思为:判断式a等于0+判断式b等于0等于2(也就是a等于0且b等于0)
所以选择B。

12.如果 a 为 int 类型的变量,下列哪个表达式可以正确求出满足“大于等于a 且是 4 的倍数”的整数中最小的? (C)
A. a * 4
B. a / 4 * 4
C. (a + 3) / 4 * 4
D. a - a % 4 + 4
解释:这种题目都可以自己编写一个代码带进去试一下,要讲的话云里雾里的,可能还会被绕晕。

13.在下列代码的横线处填写(),可以使得输出是“20 10”。 (D)
GESP2023年3月 c++一级考试答案详解_第1张图片
A. a + b
B. (a + b) * 100
C. b * 100 + a
D. a * 100 + b
解释:代入法,一个一个试,不要想着用大脑、文字将它解释清楚,这样反而会越做越糊涂。

14.在下列代码的横线处填写(),可以使得输出是“1248”。 (B)
GESP2023年3月 c++一级考试答案详解_第2张图片

A. i++
B. i *= 2
C. i += 2
D. i * 2
解释:代入法代入法!

15.执行以下 C++语言程序后,输出结果是(C)。
GESP2023年3月 c++一级考试答案详解_第3张图片
A. 210
B. 113
C. 98
D. 15
解释:送分题,还是代入法·-·

二、判断题(每题 2 分,共 20 分)

1.在 Windows 系统中通过键盘完成对选定文本移动的按键组合是先 Ctrl+X, 移动到目标位置后按 Ctrl+V。 (对)
解释:剪切+复制

2.程序员用 C、C++、Python、Scratch 等编写的程序能在 CPU 上直接执行。(错)
解释:要经过编译才能运行。

  1. 在 C++语言中,注释不宜写得过多,否则会使得程序运行速度变慢。 (错)
    解释:c++注释不会影响程序的编译效率。

4.在 C++语言中,标识符中可以有数字,但不能以数字开头。 (对)
解释:选择题第五题有详细讲解。

5.'3’是一个 int 类型常量。 (错)
解释:没想到吧,这其实是字符类型,引号也算在内哦,刚开始我也没想到。

6.if 语句中的条件表达式的结果必须为 bool 类型。 (错)
解释:这可不一定捏·-·

7.for 语句的循环体至少会执行一次。 (错)
解释:do-while语句的循环体才会至少运行一次

8.如果 a 为 int 类型的变量,则赋值语句 a = a + 3;是错误的,因为这条语句会导致 a 无意义。 (错)
解释:定义了,就不会没有意义。

  1. 如果 a 为 int 类型的变量,则表达式(a / 4 == 2)和表达式(a >= 8 && a <= 11)的结果总是相同的。 (对)
    这个我也不知道为什么是对的,求评论区大神解释一下·-·
  1. 表达式(3.5 * 2)的计算结果为 7.0,且结果类型为 double。(对)
    解释:c++中一般定义常量小数都是用double定义

三、编程题(每题 25 分,共 50 分)

1、每月天数
【问题描述】
小明刚刚学习了每月有多少天,以及如何判断平年和闰年,想到可以使用编程方法求出给定的月份有多少天。你能做到吗?
【输入描述】
输入一行,包含两个整数,分别表示一个日期的年、月。 【输出描述】
输出一行,包含一个整数,表示输入月份有多少天。
【样例输入 1】2022 1
【样例输出 1】31
【样例输入 2】2020 2
【样例输出 2】29

代码:

#include
using namespace std;
int x,y;
int main()
{
	scanf("%d %d",&x,&y);
	if(y!=2)
		if(y==1 || y==3 || y==5 || y==7 || y==8 || y==10 || y==12)
			printf("31");
		else
			printf("30");
	else
		if((x%100==0 && x%400!=0) || (x%100!=0 && x%4!=0))
			printf("28");
		else if((x%100==0 && x%400==0) || (x%100!=0 && x%4==0))
			printf("29");
	return 0;
}

2、长方形面积

【问题描述】
小明刚刚学习了如何计算长方形面积。他发现,如果一个长方形的长和宽都是整数,它的面积一定也是整数。现在,小明想知道如果给定长方形的面积,有多少种可能的长方形,满足长和宽都是整数?
如果两个长方形的长相等、宽也相等,则认为是同一种长方形。约定长方形的长大于等于宽。正方形是长方形的特例,即长方形的长和宽可以相等。
【输入描述】
输入一行,包含一个整数,表示长方形的面积。约定2 ≤ ≤ 1000。
【输出描述】
输出一行,包含一个整数,表示有种可能的长方形。 【样例输入 1】4
【样例输出 1】2
【样例解释 1】
2 种长方形面积为 4,它们的长宽分别为2 × 2、4 × 1。 【样例输入 2】6
【样例输出 2】2
【样例解释 2】
2 种长方形面积为 6,它们的长宽分别为3 × 2、6 × 1。

代码:

#include
using namespace std;
int i,j,x,sum=0;
int main()
{
	scanf("%d",&x);
	for(i=1;i<=x/2;i++)
		for(j=x;j>=x/2;j--)
			if(i*j==x)
			{
				sum++;
				break;
			}
	printf("%d",sum);
	return 0;
}

你可能感兴趣的:(GESP,c++,开发语言)