输人 10 个学生 5 门课的成绩,分别用函数实现下列功能:1)计算每个学生平均分;2)计算每门课的平均分;3)找出所有 50 个分数中最高的分数所对应的学生和课程

题为c程序设计(第五版)谭浩强 课后习题第7章第14题


一、题目复现

二、实现步骤

1.思路分析

1.定义求学生平均分的函数(即将每一行的各元素相加作为一个学生的成绩)。

2.定义求每门课平均分的函数(即将每一列的元素各自相加作为一门课的成绩)。

3.定义寻找最高分的函数(即找到最高分所对应的行号和列号)。

4.输入10个学生5门课的成绩(使用二维数组)。

5.调用函数求每个学生的平均分。

6.调用函数求每门课的平均分。

7.调用函数求最高的分数所对应的学生和课程

2.实现过程

代码如下(示例):

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
void aver_stu(int t[][5]); //之所以形参不指定行数,是为了更灵活的处理任意行数的二维数组,而不需要修改形参。
void aver_course(int t[][5]);
void high(int t[][5]);
int main()
{
	int stu[10][5];
	int i, j;
	for (i = 0; i <= 9; i++)
		for (j = 0; j < 5; j++)
			scanf("%d", &stu[i][j]); //输入10个学生各5门课的成绩
	aver_stu(stu); //调用函数求每个学生的平均分
	aver_course(stu); //调用函数求每门课的平均分
	high(stu); //调用函数求最高的分数所对应的学生和课程
	return 0;
}

//求学生平均分函数
void aver_stu(int t[][5])
{
	int i, j;
	float k=0.0, ave;
	for (i = 0; i < 10; i++)
	{
		for (j = 0; j < 5; j++)
			k += t[i][j];
		ave = k / 5;
		printf("No.%d student average is %f\n", i + 1, ave);
		k = 0;
	}
}

void aver_course(int t[][5])
{
	int i, j;
	float k=0.0, ave;
	for (j = 0; j < 5; j++)
	{
		for (i = 0; i < 10; i++)
			k += t[i][j];
		ave = k / 10;
		printf("No.%d course average is %f\n", j + 1, ave);
		k = 0;
	}
}

void high(int t[][5])
{
	int i, j, h,stu, cour;
	for (i = 0, j = 0,h=0, stu = 0, cour = 0; i < 10; i++)
	{
		for (j = 0; j < 5; j++)
		{
			if (t[i][j] > h)
			{
				h = t[i][j];
				stu = i + 1;
				cour = j + 1;
			}
		}
	}
	printf("The highest score is %d,from No.%d student & No.%d course",h,stu,cour);
}

总结

        通过本例,希望各位可以合理的使用函数去增强程序的模块化水平。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

fashia

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

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

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

打赏作者

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

抵扣说明:

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

余额充值