PAT乙级C语言1004

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

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判断,差不多就成…

一会再研究一下那个结构体内成员指针初始化问题。

你可能感兴趣的:(PAT乙级)