2021年12月青少年软件编程等级考试(C语言)一级试卷及C语言版答案

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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江湖之远izxg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值