(可以的话请加上注释方便理解)
题目内容:
该程序读入txt文本文档内容后,按成绩由高到低的顺序,以“姓名
== 分数”的格式,将10位同学的成绩信息逐行输出到控制台,一个同学一行。
要求“姓名”左对齐,“分数”右对齐。
**输入格式:
**
输出格式:
按成绩由高到低的顺序
“姓名”左对齐,“分数”右对齐
一个同学一行。
输入样例:
84
周幺妹
100
陈六
76
万知希
**输出样例:
陈六 == 100
周幺妹 == 84
万知希 == 76
(可以的话请加上注释方便理解)
题目内容:
该程序读入txt文本文档内容后,按成绩由高到低的顺序,以“姓名
== 分数”的格式,将10位同学的成绩信息逐行输出到控制台,一个同学一行。
要求“姓名”左对齐,“分数”右对齐。
**输入格式:
**
输出格式:
按成绩由高到低的顺序
“姓名”左对齐,“分数”右对齐
一个同学一行。
输入样例:
84
周幺妹
100
陈六
76
万知希
**输出样例:
陈六 == 100
周幺妹 == 84
万知希 == 76
数据文件in.txt:
84
周幺妹
100
陈六
76
万知希
代码如下:
#include <stdio.h>
struct Student
{
char name[30];
int score;
};
int main()
{
struct Student stu[10],tmp;
int n=0,i,j,res1,res2;
FILE* fp=0;
fp =fopen("in.txt","r");
if(fp==0)
{
printf("文件读取失败\n");
return 0;
}
while(!feof(fp))
{
//读取成绩和姓名
if(fscanf(fp,"%d",&stu[n].score) && stu[n].score>=0) //保证读取的数据正确
{
if(fscanf(fp,"%s",stu[n].name))
n++;
}
}
fclose(fp);
//冒泡排序
for(i=0;i<n-1;i++)
{
for (j=0;j<n-1-i;j++)
{
if(stu[j].score < stu[j+1].score)//交换
{
tmp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = tmp;
}
}
}
//输出
for(i=0;i<n;i++)
printf("%-8s==%4d\n",stu[i].name,stu[i].score); //-8表示左对齐,占8给字节,4d表示右对齐,占4给字节
return 0;
}