C程序与设计习题集

编写简单学生成绩管理程序。

题目要求:

1、键盘输入以下数据(学号、姓名、3门专业课成绩)

2、计算专业课平均成绩,将原始数据和计算出的平均成绩存放在studentScore.dat文件中

3、将该文件中的数据读取至相应的结构体数组并在显示器上输出

在纸上写好之后上机发现有很多小错误,浪费了很多订正时间,特此记录。

#include <stdio.h>
#define M 2 //学生人数 
#define N 3

struct Student{
	int sno;
	char sname[10];
	float score[N];
	float aver;
};

int main(){
	Student students[M],students_1[M];
	float aver;
	
	printf("请依次输入每位学生的学号、姓名、以及三门专业课的成绩:\n");
	for(int i = 0; i < M ;i++){
		printf("请输入第%d位同学的信息:\n", i+1);
		scanf("%d%s%f%f%f",&students[i].sno, students[i].sname, &students[i].score[0], 
						   &students[i].score[1], &students[i].score[2]);
	}
	
	FILE *fp = fopen("./studentScore.dat", "w");
	if(fp == NULL){
		perror("file open failed!");
		return 0;
	}
	
	for(int i = 0; i < M ;i++){
		aver = (students[i].score[0] + students[i].score[1] + students[i].score[2]) / 3;
		fprintf(fp, "%d %s %f %f %f %f\n",
								  students[i].sno, students[i].sname, students[i].score[0], 
								  students[i].score[1], students[i].score[2], aver);
	}
	
	fclose(fp);
	
	FILE *fp_1 = fopen("./studentScore.dat", "r");
	if(fp == NULL){
		perror("file open failed!");
		return 0;
	}
	
	if(!feof(fp_1)){
		for(int i = 0; i < M ;i++){
			fscanf(fp_1, "%d %s %f %f %f %f\n",
								&students_1[i].sno, students_1[i].sname, &students_1[i].score[0], 
						    	&students_1[i].score[1], &students_1[i].score[2], &students_1[i].aver);
		}
		
	}
	
	for(int i = 0; i < M ;i++){
		printf("学号:%d 姓名:%s 专业课成绩1:%f 成绩2:%f 成绩3:%f 平均分:%f\n",
								students_1[i].sno, students_1[i].sname, students_1[i].score[0], 
						    	students_1[i].score[1], students_1[i].score[2], students_1[i].aver);
	}
		
	fclose(fp_1);
	
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值