CCF编程能力等级认证GESP---C++3级---20240316
- [单选题(每题 2 分,共 30 分)](#单选题(每题 2 分,共 30 分))
- [判断题(每题 2 分,共 20 分)](#判断题(每题 2 分,共 20 分))
- 编程题 (每题 25 分,共 50 分)
- 参考答案
单选题(每题 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