zoukankan      html  css  js  c++  java
  • 输人10个学生5门课的成绩,分别用函数实现下列功能:①计算每个学生的平均分; ②计算每门课的平均分; ③找出所有50个分数中最高的分数所对应的学生和课程; ④计算平均分方差: 其中,x;为某一学生的平均分。

    输人10个学生5门课的成绩,分别用函数实现下列功能:

    ①计算每个学生的平均分;
    ②计算每门课的平均分;
    ③找出所有50个分数中最高的分数所对应的学生和课程;
    ④计算平均分方差:

    其中,x;为某一学生的平均分。

    题目解析:

    此题的关键是如何存储某个学生对应某门课程的分数,这里利用了一个二维数组score,其中score[i] [j]就代表了第i个学生的第j门课程的分数,只要能够理解这个存储方式,其余的计算就是比较容易理解和实现的。

    代码示例:

    #include<stdio.h>
    
    #define N 10
    #define M 5
    float score[N][M];
    float a_stu[N], a_cour[M];
    int r, c;
    
    //输入学生成绩信息函数
    void input_stu(void)
    {
    	int i, j;
    	for (i = 0; i < N; i++)
    	{
    		printf("
    input score of student%2d:
    ", i + 1);
    		for (j = 0; j < M; j++)
    			scanf("%f", &score[i][j]);
    	}
    }
    
    //每个学生平均分
    void aver_stu(void)
    {
    	int i, j;
    	float s;
    	for (i = 0; i < N; i++)
    	{
    		for (j = 0, s = 0; j < M; j++)
    			s += score[i][j];
    		a_stu[i] = s / 5.0;
    	}
    }
    
    //每门课程平均分
    void aver_cour(void)
    {
    	int i, j;
    	float s;
    	for (j = 0; j < M; j++)
    	{
    		s = 0;
    		for (i = 0; i < N; i++)
    			s += score[i][j];
    		a_cour[j] = s / (float)N;
    	}
    }
    
    //最高分函数
    float highest()
    {
    	float high;
    	int i, j;
    	high = score[0][0];
    	for (i = 0; i < N; i++)
    	for (j = 0; j<M; j++)
    	if (score[i][j]>high)
    	{
    		high = score[i][j];
    		r = i + 1;
    		c = j + 1;
    	}
    	return(high);
    }
    
    //方差函数
    float s_var(void)
    {
    	int i;
    	float sumx, sumxn;
    	sumx = 0.0;
    	sumxn = 0.0;
    	for (i = 0; i < N; i++)
    	{
    		sumx += a_stu[i] * a_stu[i];
    		sumxn += a_stu[i];
    	}
    	return(sumx / N - (sumxn / N)*(sumxn / N));
    }
    
    int main()
    {
    	int i, j;
    	float h;
    	input_stu();
    	aver_stu();
    	aver_cour();
    	printf("
      NO.     cour1   cour2   cour3   cour4   cour5   aver
    ");
    	for (i = 0; i < N; i++)
    	{
    		printf("
     NO %2d ", i + 1);
    		for (j = 0; j < M; j++)
    			printf("%8.2f", score[i][j]);
    		printf("%8.2f
    ", a_stu[i]);
    	}
    	printf("
    average:");
    	for (j = 0; j < M; j++)
    		printf("%8.2f", a_cour[j]);
    	printf("
    ");
    	h = highest();
    	printf("highest:%7.2f   NO. %2d   course %2d
    ", h, r, c);
    	printf("variance %8.2f
    ", s_var());
    	return 0;
    }
    

    运行结果:

    输人10个学生5门课的成绩,分别用函数实现下列功能:①计算每个学生的平均分; ②计算每门课的平均分; ③找出所有50个分数中最高的分数所对应的学生和课程; ④计算平均分方差:  其中,x;为某一学生的平均分。

    输人10个学生5门课的成绩,分别用函数实现下列功能:

  • 相关阅读:
    "SoftwareHex-RaysIDA" exists, but no "Python3TargetDLL" value found No Python installations were found
    visual studio修改安装位置
    ror13hash
    IMAGE_DIRECTORY_ENTRY_SECURITY【证书属性表
    华为云自动学习物体检测(滑动窗口)
    Java BigInteger中的oddModPow
    vue 动态路由传参三种方式
    git根据项目地址使用不同代理服务器
    关于MySQL8的WITH查询学习
    有1、2、3、4个数字,能组成多少个互不相同 且无重复数字的三位数?都是多少?
  • 原文地址:https://www.cnblogs.com/weiyidedaan/p/13225311.html
Copyright © 2011-2022 走看看