• 输人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门课的成绩,分别用函数实现下列功能:

  • 相关阅读:
    oracle 数据库服务名怎么查
    vmware vsphere 6.5
    vSphere虚拟化之ESXi的安装及部署
    ArcMap中无法添加ArcGIS Online底图的诊断方法
    ArcGIS中字段计算器(高级计算VBScript、Python)
    Bad habits : Putting NOLOCK everywhere
    Understanding the Impact of NOLOCK and WITH NOLOCK Table Hints in SQL Server
    with(nolock) or (nolock)
    What is “with (nolock)” in SQL Server?
    Changing SQL Server Collation After Installation
  • 原文地址:https://www.cnblogs.com/weiyidedaan/p/13225311.html
Copyright © 2020-2023  润新知