输入10个学生5门课的成绩, 分别用函数实现以下功能1.计算每个学生的平均分2.计算每门课的平均分 3.找出所有50个分数最高的分数所对应的学生和课程4.计算平均方差

/*输入10个学生5门课的成绩, 分别用函数实现以下功能1.计算每个学生的平均分2.计算每门课的平均分
3.找出所有50个分数最高的分数所对应的学生和课程4.计算平均方差*/

#include <stdio.h>
#include <math.h>
#define N 3
typedef struct
{
	float x1;
	float x2;
	float x3;
	float x4;
    float x5;
}student;
typedef struct
{
	int m;//记录分数最高的那个人 
	int n;//记录分数最高的课程
	float s; 
}re;

//计算每个学生的平均分
int fun1(student stu[10])
{
	int i;
	float sum = 0;

	for(i = 0;i < N;i++)
	{
		sum = stu[i].x1 + stu[i].x2 + stu[i].x3 + stu[i].x4+ stu[i].x5;
		printf("第%d个学生的平均分是:%f\n",i+1,sum/5);
	}
}
//计算每门课的平均分
int fun2(student stu[10])
{
	int i,j;
	float sum = 0.0;
	
	for(i = 0;i < 5;i++)
	{
		switch(i)
		{
			case 0:
				{
					sum = 0.0; 
					for(j = 0;j < N;j ++)
						sum = sum + stu[j].x1;
					printf("第一门课的平均分是:%f\n",sum/N);
					break;
				}
			case 1:
				{
					sum = 0.0;
					for(j = 0;j < N;j ++)
						sum = sum + stu[j].x2;
					printf("第二门课的平均分是:%f\n",sum/N);
			        break;
				}
			case 2:
				{
					sum = 0.0;
					for(j = 0;j < N;j ++)
                    	sum = sum + stu[j].x3;
					printf("第三门课的平均分是:%f\n",sum/N);
					break;
				}
			case 3:
				{
					sum = 0.0;
					for(j = 0;j < N;j ++)
						sum = sum + stu[j].x4;
					printf("第四门课的平均分是:%f\n",sum/N);
					break;
				}
			case 4:
				{
					sum = 0.0; 
					for(j = 0;j < N;j ++)
						sum = sum + stu[j].x5;
					printf("第五门课的平均分是:%f\n",sum/N);
					break;
				}	
		}
	}
		
}

//找出所有50个分数最高的分数所对应的学生和课程
int fun3(student stu[10])
{
	float max ;
	int i,j;
	re r[N];
	for(i = 0;i < N;i++)
	{
		r[i].m = i + 1;//记录下最高分数的学生 
		r[i].n = 1;//记录下最高分数的课程 
		r[i].s = stu[i].x1;//记录下最高分数 
		max = stu[i].x1;
		if(stu[i].x2 > max)
		{
			r[i].n = 2;
			max = stu[i].x2;
			r[i].s = max;
		}
	    if(stu[i].x3 > max)
		{
			r[i].n = 3;
			max = stu[i].x3;
			r[i].s = max;
		} 
		if(stu[i].x4 > max)
		{
			r[i].n = 4;
			max = stu[i].x4;
			r[i].s = max;	
		}
		if(stu[i].x5 > max)
		{
			r[i].n = 5;
			max = stu[i].x5;
			r[i].s = max;
		}	
	}
	
	max = r[0].s;
	j = 0;
	for(i = 1;i < N;i++)
	{
		if(r[i].s > max)
		j = i;
	}
	
	printf("第%d个学生的第%d个课程分数最高\n",r[j].m,r[j].n);	
}
// 平均方差
int fun4(student stu[10])
{
	float fj,sum,sum1 = 0.0,sum2 = 0.0;
	int i;
	
	for(i = 0;i < N;i++)
	{
	    sum = 0.0;
		sum = stu[i].x1 + stu[i].x2 + stu[i].x3 + stu[i].x4+ stu[i].x5;
		sum1 = sum1 + pow(sum / 5,2);
		sum2 = sum2 + sum / 5;
	}
	
	fj = sum1 / N - pow(sum2 / N,2);
	
	printf("方差是:%f",fj);
}
int main()
{
	student stu[10];
	int i;

	printf("请输入成绩:\n");
	for(i = 0;i < N;i++)
	{
		scanf("%f %f %f %f %f",&stu[i].x1,&stu[i].x2,&stu[i].x3,&stu[i].x4,&stu[i].x5);
	}
    
    fun1(stu);
    fun2(stu);
    fun3(stu);
    fun4(stu);

}

谭浩强C程序设计(第四版)p219第14题
这道题我用结构体做的,当然还可以采用二维数组

/*输入10个学生5门课的成绩, 分别用函数实现以下功能1.计算每个学生的平均分2.计算每门课的平均分
3.找出所有50个分数最高的分数所对应的学生和课程4.计算平均方差*/

#include <stdio.h>
#include <math.h>
#define N 3
#define M 5 

//计算每个学生的平均分
int fun1(int a[N][M])
{
	int i,j;
    float sum = 0.0;

	for(i = 0;i < N;i++)
    {
    	sum = 0.0;
    	for(j = 0;j < M;j++)
    	{
    		sum = sum + a[i][j];
		}
		printf("第%d个学生的平均分是:%f\n",i+1,sum/5);
	}   	
}

//计算每门课的平均分
int fun2(int a[N][M])
{
	int i,j;
	float sum;
	
	for(i = 0;i < M;i++)
	{
		sum = 0.0; 
		for(j = 0;j < N;j++)
		{
			sum += a[j][i];
		}
		printf("第%d门课的平均分是:%f\n",i+1,sum/N);
	}
}

//找出所有50个分数最高的分数所对应的学生和课程
int fun3(int a[N][M])
{
	int i,j,k,l;
	float max;
	
	max = a[0][0];
	k = 0;//最大值的横坐标 
	l = 0;//最大值的纵坐标 
	
	for(i = 0;i < N;i++)
	{
		for(j = 0;j < M;j++)
		{
			if(a[i][j] > max)
			{
				max = a[i][j];
				k = i;
				l = j; 
			}
		}
	}
	
	printf("最高的分数的学生是学生%d和第%d课程\n",k+1,l+1);
}

//计算平均方差
int fun4(int a[N][M])
{
	int i,j;
	float sum,sum1,sum2,fj;
	sum = sum1 = sum2 = 0.0;
	
	for(i = 0;i < N;i++)
	{
		sum = 0.0;
		for(j = 0;j < M;j++)
		{
			sum = sum + a[i][j];
		}
		sum1 = sum1 + pow(sum / 5,2);
		sum2 = sum2 + sum / 5; 
	}
	
	fj = sum1 / N - pow(sum2 / N,2);
	
	printf("方差是:%f",fj);
}
int main()
{
	int a[N][M];
    int i,j;
   
    printf("请输入成绩:\n"); 
    for(i = 0;i < N;i++)
    {
    	for(j = 0;j < M;j++)
    	{
    		scanf("%d",&a[i][j]);
		}
	}
	
	fun1(a);
	fun2(a);
	fun3(a);
	fun4(a);
 } 

二维数组更加方便

发布了87 篇原创文章 · 获赞 9 · 访问量 8572

猜你喜欢

转载自blog.csdn.net/qq_40834200/article/details/105202075