建立学生结构体类型,包括:学号(学号11位)、姓名和总分。建立结构数组,从键盘录入10个同学的信息,然后对这10个同学按成绩从高到低的顺序排序,然后在屏幕上输出排序后的所有学生记录并写入文件中。假设本问题中,学生成绩一定为[0,100]之间的正整数。要求使用选择排序(或改进的选择排序)和冒泡排序(或改进的冒泡排序)两种方法来完成。
你题目的解答代码如下:
#include<stdio.h>
#include<stdlib.h>
#define n 10
typedef struct student{
char num[12];
char name[50];
int score;
} stu;
void main()
{
int i,j,k;
stu a[n], buf;
for(i=0;i<n;i++)
{
scanf("%s %s %d",&a[i].num,a[i].name,&a[i].score);
}
for (i=0; i<n-1; ++i) //比较n-1轮
{
for (j=0; j<n-1-i; ++j) //每轮比较n-1-i次,
{
if (a[j].score < a[j+1].score)
{
buf = a[j];
a[j] = a[j+1];
a[j+1] = buf;
}
}
}
FILE *fp = fopen("./result.txt", "w");
for(i=0;i<n;i++)
{
printf("%s %s %d\n",a[i].num,a[i].name,a[i].score);
fprintf(fp,"%s %s %d\n",a[i].num,a[i].name,a[i].score);
}
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
请问你会选择排序么?