2024年9月CCF—GESP(C++二级)编程能力等级认证试卷
二级
2024
2025-05-17 14:20:41
116次
一、单选题
一个数如果能被某个数(比如7)整除,或者含有该数,则说该数是某个数的相关数。下面C++代码用于判定输入的数与7是否有关。下列说法错误的是( )。
int N, M;
bool Flag = false;
cin >> N;
M = N;
if (M % 7 == 0)
Flag = true;
while (!Flag && M){
if (M % 10 == 7){
Flag = true;
break;
}
M /= 10;
}
if (Flag)
cout << N << "与7有关";
else
cout << N << "与7无关"; | A. 删除break语句不会导致死循环,但有时会导致结果错误 |
B. 删除 M /= 10 将可能导致死循环 |
| C. 删除 M = N 并将其后代码中的M变量改为N,并调整输出同样能完成相关功能 |
D. 删除 break 语句不会导致死循环,但有时会影响效率 |
【知识点】 CCF—GESP C++二级
下面C++代码执行后输出逆序数,如输入 123 则输出 321 。如输入 120 则输出 21 。横线处先后应填入的代码是( ) 。
int N;
cin >> N;
int rst = 0;
while (N){
____________________;
____________________;
}
cout << (rst); | A. rst = rst * 10 + N % 10 N = N / 10 |
B. rst += N % 10 N = N / 10 |
| C. rst = rst * 10 + N / 10 N = N % 10 |
D. rst += N / 10 N = N % 10 |
【知识点】 CCF—GESP C++二级
以下C++代码判断输入的正整数是否为质数,如果该数字是质数,则输出 YES ,否则输出 NO 。质数是指仅能被1和它本身整除的正整数。请在横线上填写代码。( )
int num, i;
cin >> num;
for(i = 2; i < num; i++)
if (__________){
cout << ("NO");
break;
}
if(i == num)
cout << ("YES"); | A. num % i |
B. num % i == 0 |
| C. num / i |
D. num / i == 0 |
【知识点】 CCF—GESP C++二级
下面的C++代码用于输入学生成绩,并根据人数计算出平均成绩,有关说法错误的是( )。
float Sum = 0; // 保存总成绩
int cnt = 0; // 保存学生人数
while (1){
int score;
cin >> score;
if (score < 0)
break;
cnt += 1;
Sum += score;
}
cout << "总学生数:" << cnt << "平均分:" << Sum/cnt; | A. 代码 while (1) 写法错误 |
B. 如果输入负数,将结束输入,并正确输出 |
| C. 如果输入的学生成绩含有小数,程序将无法正常执行 |
D. 变量 int score 初始值不确定,但不影响程序执行 |
【知识点】 CCF—GESP C++二级
下图是C++程序执行后的输出。为实现其功能,横线处应填入代码是( )。
7
1
2 3
3 4 5
4 5 6 7
5 6 7 8 9
6 7 8 9 10 11
7 8 9 10 11 12 13
//////////////////////////////
int lineNum;
cin >> lineNum;
for (int i= 1; i < lineNum+1; i++){
for(int __________________)
cout << j << " ";
cout << endl;
} | A. j = i; j < i; j++ |
B. j = 1; j < i; j++ |
| C. j = i; j < i*2; j++ |
D. j = i+1; j < i+i; j++ |
【知识点】 CCF—GESP C++二级
二、判断题
某一系列数据的规律是从第3个数值开始是前两个数之和。下面的代码求第N个数的值,N限定为大于2。()
int start1; // 第1个数
int start2; // 第2个数
int N; //求N个数的值
int tmp;
cin >> start1 >> start2 >> N;
for (int i = 2; i < N; i++){
tmp = start1 + start2;
start1 = start2;
start2 = tmp;
}
cout << start2; | A.正确 | B.错误 |
【知识点】 CCF—GESP C++二级
三、编程题
小杨的
时间限制:1.0 s
内存限制:512.0 MB
题面描述
小杨想要构造一个m×m 的 N 字矩阵(m 为奇数),这个矩阵的从左上角到右下角的对角线、第 1 列和第 m 列都是半角加号 + ,其余都是半角减号 - 。例如,一个5×5 的 N 字矩阵如下:
+---+
++--+
+-+-+
+--++
+---+
请你帮小杨根据给定的 m mm 打印出对应的 N 字矩阵。
输入格式
第一行包含一个正整数m。
输出格式
输出对应的 N 字矩阵。
输入样例
5
输出样例
+---+ ++--+ +-+-+ +--++ +---+
对于全部数据,保证有3≤m≤49 且 m 为奇数。
【知识点】 CCF—GESP C++二级
数位之和
时间限制:1.0 s
内存限制:512.0 MB
题面描述
小杨有 n 个正整数,他认为一个正整数是美丽数字当且仅当该正整数每一位数字的总和是 7 的倍数。
小杨想请你编写一个程序判断 n 个正整数哪些是美丽数字。
输入格式
第一行包含一个正整数 n ,代表正整数个数。
之后 n 行,每行包含一个正整数。
输出格式
对于每个正整数,如果是美丽数字则输出 Yes,否则输出 No。
输入样例
3 7 52 103
输出样例
Yes Yes No
7 的各位数字之和为 7 ,是 7 的倍数。52 的各位数字之和为5+2=7,是 7 的倍数。103 的各位数字之和为1+0+3=4,不是 7 的倍数。
对于全部数据,保证有1≤n≤105,1≤ai≤105。
【知识点】 CCF—GESP C++二级
