标题:3*3矩阵倒置问题~
只看楼主
zhuanghu1987
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2007-10-30
 问题点数:0 回复次数:12 
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];
}
这是我写的,我知道可以用简单的方法做出来,可是我也知道可以用指针,自己初学指针,有些错误,希望高手们不吝赐教~帮我改一下,我想知道哪些语法我用错了,谢谢~!
搜索更多相关主题的帖子: 矩阵 倒置 
2007-11-18 15:36
zhuanghu1987
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2007-10-30
得分:0 
有高手帮助了!

凤凰涅磐,欲火重生.
2007-11-18 16:12
learnerboy
Rank: 2
等 级:论坛游民
帖 子:246
专家分:22
注 册:2007-11-11
得分:0 
你这程序写的!哎,真不怎么的!
2007-11-18 16:32
xDevil
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-8-31
得分:0 

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

2007-11-18 16:35
dousao
Rank: 2
等 级:论坛游民
帖 子:228
专家分:58
注 册:2007-11-8
得分:0 
我也刚学的,不过我看  那个*m[3]改成(*m)[3]不知道行不行?还有那个fun函数里面的m  不是2唯的首地址么?他可以给*m[3]?   
妈的,什么都不会...愁人那

同行售各专业书籍,全1折,淘宝店:http://maishu.
2007-11-18 16:37
zhuanghu1987
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2007-10-30
得分:0 
要是会了的话就不贴出来了,当然有错了,我也知道能用简单的方法做~只是我想强化一下自己对指针的用法~3楼4楼为什么要挑刺呢~

凤凰涅磐,欲火重生.
2007-11-18 21:28
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
得分:0 
结构不清晰~还有那个函数的定义在哪里?我怎么没看见~

樱花大战,  有爱.
2007-11-18 21:40
qq451746466
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-6-13
得分:0 

#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;
}
看下这个行不行....


2007-11-19 00:15
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
得分: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编辑过]


—>〉Sun〈<—
2007-11-19 00:21
qq451746466
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-6-13
得分:0 
不是倒置吧..要是倒置的话.那就更简单了,把下标改下就行了

2007-11-19 00:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-186962-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.600480 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved