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

时间:2024-03-24 07:17:07

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

  • 单选题(每题 2 分,共 30 分)
  • 判断题(每题 2 分,共 20 分)
  • 编程题 (每题 25 分,共 50 分)
    • 字母求和
    • 完全平方数
  • 参考答案
    • 单选题
    • 判断题
    • 编程题1
    • 编程题2

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

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

A. 1005
B. 1006 
C. FFFA 
D. FFFB

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

A. FF04
B. FFFA 
C. FFFC 
D. FFFH

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

int main(){
	cout << (3|16) << endl; 
	cout << endl;
	return 0;
}
A. 3 

B. 16 
C. 19 
D. 48

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

A. 0
B. 1 
C. -5 
D. 5

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

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;
}
A. 10 
B. 58 
C. 154 
D. 316

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

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; 
}
A. 2的倍数
B. 3的倍数
C. 能被23整除的数
D. 能被23同时整除的数

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

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;
}
A. 20
B. 19
C. 1
D. 不确定

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

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;
}
A. str[i]+='a'-'A' 
B. str[i]+=20
C. str[i]+='A'-'a' 
D. 无法实现

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

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++的字符变量的码值是整数,下面字面量形式的字符码值最大的是( )。

A. 100
B. 075 
C. 0x70 
D. 0x60

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

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; 
}
A. 5 
B. 6 
C. 10 
D. 12

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

A. 4 
B. 5 
C. 19 
D. 20

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

A. 大于
B. 等于
C. 小于
D. 等于或小于

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

A. 小程序
B. 计时器 
C. 操作系统 
D. 神话人物

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

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

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

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

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

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

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 。( )

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


编程题2