
题目
解决代码及点评
/*
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