C语言练习题-C语言练习题实例100
C 练习实例100: 学生成绩计算与保存
题目:有五个学生,每个学生有3门课的成绩。从键盘输入以上数据(包括学生号、姓名、三门课成绩),计算出平均成绩,并将原始数据和计算出的平均分数保存在磁盘文件 "stud" 中。
程序分析:这个程序涉及结构体和文件操作。首先,我们定义了一个名为 Stu
的结构体,用于存储学生的相关信息,包括学生号、姓名、数学成绩、英语成绩、C语言成绩和平均成绩。
然后,我们通过循环从键盘输入五个学生的信息,包括学生号、姓名和三门课成绩。在输入过程中,我们计算出每个学生的平均成绩,并将其保存在结构体的 avargrade
字段中。
接下来,我们尝试打开文件 "stud",如果打开失败,则输出错误信息并退出程序。如果打开成功,则使用 fprintf()
函数将学生信息写入文件中。每行信息包括学生号、姓名、数学成绩、英语成绩、C语言成绩和平均成绩。
最后,我们关闭文件,并注释掉了 system("pause")
语句,因为在某些环境中可能无法使用。
实例
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int ID;
int math;
int English;
int C;
int avargrade;
char name[20];
} Stu;
int main()
{
FILE *fp;
Stu stu[5];
int i;
printf("请输入5个同学的信息:学生号,姓名,3门成绩:\n");
for (i = 0; i < 5; i++) {
scanf("%d %s %d %d %d", &(stu[i].ID), stu[i].name, &(stu[i].math), &(stu[i].English), &(stu[i].C));
stu[i].avargrade = (stu[i].math + stu[i].English + stu[i].C) / 3;
}
if ((fp = fopen("stud", "w")) == NULL) {
printf("error: cannot open file!\n");
exit(0);
}
for (i = 0; i < 5; i++) {
fprintf(fp, "%d %s %d %d %d %d\n", stu[i].ID, stu[i].name, stu[i].math, stu[i].English, stu[i].C, stu[i].avargrade);
}
fclose(fp);
// system("pause");
return 0;
}
在这个程序中,我们首先定义了一个名为 Stu
的结构体,用于存储学生的信息。结构体中包括学生号(ID
)、姓名(name
)、数学成绩(math
)、英语成绩(English
)、C语言成绩(C
)和平均成绩(avargrade
)。
然后,我们使用循环从键盘输入五个学生的信息,并计算出每个学生的平均成绩。在输入过程中,我们使用 scanf()
函数从键盘读取学生号、姓名和三门课成绩,并将其存储在对应的结构体字段中。然后,我们计算平均成绩,并将其存储在 avargrade
字段中。
接下来,我们尝试打开文件 "stud" 以进行写入。如果文件打开失败,则输出错误信息并退出程序。如果文件打开成功,则使用 fprintf()
函数将学生信息写入文件中。每一行的信息包括学生号、姓名、数学成绩、英语成绩、C语言成绩和平均成绩。
最后,我们关闭文件,并注释掉了 system("pause")
语句,因为在某些环境中可能无法使用。
运行程序后,你将被提示输入五个学生的信息,包括学生号、姓名和三门课成绩。输入完成后,程序将计算出每个学生的平均成绩,并将原始数据和计算出的平均分数保存在名为 "stud" 的文件中。
例如,输入以下学生信息:
1 a 60 70 80
2 b 60 80 90
3 c 59 39 89
4 e 56 88 98
5 d 43 88 78
然后,打开 "stud" 文件,你将看到以下内容:
1 a 60 70 80 70
2 b 60 80 90 76
3 c 59 39 89 62
4 e 56 88 98 80
5 d 43 88 78 69
这表示原始数据和计算出的平均分数已经成功保存在文件中。