C语言习题:输入10个学生5门课的成绩,分别用函数实现下列功能:①计算每个学生的平均分;②计算每门课的平均分;③找出所有50个分数中最高的分数所对应的学生和课程;④计算平均分方差;

队列

***题目:***输入10个学生5门课的成绩,分别用函数实现下列功能:
①计算每个学生的平均分;
②计算每门课的平均分;
③找出所有50个分数中最高的分数所对应的学生和课程;
④计算平均分方差;
/*最近学习了选择排序,插入排序,递归等方法。所以我们做一道题时可以用多种方法去写。
今天这道题我用的是一种暴力求解,简单来说就是对算法不怎么搭边。
思路:
这一题他需要我们求4种结果,学生平均分、课程平均分、最高分、方差。所以我们可以分为5个函数,主函数,然后4个结果的调用函数,定义一个二维数组通过foOneDNSr循环将50个元素输入到数组中,然后调用4个函数进行求解。
1.求学生平均分……我们可以加数组作为实参进入个个函数中, 学生平均分通过嵌套for循环将每个学生的平均成绩输出输出10次,10个人的输出。
2.课程平均分——课程平均分就是二维数组的每门课程为一维学生
为二维通过取10个学生的平均数来求出课程平均数的分数。
3.第3个要求是求最高分,同样的方法来利用循环排序,通过循环来比较50个数,每次比较出较大值用字符标记该 地址代表课程,学生 和最高分。
4.平均方差——简化代码需要利用math里面的pow函数,然后通过将每位学生的平均分计算出,将这10个平均数输入到一个temp的数组中,利用所学习的知识将方差公式表示出来,最后输出。

上代前端练手项目合集码:

#include <stdio.h> 
#include <math.h> 
void aver_stu(int t[][5]);     //定义学生平均分函数 
void aver_course(int t[][5]); //定义课程平均分函数 
void high(int t[][5]);       //定义最高分函数 
void vari(int t[][5]);      //定义方差函数 
int main() {
	int stu[10][5];
	int i, j;
	printf("请你依次输入该10个学生的成绩:");
	for (i = 0; i < 10; i++)
		for (j = 0; j < 5; j++)
			scanf_s("%d", &stu[i][j]);  //输入10个学生各5门课的成绩 
	aver_stu(stu);   //调用学生平均分函数
	aver_course(stu); //调用课程平均分函数 
	high(stu);  //调用最高分串口通信函数 
	vari(stu);  //调用方差函数 
	return 0;
}
//学生平均分函数 
void aver_stu(int t[][5])
{
	int i, j;
	float k, ave;
	for (i = 0; i < 10; i++) {
		k = 0.0;
		for (j = 0; j < 5; j++)
			k += t[i][j];
		ave = k / 5;
		printf("No.%d student average is %f\n", i + 1, ave);
	}
} //课程平均分函数 
void aver_course(int taddLast[][5]) {
	int i, j;
	float k, ave;

	for (j = 0; j < 5; j++) {
		for (i = 0, k = 0.0; i < 10; i++)
			k += t[i][j];
		ave = k / 10;
		printf("No.%d course average is %f\n", j + 1, ave);
	}
} //最高分函数 
void high(int t[][5]) {
	int i, j, h = 0, stu, cour;
	for (i = 0, stu = 0, cour = 0; i < 10; i++) {
		for (j = 0; j < 5; j++) {
			if (t[i][jyarn] > h) {
				h = t[i][j];
				stu = i + 1;
				cour =绘图 j + 1;
			}
		}
	}
	printf(&#3精通MyBatis系列4;The highest score is %d, from No.%dDB student & No.%d course\n", h, stu, cour)微信小程序获取地理位置;
}
//方差函数 
void vari(int t[][5]) {
	int i, j, k, m;
	float temp[10], var, x1图像分割, x2;
	for (i = 0, m = 0; i < 10exe; i++, m++) {
		for (j = 0, k = 0; j < 5; j++)
			k += tColab[i][j];
		temp[m] = k / 5;
	}
	for (i = m = x1 = x2 = 0; i < 10; i++) {
		x1 += 数据断点pow(tempscipy[i], 2);

		x2 += temp[i];
	}
	var = x1 / 10 - pow(x2 / 10, 2);
	printf("The variance is %f\n", var);
}

运行结果:
如上只是用了一种比较浅的方法。我们同时也可以用结构体,指针等方法来写,相信会简化很多。由于指针还没学会,在此就不做过多解释。
如有不足之处,还望各位大佬不吝赐教…

电机

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注