#c语言#的问题:将成绩信息逐行输出到控制台

(可以的话请加上注释方便理解)
题目内容:
该程序读入txt文本文档内容后,按成绩由高到低的顺序,以“姓名
== 分数”的格式,将10位同学的成绩信息逐行输出到控制台,一个同学一行。
要求“姓名”左对齐,“分数”右对齐。

**输入格式:
**
输出格式:
按成绩由高到低的顺序
“姓名”左对齐,“分数”右对齐
一个同学一行。

输入样例:
84
周幺妹
100
陈六
76
万知希

**输出样例:
陈六 == 100
周幺妹 == 84
万知希 == 76

img

数据文件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;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632