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

1.输出第二个整数
输入三个整数,把第二个输入的整数输出。
时间限制:1000
内存限制:65536
输入
只有一行,共3个整数,整数之间由一个空格分隔。整数是32位有符号整数。
输出
只有一行,一个整数,即输入的第二个整数。
样例输入
123 456 789
样例输出
456
参考代码

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

2.计算表达式的值
给定整数x,y的值,计算3x+2y的值。
时间限制:1000
内存限制:65536
输入
一行包含2个整数x,y,以空格作为分隔。数据保证最后计算结果还在整数表示范围内。
输出
按照题目要求输出结果。
样例输入
2 3
样例输出
12

参考代码

#include <stdio.h>
int main()
{
	int x,y;
	scanf("%d%d",&x,&y);
	printf("%d",3*x+2*y);
	return 0;
}

3.大写字母的判断(同202106第3题)
输入一个字符,判断是否是英文大写字母,即是否是A-Z中的一个。
时间限制:1000
内存限制:65536
输入
一个字符。
输出
如果是英文大写字母,则输出YES,否则输出NO。
样例输入
K
样例输出
YES
参考代码

#include <stdio.h>
int main()
{
	char ch;   
	scanf("%c",&ch);
	if(ch>='A'&&ch<='Z')
		printf("YES");
else
    	printf("NO");
	return 0;
}

4.满足条件的数的累加(同202109第4题)
现有n个整数,将其中个位数为k的数进行累加求和。
时间限制:3000
内存限制:65536
输入
第一行两个整数n、k,以空格分隔。(0<n<10000,0≤k≤9)第二行n个非负整数,以空格分隔,每个数不大于10000。
输出
满足题目要求的累加和。
样例输入
10 7
2 5 7 17 11 18 4 27 1 7
样例输出
58

参考代码

#include<stdio.h>
int main()
{
	int a,x,s=0;
	scanf("%d",&a);
	for (int i=1;i<=5;i++)
	{
		scanf("%d",&x);
		if (x<a)
			s+=x;
       }
	printf("%d",s);
	return 0;
}
  1. 金币(同202009第5题)
    国王将金币作为工资,发放给忠诚的骑士。第1天,骑士收到一枚金币;之后两天(第2天和第3天)里,每天收到两枚金币;之后三天(第4、5、6天)里,每天收到三枚金币;之后四天(第7、8、9、10天)里,每天收到四枚金币……这种工资发放模式会一直这样延续下去:当连续n天每天收到n枚金币后,骑士会在之后的连续n+1天里,每天收到n+1枚金币(n为任意正整数)。
    你需要编写一个程序,确定从第一天开始的给定天数内,骑士一共获得了多少金币。
    输入
    一个整数(范围1到10000),表示天数。
    输出
    骑士获得的金币数。
    样例输入
    6
    样例输出
    14

参考代码

#include <stdio.h>//while循环编程
int main() 
{
    int n,t,s,c=0;
    scanf("%d",&n);
	t=1;//总天数从1天开始
	s=1;//每天发的金币数从1个开始
	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;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

江湖之远izxg

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

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

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

打赏作者

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

抵扣说明:

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

余额充值