5. 实验13-4:成绩排序(结构体)
定义学生结构体,初始化5名学生的学号、姓名及成绩。struct stu s[5]={{201,"Zhang",78},{202,"Li",85},{203,"Wang",60},{204,"Wang",75},{205,"Xue",80}};
编写程序根据用户输入的n值,输出升序或降序排列的学生信息。输入1,输出降序排列的学生信息;输入2,输出升序排列的学生信息。输出格式:"%-8d%-8s%d\n"
【输入形式】
n
【输出形式】
升序或降序排列的学生信息
【样例输入】
1
【样例输出】
202 Li 85 205 Xue 80 201 Zhang 78 204 Wang 75 203 Wang 60
#include<stdio.h>
struct stu{
int xuehao;
char name[8];
int score;
} s[5]={
{201,"Zhang",78},
{202,"Li",85},
{203,"Wang",60},
{204,"Wang",75},
{205,"Xue",80}
};
void down(struct stu s[],int x)
{
struct stu t;
for(int i=0;i<x;i++)
{
for(int j=0;j<x-1-i;j++)
{
if(s[j].score<s[j+1].score)
{
t=s[j];
s[j]=s[j+1];
s[j+1]=t;
}
}
}
for(int k=0;k<5;k++)
printf("%-8d%-8s%d\n",s[k].xuehao,s[k].name,s[k].score);
}
void rise(struct stu s[],int x)
{
struct stu t;
for(int i=0;i<x;i++)
{
for(int j=0;j<x-1-i;j++)
{
if(s[j].score>s[j+1].score)
{
t=s[j];
s[j]=s[j+1];
s[j+1]=t;
}
}
}
for(int k=0;k<5;k++)
printf("%-8d%-8s%d\n",s[k].xuehao,s[k].name,s[k].score);
}
int main()
{
int n=0;
scanf("%d",&n);
if(n==1)
down(s,5);
else
rise(s,5);
return 0;
}
下载源文件
得分10.00 最后一次提交时间:2023-06-19 16:43:26
共有测试数据:2 平均占用内存:1.209K 平均CPU时间:0.00248S 平均墙钟时间:0.00247S
| ||||||
满分且无警告!嘻嘻。