qq_43157176 2022-02-27 11:26 采纳率: 100%
浏览 69
已结题

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

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

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

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

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

  • 写回答

2条回答 默认 最新

  • 关注

    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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月2日
  • 已采纳回答 3月2日
  • 修改了问题 2月27日
  • 修改了问题 2月27日
  • 展开全部

悬赏问题

  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用