第14章语言程序设计实例 void input()/*获取数据* &char ch Int 1, 1; char FILE fps; printf("请选择数据源(K-键盘输入F-磁盘文件读取):in") ch=getch ( if(ch=Klch=k')/*键盘输入* printf("请输入实际学生人数:"); scanf ("%od", &n) printf('请输入实际课程门数:") scanf (%/", &m)
第 14章 C语言程序设计实例 void input()/*获取数据*/ {char ch; int i, j; char *ps; FILE *fps; printf(″请选择数据源(K-键盘输入 F-磁盘文件读取):\n″); ch=getch( ); if(ch==′K′||ch==′k′)/*键盘输入*/ {printf(″请输入实际学生人数:″); scanf(″%d″ , &n); printf(″请输入实际课程门数:″); scanf(″%d″ , &m);
第14章语言程序设计实例 if(n<=0|n>1000m<=0|m>30) { printf("数据无效!"); exit(o) printf(请输入%门课程名称:",m) for (j=0; j<m; j++) scanf ("%s", sname [j]) for (i=0: K<n: i++) { printf("请输入第%d个学生学号,姓名,%d门课程成绩:",计1,m) scanf ("%d%s",&sta li]. num, sta [i] name for (j=0; j<m; j++) scanf ("f",&sta [i]. score [j]):
第 14章 C语言程序设计实例 if(n<=0||n>1000 ||m<=0 ||m>30) {printf(″数据无效!″); exit(0); } printf(″请输入%d门课程名称:″ , m); for(j=0; j<m; j++) scanf(″%s″ , sname[j]); for(i=0; i<n; i++) {printf(″请输入第%d个学生学号,姓名,%d门课程成绩:″ ,i+1,m); scanf(″%d%s″ ,&sta[i].num,sta[i].name); for(j=0; j<m; j++) scanf(″%f″, &sta[i].score[j]); }
第14章语言程序设计实例 ps" SCORE DAT";/*送磁盘文件保存* if ((fps-fopen(ps,"wb))==NULL) printf("文件建立错误!"); exit(0) fwrite (&n, 2, 1, fps fwrite (&m, 2, 1, fps); fwrite (sname, 16,m, fps fwrite(sta, sizeof (struct stt), n, fps) fclose(fps
第 14章 C语言程序设计实例 ps=″SCORE.DAT″ ; /*送磁盘文件保存*/ if((fps=fopen(ps, ″wb″))= =NULL) {printf(″文件建立错误!″); exit(0); } fwrite(&n, 2, 1, fps); fwrite(&m, 2, 1, fps); fwrite(sname, 16, m, fps); fwrite(sta, sizeof(struct stt), n, fps); fclose(fps); }
第14章语言程序设计实例 else if(ch=F"lch=f)/*从磁盘文件读取数据* printf("请输入数据文件名:") scanf ("%s",ps) if((fps-fopen(ps,"rb"))=NULL) { printf("文件打开错误!"); exit (o) fread(&n, 2, 1, fps fread (&m, 2, 1, fps fread(sname, 16, m, fps); fread (sta, sizeof (struct stt) fps) fclose(fps);
第 14章 C语言程序设计实例 else if(ch==′F′||ch==′f′)/*从磁盘文件读取数据*/ {printf(″请输入数据文件名:″); scanf(″%s″ , ps); if((fps=fopen(ps, ″rb″))==NULL) {printf(″文件打开错误!″); exit(0); } fread(&n, 2, 1, fps); fread(&m, 2, 1, fps); fread(sname, 16, m, fps); fread(sta, sizeof(struct stt), n, fps); fclose(fps); }
第14章语言程序设计实例 else { printf("数据源选择错误!"); exit (0) void asfun()/*计算每门课程的平均分和方差* Rint J: float t lm, tS lmI for (j=0; j<m; j++) {t[j=0;ts[j=0; for (i=0; k<n: i++) it []+=sta []. score [j] ts [j]+=sta Lil score [j]*sta [i]. score [j];
第 14章 C语言程序设计实例 else {printf(″数据源选择错误!″); exit(0); } } void asfun( )/*计算每门课程的平均分和方差*/ {int j; float t[M], ts[M]; for(j=0; j<m; j++) {t[j]=0;ts[j]=0; for(i=0; i<n; i++) {t[j]+=sta [i].score[j]; ts[j]+=sta [i].score[j]*sta[i].score[j]; }