当前位置:首页 > C语言 >

有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出

发布时间:2023-09-09 09:25:32 作者:佚名 阅读:(23)

今天云梦编程为大家分享一个C语言经典实例:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件"stud"中,有需要的小伙伴可以参考一下

有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出

1、程序分析:

    (1)、定义结构体:

       使用`struct Student`定义了一个包含学生信息的结构体。每个学生具有学号、姓名、3门课成绩和平均成绩的数据成员。

    (2)、主函数逻辑:

   - 声明了一个包含5个学生的数组`students`,用于存储学生数据。
   - 通过`scanf`函数从键盘输入每个学生的学号、姓名和3门课成绩。输入的数据通过循环逐个存储到对应的结构体成员中。
   - 使用循环计算每个学生的平均成绩,并将结果存储在结构体的`average`成员中。
   - 打开名为"stud"的文件,并进行错误检查。如果无法打开文件,则输出错误消息并终止程序。
   - 使用循环将学生数据以特定格式写入文件。在写入过程中,使用`fprintf`函数,并检查返回值,如果返回值小于0,则表示写入文件时发生了错误,输出错误消息并终止程序。
   - 关闭文件。
   - 再次打开文件进行验证,并进行错误检查。如果无法打开文件,则输出错误消息并终止程序。
   - 使用循环从文件中读取学生数据,并以特定格式输出到控制台进行验证。

2、程序源代码:

#include "stdio.h"
struct student {
	char num[6];
	char name[8];
	int score[3];
	float avr;
}
stu[5];
int main() {
	int i,j,sum;
	FILE *fp;
	/*input*/
	for (i=0;i<5;i++) {
		printf("\n please input No. %d score:\n",i);
		printf("stuNo:");
		scanf("%s",stu[i].num);
		printf("name:");
		scanf("%s",stu[i].name);
		sum=0;
		for (j=0;j<3;j++) {
			printf("score %d.",j+1);
			scanf("%d",&stu[i].score[j]);
			sum+=stu[i].score[j];
		}
		stu[i].avr=sum/3.0;
	}
	fp=fopen("stud","w");
	for (i=0;i<5;i++)
		if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
		printf("file write error\n");
	fclose(fp);
}

3、程序结果:

有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出


以上就是云梦编程为大家介绍的C语言经典实例的内容了,希望对大家有所帮助,了解更多相关文章请关注云梦编程网!

© 2023 - 云梦编程网 版权所有 鲁ICP备2021017318号-4