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(精通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);
}
运行结果:
如上只是用了一种比较浅的方法。我们同时也可以用结构体,指针等方法来写,相信会简化很多。由于指针还没学会,在此就不做过多解释。
如有不足之处,还望各位大佬不吝赐教…
电机
声明:本站博客内容版权均属于原作者所有,这里所提供资源均只能用于参考学习用,书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。