PAT 1004成绩排名

题目

读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。
输入格式:
每个测试输入包含 1 个测试用例,格式为请添加图片描述
其中姓名和学号均为不超过 10 个字符的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。
输出格式:
对每个测试用例输出 2 行,第 1 行是成绩最高学生的姓名和学号,第 2 行是成绩最低学生的姓名和学号,字符串间有 1 空格。
输入样例:
请添加图片描述
输出样例:
请添加图片描述

题解:
确定n个学生类型(由姓名,学号,成绩构成),该类型用struct构建函数,再依次对该类型中的学生变量进行比较与处理,取出最大值与最小值,回到学生类型中,输出对应的学号,成绩。
思路:
1,先用struct构建一个学生函数,包括姓名,学号,成绩,定义一个students变量用于储存上述内容。
2,利用循环语句对students变量中成绩变量依次进行比较,再定义两个整形变量(int min=students[0].mark,max=students[0].mark)用于存储最大值与最小值对应的次序,方便之后的输出。
3,利用之前定义的min,max分别打印出对应的学生姓名与学号。

注意:
1,用structural定义函数时将各个变量定义清楚,防止出现编译上的错误,也使接下来的使用更清楚,方便。
2,在讨论成绩大小时,对同一数据一定记得要有两种讨论,最好同时讨论,以免遗漏,导致答案错误。

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
struct student   //构造一个student函数,用于储存学生信息
{
    char name[11];
    char number[11];
    int mark;
};
student students[100];    //定义students变量
int main()
{
    int i,n,low=0,high=0;
    cin>>n;
    for(i=0;i<n;i++)    //录入n位学生的信息   
    {
        scanf("%s %s %d",students[i].name,students[i].number,&students[i].mark);
    }
    int min=students[0].mark,max=students[0].mark;    //定义最大值与最小值,用于输出样例
    for(i=0;i<n;i++)    //利用循环比较各组数据的大小并找出最大值与最小值
    {
        if(students[i].mark>max)
        {
            max=students[i].mark;
            high=i;
        }
        if(students[i].mark<min)
        {
            min=students[i].mark;
            low=i;
        }
    }
    printf("%s %s\n",students[high].name,students[high].number);
    printf("%s %s",students[low].name,students[low].number);
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值