【教育部白名单赛事】C语言编程题解析--软件编程邀请赛(决赛)

在这里插入图片描述

1、保留12位小数的浮点数

输入一个双精度浮点数,保留12位小数,输出这个浮点数。
时间限制:1000
内存限制:65536
【输入】
只有一行,一个双精度浮点数。
【输出】
一行,保留12位小数的浮点数。
【样例输入】
3.1415926535798932
【样例输出】
3.141592653580

#include <stdio.h>
int main() {
    double a;
    scanf("%lf", &a);
    printf("%.12lf\n", a);
    return 0;
}

2、气温统计

现有一段时间的气温数据,请统计指定气温出现的次数。
时间限制:1000
内存限制:65536
【输入】
第一行一个整数n,表示气温数据的个数。(0<n≤100)
第二行n个整数,以空格分隔,每个整数表示一个气温,气温的范围大于等于0,小于等于40。
第三行一个整数,表示需要查询的气温t。(0≤t≤40)
【输出】
输出一个整数,表示气温t出现的次数。
【样例输入】
10
18 19 21 17 20 18 21 21 22 21
21
【样例输出】
4

#include <stdio.h>
int main() {
	int n, t, c=0;
	int a[100];
	//输入n
	scanf("%d", &n);//输入n个温度数据
	for(int i=0; i<n; i++){
		scanf("%d",&a[i]);
	}
	//输入t
	scanf("%d", &t);
	for(int i=0; i<n; i++){
		if(a[i]==t)
			c++;
	}
	//输出次数统计结果
	printf("%d" ,c);
	return 0;
}

3.大写字母的判断

输入一个字符,判断是否是英文大写字母,即是否是A-Z中的一个。
时间限制:1000
内存限制:65536
【输入】
一个字符。
【输出】
如果是英文小写字母,则输出yes,否者输出no。
【样例输入】
M
【样例输出】
Yes

#include "stdio.h"
#include "ctype.h"  //`ctype.h` 是C语言标准函数库中的一个头文件,它定义了一系列用于字符分类的函数。
int main(){
    char c;
    scanf("%c",&c);
    if(isupper(c))
    {
        printf("YES");
    }
    else
    {
        printf("NO");
    }
    return 0;
}

4、【递归】母鸡的故事

有一只母鸡,它每年年初生一只小母鸡。每只小母鸡从第四个年头开始,每年年初也生一只小母鸡。请编程实现在第n年的时候,共有多少只母鸡?
时间限制:1000
内存限制:65536
【输入格式】
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。
【输出格式】
对于每个测试实例,输出在第n年的时候母鸡的数量。
每个输出占一行。

#include<stdio.h>
int hanshu(int n)
{
	if(n<=3)
		return n+1;
	else 
		return hanshu(n-1)+hanshu(n-3);
}
int main()
{
	int n;
	int sum;
	while(scanf("%d",&n)!=0)
	{
		sum=hanshu(n);
		printf("%d\n",sum);
	}
}

5、小白免再排队

N只小白兔(1<N < 100),每只兔头上戴着一顶有颜色的帽子。现在称出每只白兔的重量,要求按照白兔重量从小到大的顺序输出它们头上帽子的颜色。帽子的颜色:”red”,“blue”等字符串来表示。不同的小白兔可以戴相同颜色的帽子。白兔的重量用整数表示。
时间限制:1000
内存限制:65536
【输入】
输入第一行为一个整数N,表示小白兔的数目。下面有N行,每行是一只白兔的信息。第一个为正整数,表示白兔的重量,不超过整型范围;第二个为字符串,表示白兔的帽子颜色,字符串长度不超过10个字符。注意:白兔的重量各不相同。
【输出】
按照白兔的重量从小到大的顺序输出白兔的帽子颜色。

解答一
思路:采用结构体

#include<stdio.h>
typedef struct mouse{
    int weight;
    char color[11];
}mouse;
int main(){
    mouse m[101],temp;
    int c;
    scanf("%d",&c);
    for(int i=0;i<c;i++)
    {
        scanf("%d",&m[i].weight);
        scanf("%s",&m[i].color);
    }
    for(int i=0;i<c;i++)
    {
        for(int j=0;j<c-1-i;j++)
        {
            if(m[j].weight<m[j+1].weight)
            {
                temp=m[j+1];
                m[j+1]=m[j];
                m[j]=temp;
            }
        }
    }
    for(int i=0;i<c;i++){
        printf("%s\n",m[i].color);
    }
}

思路二
借助二维数组,利用一维数组的地址,在相应存在小鼠的地址上填写小鼠的颜色,最后从后向前输出。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main(void)
{
    int n, i, j;
    int weight;
    char hat[105][15], tmp[15];
    while (scanf("%d", &n) != EOF)
    {
        for (i=0; i<101; i++)
        {
            hat[i][0] = '\0';
        }
        for (i = 0; i < n; i++)
        {
            scanf("%d %s", &weight, tmp);
            strcpy(hat[weight], tmp);
        }
        for (i = 100; i >=0 ; i--)
        {
            if (hat[i][0] != '\0')
            {
                printf("%s\n", hat[i]);
            }
        }
     }
    return 0;
}

注释:C语言常见头文件汇总

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

DomCode

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

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

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

打赏作者

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

抵扣说明:

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

余额充值