mayiyougekai 2015-06-11 05:39 采纳率: 0%
浏览 1896

C语言求解决,问题描述和代码如下

在一个学生成绩管理系统中,保存学生个人的成绩情况,其中包括学号,姓名,性别,5门课成绩。对所有成绩作如下处理: (1)从键盘输入10个学生的学号,姓名,性别,5门课成绩,并计算出每个人平均成绩,全班每门课的平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stu.c”中。 (2)将上题“stu.c”文件中的学生数据,按每个人的平均分进行排序处理,将已排序的学生数据存入一个新文件“stu-sort”中。将学生数据存在文件stu.c后,读取的时候读到的第一个平均分的值老是为1

#include
#include
#define SIZE 3

struct Student
{
int num;
char name[20];
char sex[2];
int score[5];
float aver;
}stu[SIZE];

void save()
{
FILE *fp;
int i,j;
fp = fopen("stu.c","w+");

for(i = 0;i < SIZE;i++)
{
scanf("%d ",&stu[i].num);
fprintf(fp,"%d\n",stu[i].num);
gets(stu[i].name);
fprintf(fp,"%s\n",stu[i].name);
gets(stu[i].sex);
fprintf(fp,"%s\n",stu[i].sex);
for(j = 0;j < 5;j++)
scanf("%d",&stu[i].score[j]);
fprintf(fp,"%d %d %d %d %d\n",stu[i].score[0],stu[i].score[1],stu[i].score[2],
stu[i].score[3],stu[i].score[4]);
stu[i].aver = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2] + stu[i].score[3]
+ stu[i].score[4])/5.0;
fprintf(fp,"%f\n",stu[i].aver);
}
fclose(fp);

}

void sort()
{
FILE *fp_in,*fp_sort;
int i,k,j;
float stu_aver[SIZE];
struct Student temp;
fp_in = fopen("stu.c","r+");
for(i = 0;i < SIZE;i++)
{
fscanf(fp_in,"%f",&stu[i].aver);
printf("fuck %f\n",stu[i].aver);
stu_aver[i] = stu[i].aver;
}
for(i = 0;i < SIZE;i++)
printf("%f\n",stu_aver[i]);
for(i = 0;i < SIZE - 1;i++)
{
for(j = i + 1;j < SIZE;j++)
{
k = i;
if(stu_aver[k] > stu_aver[j])
k = j;
if(k != i)
{
temp = stu[k];
stu[k] = stu[i];
stu[i] = temp;
}
}
}
fp_sort = fopen("stu-sort","w+");
for(i = 0;i < SIZE;i++)
{
fprintf(fp_sort,"%d\n",stu[i].num);
fprintf(fp_sort,"%s\n",stu[i].name);
fprintf(fp_sort,"%s\n",stu[i].sex);
fprintf(fp_sort,"%d %d %d %d %d\n",stu[i].score[0],stu[i].score[1],stu[i].score[2],
stu[i].score[3],stu[i].score[4]);
fprintf(fp_sort,"%lf\n",stu[i].aver);
}
fclose(fp_sort);
fclose(fp_in);

}

int main(void)
{
FILE *fp;
int i,j;
save();
sort();
return 0;
}

  • 写回答

2条回答

  • 知常曰明 2015-06-11 05:48
    关注

    你写的时候是学号/姓名/五项成绩/平均成绩。为什么读的时候一读就是读平均成绩?你把数据文件中的学号读成了平均成绩,第一个学号当然是1号啦。

    评论

报告相同问题?

悬赏问题

  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题