2021年12月青少年软件编程等级考试(C语言)一级试卷及C语言版答案
1. 输出整数部分
输入一个双精度浮点数f, 输出其整数部分。
输入
一个双精度浮点数f(0 < f < 100000000)。
输出
一个整数,表示浮点数的整数部分。
样例输入
3.8889
样例输出
3
参考范例
#include <stdio.h>
int main()
{
double f;//单精度float是7位,双精度double是16位
int x;
scanf("%lf",&f);//lf是输入格式双精度浮点数
x=(int)f;//强制类型转换
printf("%d",x);
return 0;
}
2. 疫情集中隔离
A同学12月初从国外回来,按照防疫要求,需要进行14天集中隔离,请你实现一个程序,根据回国的时间计算集中隔离结束的日期。
比如,12月1号回来,1号当天开始隔离,14号是隔离的最后一天,因此14号是集中隔离结束的日期。
输入
一个整数x,表示A同学12月x号回国。(1 ≤ x ≤ 15)
输出
一个整数y,表示A同学结束集中隔离的日期(即12月y号A结束集中隔离)。
样例输入
1
样例输出
14
参考范例
#include <stdio.h>
int main()
{
int x,y;
scanf("%d",&x);
y=x+13;
printf("%d",y);
return 0;
}
3. 字符判断
对于给定的字符,如果该字符是大小写字母或者数字,输出YES, 否则输出NO
输入
一个字符
输出
按照题目要求输出YES或者NO
样例输入
样例1输入
A
样例2输入
a
样例3输入
1
样例4输入
*
样例输出
样例1输出
YES
样例2输出
YES
样例3输出
YES
样例4输出
NO
提示
【样例输入】、【样例输出】里的多组数据只是给大家提供尽量多的参考,”样例1输入“、”样例1输出“等提示文字也只是为了区别不同的数据,输入输出中不会出现。输入输出的格式按照题目里【输入】【输出】的描述为准。
参考范例
#include <stdio.h>
int main()
{
char ch;
scanf("%c",&ch);
if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z'||ch>='0'&&ch<='9')
printf("YES");
else
printf("NO");
return 0;
}
4. 统计数
给定一个数的序列S,以及一个区间[L, R], 求序列中介于该区间的数的个数,即序列中大于等于L且小于等于R的数的个数。
输入
第一行3个整数n、L、R,分别表示序列的长度,区间的左端点,区间的右端点。(0 < n ≤ 10000, 1 ≤ L ≤ R ≤ 1000000)
第二行n个正整数,表示序列里的每一个数,每个数小于等于10000000
输出
输出一个整数,表示序列中大于等于L且小于等于R的数的个数。
样例输入
5 1 10
11 8 1 10 16
样例输出
3
参考范例
#include <stdio.h>
int main()
{
int n,l,r,s=0,x;
scanf("%d%d%d",&n,&l,&r);
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
if(x>=l && x<=r)
s++;
}
printf("%d",s);
return 0;
}
5. 最大质因子
质因子是指能整除给定正整数的质数。而最大质因子是指一个整数的所有质因子中最大的那个。
比如30的质因子有2,3, 5,所以最大质因子就是5。
输入
一个整数N( 2 ≤ N ≤ 10000)
输出
N的最大质因子
样例输入
30
样例输出
5
提示
质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
对于一个数n,我们可以用k = 2,3,4,5…这样的数来尝试整除它。对于每一个k,如果它可以整除n,就令n = n / k,一直到k不能再整除n为止。
按照上述方法,最终一定会有一个数k使得n / k = 1,这个k就是我们要求解的最大质因数。
参考范例
#include <stdio.h>
//此程序为分解质因数简化版。
int main()
{
int n,i;
// printf("\nplease input a number:\n");
scanf("%d",&n);
// printf("%d=",n);
for(i=2;i<=n;i++)
{
while(n!=i)
{
if(n%i==0)
{
// printf("%d*",i);
n=n/i;
}
else
break;
}
}
printf("%d",n);
}