1004 成绩排名 (20 分)
读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。
输入格式:
每个测试输入包含 1 个测试用例,格式为
第 1 行:正整数 n
第 2 行:第 1 个学生的姓名 学号 成绩
第 3 行:第 2 个学生的姓名 学号 成绩
… … …
第 n+1 行:第 n 个学生的姓名 学号 成绩
其中姓名和学号均为不超过 10 个字符的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。
输出格式:
对每个测试用例输出 2 行,第 1 行是成绩最高学生的姓名和学号,第 2 行是成绩最低学生的姓名和学号,字符串间有 1 空格。
输入样例:
3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95
输出样例:
Mike CS991301
Joe Math990112
#include<stdio.h>
typedef struct {
char name[11] ;//姓名
char xuehao[11];//学号
int fenshu; //分数
}student ;
student S[20];
int main()
{
int n;//输入一个正整数n
scanf("%d",&n);
for(int i = 0 ; i < n ; i++)
{
scanf("%s %s %d",S[i].name,S[i].xuehao,&S[i].fenshu);
}
int max = S[0].fenshu;
int bj1 = 0;
for(int i = 1 ; i < n ; i++)
{
if(S[i].fenshu > max)
{
max = S[i].fenshu;
bj1 = i;
}
else
continue;
}
int min = S[0].fenshu;
int bj2 = 0;
for(int i = 1 ; i < n ; i++)
{
if(S[i].fenshu < min)
{
min = S[i].fenshu;
bj2 = i;
}
else
continue;
}
printf("%s %s\n",S[bj1].name,S[bj1].xuehao);
printf("%s %s",S[bj2].name,S[bj2].xuehao);
return 0;
}
笔记1.0
写的有点傻,看到题第一想法就是用结构体数组内成员为数组,但是觉着可能会有输入的问题,写了个结构体内成员为指针。嗯,然后就输出不出来了,换成数组又好使了。经提醒是因为指针没有初始化,自己试了试初始化又又报错了,就很emmmmm
经百度查找一些细节:只有“指针变量名”后面才能加“->”。
以下 3 种形式是等价的:
结构体变量.成员名。
(*指针变量).成员名。
指针变量->成员名
判断值大小的那个直接写了个傻瓜的if判断,差不多就成…
一会再研究一下那个结构体内成员指针初始化问题。