建立学生结构体类型,包括:学号(学号11位)、姓名和总分。建立结构数组,从键盘录入10个同学的信息,然后对这10个同学按成绩从高到低的顺序排序,然后在屏幕上输出排序后的所有学生记录并写入文件中。假设本问题中,学生成绩一定为[0,100]之间的正整数。要求使用选择排序(或改进的选择排序)和冒泡排序(或改进的冒泡排序)两种方法来完成。
2条回答 默认 最新
- CSDN专家-天际的海浪 2021-12-29 23:28关注
你题目的解答代码如下:
#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); } }
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用