假设有5个学生,按照年龄排序,如果年龄相同按照成绩排序,哪里有问题。

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#pragma warning (disable:4996)
typedef struct student
{
    char name[128];
    unsigned int age;
    int score;
}student;
void my_sort(student*num, int n)
{
    printf("name\tage\tscore\n");
    for (int i = 0; i < n; i++)
    {
        printf("%s%5d%5d", num[i].name, num[i].age, num[i].score);
    }
}
void my_str(student*num, int n)
{
    student temp;
    int i = 0;
    for (int i = 0; i < n - 1; i++)
    {
        for (int j = 0; j < n - 1 - i; j++)
        {
            if (num[j].age > num[j + 1].age)
            {
                temp = num[j];
                num[j] = num[j + 1];
                num[j + 1] = temp;
            }
            else if (num[j].age == num[j + 1].age)
            {
                if (num[j].score > num[j + 1].score)
                {
                    temp = num[j];
                    num[j] = num[j + 1];
                    num[j + 1] = temp;
                }
            }
        }
    }
    
}

int main()
{
    student num[5] = { {"maker",20,98},  {"faker",24,92},  {"marry",20,60},  {"lucy",40,40},  {"Tom",18,80} };
    int n = sizeof(num) / sizeof(num[0]);
    printf("排序前为:\n");
    my_sort(num, n);
    printf("排序后的结果为:\n");
    my_str(num, n);
    printf("计算总分和平均分以及不及格的人数");
    float aver = 0;
    int sum = 0;
    int c = 0;
    for (int i = 0; i < sizeof(num) / sizeof(num[0]); i++)
    {
        if (num[i].score < 60)
        {
            c += 1;
        }
        sum += num[i].score;
        aver = sum / 5;
    }
    printf("总分为sum=%5d\n",sum);
    printf("平均分为aver=%lf\n", aver);
    printf("不及格人数为c=%d\n", c);
}
 

没啥问题,只是排序后你没有打印语句啊

在my_str(num, n);后面再加一个my_sort(num,n);

建议my_sort的输出中加一个\n

在my_str(num, n);后面再加一个my_sort(num,n);

就是你这个是降序,要改升序改my-sort中的大小号

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

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