我的程序为什么输不出值 跟教程差不多 就是定义一个5*6的二维数组 随机赋值10-40 然后求每一行平均值输出

#include<stdio.h>#include<stdlib.h>voidgetdata(int(*)[6]);voidlineave(int[][6],float*... #include<stdio.h>
#include<stdlib.h>
void getdata(int (*)[6]);
void lineave(int [][6],float *);
void outdata(int [5][6],float *);
main()
{
int a[5][6];
float b[5];
getdata(a);
lineave(a,b);
outdata(a,b);
}
void getdata(int (*a)[6])
{
int i,j,x;
for(i=0;i<5;i++)
{
j=0;
while(j<6)
{
x=rand()%41;
if(x>10)
{
a[i][j]=x;
j++;
}
}
}
}
void lineave(int a[][6],float *b)
{
int i,j,sum;
for(i=0;i<5;i++)
{
sum=0;
for(j=0;j<6;j++)
{
sum+=a[i][j];
b[i]=sum/6;
}
}
}
void outdata(int a[5][6],int *b)
{
int i,j;
for(i=0;i<5;i++)

{
for(j=0;j<6;j++)
printf("%d",a[i][j]);
printf("%f",b[i]);
}
}
我还想问一下 数组b作为实参名 b[]可以作为对应的形参名??? 是不是调用了b的地址之后 b[]就可以赋值输出了
展开
 我来答
飞叶舞空
推荐于2016-04-01 · TA获得超过164个赞
知道答主
回答量:64
采纳率:0%
帮助的人:64.5万
展开全部
#include<stdio.h>
#include<stdlib.h>
void getdata(int (*)[6]);
void lineave(int [][6],float *);
void outdata(int [5][6],float *);
main()
{
int a[5][6];
float b[5];
getdata(a);
lineave(a,b);
outdata(a,b);
}
void getdata(int (*a)[6])
{
int i,j,x;
for(i=0;i<5;i++)
{
j=0;
while(j<6)
{
x=rand()%41;
if(x>10)
{
a[i][j]=x;
j++;
}
}
}
}
void lineave(int a[][6],float *b)
{
int i,j,sum;
for(i=0;i<5;i++)
{
sum=0;
for(j=0;j<6;j++)
{
sum+=a[i][j];
b[i]=sum/6;
}
}
}
void outdata(int a[5][6],float *b)
{
int i,j;
for(i=0;i<5;i++)
{
for(j=0;j<6;j++)
printf("%d\t",a[i][j]);

printf("%f",b[i]);
printf("\n");
}
}
这是改过的代码 最后一个函数的定义中b参数的类型你写错了
数组b传递给函数的时候是将数组第一个元素的地址传递的,如果使用b,只能给第一个元素赋值,如果想给整个数组赋值还是使用循环吧
追问
额 粗心大意了 谢谢哦 !
suyiwei1
2014-08-07 · 超过13用户采纳过TA的回答
知道答主
回答量:82
采纳率:0%
帮助的人:31.7万
展开全部
#include<stdio.h>
#include<stdlib.h>
void getdata(int (*)[6]);
void lineave(int [][6],float *);
void outdata(int [5][6],float *);
main()
{
int a[5][6];
float b[5];
getdata(a);
lineave(a,b);
outdata(a,b);
}
void getdata(int (*a)[6])
{
int i,j,x;
for(i=0;i<5;i++)
{
j=0;
while(j<6)
{
x=rand()%41;
if(x>10)
{
a[i][j]=x;
j++;
}
}
}
}
void lineave(int a[][6],float *b)
{
int i,j,sum;
for(i=0;i<5;i++)
{
sum=0;
for(j=0;j<6;j++)
{
sum+=a[i][j];
b[i]=sum/6;
}
}
}
void outdata(int a[5][6],float *b)
{
int i,j;
for(i=0;i<5;i++)

{
for(j=0;j<6;j++)
printf("%d\t",a[i][j]);
printf("%f\n",b[i]);
}
}

参数类型要对印,这个编译器都会帮你发现问题的!!!!
追问
啊哦 的却是这样  好粗心额 呵呵 谢谢呀!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式