CCF编程能力等级认证GESP—C++3级—20240316

CCF编程能力等级认证GESP---C++3级---20240316

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

1、整数-5的16位补码表示是( )。

cpp 复制代码
A. 1005
B. 1006 
C. FFFA 
D. FFFB

2、如果16位短整数 -2 的二进制是"FFFE",则短整数 -4 的十六进制是( )。

cpp 复制代码
A. FF04
B. FFFA 
C. FFFC 
D. FFFH

3、下面C++代码执行后的输出是( )。

cpp 复制代码
int main(){
	cout << (3|16) << endl; 
	cout << endl;
	return 0;
}
cpp 复制代码
A. 3 

B. 16 
C. 19 
D. 48

4、定义整数 int x=-5 ,则执行C++代码 cout << (x == (x<<1>>1)) 输出是( )。

cpp 复制代码
A. 0
B. 1 
C. -5 
D. 5

5、已知字符 '0' 的ASCII编码的十进制表示为48,则执行下面C++代码后,输出是( )。

cpp 复制代码
int main(){
	string s="316";
	int n=s.length();
	int x=0;
	for(inti=0;i<n;i++)
		x += s[i];
	cout << x << endl;
	cout << endl;
	return 0;
}
cpp 复制代码
A. 10 
B. 58 
C. 154 
D. 316

6、下面C++代码执行后数组中大于0的数的特征是( )。

cpp 复制代码
int main(){
	int a[20],i; 
	for(i=0;i<20;i++)
		a[i] = i+1;
	for(inti=0;i<20;i++) 
		if((a[i]%2)&&(a[i]%3))
			a[i] = 0;
	for(i=0;i<20;i++) 
		if(a[i])
	    	cout << a[i] << " ";
	cout << endl;
	return 0; 
}
cpp 复制代码
A. 2的倍数
B. 3的倍数
C. 能被2或3整除的数
D. 能被2和3同时整除的数

7、执行下面C++代码后输出的第一个数是( )。

cpp 复制代码
int main(){
	int a[20],i;
	for(i=0;i<20;i++)
		a[i] = i+1;
	for(;i>0;i--)
		cout << a[i-1] << " ";
	cout << endl;
	return 0;
}
cpp 复制代码
A. 20
B. 19
C. 1
D. 不确定

8、在下列代码的横线处填写( ),可以使得输出是 GESP IS INTERESTING 。

cpp 复制代码
int main(){
	string str="gEsP is Interesting";
	int x = str.length();
	for(inti=0;i<x;i++)
		if ((str[i]>='a') && (str[i]<='z'))
			________________________;
	cout << str << endl;
	cout << endl;
	return 0;
}
cpp 复制代码
A. str[i]+='a'-'A' 
B. str[i]+=20
C. str[i]+='A'-'a' 
D. 无法实现

9、假设英文句子由若干词构成。下面C++代码统计输出的词数是( )。

cpp 复制代码
int main() {
    string str="gEsP is  Interesting  !";
    int x = str.length();
    int nwords = 0;
	for(int i = 0; i < x; i++)
        if (str[i]==' '){
			nwords++;
            while(str[++i]==' ') ;
        }
    cout << nwords << endl;
	cout << endl;
	return 0; 
}

10、C++的字符变量的码值是整数,下面字面量形式的字符码值最大的是( )。

cpp 复制代码
A. 100
B. 075 
C. 0x70 
D. 0x60

11、下面C++程序执行的结果是( )。

cpp 复制代码
int main(){
	int a[20],i;
	int cnt=0; 
	for(i=0;i<20;i++)
		a[i] = i+1;
	for(;i>1;i--) 
		if((a[i-1]+a[i-2])%3)
	    	cnt++;
	cout << cnt << endl;
	cout << endl;
	return 0; 
}
cpp 复制代码
A. 5 
B. 6 
C. 10 
D. 12

12、定义字符数组 char str[20] = {'G', 'E', 'S', 'P'}; ,则 str 的字符串长度为( )。

cpp 复制代码
A. 4 
B. 5 
C. 19 
D. 20

13、定义整型变量 int a=3, b=16 ,则 a|b 的值和 a+b 的关系是( )。

cpp 复制代码
A. 大于
B. 等于
C. 小于
D. 等于或小于

14、小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是( )。

cpp 复制代码
A. 小程序
B. 计时器 
C. 操作系统 
D. 神话人物

15、中国计算机学会(CCF)在2024年1月27日的颁奖典礼上颁布了王选奖,王选先生的重大贡献是( )。

cpp 复制代码
A. 制造自动驾驶汽车
B. 创立培训学校
C. 发明汉字激光照排系统
D. 成立方正公司

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

1、任意整数 a 的二进制反码与补码都有1位不同。 ( )

2、对整型变量int a = 3,执行C++代码a<<2将把2输出到a中。( )

3、下面C++代码可以计算1到100的累加和,采用的是穷举法。

cpp 复制代码
int main(){
	int i,sum=0;
	for(inti=1;i<=100;i++)
		sum += i;
	cout << sum << endl;
	
	cout << endl;
return 0;
}

4、一个 int 类型变量 a ,执行操作 (a<<2>>2) 后的值一定是 a 。( )

5、在C++语言中, (010<<1) 执行结果是 100 。( )

6、执行下面C++代码后将输出 2 。( )

cpp 复制代码
int main(){
	string str="gEsP is Interesting";
	int x = str.find("s");
	
	cout << x << endl; 7
	cout << endl;
	return 0;
}

7、在C++语言中,字符数组被定义时,它的大小可以调整。( )

8、对定义的数组 int a[7]={2,0,2,4,3,1,6} ,可以用简单循环就找到其中最小的整数。( )

9、小杨今年春节回奶奶家了,奶奶家的数字电视要设置ip地址并接入到WIFI盒子才能收看节目,那这个WIFI盒 子具有路由器的功能。( )

10、任何一个 for 循环都可以转化为等价的 while 循环( )。

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

字母求和

【问题描述】

小杨同学发明了一种新型密码,对于每一个小写英文字母,该小写字母代表了一个正整数,即该字母在字母顺序中 的位置,例如字母 a 代表了正整数 1,字母 b 代表了正整数 2;对于每一个大写英文字母,该大写字母代表了一个负 整数,即该字母的 ASCII 码的相反数,例如字母 A 代表了正整数 -65。小杨同学利用这种方式对一个整数进行了加密 并得到了一个由大写字母和小写字母组成的字符串,该字符串中每个字母所代表数字的总和即为加密前的整数,例 如 aAc 对应的加密前的整数为 1+(-65)+3=-61。

对于给定的字符串,请你计算出它对应的加密前的整数是多少。
【输入描述】

第一行一个正整数n ,表示字符串中字母的个数。 第二行一个由大写字母和小写字母的字符串T ,代表加密后得到的字符串。
【输出描述】

输出一行一个整数,代表加密前的整数。
【样例输入 1】

3

aAc
【样例输出 1】

-61
对于全部数据,保证有 1 < = n < = 1 0 5 1 <= n <= 10^5 1<=n<=105

完全平方数

【问题描述】

小杨同学有一个包含n 个非负整数的序列 A,他想要知道其中有多少对下标组合<i, j> (1 <= i, j <= n, i < j ),使得 A i + A j A_i + A_j Ai+Aj

是完全平方数。

如果x是完全平方数,则存在非负整数y使得y * y = x。
【输入描述】

第一行一个非负整数n ,表示非负整数个数。

第二行包含n 个非负整数 A 1 , A 2 , . . . , A n A_1, A_2, ..., A_n A1,A2,...,An ,表示序列A 包含的非负整数。
【输出描述】

输出一个非负整数,表示和是完全平方数的非负整数对数。
【样例输入 1】

5

1 4 3 3 5
【样例输出 1】

3
对于全部数据,保证有 1 < = n < = 1000 , 0 < = A i < = 1 0 5 1 <= n <= 1000, 0 <= A_i <= 10^5 1<=n<=1000,0<=Ai<=105

参考答案

单选题

题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
答案 D C C B C C A C C C D A B C C

判断题

题号 1 2 3 4 5 6 7 8 9 10
答案 × × × × × ×

编程题1

cpp 复制代码

编程题2

cpp 复制代码
相关推荐
埃伊蟹黄面4 分钟前
C++ —— STL容器 —— string的模拟实现
c++
南枝异客8 分钟前
四数之和-力扣
java·算法·leetcode
凌肖战19 分钟前
C语言中提供的第三方库之哈希表实现
算法·哈希算法
lingling00931 分钟前
迁移科技:破解纸箱拆垛场景的自动化升级密码
算法
Coding小公仔1 小时前
几种经典排序算法的C++实现
c++·算法·排序算法
不会编程的小江江1 小时前
【设计模式】UML类图与工厂模式
c++·设计模式
湖北二师的咸鱼1 小时前
c#和c++区别
java·c++·c#
汪子熙2 小时前
在 Word 里编写 Visual Basic 调用 DeepSeek API
后端·算法·架构
Music 爱好者2 小时前
aws s3 sdk c++使用指南、适配阿里云oss和aws
c++·阿里云·aws
什么半岛铁盒2 小时前
Linux中INADDR_ANY详解
开发语言·c++·算法