当前位置: 代码迷 >> C语言 >> 3*3矩阵倒置问题~
  详细解决方案

3*3矩阵倒置问题~

热度:222   发布时间:2007-11-18 15:36:22.0
3*3矩阵倒置问题~
#include<stdio.h>
main()
{fun(int *m[3]);
int i,j;
static m[3][3];
printf("please input the ear:\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&m[i][j]);
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%d ",m[i][j]);
printf("\n");
}
printf("\b");
fun(m);
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%d ",m[i][j]);
printf("\n");
}}
fun(int *m[3])
{int i,j,*p[3];
p=m;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
m[j][i]=*p[i][j];
}
这是我写的,我知道可以用简单的方法做出来,可是我也知道可以用指针,自己初学指针,有些错误,希望高手们不吝赐教~帮我改一下,我想知道哪些语法我用错了,谢谢~!
搜索更多相关的解决方案: 矩阵  倒置  

----------------解决方案--------------------------------------------------------
有高手帮助了!
----------------解决方案--------------------------------------------------------
你这程序写的!哎,真不怎么的!
----------------解决方案--------------------------------------------------------

好不好也先发个不出错的来吧。


----------------解决方案--------------------------------------------------------
我也刚学的,不过我看  那个*m[3]改成(*m)[3]不知道行不行?还有那个fun函数里面的m  不是2唯的首地址么?他可以给*m[3]?   
妈的,什么都不会...愁人那
----------------解决方案--------------------------------------------------------
要是会了的话就不贴出来了,当然有错了,我也知道能用简单的方法做~只是我想强化一下自己对指针的用法~3楼4楼为什么要挑刺呢~
----------------解决方案--------------------------------------------------------
结构不清晰~还有那个函数的定义在哪里?我怎么没看见~
----------------解决方案--------------------------------------------------------

#include<stdio.h>
int fun(int *p)
{
int i,j,k;
for(i=0;i<3;i++)
for(j=i;j<3;j++)
{
k=*p(3*i+j);
*p(3*i+j)=*p(3*j+i);
*p(3*j+i)=k;
}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
printf("%d",p++);
return 0;

}
int main(void)
{
int i,j;
int a[3][3];
printf("please input the ear:\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
printf("\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
printf("%d ",a[i][j]);
printf("\n");
printf(" the new shuzu shi:\n");
fun(a);
return 0;
}
看下这个行不行....


----------------解决方案--------------------------------------------------------

// 此贴本来问什么是倒置,当时我没看代码 ////////////////////////////////////////
//////////////////////////////////////////

/* 修改了2个错误,多次出现 */
/* 搂主的代码,修正后 */


#include<stdio.h>
#include<stdio.h>

void fun(int (*m)[3]); /* 函数原型方在外面看起来方便 */

int main(void)
{
int i,j;
static int m[3][3]; /* 搂主的程序没有 int */
printf("please input the ear:\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&m[i][j]);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d ",m[i][j]);
printf("\n");
}
printf("\b");
fun(m);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d ",m[i][j]);
printf("\n");
}
return 0;
}

void fun(int (*m)[3])
{
int i,j,(*p)[3];
p = m;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
m[j][i]=p[i][j];
}



/* 直接使用 m[3][3] ,但 m[3][3] 必须具有文件作用域,
把 int [3][3]; 放在所有函数原型的上面。
因为楼主使用了 static 我才提醒一下。(不过不建议使用)
void fun_b(void)
{
int i, j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
m[j][i]=p[i][j];
}
*/


/* 运行结果 */


此主题相关图片如下:



/*
int (* m)[3]; // 指向 3 个 int 类型的指针
int * m[3]; // 3 个 int 指针数组
static // 静态存储 //是数组m[3][3]具有函数作用域,空链接,静态存储时期
*/

-
- 楼主用 TC 的吧。
- 最好像我一样的代码风格,不要求4格缩进,但至少需要缩进一下,1格也行啊。
- 函数前请加上返回类型,如:void 、int 、flost。
-

[此贴子已经被作者于2007-11-19 2:17:28编辑过]


----------------解决方案--------------------------------------------------------
不是倒置吧..要是倒置的话.那就更简单了,把下标改下就行了
----------------解决方案--------------------------------------------------------
  相关解决方案