
题目
解决代码及点评
/* 5. 用scanf_s函数从键盘读入 5个学生数据(包括:学生名、学号、三门课程的分数), 然后求出平均分数。用 fprintf函数输出所有信息到磁盘文件stud.rec中, 再用 fscanf_s函数从 stud.rec中读入这些数据并在显示屏上显示出来。 */ #include <stdio.h> #include <stdlib.h> typedef struct Student9_3_5 { char name[20]; int num; float chinese; float math; float english; }Stu; /* 保存学生信息 */ void savaStuInfo95(Stu * stu,int n) { Stu temp; FILE *fp = NULL; fopen_s(&fp, "stud.rec","wb"); if (fp) { float avg; for (int i = 0; i < n; i++) { temp = stu[i]; avg = (temp.chinese + temp.math + temp.english) / 3; fprintf(fp,"num=%d,chinese=%f,math=%f,english=%f,avg=%f",temp.num, temp.chinese,temp.math,temp.english,avg); } fclose(fp); } else { printf("open file failed!"); } } /* 读取学生信息 */ void readStuInfo95() { FILE *fp = NULL; Stu stu; float avg; fopen_s(&fp, "stud.rec","rb"); if (fp) { while(fscanf_s(fp,"num=%d,chinese=%f,math=%f,english=%f,avg=%f",&(stu.num), &(stu.chinese),&(stu.math),&(stu.english),&avg) != EOF) { printf("num = %d chinese = %f math = %f english = %f avg = %f\n",stu.num, stu.chinese,stu.math,stu.english,avg); } fclose(fp); } else { printf("open file failed!"); } } void main() { const int N = 5; Stu stu[N]; for (int i = 0; i< N; i++) { printf("请输入第%d个学生姓名:\n",i + 1); scanf_s("%s",&stu[i].name); printf("请输入第%d个学生学号:\n",i + 1); scanf_s("%d",&stu[i].num); printf("请输入第%d个学生语文成绩:\n",i + 1); scanf_s("%f",&stu[i].chinese); printf("请输入第%d个学生数学成绩:\n",i + 1); scanf_s("%f",&stu[i].math); printf("请输入第%d个学生英语成绩:\n",i + 1); scanf_s("%f",&stu[i].english); } savaStuInfo95(stu,N); readStuInfo95(); system("pause"); }
代码编译以及运行
由于资源上传太多,资源频道经常被锁定无法上传资源,同学们可以打开VS2013自己创建工程,步骤如下:
1)新建工程
2)选择工程
3)创建完工程如下图:
4)增加文件,右键点击项目
5)在弹出菜单里做以下选择
6)添加文件
7)拷贝代码与运行
程序运行结果
代码下载
http://download.csdn.net/detail/yincheng01/6694119解压密码:c.itcast.cn