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

  • 相关阅读:
    UML简介
    Servlet过滤器基础及使用场景
    eclipse maven配置问题:org.apache.maven.archiver.mavenarchiver.getmanifest
    maven中的groupId和artifactId 区分
    Spring中的控制反转和依赖注入
    SQL语句、PL/SQL块和SQL*Plus命令之间的区别
    Mybatis核心类生命周期和管理
    MyBatis Generator 下划线转驼峰命名
    修改maven默认仓库(即repository)的路径
    MyBatis SqlSessionFactory的几种常见创建方式
  • 原文地址:https://www.cnblogs.com/weiyidedaan/p/13225311.html
Copyright © 2020-2023  润新知