【PAT(Basic Level)Practice】1004成績ランキング(C)(*解決待ち)

2656 ワード

作者:CHEN,Yue
単位:PAT連盟
時間制限:400 ms
メモリ制限:64 MB
コード長制限:16 KB
n名の学生の名前、学号、成績を読み込み、成績が最も高い学生と成績が最も低い学生の名前と学号をそれぞれ出力する.
入力フォーマット:各テスト入力には、
1行目:正の整数n
2行目:1人目の生徒の氏名学号成績
3行目:2人目の生徒の氏名学号成績
  ... ... ...
n+1行目:n番目の学生の名前学号成績
ここで、名前と学号はいずれも10文字を超えない文字列であり、成績は0から100の間の整数であり、ここでは1組の試験例で2人の学生の成績が同じではないことを保証する.
出力フォーマット:テスト例ごとに2行を出力し、1行目は成績が最も高い学生の名前と学番、2行目は成績が最も低い学生の名前と学番で、文字列の間に1スペースがあります.
初めてチェーンテーブルを使いましたが、失敗しました.
2回目は配列を使って、自分のコンパイラで成功したが、PATコンパイラではなかった.
//    1:
#include
#include
#include
int main()
{
int n,i=0,max_score;
scanf("%d",&n);
struct stu
	{
	char name[10];
	int id;
	int score;
	struct stu *next;
	};
struct stu *p1,*p2,*head;
head=p1=p2=(struct stu *)malloc(sizeof(struct stu));
gets(p1->name);
scanf("%d,%d",&p1->id,&p1->score);
i=1;
while(i	p2=(struct stu *)malloc(sizeof(struct stu));
	gets(p1->name);
	scanf("%d,%d",&p1->id,&p1->score);
	p1=p2;
	p2->next=p1;
	
}
p2->next=NULL;
p2=head;
max_score=head->score;
for(i=0;i	{
	if(max_scorescore)
		max_score=p2->score;
	p2++;
	}
p2=head;
for(i=0;i	{
	if(max_score==p2->score)
		printf("%s, %d",p2->name,p2->id);
	p2++;
}
}
//    2
#include

#include
int main()


{
int n,i,max_s=0,min_s=100,max=0,min=0;
scanf("%d",&n);
char name[n][10],id[n][10];
int score[n];
for(i=0;i=score[i])
		{
		min_s=score[i];
		min=i;
		}
	}
		printf("%s %s
",name[max],id[max]); printf("%s %s",name[min],id[min]); }