1004. 成绩排名

来源:互联网 发布:条形码数据采集器用法 编辑:程序博客网 时间:2024/06/06 04:22

原题描述如下:

读入n名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。

输入格式:每个测试输入包含1个测试用例,格式为

  第1行:正整数n  第2行:第1个学生的姓名 学号 成绩  第3行:第2个学生的姓名 学号 成绩  ... ... ...  第n+1行:第n个学生的姓名 学号 成绩
其中姓名和学号均为不超过10个字符的字符串,成绩为0到100之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。

输出格式:对每个测试用例输出2行,第1行是成绩最高学生的姓名和学号,第2行是成绩最低学生的姓名和学号,字符串间有1空格。

输入样例:
3Joe Math990112 89Mike CS991301 100Mary EE990830 95
输出样例:
Mike CS991301Joe Math990112
我用的结构体,打算熟悉一下结构体的一些定义和用法。

#include <stdio.h>#include <string.h>struct STUDENT{    char name [ 11 ]  ;    char id [ 11 ] ;    int score ;};int main( ){    struct STUDENT stu[ 101 ] ;    struct STUDENT temp;             //注意变量temp的数据类型    int n, i, j ;    scanf("%d",&n) ;    for ( i = 1 ; i <= n ; i ++ )        scanf("%s %s %d",stu[ i ].name, stu[ i ].id, &stu[ i ].score);    for ( i = 1 ; i <= n ; i ++ )        for ( j = i ; j <= n ; j ++ )            if ( stu[ i ].score > stu[ j ].score )            {                temp = stu[ j ] ;                stu[ j ] = stu[ i ] ;                stu[ i ] = temp ;            }    printf("%s %s\n",stu[ n ].name,stu [ n ].id );    printf("%s %s\n",stu[ 1 ].name,stu[ 1 ].id );    return 0;}

代码本身思路是很简单的,其中定义结构体的语句发生了变化。

也可定义为

typedef struct Student{    char name;    char id;    int score;}Stu;               //Stu stu[ 100 ];

第二个出错点在结构体变量排序赋值,Stu型和int型并不能进行交换。


其实这道题不用结构体也很容易,直接用二维数组,只存下最高,最低,及当前情况 即可,一边输入,一遍比较大小更改值。(以下转载内容详细见链接)

#include <stdio.h>#include <string.h>int main(){    int N;    scanf("%d", &N);    char name[2][11], id[2][11], curname[11], curid[11];    int grade[2] = {-1, 101}, curgrade;    for(int i = 0; i < N; i++)    {        scanf("%s %s %d", curname, curid, &curgrade);        if(curgrade > grade[0])        {            strcpy(name[0], curname);            strcpy(id[0], curid);            grade[0] = curgrade;        }        if(curgrade < grade[1])        {            strcpy(name[1], curname);            strcpy(id[1], curid);            grade[1] = curgrade;        }    }    printf("%s %s\n%s %s", name[0], id[0], name[1], id[1]);    return 0;}作者:OliverLew链接:http://www.jianshu.com/p/887a0424d707來源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。