中国电子学会(CEIT)考评中心历届真题(含解析答案)
C语言软件编程等级考试一级 2022年09月
编程题五道 总分:100分
一、指定顺序输出(20分)
依次输入3个整数a、b、c,将他们以c、a、b的顺序输出。
时间限制: 1000
内存限制: 65536
输入
一行3个整数a、b、c,以空格分隔。0 <a,b,c < 108
输出
—行3个整数c、a、b,整数之间以—个空格分隔。
样例输入
1 2 3
样例输出
3 1 2
#include <iostream>
using namespace std;
int main(){
int a, b, c;
//输入三个数
cin >> a >> b >> c;
//按照c, b, a顺序打印
cout << c <<" "<< b << " "<<a;
return 0;
}
#include <stdio.h>
int main(){
int a,b,c;
//输入三个数
scanf("%d %d %d",&a,&b,&c);
//按照c,b,a顺序打印
printf("%d %d %d",c,b,a);
return 0;
}
二、成绩判定(20分)
给定一门课的考试分数,如果分数大于等于60,则该门课成绩合格,记为"P",否者成绩不合格,记为"F"。
时间限制: 1000
内存限制: 65536
输入
—个整数s,表示这门课的分数。(0 ≤ s ≤100)
输出
如果成绩合格,输出字母P,否者输出字母F。
样例输入
59
样例输出
F
#include <iostream>
using namespace std;
int main() {
int s;
//输入成绩
cin >> s;
//判断是否合格
if (s >= 60)
cout <<"P";
else
cout << "F";
return 0;
}
#include <stdio.h>
int main() {
int s;
//输入成绩
scanf("%d",&s);
//判断是否合格
if(s>=60)
printf("P");
else
printf("F");
return 0;
}
三、简单排序(20分)
依次输入3个整数a、b、c,将他们从小到大的顺序输出。
时间限制: 1000
内存限制: 65536
输入
一行3个整数a、b、c,以空格分隔。0 <a,b,c < 108
输出
一行3个整数,即将a、b、c从小到大排序的3个整数,整数之间以一个空格分隔。
样例输入
10 5 20
样例输出
5 10 20
#include <iostream>
using namespace std;
int main(){
int a, b, c;int t;
//输入三个数
cin >> a >> b >> c;
//两两交换排序
if (a > b){
t = a;
a = b;
b = t;
}
if (a > c){
t = a;
a = c;
c = t;
}
if (b > c){
t = b;
b = c;
c = t;
}
cout << a <<" "<< b <<" "<<c;
return 0;
}
#include <stdio.h>
int main() {
int a,b,c;int t;
//输入三个数
scanf("%d %d %d",&a,&b,&c);
//两两交换排序
if(a>b){
t=a;
a=b;
b=t;
}
if(a>c){
t=a;
a=c;
c=t;
}
if(b>c){
t=b;
b=c;
c=t;
}
printf("%d %d %d",a,b,c);
return 0;
}
四、数字求和(20分)
给定一个正整数a,以及另外的5个正整数,问题是:这5个整数中,小于a的整数的和是多少?
时间限制: 3000
内存限制: 65536
输入
输入一行,只包括6个小于100的正整数,其中第一个正整数就是a。
输出
输出一行,给出一个正整数,是5个数中小于a的数的和。
样例输入
10 1 2 3 4 11
样例输出
10
#include <iostream>
using namespace std;
int main() {
int i, a, b;
int sum = 0;
//输入第一个数a
cin >> a;
//输入其余5个数
for (i = 0;i < 5; i++){
cin >> b;
//计算小于a的数的和
if (b <a)
sum += b;
}
cout << sum;
return 0;
}
#include <stdio.h>
int main() {
int i,a,b;
int sum=0;
//输入第一个数a
scanf("%d",&a);
//输入其余5个数
for(i=0; i<5; i++){
scanf("%d",&b);
//计算小于a的数的和
if(b<a)
sum+=b;
}
printf("%d",sum);
return 0;
}
五、数1的个数(20分)
给定一个十进制正整数n,写下从1到n的所有整数,然后数一下其中出现的数字“1”的个数。
例如当n=2时,写下1,2。这样只出现了1个“1”;当n=12时,写下1,2,3,4,5,6, 7,8,9,10,11,12。这样出现了5个“1”。
时间限制: 1000
内存限制: 65536
输入
正整数n。1 <= n<= 10000。
输出
一个正整数,即“1”的个数。
样例输入
12
样例输出
5
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
int main() {
int i, j, n;
char s[40];
int sum = 0;
//输入n
cin >> n;
//遍历所有1-n的数
for(i = 1; i<= n; i++){
//把i转换成字符串
sprintf(s,"%d" , i);
//统计字符串中1的个数
for (j = 0; j < strlen(s); j++){
if (s[j] == '1')
sum++;
}
}
cout << sum;
return 0;
}
#include <stdio.h>
#include <string.h>
int main() {
int i,j,n;
char s[40];
int sum=0;
//输入n
scanf("%d",&n);
//遍历所有1-n的数
for(i=1; i<=n; i++){
//把i转换成字符串
sprintf(s,"%d" ,i);
//统计字符串中1的个数
for(j=0; j<strlen(s); j++) {
if(s[j]=='1')
sum++;
}
}
printf("%d",sum);
return 0;
}