CCF-GESP 等级考试 2023年6月认证C++二级真题解析

2023年6月真题

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

在这里插入图片描述
正确答案:D
解析:考察知识点:计算机基础
本题考察计算机基础知识中编译的概念;编译是把高级语言变成计算机可以识别的二进制语言的过程,所以本题正确答案为 D。

在这里插入图片描述
在这里插入图片描述
正确答案:D
解析:考察知识点:流程图的概念与描述、循环语句
本题考察对流程图的理解,以及循环结构中的while 循环;观察流程图可知,当条件判断不成立时,会执行语句块,并重新进行条件判断,当条件判断成立时,则流程继续往下进行,所以本题正确答案为 D。

在这里插入图片描述
正确答案:B
解析:考察知识点:数据类型的转换
本题考察 C++中数据类型转换的规则;
A 选项错误在于:char 类型变量可以赋值给 int 类型的变量,赋值结果为 char 类型变量中存放的整数值;
C选项错误在于:如果两个 int 类型变量相乘的乘积超出了 int 类型的取值范围,那么会发生溢出,得到错误的结果,但是程序不会崩溃;
D 选项错误在于:两个double类型变量相除时,如果除数的值为 0.0,得到的结果是特殊的double 类型值INF(被除数为正数时,正无穷)、-INF(被除数为负数时,负无穷)或NaN(被除数为 0 时,无意义),但是程序不会崩溃;所以本题正确答案为B。

在这里插入图片描述
正确答案:C
解析:考察知识点:循环结构
本题考察循环语句的语法规则;C 选项错误在于:循环体包含多条语句时,需要用花括号把循环体中的所有语句括起来;所以本题正确答案为C。

在这里插入图片描述
正确答案:C
解析:考察知识点:计算机基础与编程环境
本题考察 C++语言中“关键字”的概念;关键字就是预先定义好的标识符,C++编译器对其进行特殊处理,它们不能作为常量名、变量名或其他标识符名称;选项中只有 double 是关键字,其余均为函数名,所以本题正确答案为C。

在这里插入图片描述
正确答案:D
解析:考察知识点:基本运算
本题考察 C++语言中的运算符;
选项A 为比较运算符:大于等于;
选项B 为赋值运算符:除并赋值;
选项C 为逻辑运算符:逻辑或;
选项D 不是C++中的运算符;所以本题正确答案为 D。

在这里插入图片描述
正确答案:D
解析:考察知识点:数据类型的转换
本题主要考察 C++中数据类型转换的规则;强制类型转换得到的是改变类型的值,不再是能被赋值的变量;所以本题正确答案为D。

在这里插入图片描述
在这里插入图片描述
正确答案:A
解析:考察知识点:基本运算,数据类型的转换
本题主要考察 C++运算中除法的规则以及类型转换规则;在C++中,两个变量进行运算,如果两个变量都是 int 类型,那么结果仍然为int 类型(除法向下取整),如果两个变量中至少一个是 double 类型,那么结果为double 类型;在本题中,需要避免出现两个 int 类型变量相除,导致计算结果错误;只有A选项的除号两边都是 int 类型,所以本题正确答案为 A。

在这里插入图片描述
正确答案:B
解析:考察知识点:基本数据类型
本题主要考察bool类型的运算规则;bool类型的取值范围是false和true,分别对应 0 和 1;B 选项中的 b++会使得 false 变为 true,true 依然变为true,导致循环条件始终成立,所以本题正确答案为 B。

在这里插入图片描述
正确答案:D
解析:考察知识点:数据类型的转换
本题主要考察数据类型转换中的类型提升;两个不同类型的变量进行运算时,一般会把字节数较小(低精度)的类型自动转换为字节数较大(高精度)的类型,再进行运算;题目中 a 是 char 类型,2 是 int 类型,那么a+2 的结果是int 类型,输出的结果是整数 69,所以本题正确答案为D。

在这里插入图片描述
正确答案:A
解析:考察知识点:基本运算
本题主要考察 C++条件判断的语法格式;判断两个条件是否同时成立时,需要把两个条件用&&符号连接起来;B 选项只要 a 和 b 都非0 即成立;C 选项会将(a==b)的结果(0 或 1)与 1 判断相等,于是只要 a 和b 相等,结果就为真;D选项 a 和 b 都是-1 也满足条件;A 选项符合语法规则,所以本题正确答案为A

在这里插入图片描述
正确答案:A
解析:考察知识点:ASCII 编码、基本运算
本题考察 C++中的比较运算以及数字字符的 ASCII 码;判断两个条件是否同时成立时,需要把两个条件用&&符号连接起来,C、D 选项不符合要求;数字字符的 ASCII 码最小的是’0’,最大的是’9’,所以本题正确答案为A。

在这里插入图片描述
正确答案:D
解析:考察知识点:ASCII 编码、数据类型的转换
本题考察数据类型转换中的类型提升以及数字字符的ASCII 码;字符变量 a 的值是’3’,相当于’0’加 3,字符变量 b 的值是’6’,相当于’0’加6,因此a+b等于’0’+3+‘0’+6,再减掉’0’的结果就是字符’9’;由于加减法运算只能处理数值类型,而 char 不是数值类型,因此会把 char 转换成 int 进行计算,结果也是int 类型,最终输出字符时需要强制转换成 char 类型,所以本题正确答案为D。

在这里插入图片描述
正确答案:B
解析:考察知识点:多层分支/循环结构
本题主要考察对循环语句和条件判断语句的理解;模拟程序执行过程可知,四个选项对应的输出结果分别是 63、42、36 和 57,所以本题正确答案为B。

在这里插入图片描述
正确答案:C
解析:考察知识点:多层分支/循环结构、基本运算
本题主要考察对循环语句和条件判断语句的理解;括号内条件成立时结果为 true,也就是 1,否则为 false,也就是 0;字符 x 取字母A 到D,取到C时,恰好满足四个条件中的三个,总和为 3,所以本题正确答案为C。

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

在这里插入图片描述
正确答案:错误
解析:考察知识点:基本数据类型
本题考察数据类型与内存空间的计算;6763 个汉字,占用6763×2=13526字节,除以 1024 约为 13.21KB,超过了 64KB 的 1/5。所以本题错误。

在这里插入图片描述
正确答案:错误
解析:考察知识点:计算机网络
本题考察计算机网络中的域名概念;顶级域名是指域名最右边的那个词,gesp.ccf.org.cn 的顶级域名是.cn。所以本题错误。

在这里插入图片描述
正确答案:正确
解析:考察知识点:程序设计语言的特点
本题考察 C++语言中的头文件;包含或<math.h>头文件后,可以使用 sqrt、abs 等数学函数,所以本题正确。

在这里插入图片描述
正确答案:错误
解析:考察知识点:基本运算、变量的定义与使用
本题考察 C++中标识符的命名规则,以及 C++基本运算;C++的标识符中可以用下划线,但是下划线不是 C++语言的运算符,所以本题错误。

在这里插入图片描述
正确答案:错误
解析:考察知识点:基本运算,数据类型的转换
本题考察 C++运算中除法的规则以及类型转换规则;在C++中,两个变量进行运算,如果两个变量中至少一个是 double 类型,那么结果为double 类型,所以本题错误。

在这里插入图片描述
正确答案:正确
解析:考察知识点:控制语句结构-选择结构
本题考察控制语句结构中的选择结构;如果条件成立时需要执行多条语句,可以使用大括号将这些语句括起来,所以本题正确。

在这里插入图片描述
正确答案:正确
解析:考察知识点:控制语句结构-循环结构
本题考察控制语句结构中的循环结构;如果每次判断循环条件的结果都为真,那么循环体有可能无限地执行下去,所以本题正确。

在这里插入图片描述
正确答案:错误
解析:考察知识点:基本运算
本题考察基本运算中的算术运算以及赋值语句;++是自增运算符,==是比较运算符,+=是复合加赋值运算符,三者都是 C++语言的运算符,所以本题错误。

在这里插入图片描述
正确答案:正确
解析:考察知识点:字符型-ASCII 编码
本题考察 ASCII 编码;大写字母’F’的 ASCII 码加1 后,表示的是大写字母’G’,所以本题正确。

在这里插入图片描述
正确答案:错误
解析:考察知识点:常用数学函数
本题考察常用数学函数中的 sqrt 函数,该函数的返回值类型为double,所以本题错误。

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

在这里插入图片描述
在这里插入图片描述

循环嵌套-素数判断

#include<bits/stdc++.h>
using namespace std;
int main() {
	int a, b, cnt=0;
	cin>>a>>b;
	for (int n=a; n<=b; n++) {
		bool isPrime=true; // 假设n是素数
		//素数:只有1和它本身两个因子
		for (int i=2; i<n; i++) {
			if (n%i == 0) { //又找到一个因子,说明不是素数 
				isPrime=false;
				break;
			}
		}
		if (isPrime) cnt++; //统计素数个数	
	}
	cout<<cnt;
	return 0;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

循环嵌套,多测试样例、数位分离

#include<bits/stdc++.h>
using namespace std;
int main() {
	int m, num, tmp, len, sum;
	cin>>m;
	while(m--){ //多测试样例经常用的写法 
		cin>>num; 
		tmp=num; len=0; //len保存数的长度 
		while(tmp){ //数位分离,while循环的一个应用,求数的长度 
			len++;
			tmp/=10;
		}
		sum=0;tmp=num;
		while(tmp){ //再次数位分离,求num各位数字的len次方之和 
			sum += pow(tmp%10, len); //数学函数pow(num, n), 返回num连乘n次 
			tmp/=10;
		} 
		if(num==sum) cout<<"T"<<endl;
		else cout<<"F"<<endl;
	} 
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值