2025年6月CCF—GESP(C++二级)编程能力等级认证试卷
二级
2025
2026-03-30 13:56:13
121次
一、单选题
下面C++代码实现输出如下图形,相关说法【错误】的是?( )
请输入层数:10 0 12 345 6789 01234 567890 1234567 89012345 678901234 5678901234
int line_number, now_number;
int i, row;
cout << "请输入行数:";
cin >> line_number;
now_number = 0;
for (row = 1; row < line_number + 1; row++) { // L1
for (i = 0; i < row; i++) { // L2
cout << now_number;
now_number += 1;
if (now_number == 10) now_number = 0; // L3
}
cout << endl;
} | A. 代码 now_number = 0 移动到 L1 和 L2 标记的两行代码之间,效果维持不变 |
B. 代码 now_number += 1 修改为 now_number = 1 + now_number 效果维持不变 |
| C. 将代码 now_number == 10 调整为 now_number > 9 效果维持不变 |
D. 将最后一行的 cout << endl 修改为 cout << "\n" ,效果维持不变 |
【知识点】 CCF—GESP C++二级
今天星期六,其后第N天星期几?如果是星期一到星期六输出形如:星期1、星期2等,星期天则输出星期天。
下面的C++代码用于完成上述要求,横线处应填上的代码是?( )
int N, remainder;
cin >> N;
remainder = _____________;
if(remainder == 0)
printf("星期六后第%d天是星期天\n", N);
else
printf("星期六后第%d天是星期%d\n", N, remainder); | A. (N + 6) / 7 |
B. (N + 6) // 7 |
| C. N % 7 |
D. (N + 6) % 7 |
【知识点】 CCF—GESP C++二级
判断一个数是否为自守数。自守数的定义是如果一个数的平方其尾数与该数相同,则为自守数,如25的平方是625,其尾数是25,所以25是自守数。相关说法【错误】的是?( )
int N, N1, M1;
cout << "输入一个正整数:";
cin >> N;
N1 = N, M1 = N * N;
bool Flag = true;
while (N1 > 0) {
if (N1 % 10 != M1 % 10) {
Flag = false;
break;
} else {
N1 = N1 / 10, M1 = M1 / 10;
}
}
if (Flag == true)
printf("%d的平方是%d,是自守数", N, N * N);
else
printf("%d的平方是%d,不是自守数", N, N * N); | A. 如果Flag在循环中不被改为false,则说明该数是自守数 |
B. 代码 if (N1 % 10 != M1 % 10) 用于判断其个位数是否相等,如果不等,则表明不是自守数 |
| C. 代码 N1 = N1 / 10, M1 = M1 / 10 将个位数去掉 |
D. 将 N1 > 0 改为 N > 0 效果相同 |
【知识点】 CCF—GESP C++二级
二、判断题
25、为实现如下效果,即 N 行 N 列字符。当输入是奇数时,中间列为 * ,其他是 -;当输入是偶数时,则中间两列是 * ,其他是 -。字符阵列后的代码能实现其效果。( )
/*
5
--*--
--*--
--*--
--*--
--*--
*/
int N;
cin >> N;
int i,j;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++)
if ((j == N / 2) || (j == (N-1) / 2))
cout << "*";
else
cout << "-";
cout << endl;
} | A.正确 | B.错误 |
【知识点】 CCF—GESP C++二级
三、编程题
数三角形
时间限制:1 s,内存限制:512 MB
【问题描述】
直角三角形有两条直角边与一条斜边,设两条直角边的长度分别为 a、b,则直角三角形的面积为 ab / 2。
请你计算当直角边长 a、b 均取不超过 n 的正整数时,有多少个不同的面积为整数的直角三角形。
直角边长分别为 a、b 和 a'、b' 的两个直角三角形相同,当且仅当 a=a'、b=b' 或者 a=b'、b=a'。
【输入描述】
一行,一个整数 n,表示直角边长的最大值。
【输出描述】
输出一行,一个整数,表示不同的直角三角形数量。
【样例输入1】
3
【样例输出1】
3
【样例输入2】
5
【样例输出2】
9
【数据范围】
对于所有测试点,保证 1 <= n <= 1000。
【知识点】 CCF—GESP C++二级
幂和数
时间限制:1 s,内存限制:512 MB
【问题描述】
对于正整数 n,如果 n 可以表示为两个 2 的次幂之和,即 ( x、y 均为非负整数),那么称 n 为幂和数。
给定正整数 l、r,请你求出满足 l <= n <= r 的整数 n 中有多少个幂和数。
【输入描述】
一行,两个正整数 l、r,含义如上。
【输出描述】
输出一行,一个整数,表示 l、r 之间幂和数的数量。
【样例输入1】
2 8
【样例输出1】
6
【样例输入2】
10 100
【样例输出2】
20
【数据范围】
对于所有测试点,保证 1 <= l <= r <= 10000 。
【知识点】 CCF—GESP C++二级
