题目
本题是谭浩强《C程序设计课后习题》题10.5。
题目:
有5个学生,每个学生有3门课程的成绩,从键盘输人学生数据(包括学号,姓名,3门课程成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。
以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步。——来自考研路上的lwj
一、解题思路
思路:
1,根据题意我们首先需要创建一个结构体来存储5名学生的数据。
2,在结构体中定义平均成绩变量,在每次的遍历循环中计算出其值
3,使用FILE *fp=fopen(“stud.txt”,“w”)写方式打开文件,当文件目录下没有此文件时会自动创建一个新文件。
4,使用fprintf(fp,“数据类型”,数据值)文件写的方式在for循环中逐行写入fp指向的文件。
二、代码部分
1.引入库
代码如下(示例):
#include<stdio.h>
2.主函数部分
代码如下(示例):
typedef struct student
{
int num;
char name[20];
int score[3];
float avg;
}student;
int main()
{
student stu[5];//创建5个学生的结构体
int i;
for (i = 0; i < 5; i++)
{
printf("请输入第%d个学生的学号,姓名,3门课成绩:\n", i + 1);
scanf("%d %s %d %d %d", &stu[i].num, stu[i].name, &stu[i].score[0], & stu[i].score[1], & stu[i].score[2]);
stu[i].avg = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / 3.0;
}
FILE* fp = fopen("stud.txt", "w");
if (fp == NULL)
{
printf("open file error!");
return -1;
}
for (i = 0; i < 5; i++)
{
fprintf(fp, "%d %s %d %d %d %f\n", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].avg);
}
fclose(fp);
return 0;
}
三、执行结果
输入:
请输入第1个学生的学号,姓名,3门课成绩:
1 李文杰 88 98 100
请输入第2个学生的学号,姓名,3门课成绩:
2 葛新龙 99 89 60
请输入第3个学生的学号,姓名,3门课成绩:
3 皮梦通 100 20 60
请输入第4个学生的学号,姓名,3门课成绩:
4 李瑞龙 7 60 90
请输入第5个学生的学号,姓名,3门课成绩:
5 王炯杰 50 69 88