C语言PTA题目:7-20 1020 最高分和最低分

已知某个班有n(1 <= n <= 100)个学生,输入每行为学生姓名(最多20个字符)和其c语言成绩(0~100),请找出最高分和最低分输出,若最高分或最低分多于1个的,按先后顺序输出。

输入格式:

输入有多行,每行表示一个学生的信息,包括姓名和成绩,空格隔开。

输出格式:

输出最高分和最低分,多于1个的按出现的顺序依次输出,格式详见输出样例。

输入样例:

Zhangsan 80
Lisi 95
Zhouyi 69
Wangwu 73
Zhaoliu 69

输出样例:

Max is 95,name has Lisi
Min is 69,name have Zhouyi,Zhaoliu

解题代码:

#include <stdio.h>
#include <string.h>
struct student
{
    char name[20];
    int score;
}s[100];
int main()
{
    int i,j,b,number,maxk=1,mink=1,k=1;
    char a[20];
    for(i=0;scanf("%s %d",s[i].name,&s[i].score)!=EOF;i++);
    number=i;
        for(i=1;i<number;i++)
            for(j=0;j<number-1;j++)
                if(s[j].score<s[j+1].score)
                {
                    b=s[j].score;
                    s[j].score=s[j+1].score;
                    s[j+1].score=b;
                    strcpy(a,s[j].name);
                    strcpy(s[j].name,s[j+1].name);
                    strcpy(s[j+1].name,a);
                }
    for(i=1;i<number;i++)
        if(s[i].score==s[0].score)
            maxk++;
    for(i=number-2;i>=0;i--)
        if(s[i].score==s[number-1].score)
            mink++;
    if(maxk==1)
        printf("Max is %d,name has %s\n",s[0].score,s[0].name);
    if(maxk>1)
    {
        printf("Max is %d,name have %s",s[0].score,s[0].name);
        for(i=1;i<maxk;i++)
            printf(",%s",s[i].name);
        printf("\n");
    }
    if(mink==1)
        printf("Min is %d,name has %s\n",s[number-1].score,s[number-1].name);
    if(mink>1)
    {
        printf("Min is %d,name have %s",s[number-mink].score,s[number-mink].name);
        for(i=number-mink+1;i<number;i++)
            printf(",%s",s[i].name);
        printf("\n");
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

佳心饼干

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

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

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

打赏作者

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

抵扣说明:

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

余额充值