【C语言】二维数组的应用·多门学科成绩的综合统计

输入5位同学3门功课的成绩,进行:每位同学的总成绩、每门功课的总成绩与平均成绩、每门功课的最高成绩与最低成绩、学生平均成绩排序等综合统计。

程序设计如下:

#include "stdio.h"
/* 定义变量,便于全局修改数组长度 */
#define e 5
#define r 3
void main()
{
	float isux[e][r], sum1, sum2, aver[e], maxh[e], minh[e], maxl[r], minl[r];
	int q, w, t;
	for(q=0; q<e; q++)
	{
		for(w=0; w<r; w++)
		{
			printf("请输入第%d位同学的第%d门功课成绩(0-100):\n",q+1,w+1);
			scanf("%f",&isux[q][w]);
			/* 非法数据,重新输入 */
			while(isux[q][w]>100 || isux[q][w]<0)
			{
				printf("请重新输入第%d位同学的第%d门功课成绩(0-100):\n",q+1,w+1);
				scanf("%f",&isux[q][w]);
			}
		}
	}
	printf("\n");
	/* 循环输出所有同学三门功课的成绩 */
	printf("\n【所有同学三门功课的成绩表】:\n"); 
	for(q=0; q<e; q++)
	{
		for(w=0; w<r; w++)
		{
			printf("%.2f分\t\t",isux[q][w]);
		}
		printf("\n\n");
	}
	/* 输出每位同学三门功课成绩中的最高分和最低分 */
	for(q=0; q<e; q++)
	{
		// 把每行第一个数组元素赋值给最大值和最小值,然后进行数据比对 
		maxh[q] = isux[q][0];
		minh[q] = isux[q][0];
		for(w=1; w<r; w++) 
		{
			if(maxh[q]<isux[q][w])
			{
				maxh[q]=isux[q][w]; // 保证maxh是每一行的最大值 
			}
			if(minh[q]>isux[q][w])
			{
				minh[q]=isux[q][w]; // 保证minh是每一行的最小值 
			}
		}
	}
	printf("\n【每位同学三门功课成绩中的最高分和最低分】");
	for(q=0; q<e; q++)
	{
		printf("\n第%d位同学的三门功课成绩中最高分为:%.2f分,最低分为:%.2f分\n",q+1,maxh[q],minh[q]);
	}
	printf("\n\n");
	/* 求每位同学三门功课的总分及平均分 */
	printf("【每位同学三门功课的总分及平均分】\n");
	for(q=0; q<e; q++)
	{
		sum1 = 0;
		for(w=0; w<r; w++)
		{
			sum1 += isux[q][w];
		}
		aver[q] = sum1/3;
		printf("第%d位同学三门功课的总分为:%.2f分,平均分为:%.2f分\n\n",q+1,sum1,aver[q]);
	}
	/* 将所有同学三门功课的平均成绩由高到低进行排序 */
	for(q=0; q<e-1; q++)
	{
		for(w=0; w<e-1-q; w++)
		{
			if(aver[w]<aver[w+1])
			{
				t=aver[w];
				aver[w]=aver[w+1];
				aver[w+1]=t;
			}
		}
	}
	printf("\n【所有同学三门功课的平均成绩由高到低分别为】:\n");
	for(q=0; q<e; q++)
	{
		printf("%.2f分\t\t",aver[q]);
	}
	printf("\n\n");
	/* 输出每门功课成绩中的最高分和最低分 */
	for(q=0; q<r; q++)
	{
		// 把每列第一个数组元素赋值给最大值和最小值,然后进行数据比对 
		maxl[q]=isux[0][q];
		minl[q]=isux[0][q];
		for(w=1; w<e; w++)
		{
			if(maxl[q]<isux[w][q])
			{
				maxl[q]=isux[w][q]; // 保证maxl是每一列的最大值 
			}
			if(minl[q]>isux[w][q]) // 保证minl是每一列的最小值 
			{
				minl[q]=isux[w][q];
			}
		}
	}
	printf("\n【每门功课成绩中的最高分和最低分】");
	for(q=0; q<r; q++)
	{
		printf("\n第%d门功课的成绩中最高分为:%.2f分,最低分为:%.2f分\n",q+1,maxl[q],minl[q]);
	}
	printf("\n");
	/* 计算出每门功课的平均成绩 */
	printf("\n【每门功课的平均成绩】");
	for(w=0; w<r; w++)
	{
		sum2 = 0;
		for(q=0; q<e; q++)
		{
			sum2 += isux[q][w];
		}
		printf("\n第%d门功课的平均成绩为:%.2f分\n",w+1,sum2/5);
	}
	printf("\n");
	/* 将三门功课中低于每门功课平均分的成绩统计并打印出来 */
	printf("\n【三门功课中低于每门功课平均分的成绩】");
	for(q=0; q<r; q++)
	{
		printf("\n第%d门功课的成绩中低于该门功课平均分的同学的成绩有:\n",q+1);
		for(w=1; w<e; w++)
		{
			if(isux[w][q]<sum2/5)
			{
				printf("%.2f分\n",isux[w][q]);
			}			
		}
	}
	printf("\n"); 
	/* 将将未及格的成绩统计并打印出来 */
	printf("\n【三门功课中未及格的成绩】");
	for(q=0; q<r; q++)
	{
		printf("\n第%d门功课中未及格的成绩有:\n",q+1);
		for(w=1; w<e; w++)
		{
			if(isux[w][q]<60)
			{
				printf("%.2f分\n",isux[w][q]);
			}
		}
	}
	printf("\n");
}

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

∞崽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值