大家帮我看看这段C语言程序的问题~

来源:百度知道 编辑:UC知道 时间:2024/06/04 02:15:12
写一段通用函数,用户输入一个3*3矩阵,通过通用函数,将该矩阵转置。
(用指针的方法!)

我写如下
#include <stdio.h>
int zz(int s1[][])
{
int (*p)[3],temp,i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{temp=*(*p+i)+j;
*(*(p+i)+j)=*(*(p+j)+i);
*(*(p+j)+i)=temp;}
for(i=0;i<9;i++) printf("%d",*(*s1+i));
}

main()
{
int s1[3][3],i,j;
printf("请输入3阶矩阵\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&s1[i][j]);
zz(s1);
}

大家帮忙看下错在哪里~很不明白如何将二维数组传递给自定义函数,另,最好帮我把PRINTF函数写回去MAIN函数中,~谢谢大家
谢谢一楼的~但是老师题目要求。。。没办法。。。。总之还是谢谢你~~我继续努力下看看这里哪里错了

int zz(int s1[][]) 这个函数里面的数组行可以不写但列是一定要写的。

#include <stdio.h>
void zz(int s1[][3])
{
int temp,i,j;
for(i=0;i<3;i++)
{
for(j=0;j<i;j++)
{
temp=s1[i][j];
s1[i][j]=s1[j][i];
s1[j][i]=temp;

}
}
printf("\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d ",s1[i][j]);
printf("\n");
}
}
main()
{
int s1[3][3],i,j;
printf("请输入3阶矩阵\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&s1[i][j]);
zz(s1);
getch();

}
我觉得你对指针数组还不是很懂,尽量少用否则很容易出错。其实这个根本不需要用到。
#include <stdio.h>
void zz(int *s1[][3])
{
int *temp,i,j;
for(i=0;i<3;i++)
{
for(j=0;j<i;j++)
{
temp=s1[i][j];
s1[i][j]=s1[j][i];
s1[j][i]=temp;

}
}