帮我看下这段程序哪里有问题,我都快抓狂了

来源:百度知道 编辑:UC知道 时间:2024/06/19 20:27:24
目的是通过一个函数使一个3*3数组转置
#include<stdio.h>
void main()
{
int j,i,a[3][3];
void zhuanzhi(int b[3][3]);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",a[i][j]);
}
}
zhuanzhi(a);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{

printf("%d",a[i][j]);
if(j==2)
{
printf("\n");
}
}
}

}
void zhuanzhi(int b[3][3])
{
int i,j,c[3][3];
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
c[j][i]=b[i][j];
}
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
b[j][i]=c[j][i];
}
}

}

恩。你有一个认知错误。就是那数组元素a[i][j]你认为是个地址,但是事实上应该是数组名a和a[i]才可以看作是一个地址,否则你在使用scanf函数时要加上符号"&"
即把scanf("%d",a[i][j]);
改成scanf("%d",&a[i][j]);