当前位置:编程学习 > C/C++ >>

c语言要求置换3*3矩阵 哪个大虾看下错误

#include "stdio.h" int main() {int a[3][3],*p,i,j; printf ("enter an array of 3 mulit by 3:"); for (i=0;i<3;i++) for (j=0;j<3;j++) scanf ("%d",&a[i][j]); p=a[0]; move(p); for (i=0;i<3;i++) for (j=0;j<3;j++) {printf ("%3d",&a[i][j]); if(j==2) printf ("\n"); }} move (int * pointer) { int i,j,t; for (i=0;i<3;i++) for (j=0;j<3;j++) {t=*((pointer+i)+j); *((pointer+i)+j)=*((pointer+j)+i); *((pointer+j)+i)=t;} }
答案:在你的代码基础上给你改了下。。。在VC++中调试成功。。。。。
改过的地方都注释了。。。。。希望能帮到你。。。。


#include "stdio.h"

void move (int (*pointer)[3]);//加一个函数声明

void main()
{int a[3][3],(*p)[3],i,j;//改过p的定义
printf ("enter  an array of 3 mulit by 3:");
for (i=0;i<3;i++)
for (j=0;j<3;j++)
scanf ("%d",&a[i][j]);
p=a;//改过
move(p);
for (i=0;i<3;i++)
for (j=0;j<3;j++)
{printf ("%3d",a[i][j]);//改过,输出值不加&
if(j==2) printf ("\n"); }
}

void move (int (*pointer)[3])//改过
{ int i,j,t;
for (i=0;i<3;i++)
for (j=i;j<3;j++)
{t=*(*(pointer+i)+j);//改过
*(*(pointer+i)+j)=*(*(pointer+j)+i);//改过
*(*(pointer+j)+i)=t;}//改过
}
其他:for (j=0;j<3;j++)
{printf ("%3d",&a[i][j]);
中的&有什么用呢?呵呵

上一个:c语言与什么专业挂钩
下一个:c语言程序

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,