visualc++6.0程序问题

#include<stdio.h>
int i,j;
int main()
{  
    void sa(double s[10][5]);
    void ca(double s[10][5]);
    void hs(double s[10][5]);
    void vs(double s[10][5]);
    double s[10][5];
    for(i=0;i<10;i++)            //10
        for(j=0;j<5;j++)
            scanf("%lf ",&s[i][j]);
        sa(s);
        ca(s);
        hs(s);
        vs(s);
return 0;
}

void sa(double s[10][5])                    //学生平均分
{

    for(i=0;i<10;i++)
    {                 
        double sum=0;//20
        for(j=0;j<5;j++)
        {
            sum+=s[i][j];
        }
        printf("第%d个学生平均分%lf\n",i+1,sum/5);
    }

}

                                                          //30
void ca(double s[10][5])           //课程平均分
{
    double sum=0;
for(j=0;j<5;i++)
    {
    double sum=0;
        for(i=0;i<10;j++)
        {
            sum+=s[i][j];
        }
        printf("第%d个课平均分%lf\n",j+1,sum/10);  //40
    }

}

void hs(double s[10][5])      //最高分
{
    double h1=0;
        int h2=0,h3=0;
    for(i=0;i<10;i++)
    {                                  //50
        for(j=0;j<5;j++)
        {
            if(s[i][j]>h1)
            {
                h1=s[i][j];
                h2=i;
                h3=j;
            }
        }
    }                                    //60
    printf("最高分为%lf为第%d个同学第%d门课程\n",h1,h2+1,h3+1);
}



void vs(double s[10][5])
{
    double sum[10]={0},a[10]={0};
    double q=0,m=0;
    for(i=0;i<10;i++)
    {
        for(j=0;j<5;j++)
        {
            sum[i]+=s[i][j];
        }
        a[i]=sum[i]/5;
        q+=a[i]*a[i];
        m+=a[i];
    }
    printf("平均方差为%lf\n",q/10-m*m/100);
}




img


c++visual6.0代码只执行了第一个,后续的没有执行,能帮忙看看为啥吗

(1)main函数中scanf("%lf ",&s[i][j]);这一句,%lf后面的空格删掉
(2)ca函数错误,外层for循环 i++ 应该是 j++ ,内层for循环 j++ 改成 i++

void ca(double s[10][5])           //课程平均分
{
    double sum = 0;
    for (j = 0; j < 5; j++)
    {
        double sum = 0;
        for (i = 0; i < 10; i++)
        {
            sum += s[i][j];
        }
        printf("第%d个课平均分%lf\n", j + 1, sum / 10);  //40
    }

}

完整代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int i, j;
int main()
{
    void sa(double s[10][5]);
    void ca(double s[10][5]);
    void hs(double s[10][5]);
    void vs(double s[10][5]);
    double s[10][5];
    for (i = 0; i < 10; i++)            //10
        for (j = 0; j < 5; j++)
            scanf("%lf", &s[i][j]);  //修改 %lf 后面的空格删掉
    sa(s);
    ca(s);
    hs(s);
    vs(s);
    return 0;
}

void sa(double s[10][5])                    //学生平均分
{

    for (i = 0; i < 10; i++)
    {
        double sum = 0;//20
        for (j = 0; j < 5; j++)
        {
            sum += s[i][j];
        }
        printf("第%d个学生平均分%lf\n", i + 1, sum / 5);
    }

}

//30
void ca(double s[10][5])           //课程平均分
{
    double sum = 0;
    for (j = 0; j < 5; j++)
    {
        double sum = 0;
        for (i = 0; i < 10; i++)  //修改 j++ 改成i++
        {
            sum += s[i][j];
        }
        printf("第%d个课平均分%lf\n", j + 1, sum / 10);  //40
    }

}

void hs(double s[10][5])      //最高分
{
    double h1 = 0;
    int h2 = 0, h3 = 0;
    for (i = 0; i < 10; i++)
    {                                  //50
        for (j = 0; j < 5; j++)
        {
            if (s[i][j] > h1)
            {
                h1 = s[i][j];
                h2 = i;
                h3 = j;
            }
        }
    }                                    //60
    printf("最高分为%lf为第%d个同学第%d门课程\n", h1, h2 + 1, h3 + 1);
}



void vs(double s[10][5])
{
    double sum[10] = { 0 }, a[10] = { 0 };
    double q = 0, m = 0;
    for (i = 0; i < 10; i++)
    {
        for (j = 0; j < 5; j++)
        {
            sum[i] += s[i][j];
        }
        a[i] = sum[i] / 5;
        q += a[i] * a[i];
        m += a[i];
    }
    printf("平均方差为%lf\n", q / 10 - m * m / 100);
}





您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632