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

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

文章目录

  • 目录

    文章目录

    一、题目复现

    二、实现步骤

    1.思路分析

    2.实现过程

    总结


一、题目复现

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

二、实现步骤

1.思路分析

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

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

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

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

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

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

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

2.实现过程

代码如下(示例):

#define _CRT_SECURE_NO_WARNINGS
#include
#include
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);
}

总结

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

你可能感兴趣的:(c语言教材课后习题,c语言)