求解一道C语言题,求纠正

#include<stdio.h>voidmain(){floataver(float(*p)[6]);inti,j,average;charcourse[5][5];f... #include<stdio.h>
void main()
{
float aver(float (*p)[6]);
int i,j,average;
char course[5][5];
float array [4][6],(*p)[6];
printf("input courses' name:\n");
for(i=0;i<5;i++)
scanf("%s",course[i]);
printf("input students' No. and scores:\n");
for(i=0;i<4;i++)
for(j=0;j<6;j++)
scanf("%f",&array[i][j]);
printf("New,the scoer table is:\n");
printf("\t");
for(i=0;i<5;i++)
printf("%s\t",course[i]);
printf("\n");
for(i=0;i<4;i++)
{
for(j=0;j<6;j++)
{
if(j==0)
printf("%6.0f",array[i][j]);
else
printf("%6.2f\t",array[i][j]);
}
printf("\n");
}
p=array;
average=aver(p);
printf("the average score of the first course is %6.2f\n",average);
}
float aver(float (*q)[6])
{
int i;
float z=0;
for(i=0;i<4;i++)
z+=*(*(q+i)+1);
z=z/4;
return(z);
}

以上是运行结果,但求得平均数不对,求各位大神详解(本人还是新手)
展开
 我来答
ok洛阳水席
推荐于2016-08-06 · TA获得超过1839个赞
知道小有建树答主
回答量:580
采纳率:50%
帮助的人:520万
展开全部

只要把average定义成float型就OK了,用int接受返回的整型导致出错。LZ要仔细啊

#include<stdio.h>
void main()
{
    float aver(float (*p)[6]);
    int i,j;
    float average;
    char course[5][5];
    float array [4][6],(*p)[6];
    printf("input courses' name:\n");
    for(i=0;i<5;i++)
        scanf("%s",course[i]);
    printf("input students' No. and scores:\n");
    for(i=0;i<4;i++)
        for(j=0;j<6;j++)
            scanf("%f",&array[i][j]);
        printf("New,the scoer table is:\n");
        printf("\t");
        for(i=0;i<5;i++)
            printf("%s\t",course[i]);
        printf("\n");
        for(i=0;i<4;i++)
        {
            for(j=0;j<6;j++)
            {
                if(j==0)
                    printf("%6.0f",array[i][j]);
                else
                    printf("%6.2f\t",array[i][j]);
            }
            printf("\n");
        }
        p=array;
        average=aver(p);
        printf("the average score of the first course is %6.2f\n",average);
}
float aver(float (*q)[6])
{
int i;
float z=0;
for(i=0;i<4;i++)
z+=*(*(q+i)+1);
z=z/4;
return(z);
}
linnjing
2013-05-17 · TA获得超过2631个赞
知道大有可为答主
回答量:1230
采纳率:91%
帮助的人:507万
展开全部
先说句废话,既然中间结果输出的都对,那么,显然问题出在求均值的子程序部分。
不太明白你想求哪部分的均值,因为看不明白你的下标引用,
z+=*(*(q+i)+1);
问题显然也就是出在这里。
即然这样,把求均值的程序暂时改一下,也改成输出语句,当输出的内容都对了,那求均值肯定没问题了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
电动炉钩子
2013-05-17 · TA获得超过1568个赞
知道小有建树答主
回答量:614
采纳率:0%
帮助的人:797万
展开全部
#include<stdio.h>
void main()
{
float aver(float (*p)[6]);

改成
#include<stdio.h>
float aver(float (*p)[6]);
void main()
{
试一下,你的函数声明要放在开头,不是main的里边的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ID鸡蛋炒韭菜
2013-05-17 · TA获得超过391个赞
知道小有建树答主
回答量:570
采纳率:50%
帮助的人:74.8万
展开全部
你想求什么平均值?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式