为什么我输出的第一行数据变成这样
程序代码:
#include<stdio.h> #include<stdlib.h> #include<string.h> #define SIZE 5 /*定义结构体类型student*/ struct student { char name[12]; /*姓名*/ int math; int English; int c; /*三门课程成绩*/ float personal_avg; /*个人平均成绩*/ char str6[8]; /*个人等级*/ }stud[SIZE]; /*定义结构体类型student3*/ struct student3 { float math_average; /*高数平均分*/ float English_average; /*英语平均分*/ float c_average; /*c语言平均分*/ float class_average; /*班级平均分*/ char str7[8]; /*班级等级*/ }stud3[SIZE]; void main() { FILE*fp; int i ,s; float a; char str1[]="优秀",str2[]="良好",str3[]="中等",str4[]="及格",str5[]="不及格",str6[8],str7[8]; for(i=0;i<SIZE;i++) /*输入学生信息*/ { printf("请输入第%d个学生的信息:",i+1); scanf("%s%d%d%d",stud[i].name,&stud[i].math,&stud[i].English,&stud[i].c ); stud[i].personal_avg=(float)(stud[i].c+stud[i].English+stud[i].math)/3.0; /*强制转换*//*计算个人平均分*/ s=stud[i].personal_avg/10; /*用switch语句来判断个人平均分的等级*/ switch(s) { case 9:strcpy(stud[i].str6,str1);break; /*用一个strcpy函数把等级复制到str6中*/ case 8:strcpy(stud[i].str6,str2);break; case 7:strcpy(stud[i].str6,str3);break; case 6:strcpy(stud[i].str6,str4);break; default: strcpy(stud[i].str6,str5); } if((fp=fopen("D:\\实训\\201935010535王国玺\\王国玺F\\Debug\\学生成绩.txt","w"))==NULL) /*打开文件学生成绩.dat*/ {printf("cannot open file\n"); return; } if(fwrite(&stud[i],sizeof(struct student),1,fp)!=1) /*将结构体数组stud1 姓名和三科成绩 个人平均分和等级 保存到文件中*/ printf("file write error\n"); fclose(fp); /*关闭文件*/ } stud3[0].math_average=(stud[0].math+stud[1].math+stud[2].math+stud[3].math+stud[4].math)/SIZE; /*计算高数平均成绩*/ stud3[0].English_average=(stud[0].English+stud[1].English+stud[2].English+stud[3].English+stud[4].English)/SIZE; /*计算英语平均成绩*/ stud3[0].c_average=(stud[0].c+stud[1].c+stud[2].c+stud[3].c+stud[4].c)/SIZE; /*计算c语言平均成绩*/ stud3[0].class_average=(stud3[0].math_average+stud3[0].English_average+stud3[0].c_average)/3.0; /*计算班级平均成绩*/ s=stud3[0].class_average/10; /*用switch语句来判断班级平均分的等级*/ switch(s) { case 9:strcpy(stud3[i].str7,str1);break; /*用一个strcpy函数把等级复制到str7中*/ case 8:strcpy(stud3[i].str7,str2);break; case 7:strcpy(stud3[i].str7,str3);break; case 6:strcpy(stud3[i].str7,str4);break; default: strcpy(stud3[i].str7,str5); } if((fp=fopen("D:\\实训\\201935010535王国玺\\王国玺F\\Debug\\学生成绩.txt","w"))==NULL) /*打开文件学生成绩.dat*/ {printf("cannot open file\n"); return; } if(fwrite(&stud3,sizeof(struct student3),1,fp)!=1) /*将结构体数组stud3 高数平均分 英语平均分 c语言平均分 班级平均分 班级等级 保存到文件中*/ printf("file write error\n"); fclose(fp); /*关闭文件*/ printf("\n"); printf("\n"); printf("\n"); printf("\t学生成绩表\n"); printf("姓名\t高数\t英语\tc语言\t"); printf("平均分\t等级"); printf("\n"); if((fp=fopen("D:\\实训\\201935010535王国玺\\王国玺F\\Debug\\学生成绩.txt","r"))==NULL) /*打开文件学生成绩.dat*/ {printf("cannot open file\n"); return; } for(i=0;i<SIZE;i++) {fread(&stud[i],sizeof(struct student),1,fp); printf("%s\t%d\t%d\t%d\t%.1f\t%s",stud[i].name,stud[i].math,stud[i].English,stud[i].c,stud[i].personal_avg,stud[i].str6); printf("\n"); } printf("平均分\t"); fread(stud3,sizeof(struct student3),1,fp); printf("%.1f\t%.1f\t%.1f\t%.1f\t%s",stud3[0].math_average,stud3[0].English_average,stud3[0].c_average,stud3[0].class_average,stud3[0].str7); system("pause"); }
[此贴子已经被作者于2020-6-15 18:03编辑过]