C语言编程问题,求大神解答。

创建一个结构体数组,用来保存20个学生的8门成绩。(1)写一个函数用来求每个学生的平均分。(2)写一个函数输出平均分最高的所有学生的姓名和平均成绩。并将结果追加到“学号_... 创建一个结构体数组,用来保存20个学生的8门成绩。
(1)写一个函数用来求每个学生的平均分。
(2)写一个函数输出平均分最高的所有学生的姓名和平均成绩。并将结果追加到“学号_姓名.txt”文件里。
展开
 我来答
xoaxa
推荐于2016-02-15 · TA获得超过8611个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3495万
展开全部
#include <stdio.h>
#include <string.h>

const int MAXSIZE = 100;

typedef struct student {
unsigned id;
char name[20];
double score[10];
}STU;

void mysort(STU a[], int n) { // 按平均分降排序
int i,j,k;
STU t;
for(i = 0; i < n - 1; ++i) {
k = i;
for(j = i + 1; j < n; ++j) {
if(a[k].score[9] < a[j].score[9])
k = j;
}
if(i != k) {
t = a[i];
a[i] = a[k];
a[k] = t;
}
}
}

int main() {
STU a[MAXSIZE];
int i,j,n = 0;
unsigned id;
char name[20],filename[] = "学号_姓名.txt";
FILE *outfp;
printf("学号 姓名 8门课成绩:\n");
while(n < MAXSIZE) {
if(scanf("%u%s",&id,name) != 2) break;
a[n].id = id;
strcpy(a[n].name,name);
a[n].score[8] = 0; // 总成绩
for(i = 0; i < 8; ++i) {
scanf("%lf",&a[n].score[i]);
a[n].score[8] += a[n].score[i];
}
a[n].score[9] = a[n].score[9]/8; // 计算平均成绩
++n;
printf("学号 姓名 8门课成绩(q to quit):\n");
}
mysort(a,n); // 按平均成绩降排序
if((outfp = fopen(filename,"wt")) == NULL) {
printf("不能打开数据文件:%s\n",filename);
return 1;
}
for(i = 0; i < 10 && i < n; ++i) { // 输出前10名信息
printf("%u %s ",a[i].id,a[i].name);
fprintf(outfp,"%u %s ",a[i].id,a[i].name);
for(j = 0; j < 8; ++i) {
printf("%.2lf ",a[i].score[j]);
fprintf(outfp,"%.2lf ",a[i].score[j]);
}
printf("\n");
fprintf(outfp,"\n");
}
fclose(outfp);
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式