c语言代码莫名多出一行。求助

爱喝美年达的柠檬茶 2023-01-03 16:29:57

 今天写代码题的时候

具体题目是这样的:

题目描述

弗兰奇所在的班级有 N 名同学,期末考试进行了数学、语文、英语、地理四门功课的测试。班主任要将这N名学生中总分前三名定为本学期的“学习小标兵”。现在给出这NN名学生的姓名和各科成绩,请你编程找到总分前三名,并依次输出他们的姓名。所给数据不会有总分相同的情况。


输入

​ 输入包含 N+1 行,第一行仅有一个正整数 N(N≤40),表示弗兰奇班里学生的总数,接下来的NN行,每行描述一个学生的考试信息,依次为姓名、数学成绩、语文成绩、英语成绩与地理成绩,两两之间用一个空格分隔。

​ 注意:姓名(不会同名)都用小写字母表示(不超过10个字母),成绩全都是不超过200 的非负整数。

输出

​ 输出包含三行,每行仅包含一个学生的姓名,依次为第一名到第三名学生的姓名。

样例输入1

4
jing 98 90 87 74
ming 96 92 85 97
jun 95 78 56 91
hong 95 100 85 78

样例输出1

样例输出1

ming
hong
jing

然后我写的代码是这样的:

#include<stdio.h>
typedef struct students{
    char name[10];
    int math;
    int chinese;
    int english;
    int geograpthy;
    int sum;
}students;
int main()
{
    students student[40], t;
    int N, i, j;
    int ch;
    while (1){
        scanf("%d", &N);
        if (N > 0 && N <= 40)    break;
    }

//创建链表
    for (i = 0; i < N; i++) {
        j = 0;
        while ((ch = getchar()) != ' ') {
            student[i].name[j] = ch;
            j++;
        }
        student[i].name[j] = '\0';
        scanf("%d%d%d%d", &student[i].math, &student[i].chinese,&student[i].english,&student[i].geograpthy);
    }
    for (i = 0; i < N; i++) {
        student[i].sum = student[i].math + student[i].chinese + student[i].english + student[i].geograpthy;
    }

//链表排序
    for (i = 0; i < N - 1; i++) {
        for (j = 0; j < N - 1; j++) {
            if (student[j].sum < student[j + 1].sum) {
                t = student[j];
                student[j] = student[j + 1];
                student[j + 1] = t;
            }
        }
    }

//输出前三名总分最多的人名
    for (i = 0; i < 3; i++) 
    {
        printf("%s", student[i].name);
    }
    return 0;
}

输出的结果是这样:

-------------------------------

4
jing 98 90 87 74
ming 96 92 85 97
jun 95 78 56 91
hong 95 100 85 78

ming
hong
jing

------------------------------

我疑惑的就是为什么在hong 95100 85 78下面会多出一行空行,很疑惑。

然后如果我在输出for循环前面加一行printf(“first”);

那么我的输出结果就变成了:

-----------------------------------

4
jing 98 90 87 74
ming 96 92 85 97
jun 95 78 56 91
hong 95 100 85 78
first
ming
hong
jing

---------------------------------

我更疑惑了,原先那一行空的内容被“first”取代了?????

哪个大佬能help一下。

...全文
125 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-编程语言 发布问题, 以便更快地解决您的疑问

67,732

社区成员

发帖
与我相关
我的任务
社区描述
灌水发信息每周送书 灌水发干货每周送惊喜 谁最水过年送大礼 谁最硬核过年送大礼 谁最贡献过年送大礼
社区管理员
  • 1_bit
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

我们“新手村”社区就是大家的孵化器

你们学习,我来评分

每周最高分送一本书

每月第四周送一份机械键盘

咱们新手村使用一切狂暴手段让优秀的人得到奖励

 

试试用AI创作助手写篇文章吧