GESP2023年6月 c++二级考试答案详解

一.选择题

第 1 题 高级语言编写的程序需要经过以下(D)操作,可以生成在计算机上运行的可执行代码。
A.编辑
B.保存
C.调试
D.编译
常识题

第 2 题 能够实现下面流程图功能的伪代码是(A)。
GESP2023年6月 c++二级考试答案详解_第1张图片
A.if 条件判断 then 语句块
B.if 条件判断 then 什么也不做 else 语句块
C.while 条件判断 do 语句块
D.while not 条件判断 do 语句块
流程图是c++二级一个较为重要的考点,在以后写代码的过程中也有很大的帮助,建议 重点 掌握。

第 3 题 下列关于C++语言的叙述,正确的是(B)。
A.char类型变量不能赋值给int类型的变量。
B.两个int类型变量相乘,计算结果还是int类型。
C.计算两个int类型变量相乘时,如果乘积超出了int类型的取值范围,程序会报错崩溃。
D.计算两个double类型变量相除时,如果除数的值为0.0,程序会报错崩溃。
解释:A 可以复制;C 不会,最大显示849482113 D 不会·,只会显示inf

第 4 题 下列关于C++语言的叙述,不正确的是(A)。
A.if语句中的判断条件必须用小括号(和)括起来。
B.for语句中两个;之间的循环条件可以省略,表示循环继续执行的条件一直满足。
C.循环体包含多条语句时,可以用缩进消除二义性。
D.除了“先乘除、后加减”,还有很多运算符优先级。
解释:不一定,if(a==b)就不用

第 5 题 以下哪个是C++语言的关键字? (C)
A.main
B.max
C.double
D.sqrt
解释:只有double是黑体

第 6 题 以下哪个不是C++语言的运算符? (D)
A.>=
B./=
C.||
D.<>
解释:A是大于等于,B是除以等于,C是或者

第 7 题 如果a为int类型的变量,b为char类型的变量,则下列哪个语句不符合C++语法? (D)
A.a = a + 1.0;
B.a = (int)(b - ‘0’);
C.b = (char)(a + ‘0’);
D.(int)b = a;
实验题

第 8 题
如果用两个int类型的变量a和b分别表达平行四边形的两条边长,用int类型的变量h表达a边对应的高,则下列哪个表达式不能用来计算b边对应的高?(A)
A.a / b * (0.0 + h)
B.(0.0 + a * h) / b
C.a * h / (b + 0.0)
D.(a + 0.0) * h / b
实验题

第 9 题 以下哪个循环语句会无限次执行?(B)
A.for (int a = 0; a; a++) ;
B.for (bool b =false; b <= true; b++) ;
C.for (char c = ‘A’; c < ‘z’; c++) ;
D.for(double d = 0.0; d < 10.0; d += 0.001) ;
实验题

第 10 题 如果a为char类型的变量,且a的值为’C’(已知’C’的ASCII码为67),则执行cout << (a +> 2); 会输出(D)。
A.E
B.C+2
C.C2
D.69

第 11 题 如果a和b均为int类型的变量,下列表达式能正确判断“a等于1且b等于1”的是(A)
A.(a == b) && (b == 1)
B.(a && b)
C.(a == b == 1)
D.(a * b == 1)

第 12 题 如果a为char类型的变量,下列哪个表达式可以正确判断“a是数字”(A)
A.‘0’ <= a && a <= ‘9’
B.‘1’ <= a && a <= ‘0’
C.‘0’ <= a <= ‘9’
D.‘1’ <= a <= ‘0’

第 13 题 在下列代码的横线处填写(D),使得输出是9。
GESP2023年6月 c++二级考试答案详解_第2张图片
A.(a + b)
B.(a + b - ‘0’)
C.(char)(a + b)
D.(char)(a + b - ‘0’)

第 14 题 在下列代码的横线处填写(B),可以使得输出是42。
GESP2023年6月 c++二级考试答案详解_第3张图片
A.i % 3 == 0
B.20 % i == 0
C.i <= 8
D.i >= 18

第 15 题 执行以下C++语言程序后,输出结果是(C)。
GESP2023年6月 c++二级考试答案详解_第4张图片
A.65
B.66
C.67
D.68
这题考卷不知道咋回事,选项没有内容,我根据我的理解填的,选择67那个答案就对了

二、判断题

第 1 题
诞生于1986年的中华学习机CEC-I入选了2021年的CCF计算机历史记忆(一类),它的内存只有64KB。当时的汉字编码字符集GB2312中共有6763个汉字,假如每个汉字用2个字节编码,将整个GB2312汉字字符集都放入CEC-I的内存,也只占用了不超过1/5的内存空间。
求解,这题我也不知道对不对,网上搜不到,手里材料也没有讲这个的

第 2 题
域名是由一串用点分隔的名字来标识互联网上一个计算机或计算机组的名称,CCF编程能力等级认证官方网站的域名是gesp.ccf.org.cn,其中顶级域名是gesp。
错误
顶级域名是.cn,在3级考试中也有出现

第 3 题 在使用C++语言编写程序时,不能使用sqrt、abs等数学函数,包含或头文件后就能够使用了。
正确
常识题,是2级考试标准中的常见数学库的认识与运用

第 4 题 在C++语言中,标识符中可以有下划线_。同时,_也是C++语言的运算符。
错误
我搜了好久,没搜到这是什么运算符,应该是错的

第 5 题 如果a是double类型的变量,而且值为3.5,则表达式a * 10的计算结果为35,且结果类型为int。
错误
类型还是double

第 6 题 在if语句中,如果条件成立时需要执行多条语句,可以使用大括号{和}将这些语句括起来。
正确
常识题

第 7 题 循环语句的循环体有可能无限制地执行下去。
正确
前面题目都说循环的是哪一个了·-·

第 8 题 ++和==都是C++语言的运算符,但+=不是。
正确
+=是运算符

第 9 题 如果a为char类型的变量,且取值为大写字母’F’,则执行语句a = a + 1;后,a的值会变为大写字母’G’。
正确
但是正常输出要为‘G’的话要把输出格式改为char型

第 10 题 表达式sqrt(9.0)的计算结果为3,且结果类型为int。
错误
是double型

编程第一题

试题名称:找素数
时间限制: 1.0s
内存限制: 128.0MB
【问题描述】
小明刚刚学习了素数的概念:如果一个大于1的正整数,除了1和它自身外,不能被其他正整数整除,则这个正整数是素数。现在,小明想找到两个正整数A和B之间(包括A和B)有多少个素数。
【输入描述】   
输入2行,第一行包含正整数A,第二行包含正整数B。约定2≤A≤B≤1000。
【输出描述】
输出一行,包含一个整数C,表示找到C个素数。
【样例输入1】
2 10
【样例输出1】
4
【样例解释1】
在2和10之间有4个素数,分别为:2、3、5、7。
【样例输入2】
98 100
【样例输出2】
0

非常简单的题目,就是写一个判断素数的子程序就好了
代码:

#include
#include
int i,a,b,c=0;
bool js(int x)
{
	for(int i=2;i<=sqrt(x);i++)
		if(x%i==0)
			return false;
	return true;
}
int main()
{
	scanf("%d %d",&a,&b);
	for(i=a;i<=b;i++)
		if(js(i))
			c++;
	printf("%d",c);
}

编程第二题

试题名称:自幂数判断
时间限制: 1.0s
内存限制: 128.0MB
【问题描述】
自幂数是指,一个N位数,满足各位数字N次方之和是本身。例如,153是3位数,其每位数的3次方之和,1³+5³+3³=153,因此153是自幂数;1634是4位数,其每位数的4次方之和,1111+6666+3333+4444=1634(找不到四次方的符号了·-·),因此1634是自幂数。
现在,输入若干个正整数,请判断它们是否是自幂数。
【输入描述】
输入第一行是一个正整数M,表示有M个待判断的正整数。约定1≤M≤100。
从第2行开始的M行,每行一个待判断的正整数。约定这些正整数均小于108。
【输出描述】
输出M行,如果对应的待判断正整数为自幂数,则输出英文大写字母T,否则输出英文大写字母F。 
提示:不需要等到所有输入结束在依次输出,可以输入一个数就判断一个数并输出,再输入下一个数。
【样例输入1】
3
152 111 153
【样例输出1】
F
F
T
【样例输入2】
5
8208 548834 88593477 12345 5432
【样例输出2】
T
T
T
F
F

思路不难,输入输出简单,来讲判断程序:

bool js(int x)
{
	int n1,sum=0,x1=x,x2=x;
	while(x1)
	{
		x1/=10;
		n1++;
	} //算出位数
	while(x)
	{
		sum=sum+pow(x%10,n1);
		x/=10;
	} //算出幂值
	if(sum==x2)
		return true;
	return false;
}

代码:

#include
#include
int i,n,a;
bool js(int x)
{
	int n1,sum=0,x1=x,x2=x;
	while(x1)
	{
		x1/=10;
		n1++;
	}
	while(x)
	{
		sum=sum+pow(x%10,n1);
		x/=10;
	}
	if(sum==x2)
		return true;
	return false;
}
int main()
{
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		scanf("%d",&a);
		if(js(a))
			printf("T\n");
		else
			printf("F\n");
	}	
}	

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