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

2020年9月青少年软件编程等级考试(C语言)一级试卷及C语言版答案
题目类型:编程题(共5题,共100分)
时间限制:1000
内存限制:65536
1. 输出整数
输入四个整数,把输入的第三、第四个整数输出。
输入
只有一行, 共四个整数,整数之间由一个空格分隔。整数是32位有符号整数。
输出
只有一行,二个整数,即输入的第三、第四个整数,以一个空格分开。
样例输入
12 34 56 789
样例输出
56 789

程序范例

#include <stdio.h>
int main() 
{
    int a,b,c,d;
    scanf("%d%d%d%d",&a,&b,&c,&d);
printf("%d %d",c,d);
    return 0;
}

2. 新冠疫情死亡率

2020年全世界爆发了新冠疫情,请根据某个国家报告的新冠确诊数和死亡数,计算新冠疫情在该国的死亡率。
输入
输入仅一行,有两个整数,第一个为确诊数,第二个为死亡数。
输出
输出仅一行,新冠死亡率,以百分数形式输出,精确到小数点后3位。
样例输入
10433 60
样例输出
0.575%
提示
输出%可以使用printf(“%%”)

程序范例

#include <stdio.h>
int main() 
{
    int q,s;
    scanf("%d%d",&q,&s);
	 printf("%.3f%%",1.0*s/q*100);
    return 0;
}

3. 有一门课不及格的学生
给出一名学生的语文和数学成绩,判断他是否恰好有一门课不及格(成绩小于60分)。
输入
一行,包含两个在0到100之间的整数,分别是该生的语文成绩和数学成绩。
输出
若该生恰好有一门课不及格,输出1;否则输出0。
样例输入
50 80
样例输出
1

程序范例
#include <stdio.h>

int main() 
{
    int y,s;//语、数成绩
    scanf("%d%d",&y,&s);
	if(y<60&&s>=60||y>=60&&s<60)
		printf("1");
	else
		printf("0");
    return 0;
}

4. 整数的个数
给定k(1<k<100)个正整数,其中每个数都是大于等于1,小于等于10的数。写程序计算给定的k个正整数中,1,5和10出现的次数。
输入
输入有两行:第一行包含一个正整数k,第二行包含k个正整数,每两个正整数用一个空格分开。
输出
输入有三行,第一行为1出现的次数,第二行为5出现的次数,第三行为10出现的次数。
样例输入
5
1 5 8 10 5
样例输出
1
2
1

程序范例

#include <stdio.h>
int main() 
{
    int k,a,i;
    int y=0,w=0,s=0;
	scanf("%d",&k);
	for(i=1;i<=k;i++)
	{
		scanf("%d",&a);
		if(a==1)
			y++;
		if(a==5)
			w++;
		if(a==10)
			s++;
	}
    printf("%d\n",y);
    printf("%d\n",w);
	printf("%d\n",s);    
	return 0;
}

5. 金币
国王将金币作为工资,发放给忠诚的骑士。第1天,骑士收到一枚金币;之后两天(第2天和第3天)里,每天收到两枚金币;之后三天(第4、5、6天)里,每天收到三枚金币;之后四天(第7、8、9、10天)里,每天收到四枚金币……这种工资发放模式会一直这样延续下去:当连续n天每天收到n枚金币后,骑士会在之后的连续n+1天里,每天收到n+1枚金币(n为任意正整数)。
你需要编写一个程序,确定从第一天开始的给定天数内,骑士一共获得了多少金币。
输入
一个整数(范围1到10000),表示天数。
输出
骑士获得的金币数。
样例输入
6
样例输出
14
解题思路:
1.定义4个变量,一个用来输入天数(n),一个用来储存金币个数,初始赋值0(c),剩下两个一个表示天数(t),一个表示每天得到的金币数(s),初始赋值1。
2. 外循环用while循环,只要天数(t)<=天数(n),那么就进入循环。
3. 内循环for循环,定义i=1;i<=s;几个金币发几天;
4. 然后天数就累计起来;
5. 如果这个时候t>n了,那么就不理这个for了,
6. 然后我们的每天得的金币数就要加1了,s++;
7. 就这样一直循环到t=n,最后c里就储存上我们的金币数量
8. 最后输出它,我们的题就做完了。
总的思路就是:以每天金币数为外循环,以每个金币数目发放天数为内循环,一天天进行金币累加和天数累加,直到相应的天数t=n。

程序范例

#include <stdio.h>
int main() 
{
    int n,t=1,s=1,c=0;
    scanf("%d",&n);
while (t<=n)
//外循环,从总天数为1开始,到总天数为n
    {
    	for (int i=1;i<=s;i++)
//内循环,几个金币发几天。
//i是发s个金币的天数循环
    	{
    		c+=s; //总金币数累加
t++;  //总天数累加
    		if (t>n) 
				break;
    	}
    	s++;//每天发的金币数累加
    }
     printf("%d",c);
     return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

江湖之远izxg

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

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

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

打赏作者

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

抵扣说明:

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

余额充值