2024年3月 GESP C++ 3级认证考试真题(含编程操作题部分)
选 单选题(共 15 题,每题 2 分)
整数 $-5$ 的 16 位补码表示是( )。
如果 $16$ 位短整数 $-2$ 的二进制是 "FFFE",则短整数 $-4$ 的十六进制是( )。
下面 C++ 代码执行后的输出是( )。
int main()
{
cout << (3|16) << endl;
cout << endl;
return 0;
}
定义整数 int x = -5,则执行 C++ 代码 cout << (x == (x << 1 >> 1)) 输出是( )。
已知字符 '0' 的 ASCII 编码的十进制表示为 $48$,则执行下面 C++ 代码后,输出是( )。
int main()
{
string s="316";
int n=s.length();
int x=0;
for(int i = 0; i < n; i++)
x += s[i];
cout << x << endl;
cout << endl;
return 0;
}
下面 C++ 代码执行后数组中大于 $0$ 的数的特征是( )。
int main()
{
int a[20], i;
for (i = 0; i < 20; i++)
a[i] = i + 1;
for (int i = 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;
}
执行下面 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;
}
在下列代码的横线处填写( ),可以使得输出是 GESP IS INTERESTING。
int main()
{
string str="gEsP is Interesting";
int x = str.length();
for(int i = 0; i < x; i++)
if ((str[i]>='a') && (str[i]<='z'))
________________________;
cout << str << endl;
cout << endl;
return 0;
}
假设英文句子由若干词构成。下面 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;
}
C++ 的字符变量的码值是整数,下面字面量形式的字符码值最大的是( )。
下面 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;
}
定义字符数组 char str[20] = {'G', 'E', 'S', 'P'};,则 str 的字符串长度为( )。
定义整型变量 int a = 3, b = 16,则 a | b 的值和 a + b 的关系是( )。
小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是( )。
中国计算机学会(CCF)在 2024 年 1 月 27 日的颁奖典礼上颁布了王选奖,王选先生的重大贡献是( )。
判 判断题(共 10 题,每题 2 分)
任意整数 $a$ 的二进制反码与补码都有 $1$ 位不同。 ( )
对整型变量 int a = 3,执行 C++ 代码 a << 2 将把 $2$ 输出到 $a$ 中。( )
下面 C++ 代码可以计算 $1$ 到 $100$ 的累加和,采用的是穷举法。
int main()
{
int i, sum = 0;
for (int i = 1; i <= 100; i++)
sum += i;
cout << sum << endl;
cout << endl;
return 0;
}
一个 int 类型变量 $a$,执行操作 (a << 2 >> 2) 后的值一定是 $a$。( )
在 C++ 语言中,(010 << 1) 执行结果是 100。( )
执行下面 C++ 代码后将输出 $2$。( )
int main()
{
string str="gEsP is Interesting";
int x = str.find("s");
cout << x << endl;
cout << endl;
return 0;
}
在 C++ 语言中,字符数组被定义时,它的大小可以调整。( )
对定义的数组 int a[7] = {2, 0, 2, 4, 3, 1, 6},可以用简单循环就找到其中最小的整数。( )
小杨今年春节回奶奶家了,奶奶家的数字电视要设置 ip 地址并接入到 WIFI 盒子才能收看节目,那这个 WIFI 盒子具有路由器的功能。( )
任何一个 for 循环都可以转化为等价的 while 循环( )。
编 编程操作题(共 2 题,共 50 分)
试题名称:字母求和
时间限制:1.0 s | 内存限制:512.0 MB
题目描述
小杨同学发明了一种新型密码,对于每一个小写英文字母,该小写字母代表了一个正整数,即该字母在字母顺序中的位置,例如字母 a 代表了正整数 $1$,字母 b 代表了正整数 $2$;对于每一个大写英文字母,该大写字母代表了一个负整数,即该字母的 ASCII 码的相反数,例如字母 A 代表了负整数 $-65$。小杨同学利用这种放缩对一个整数进行了加密并得到了一个由大写字母和小写字母组成的字符串,该字符串中每个字母所代表数字的总和即为加密前的整数,例如 aAc 对应的加密前的整数为 $1+(-65)+3=-61$。
对于给定的字符串,请你计算出它对应的加密前的整数是多少。
输入格式
第一行一个正整数 $n$,表示字符串中字母的个数。
第二行一个由大写字母和小写字母的字符串 T,代表加密后得到的字符串。
输出格式
输出一行一个整数,代表加密前的整数。
样例输入 #1
3
aAc
样例输出 #1
-61
说明/提示
对全部的测试数据,保证 $1 \leq n \leq 10^5$。
试题名称:完全平方数
时间限制:1.0 s | 内存限制:512.0 MB
题目描述
小杨同学有一个包含 $n$ 个非负整数的序列 $A$,他想要知道其中有多少对下标组合 $\langle i,j\rangle$($1 \leq i < j \leq n$),使得 $A_i + A_j$ 是完全平方数。
如果 $x$ 是完全平方数,则存在非负整数 $y$ 使得 $y \times y = x$。
输入格式
第一行一个非负整数 $n$,表示非负整数个数。
第二入行包含 $n$ 个非负整数 $A_1, A_2, \dots A_n$,表示序列 $A$ 包含的非负整数。
输出格式
输出一行一个整数表示答案。
样例输入 #1
5
1 4 3 3 5
样例输出 #1
3
说明/提示
对全部的测试数据,保证 $1 \leq n \leq 1000$,$0 \leq A_i \leq 10^5$。