2024年12月CCF—GESP(C++三级)编程能力等级认证试卷
三级
2024
2025-06-02 11:08:35
59次
一、单选题
兔子五元一只,鸡三元一只,小鸭子一元三只,现在你有一百元要买一百只,兔子、鸡、鸭子,问兔子、鸡、鸭子各买多少只,每种必须至少一只,下列哪个程序能实现。( )。
A.for(int i = 0; i <= 100; i++){
for(int j = 0; j <= 100; j++){
for(int k = 0; k <= 100; k++){
if(i + j + k == 100 && 25 * i + 10 * j + k == 300)
cout << i << " " << j << " " << k << endl;
}
}
} |
B.for(int i = 0; i <= 100; i++){
for(int j = 0; j <= 100; j++){
for(int k = 0; k <= 100; k++){
if(i + j + k == 100 && 20 * i + 10 * j + k == 300)
cout << i << " " << j << " " << k << endl;
}
}
} |
C.for(int i = 0; i <= 20; i++){
for(int j = 0; j <= 34; j++){
for(int k = 0; k <= 20; k++){
if(i + j + k == 100 && 15 * i + 9 * j + k == 300)
cout << i << " " << j << " " << k << endl;
}
}
} |
D.for(int i = 0; i <= 100; i++){
for(int j = 0; j <= 100; j++){
for(int k = 0; k <= 100; k++){
if(i + j + k == 100 && 15 * i + 9 * j + k == 300)
cout << i << " " << j << " " << k << endl;
}
}
} |
【知识点】 CCF—GESP C++三级
想要计算从数字n到数字m之间(包含n和m)有多少个数字d出现,下列程序哪个能够实现( )。
A.int n,m,res,d;
cin >> n >> m>>d;
for(int i = n+1; i <= m; i++){
int temp = i;
while(temp){
if(temp % 10 == d) res++;
temp /= 10;
}
}
cout << res << endl;
return 0; |
B.int n,m,res,d;
cin >> n >> m>>d;
for(int i = n; i <= m; i++){
int temp = i;
while(temp){
if(temp % 10 = d) res++;
temp /= 10;
}
}
cout << res << endl;
return 0; |
C.int n,m,res=0,d;
cin >> n >> m>>d;
for(int i = n; i <= m; i++){
int temp = i;
while(temp){
if(temp % 10 == d) res++;
temp /= 10;
}
}
cout << res << endl;
return 0; |
D.int n,m,res=0,d;
cin >> n >> m>>d;
for(int i = n; i <= m; i++){
while(temp){
if(temp % 10 == d) res++;
temp /= 10;
}
}
cout << res << endl;
return 0; |
【知识点】 CCF—GESP C++三级
求小于等于N的素数的方法中,有一种方法是将所有从2到它本身减1的数都除一遍,如果不能整除,就是素数。下列哪个程序,体现了这种方法()
A.if(N >= 3){
cout<<2<<endl;
for(int i = 2;i <= N;i ++){
for(int j = 2;j < i;j ++){
if(i % j != 0){
flag = 1;
}
}
if(flag == 0){
cout<<i<<endl;
}
flag = 0;
}
} |
B.if(N >= 2){
for(int i = 3;i <= N;i ++){
for(int j = 2;j < i;j ++){
if(i % j == 0){
flag = 1;
}
}
if(flag == 0){
cout<<i<<endl;
}
flag = 0;
}
} |
C.if(N >= 2){
cout<<2<<endl;
for(int i = 3;i <= N;i ++){
for(int j = 2;j < i;j ++){
if(i % j == 0){
flag = 1;
}
}
if(flag == 0){
cout<<i<<endl;
}
flag = 0;
}
} |
D.if(N >= 2){
cout<<2<<endl;
for(int i = 3;i <= N;i ++){
for(int j = 2;j < i;j ++){
if(i % j == 0){
flag = 1;
}
}
if(flag == 0){
cout<<i<<endl;
}
}
} |
【知识点】 CCF—GESP C++三级
二、判断题
三、编程题
数字替换
时间限制:1.0 s
内存限制:512.0 MB
题面描述
小杨有一个包含 n 个数字的序列 A ,即 A={a1,a2,...,an},他想将其中大于 k 的数字都替换为序列的最大值,将其中小于 k 的数字都替换为序列的最小值,请你帮他计算出替换后的序列。
输入格式
第一行包含两个正整数 n,k,含义如题面所示。
第二行包含 n 个数字,代表序列 A 。
输出格式
输出 n 个整数,代表替换后的结果。
输入样例
5 0 -2 -1 0 1 2
输出样例
-2 -2 0 2 2
对于全部数据,保证有 1≤n≤105,∣k∣,∣ai∣≤105 。
【知识点】 CCF—GESP C++三级
打印数字
时间限制:1.0 s
内存限制:512.0 MB
题面描述
小杨为数字 0,1,2 和 3 设计了一款表示形式,每个数字占用了5×5 的网格。数字 0,1,2 和 3 的表示形式如下:
..... ****. ..... ..... .***. ****. ****. ****. .***. ****. ..... ..... .***. ****. .**** ****. ..... ****. ..... .....
小杨想请你将给定的数字 n 转换为对应的表示形式。
输入格式
第一行包含一个正整数代表 n 。
输出格式
输出对应的表示形式。
输入样例
12230
输出样例
****..................... ****.****.****.****..***. ****.................***. ****..****.********..***. ****.....................
对于全部数据,保证有 0≤n≤106,且 n 仅由数字 0,1,2,3 组成。
【知识点】 CCF—GESP C++三级
