c语言函数数组 求大神解答

#include<stdio.h>
#define M 2
#define N 2
int FanBei(int a[M][N]);
void Show(int a[M][N]);
void main()
{
int i,j;
int a[M][N];
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
scanf("%d",&a[i][j]);
}
}
FanBei( a[i][j]);
Show( a[i][j]);
}
int FanBei(int a[M][N])
{
int b[M][N];
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<5;j++)
{
b[i][j]=2*a[i][j];
}
}
return b[i][j];
}
void Show(int a[M][N])
{
int i,j;
int a[M][N];
for(i=0;i<M;i++)
{
printf("\n");
for(j=0;j<N;j++)
{
printf("%5d\n",a[i][j]);
}
}
}

int FanBei(int a[M][N])
{
int b[M][N];
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<5;j++)
{
b[i][j]=2*a[i][j];
}
}
return b[i][j];
}
并没有用到 a[M][N] 啊
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-19
程序改好了!
#include<stdio.h>
#define M 2
#define N 2
int FanBei(int a[M][N]);
void Show(int a[M][N]);
void main()
{
int i,j;
int a[M][N];
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
scanf("%d",&a[i][j]);
}
}
FanBei( a[i][j]);
Show( a[i][j]);
}
int FanBei(int a[M][N]) //这里的a[M][N]是局部变量 ,其它的函数里也可以定义 不冲突
{
int b[M][N];
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<5;j++)
{
b[i][j]=2*a[i][j];
}
}
return b[i][j];
}
void Show(int a[M][N]) //这里的a[M][N]是局部变量 ,其它的函数里也可以定义 不冲突
{
int i,j;
//int a[M][N]; //这里和void Show(int a[M][N]) 里的a[M][N]重复了!C语言里不能重复定 义一个变量
for(i=0;i<M;i++)
{
printf("\n");
for(j=0;j<N;j++)
{
printf("%5d\n",a[i][j]);
}
}
}追问

似乎不能运行啊!

追答

可以运行是可以运行,编译也没错!也可以输入数据,但是会出现这个!

我只检查你语法错误,没去看你的程序要实现什么功能。

追问

程序要实现的功能是输入一个数组然后把这个数组翻倍输出,其中要用函数调用。谢谢大神帮忙!!!

追答

你说的翻倍是数字的变化,还是数组!看你这个是把a[2][2]变成a[3][5]了! 如果把a[3][5]改成a[2][2]是可以的!

本回答被网友采纳
第2个回答  2013-03-19

#include<stdio.h>

#define M 2

#define N 2

int FanBei(int a[M][N]);

void Show(int a[M][N]);

void main()

{

     int i,j;

     int a[M][N];

     for(i=0;i<M;i++)

     {

      for(j=0;j<N;j++)

      {

       scanf("%d",&a[i][j]);

      }

     }

     FanBei(a);//实参

     Show(a);//实参

}

int FanBei(int a[M][N])

{

     int b[M][N];

     int i,j;

     for(i=0;i<M;i++)//不能是3,超界了

     {

      for(j=0;j<N;j++)//不能是5,数组超界了。

      {

       b[i][j]=2*a[i][j];

      }

     }

     for(i=0;i<M;i++)//你的目的是让数组a中的元素值,各自变大一倍,所以把b数组的值,赋到a

     {

      for(j=0;j<N;j++)

      {

       a[i][j]=b[i][j];

      }

     }

     return 0;

 

}

void Show(int a[M][N])

{

     int i,j;

     //局部变量与形参名相同,不需要这个数组,去掉int a[M][N];

     printf("\n");

     for(i=0;i<M;i++)

     {

     

      for(j=0;j<N;j++)

      {

       printf("%5d\n",a[i][j]);

      }

     }

}

结果:

相似回答