#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