C学生成绩管理

题目描述
有N个学生,每个学生的数据包括学号、班级、姓名、三门课成绩。从键盘输入N 个
学生数据,要求打印出每个学生三门课的平均成绩,以及平均分最高分学生数据(包括学号、
班级、姓名、三门课成绩,平均分)。
要求:
1、 定义学生结构体。
2、 用一个函数实现N 个学生数据的输入,用另一个函数负责求每个学生三门课程的平
均成绩,再用一个函数求出平均分最高的学生并输出该学生的数据。要求平均分和平均分最
高的学生数据都在主函数中输出。

输入
第一行:N,表示N 个学生

下面N 行:每行数据包括学号、班级、姓名、三门课成绩。

输出
输出每个学生三门课的平均成绩,以及平均分最高分学生数据(包括学号、班级、姓名、

三门课成绩,平均分)。

格式见下。(四舍五入保留一位小数)

样例输入
4
20070008 software1 wangjun 87 84 76
20070001 science1 lanxin 90 84 83
20070007 software2 wuke 94 87 86
20070003 science4 xuede 90 86 87
样例输出
wangjun 82.3
lanxin 85.7
wuke 89.0
xuede 87.7
20070007 software2 wuke 94.0 87.0 86.0 89.0

#include<stdio.h>
struct student{
	int IDnumber;
	char* Class[20];
	char* name[20];
	int subject1;
	int subject2;
	int subject3;
	float average;
}Student[50];

void PutIN(int n)
{
	int t;
	for(t=1;t<=n;t++)
	{
		scanf("%d %s %s %d %d %d",&Student[t].IDnumber,&Student[t].Class,&Student[t].name,
		&Student[t].subject1,&Student[t].subject2,&Student[t].subject3);
	}

}
void Average(int n)
{
	int t;
	for(t=1;t<=n;t++)
	{
		Student[t].average=(float)(Student[t].subject1+Student[t].subject2+Student[t].subject3)/3;
	}

}
void Print(int n)
{
	int M,t;
	float max=Student[1].average;
	for(t=2;t<n;t++)
	{
		if(max<Student[t].average)
		{
			max=Student[t].average;
			M=t;
		}
	}
	for(t=1;t<=n;t++)
	{
		printf("%s %.1f\n",Student[t].name,Student[t].average);
	}
	printf("%d %s %s %.1f %.1f %.1f",Student[M].IDnumber,Student[M].Class,Student[M].name,
	Student[M].subject1,Student[M].subject2,Student[M].subject3);
}
int main()
{
	int n;
	scanf("%d",&n);
	PutIN(n);
	Average(n);
	Print(n);
	return 0;
}
学生成绩管理系统 #include #include #include #include struct student_type { char name[8]; int num; int clss; float score[3]; double ave; }stud[10]; char ar[100]={"学号 姓名 班级 程1 程2 程3 平均成绩\n"}; int n;//学生人数。 int main() { void write (); void save (); void display (); int n=0; while (1) { printf ("\n\t\t\t\t学生成绩管理\n\n"); printf ("\t1:请输入学生成绩记录\n"); printf ("\t2:显示成绩记录\n"); printf ("\t3:退出系统\n"); printf ("\t输入操作选项序号:"); scanf ("%d",&n); switch (n) { case 1 : write (); break; case 2 : display (); break; case 3 : printf("\n\t\t\t**************谢谢使用!**************\n");break; default : printf("\n请输入1、2或3!!!"); } if (n==3) break; } //system("pause"); return 0; } /* *********输入学生成绩**********/ void write() { int i=0, j=0; printf("请输入需要输入的人数:"); scanf("%d",&n); for(i=0; i<n ;i++) { printf("请输入学号 姓名 班级 :"); scanf("%d%s%d",&stud[i].num, &stud[i].name, &stud[i].clss); for(j=0; j<3; j++) { printf("请依次输入成绩 :"); scanf("%f", &stud[i].score[j]); } stud[i].ave = (stud[i].score[0] + stud[i].score[1] + stud[i].score[2]) / 3; } printf ("\n\t\t是否保存?\n\t\t\t是:1;\n\t\t\t否:2.\n"); scanf("%d",&i); if(i==1) save(); else main(); } /**********读出文件资料***********/ void display () { int i=0; FILE *fp; fp =fopen("score.txt","r"); if ((fp=fopen("score.txt","r")) == NULL) { printf("cannot open this score"); exit(0); } fread(&ar,sizeof(ar),1,fp); for(i=0;i<n;i++) { //fscanf(fp, "%11d%s%2d%5.2f%5.2f%5.2f%5.2f\n",&stud[i].num, &stud[i].name[i], // &stud[i].clss, &stud[i].score[0], &stud[i].score[1], &stud[i].score[2], // &stud[i].ave); fread(&stud[i],sizeof(struct student_type),1,fp); printf("%s",ar); printf("%11d %s %2d %5.2f %5.2f %5.2f %5.2f \n", stud[i].num, stud[i].name, stud[i].clss, stud
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值