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

2023年9月真题

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

在这里插入图片描述
正确答案:B
解析:考察知识点:计算机基础知识
本题属于考察计算机基础知识。APP是英语单词application的简写,代表应用软件的意思。

在这里插入图片描述
正确答案:B
解析:考察知识点:流程图的概念与描述
本题属于考察计算机流程图知识,只要满足条件,就执行“是”后面的语句,是个循环结构。a=5和4的时候执行s=sa,结果是5*4=20。

在这里插入图片描述
正确答案:C
解析:考察知识点:ASCII 编码
本题属于考察计算机字符编码知识。‘A’的ASCII值是65,可以推出‘L’是76,将其转换成二进制,答案是C。

在这里插入图片描述
正确答案:B
解析:考察知识点:C++语言基础
本题属于考察C++语言基础知识。B运算符不存在。

在这里插入图片描述
正确答案:A
解析:考察知识点:数组和数据类型
本题属于考察C ++语言知识,包括数组和数据类型。一维数组中有4个元素,long long类型每个数字占8个字节,4*8=32。选A。

在这里插入图片描述
正确答案:A
解析:考察知识点:计算机的存储,一维数组
本题属于考察C ++语言数组知识,数组下标从0开始,3个元素的下标分别是0/1/2.选A。

在这里插入图片描述
正确答案:B
解析:考察知识点:一维数组
本题属于考察C ++语言的数组知识,A的写法需要明确数组大小;C中数组大小必须是整数;D需要用指针类型指向一个new的数组。选B。

在这里插入图片描述
正确答案:C
解析:考察知识点:进制转换
本题属于考察C ++语言的进制知识,日常生活中,十进制最常用;A中进制都可以表示小数;D中数字8不能出现,选C。

在这里插入图片描述
正确答案:C
解析:考察知识点:一维数组
本题属于考察C ++语言的数组知识,选择不正确的,在不同编译器下,数组越界不一定会产生编译错误,选C。

在这里插入图片描述
正确答案:A
解析:考察知识点:位运算
本题属于考察C ++语言的计算表达式和位运算知识,A选项中,先计算a+1000-1000=a,a==a成立;B中a如果导致a*2越界就不成立;C中a是偶数,和1做与位运算结果是0;D中a是奇数的时候,和1做或运算不等于a+1,选A。

在这里插入图片描述
正确答案:B
解析:考察知识点:表达式
本题属于考察C ++语言的表达式知识,注意是找不能正确判断的条件,B选项中,例如a=4,b=5,(a>>1)是等于(b>>1)的,因此选B。

在这里插入图片描述
正确答案:D
解析:考察知识点:字符串
本题属于考察C ++语言的字符知识,大写字符是从‘A’到‘Z’,在这个区间内,就是大写字符。注意B选项,如果a=‘b’,根据ASCII码,’A’<=a成立,返回值是1,1<=’Z’,所以B选项不正确,通过判断,选D。

在这里插入图片描述
正确答案:B
解析:考察知识点:基本运算
本题属于考察C ++语言的运算知识,程序的目的是实现a和b的数据交换,用a的低8位保留b的值,原来的数值保存在a的高八位,因此b=a>>8即得到a原来的值。将a的高8位清空,与0xff做与运算即可,0xff的高八位是0,得到b之前的结果,选B。

在这里插入图片描述
正确答案:D
解析:考察知识点:循环语句,复合赋值运算符
本题属于考察C ++语言的for循环语句和复合赋值运算符知识,简单将选项A、B、C代入到代码段,都不能达到预期结果。所以前3个选项都不正确,通过判断,选D。

在这里插入图片描述
正确答案:B
解析:考察知识点:多层循环结构,数组
本题属于考察C ++语言的数组知识,array数组赋值分别是0到9,然后注意里面的双重循环。p是从2到9,对array数组重新赋值。例如,p=2时,array[2]=2,条件成立,进入第2重循环,n的范围是2到9,注意步长是2,对每个数组元素重新赋值,数组重新变为0 1 1 3 2 5 3 7 4 9。一直到循环完成,累加array数组,结果是B。

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

在这里插入图片描述
正确答案:错误
解析:考察知识点:进制转换
本题是计算机二进制和转换十进制的知识,整数部分是5,小数部分是0.625。

在这里插入图片描述
正确答案:正确
解析:考察知识点:位运算符知识

在这里插入图片描述
正确答案:错误
解析:考察知识点:计算机字符
本题是计算机字符和数字的知识,字符‘3’用整数51表示,不等于3。

在这里插入图片描述
正确答案:错误
解析:考察知识点:一维数组
本题是计算机数组知识,不会引起编译错误,使用时可能会产生错误。

在这里插入图片描述
正确答案:正确
解析:考察知识点:位运算符
本题是计算机位运算知识,左移后,后面的位数用0补充,所以移动若干次,都会变成0。

在这里插入图片描述
正确答案:错误
解析:考察知识点:数组
本题是计算机数组知识,下标的大小和两者都有关系。

在这里插入图片描述
正确答案:错误
解析:考察知识点:一维数组
本题是计算机数组知识,数组定义方式有很多,正确的也包括:int d[]={1,2,3};这种格式。

在这里插入图片描述
正确答案:错误
解析:考察知识点:枚举算法
本题是计算机算法知识,枚举法是枚举所有的可能,枚举不出所有的偶数,所以不能用枚举法证明哥德巴赫猜想。

在这里插入图片描述
正确答案:正确
解析:考察知识点:进制转换
本题是计算机十六进制和比较运算符的知识,0xff的十进制是255。

在这里插入图片描述
正确答案:正确
解析:考察知识点:位运算
本题是计算机位运算和比较运算符知识,a是整数,只有是偶数和1做与运算的结果才等于0。

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

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

本题考察 基本运算、输入输出语句、一维数组的知识

#include<iostream>
using namespace std;
int main(){
    
    
    int n, d, a, arr[1000]={
    
    }; //arr[i] 编号为i的储蓄罐的钱数 
    cin>>n>>d; 
    for(int i=1; i<=d; i++){
    
    
        cin>>a; //输入编号 
        arr[a] += i; //第i天给编号为a的储蓄罐存入i元 
    }
    //输出每个储蓄罐内的钱数 
    for(int i=0; i<n; i++) cout<<arr[i]<<" ";
    return 0;
}

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

本题考察 多层循环结构、基本运算、输入输出语句、字符、字符串,进制转换。

#include<bits/stdc++.h>
using namespace std;
int main() {
    
    
	int n;
	cin>>n;
	char arr[10], maxx; 
	while(n--){
    
    
		cin>>arr;
		maxx = '0'; //找到读入的字符串中的最大字符 
		for(int i=0; i<strlen(arr); i++){
    
    
			maxx = max(maxx, arr[i]);
		}
		//最大字符不超过字符'1',则可表示2进制,否则不可以 
		cout<<(maxx<='1')<<" ";
		//最大字符不超过字符'7',则可表示8进制,否则不可以
		cout<<(maxx<='7')<<" ";
		//最大字符不超过字符'9',则可表示10进制,否则不可以
		cout<<(maxx<='9')<<" ";
		//最大字符不超过字符'F',则可表示16进制,否则不可以
		cout<<(maxx<='F')<<endl;
	}
	return 0;
}