道士下山救世和尚乱世:帮忙找出这个C程序中的错误(谢谢)

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 08:00:14
/*该程序输入九个学生的学号,姓名,以及六门课的成绩,然后再输出。*/
/*但问题是:程序在dev C++中运行时,只能输入两个学生的信息,而且打印有错,有兴趣的人不妨在编译器上试一下*/
#include<stdio.h>
#include<stdlib.h>
#define size 9
typedef struct
{char idno[8];
char name[16];
float marks[6];
}marks_list;
void storedata()
{FILE *ptr;
marks_list student[size];
int i,k;
ptr=fopen("C:/Documents and Settings/sunkefei/桌面/myfile.txt","wb");
k=0;
while(k<size)
{printf("请输入学生学号:");
scanf("%s",student[k].idno);
fflush(stdin);
printf("请输入学生姓名:");
scanf("%s",student[k].name);
printf("请输入六门课的成绩:\n");
for(i=0;i<6;i++)
{
do{printf("请输入第%d课的成绩:",i+1);fflush(stdin);
scanf("%f",&student[k].marks[i]);
}while(student[k].marks[i]<0||student[k].marks[i]>100);
k++;}
}
for(i=0;i<size;i++)fwrite(&student[i],sizeof(marks_list),1,ptr);
fclose(ptr);}
void retrievedata(){
FILE *ptr;
marks_list student[size];
int j,k=0;
ptr=fopen("C:/Documents and Settings/sunkefei/桌面/myfile.txt","rb");
while(k<size)
{fread(&student[k],sizeof(marks_list),1,ptr);
k++;}
fclose(ptr);
for(k=0;k<size;k++)
{printf("%s %s\n",student[k].idno,student[k].name);
printf("marks in courses:\n");
for(j=0;j<6;j++)
printf("%6.1f\n",student[k].marks[j]);
}
}
main(){
storedata(); retrievedata();
system("pause");
}

输入信息的那段代码中,k++写错位置了。
应该写在while(k<size)这个循环中,你写在了这个循环里的for循环里了。