2024年6月CCF—GESP(C++三级)编程能力等级认证试卷
三级
2024
2025-05-16 16:30:54
46次
一、单选题
某小学男子篮球队招募新成员,要求加入球队的成员身高在135厘米以上(不含135厘米)。本次报名的人员有10人,他们的身高分别是125、127、136、134、137、138、126、135、140、145。完善以下代码,求出本次球队能够招募到新成员的人数?( )
#include <iostream>
using namespace std;
int main() {
int arr[10] = {125, 127, 136, 134, 137, 138, 126, 135, 140, 145};
int count = 0;
for(int i=0; i<10; i++)
__________________________ // 在此处填入代码
cout << count << endl;
return 0;
} | A. count = arr[i]>135? 1: 0; |
B. count += arr[i]>135? 1: 0; |
| C. count++; |
D. 以上都不对 |
【知识点】 CCF—GESP C++三级
下面可以正确输出 They’re planning a party for their friend’s birthday. 的C++语句是?( )
| A. cout << ‘They’re planning a party for their friend’\s birthday." << endl; |
B. cout << "They’re planning a party for their friend’s birthday.'<< endl; |
| C. cout << ‘They’re planning a party for their friend’s birthday.’<< endl; |
D. cout << “They’re planning a party for their friend’s birthday.” << endl; |
【知识点】 CCF—GESP C++三级
如果执行下面C++代码后,输出的结果是“gesp ccf org cn ”,则横线上应填入哪个代码?( )
#include <iostream>
using namespace std;
int main() {
string str = "gesp.ccf.org.cn";
string delimiter = ".";
string result="";
string token;
size_t found = str.find(delimiter);
while (found != string::npos) {
token = str.substr(0, found);
result += token;
result += " ";
__________________________ // 在此处填入代码
found = str.find(delimiter);
}
//最后一部分
result += str;
result += " ";
cout << result << endl;
return 0;
} | A. str = str.substr(found + delimiter.length(), str.length() - 1); |
B. str = str.substr(found, str.length() ); |
| C. str = str.substr(found, str.length() -1); |
D. 以上都不对 |
【知识点】 CCF—GESP C++三级
下列代码的输出结果是( )。
#include <iostream>
using namespace std;
int main() {
int a = 5;
int b = 10;
a = a ^ b;
b = a ^ b;
a = a ^ b;
cout << "a = " << a << ", b = " << b << endl;
return 0;
} | A. a = 5, b = 10 |
B. a = 5, b = 5 |
| C. a = 10, b = 5 |
D. a = 10, b = 10 |
【知识点】 CCF—GESP C++三级
下列代码将十进制转化成八进制,则横线上应填入( )。
#include <iostream>
using namespace std;
void decimal2octal(int decimal) {
int oct_number[100];
int i = 0;
while (decimal > 0) {
__________________________ //在此处填入代码
}
for (int j = i - 1; j >= 0; j--) {
cout << oct_number[j];
}
cout << endl;
} | A. oct_number[i] = decimal % 8; decimal /= 8; |
B. oct_number[i] = decimal / 8; decimal %/= 8; |
| C. oct_number[i++] = decimal % 8; decimal /= 8; |
D. oct_number[i++] = decimal / 8; decimal %= 8; |
【知识点】 CCF—GESP C++三级
在下列代码的横线处填写( ),可以使得输出是“7”。
#include <iostream>
using namespace std;
int main() {
int array[5] = {3,7,5,2,4};
int max = 0;
for(int i=0; i<5; i++)
if(______________) // 在此处填入代码
max = array[i];
cout << max << endl;
return 0;
} | A. max > array[i] |
B. max < array[i] |
| C. max = array[i] |
D. 以上均不对 |
【知识点】 CCF—GESP C++三级
已知字符 ‘0’ 的ASCII编码的十进制表示为48,则执行下面C++代码后,输出是( )。
#include <iostream>
using namespace std;
int main() {
string s = "0629";
int n = s.length();
int x = 0;
for(int i = 0; i < n; i++)
x += s[i];
cout << x << endl;
return 0;
} | A. 17 |
B. 158 |
| C. 209 |
D. 316 |
【知识点】 CCF—GESP C++三级
小杨在做数学题,题目要求找出从1到35中能被7整除的数字,即[7, 14, 21, 28, 35],则横线处应填入哪个代码?( )
#include <iostream>
using namespace std;
int main() {
int arr[35];
int count = 0;
for (int i = 1; i <= 35; i++) {
if (i % 7 == 0)
__________________________ // 在此处填入代码
}
for (int i = 0; i < count; i++)
cout << arr[i] << endl;
return 0;
} | A. arr[count++] = i; |
B. arr[i] = count++; |
| C. arr[i] = count; |
D. arr[count] = count++; |
【知识点】 CCF—GESP C++三级
二、判断题
执行下面C++代码后,输出的结果不可能是89781。( )
#include <iostream>
#include <cstdlib> // 为了使用 rand() 和 srand()
#include <ctime> // 为了使用 time()
using namespace std;
int main() {
// 设置随机种子
srand(time(NULL));
int i = 1;
int s[5];
while(i <= 5)
{
int a = rand() % 10;
if(a % 3 == (i + 1) % 3)
s[i++] = a;
}
for(int i = 1; i <= 5; i++)
cout << s[i];
cout << endl;
return 0;
} | A.正确 | B.错误 |
【知识点】 CCF—GESP C++三级
三、编程题
移位
时间限制:1.0 s
内存限制:512.0 MB
题面描述
小杨学习了加密技术移位,所有大写字母都向后按照一个固定数目进行偏移。偏移过程会将字母表视作首尾相接的环,例如,当偏移量是3的时候,大写字母 A 会替换成 D,大写字母 Z 会替换成 C,总体来看,大写字母表ABCDEFGHIJKLMNOPQRSTUVWXYZ 会被替换成DEFGHIJKLMNOPQRSTUVWXYZABC。
注:当偏移量是26的倍数时,每个大写字母经过偏移后会恰好回到原来的位置,即大写字母表ABCDEFGHIJKLMNOPQRSTUVWXYZ 经过偏移后会保持不变。
输入格式
第一行包含一个正整数n。
输出格式
输出在偏移量为n的情况下,大写字母表 ABCDEFGHIJKLMNOPQRSTUVWXYZ 移位替换后的结果。
输入样例
3
输出样例
DEFGHIJKLMNOPQRSTUVWXYZABC
样例解释
当偏移量是3的时候,大写字母 A 会替换成 D,大写字母 Z 会替换成 C,总体来看,大写字母表ABCDEFGHIJKLMNOPQRSTUVWXYZ 会被替换成 DEFGHIJKLMNOPQRSTUVWXYZABC。
数据范围
对于全部数据,保证有1≤n≤100。
【知识点】 CCF—GESP C++三级
寻找倍数
时间限制:1.0 s
内存限制:512.0 MB
题面描述
小杨有一个包含n个正整数的序列 A = [a1,a2, . . . , an],他想知道是否存在i(1≤i≤n) 使得ai是序列A中所有数的倍数。
输入格式
第一行包含一个正整数t,代表测试用例组数。
接下来是t组测试用例。
对于每组测试用例,一共两行。其中,第一行包含一个正整数n;第二行包含n个正整数,代表序列A。
输出格式
对于每组测试用例,如果存i(1≤i≤n) 满足对于所有k(1≤k≤n)ai是ak的倍数,输出 Yes,否则输出 No。
输入样例
2 3 1 2 4 5 1 2 3 4 5
输出样例
Yes No
样例解释
对于第一组数据,对于a3=4,满足a3是a1和a2的倍数。
数据范围
对于全部数据,保证有1≤t≤10,1≤n≤105,1≤ai≤109。
【知识点】 CCF—GESP C++三级


