标题:程序求助:求学生每门课的平均值
只看楼主
nisaihua
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-12-24
结帖率:0
已结贴  问题点数:20 回复次数:2 
程序求助:求学生每门课的平均值
要求:输入10个学生5门课程的成绩
1:计算每个学生的平均值
2:每门课的平均值
3:找出50个分数中的最大值,以及对应学生和课程
4:计算方差
#include <stdio.h>
//#include <stdlib.h>
#include <math.h>
# define N 10
# define M 5
float s_var(float a_stu[N]);
void highest(int score[N][M]);              
void input_stu(int score[N][M]);                  
void aver_stu(int score[N][M],float a_stu[N]);     
void aver_cour(int score[N][M],float a_cour[M]);  
 
void main()
{
    int score [N][M];
    float a_stu [N],a_cour[M]; //学生平均值以及课程平均值
    int i,j;

        for (i=0;i<N;i++)
    {
        
        for (j=0;j<M;j++)
            scanf("%d",&score[i][j]);
    }



    aver_stu(score,a_stu);           
    aver_cour(score,a_cour);
   

    printf("\n NO.     cour1   cour2   cour3   cour4   cour5  aver");
    for (i=0;i<N;i++)
    {
        printf("\n NO.%2d ",i+1);      
        for (j=0;j<M;j++)               
            printf("%8d",score[i][j]);
        printf("%8.2f",a_stu[i]);   
    }
    printf("\nAverage:");
    for (j=0;j<M;j++)                  
        printf("%8.2f",a_cour[j]);

    highest(score);   
    printf("\nVariance:%8.2f\n",s_var(a_stu));
//    system("pause");
 }

//////////////////////////////////////////////////////////////////
/*void input_stu(int score[N][M]) /////输入学生的号码和每门课的成绩
{
    int i,j;
    for (i=0;i<N;i++)
    {
       // printf("\nInput score of student%2d:\n",i+1);  
        for (j=0;j<M;j++)
            scanf("%d",&score[i][j]);
    }
}
*/
//////////////////////////////////////////////////////////////
void aver_stu(int score[N][M],float a_stu[N]) /////每个学生五门课的平均值 (行)
{
    int i,j;
    float s;
    for (i=0;i<N;i++)
    {
        s=0;
        for (j=0;j<M;j++)
            s+=score[i][j];
        a_stu[i]=s/M;                        ///平均值
    }
}


/////////////////////////////////////////////////////////////////
void aver_cour(int score[N][M],float a_cour[M]) //每门课的平均值(列)
{
    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/N;
    }
}


//////////////////////////////////////////////////
void highest(int score[N][M])///最高分,学生号码,以及课程号码  
{
    int high;
    int i,j,row,column;

    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];
        row=i+1;       //课程从1开始     
        column=j+1;   //号码也是从1开始  
    }
    printf("\nHighest score is:%3d,NO.%2d student,course %2d\n",high,row,column);
}


///////////////////////////////////////////////////////////////
float s_var(float a_stu[N])  ////求均方差     
{
    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));
}


结果就是不对,可能就是输入的时候有问题,求指教啊
搜索更多相关主题的帖子: 计算 highest include 平均值 
2011-12-31 18:07
l_w_q
Rank: 2
等 级:论坛游民
帖 子:2
专家分:12
注 册:2011-12-30
得分:10 
不知道具体哪个数据不对,还有,这道题用结构比较好点。
当然你的做法也可以,只是感觉结构比较清晰。
2011-12-31 22:27
liao06550107
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:111
专家分:696
注 册:2011-10-2
得分:10 
方差的函数算法不对。
1、方差s^2=[(x1-x)^2+(x2-x)^2+......(xn-x)^2]/(n)   
2、标准差=方差的算术平方根

听不同的音乐,看不同的书,游历不同的城市,邂逅不同的人,走的多了,站的高了,自然就看的远了。
2012-01-02 21:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-358977-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.195532 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved