计算学生成绩

实验内容:输入10个学生5门课的成绩,分别用函数求:①每个学生平均分;②每门课的平均分;③找出最高的分数所对应的学生和课程。

实验要求: 输入事先已编好的程序,并运行该程序。分析运行结果是否正确。  

1.0

#include<stdio.h>
#define N 10
#define M 5
float score[N][M]; //全局数组 
float a_stu[N],a_cour[M]; //全局数组 
int r,c; //全局变量 
int main()
{
	int i,j;
	float h;
	float highest();      //函数声明 
	void input_stu(void);
	void aver_stu(void);
	void aver_cour(void);
	input_stu(); //函数调用 
	aver_stu();
	aver_cour();
	printf("\n NO.   cour1  cour2  cour3  cour4  cour5  aver\n");
	for(i=0;i<N;i++)
	{
		printf("\n NO.%2d",i+1); //输出一个学生号 
		for(j=0;j<M;j++)
		printf("%8.2f",score[i][j]); //输出一个学生各门课的成绩 
		printf("%8.2f",a_stu[i]); //输出一个学生的平均成绩 
	}
	printf("\naverage:"); //输出5门课的平均成绩 
	for(j=0;j<M;j++)
	printf("%8.2f",a_cour[j]);
	printf("\n");
	h=highest(); //调用函数,求最高分和学生数据 
	printf("highest:%7.2f NO.%2d course%2d\n",h,r,c);//输出最高分和学生数据 
	return 0;
}
void input_stu(void) //输入学生成绩的函数 
{
	int i,j;
	for(i=0;i<N;i++)
	{
		printf("\ninput score of student%2d:\n",i+1);//学生号从一开始 
		for(j=0;j<M;j++)
		scanf("%f",&score[i][j]);
	}
}
void aver_stu(void) //计算学生的平均成绩 
{
	int i,j;
	float s;
	for(i=0;i<N;i++)
	{
		for(j=0,s=0;j<M;j++)
		s+=score[i][j];
		//s与score[i][j]相加并赋给s,相当于s=s+score 
		a_stu[i]=s/5.0;
	}
}
void aver_cour(void) //计算课程平均成绩 
{
	int i,j;
	float s;
	for(j=0;j<M;j++)
	{
		s=0;
		for(i=0;i<N;i++)
		s+=score[i][j];
		a_cour[j]=s/(float)N;
	}
}
float highest() //求最高分和它属于哪个学生,哪门课 
{
	float high;
	int i,j;
	high=score[0][0];
	for(i=0;i<N;i++)
	for(j=0;j<M;j++)
	if(score[i][j]>high)
	{
		high=score[i][j];
		r=i+1; //学生号r从1开始,数组行号i从0开始 
		c=j+1;
	}
	return(high);
}

2.0

#include<stdio.h>
#define N 10
#define M 5
float score[N][M]; //全局数组 
float a_stu[N],a_cour[M]; //全局数组 
int r,c; //全局变量 
int main()
{
	int i,j;
	float h;
	float highest();      //函数声明 
	float s_var(void); //求方差 
	void input_stu(void);
	void aver_stu(void);
	void aver_cour(void);
	input_stu(); //函数调用 
	aver_stu();
	aver_cour();
	printf("\n NO.   cour1  cour2  cour3  cour4  cour5  aver\n");
	for(i=0;i<N;i++)
	{
		printf("\n NO.%2d",i+1); //输出一个学生号 
		for(j=0;j<M;j++)
		printf("%8.2f",score[i][j]); //输出一个学生各门课的成绩 
		printf("%8.2f",a_stu[i]); //输出一个学生的平均成绩 
	}
	printf("\naverage:"); //输出5门课的平均成绩 
	for(j=0;j<M;j++)
	printf("%8.2f",a_cour[j]);
	printf("\n");
	h=highest(); //调用函数,求最高分和学生数据 
	printf("highest:%7.2f NO.%2d course%2d\n",h,r,c);//输出最高分和学生数据 
	printf("variance %8.2f\n",s_var());//调用函数,计算并输出方差 
	return 0;
}
void input_stu(void) //输入学生成绩的函数 
{
	int i,j;
	for(i=0;i<N;i++)
	{
		printf("\ninput score of student%2d:\n",i+1);//学生号从一开始 
		for(j=0;j<M;j++)
		scanf("%f",&score[i][j]);
	}
}
void aver_stu(void) //计算学生的平均成绩 
{
	int i,j;
	float s;
	for(i=0;i<N;i++)
	{
		for(j=0,s=0;j<M;j++)
		s+=score[i][j];
		//s与score[i][j]相加并赋给s,相当于s=s+score 
		a_stu[i]=s/5.0;
	}
}
void aver_cour(void) //计算课程平均成绩 
{
	int i,j;
	float s;
	for(j=0;j<M;j++)
	{
		s=0;
		for(i=0;i<N;i++)
		s+=score[i][j];
		a_cour[j]=s/(float)N;
	}
}
float highest() //求最高分和它属于哪个学生,哪门课 
{
	float high;
	int i,j;
	high=score[0][0];
	for(i=0;i<N;i++)
	for(j=0;j<M;j++)
	if(score[i][j]>high)
	{
		high=score[i][j];
		r=i+1; //学生号r从1开始,数组行号i从0开始 
		c=j+1;
	}
	return(high);
}
float s_var(void) //求方差 
{
	int i;
	float sumx,sumxn;
	sumx=0.0;
	sumxn=0.0;
	for(i=0;i<N;i++)
	{
		sumx+=a_stu[i]*a_stu[i];
		sumxn+=a_stu[i];
	}
	return(sumx/N-(sumxn/N)*(sumxn/N));
}

  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值