求解一道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);
}
以上是运行结果,但求得平均数不对,求各位大神详解(本人还是新手) 展开
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);
}
以上是运行结果,但求得平均数不对,求各位大神详解(本人还是新手) 展开
4个回答
展开全部
只要把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);
}
展开全部
先说句废话,既然中间结果输出的都对,那么,显然问题出在求均值的子程序部分。
不太明白你想求哪部分的均值,因为看不明白你的下标引用,
z+=*(*(q+i)+1);
问题显然也就是出在这里。
即然这样,把求均值的程序暂时改一下,也改成输出语句,当输出的内容都对了,那求均值肯定没问题了。
不太明白你想求哪部分的均值,因为看不明白你的下标引用,
z+=*(*(q+i)+1);
问题显然也就是出在这里。
即然这样,把求均值的程序暂时改一下,也改成输出语句,当输出的内容都对了,那求均值肯定没问题了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
void main()
{
float aver(float (*p)[6]);
改成
#include<stdio.h>
float aver(float (*p)[6]);
void main()
{
试一下,你的函数声明要放在开头,不是main的里边的。
void main()
{
float aver(float (*p)[6]);
改成
#include<stdio.h>
float aver(float (*p)[6]);
void main()
{
试一下,你的函数声明要放在开头,不是main的里边的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你想求什么平均值?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询