PAT乙级1004 || 成绩排名(C语言)
2019-04-15 20:59
155 查看
成绩排名
题目描述:
读入 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题目来源:PAT乙级1004
作者:CHEN, Yue
单位:浙江大学
问题解决:
解题思想
此题注意以下几点即可:
- 输入整数n后,输入缓冲区会有一个换行符,在输入字符串之前要把它吸收掉
- 由于在一行内输入多个字符串且用空格隔开,因此,不能用gets来输入字符串了,因为gets会把空格也读入,这里用了scanf
- 不能用赋值符
=
来将一个字符串赋给另一个,要用字符串拷贝函数strcpy,此函数包含在头文件string.h
中
代码示例(C)
小提示:左右滑动代码可查看全部内容
#include <stdio.h> #include <string.h>//下面要用到strcpy()函数 #define N 11 int main() { int n,i,score,maxscore,minscore; char name[N],snum[N]; char minname[N],minsnum[N],maxname[N],maxsnum[N]; maxscore = -1;//最小分数初始化 minscore = 101;//最大分数初始化 scanf("%d",&n); getchar();//吸收掉缓冲区的换行符 for(i = 0; i < n; i++){ //下面要使用scanf()函数输入字符串,不能用gets() //因为scanf()函数是以空格、换行等作为字符串结束符, //而gets()只以换行作为输入结束符 scanf("%s%s%d",name,snum,&score); if(maxscore<score){ maxscore = score; //注意下面要使用字符串拷贝函数,不可直接赋值 strcpy(maxname,name); strcpy(maxsnum,snum); } if(minscore>score){ minscore = score; strcpy(minname,name); strcpy(minsnum,snum); } } printf("%s %s\n",maxname,maxsnum); printf("%s %s\n",minname,minsnum); return 0; }
相关文章推荐
- PAT乙级1004 成绩排名(C语言)
- PAT乙级1004(C语言)- 成绩排名 (20)
- 浙江大学PAT乙级试题.1004. 成绩排名 (20)C语言
- PAT乙级1004. 成绩排名 (20)
- 1004. 成绩排名 (20)-浙大PAT乙级真题java实现
- PAT乙级1004. 成绩排名 (20)------结构体
- PAT乙级1004 成绩排名
- PAT乙级真题1004成绩排名
- PAT训练(乙级)—— 1004. 成绩排名 (20)
- PAT (Basic Level) Practise (中文)1004. 成绩排名 (20) C语言
- PAT(乙级) 1004 成绩排名
- pat 乙级 1004 成绩排名(20)
- PAT乙级—1004. 成绩排名 (20)-native
- PAT Basic 1004. 成绩排名 (20)(C语言实现)
- 1004. 成绩排名 (20) PAT乙级真题
- PAT 乙级1004成绩排名(C++实现)
- PAT-乙级-1004. 成绩排名 (20)
- 乙级 PAT 1004. 成绩排名 (20)
- PAT乙级真题:1004 成绩排名
- 浙大PAT乙级1004. 成绩排名 (20)