问个小问题

h123hyb 2008-09-09 07:06:33
/* 写函数fun,功能是:实现B=A+A',即把A加上A的倒置,存放于B中 */
/*???????????为什么的不到正确的结果???????????????*/
#include<stdio.h>
void fun(int a[3][3],int b[3][3])
{ /*start*/
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
b[i][j]=a[i][j]+a[j][i];
}
/*end*/
}
main ()
{
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int t[3][3];
int i,j ;
fun(a,t);
for (i=0;i<3;i++)
{
for (j=0;i<3;j++)
printf("%7d",t[i][j]);
printf("\n");
}
}
...全文
112 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hustfenge 2008-09-09
  • 打赏
  • 举报
回复
哎,晚了一步.
hustfenge 2008-09-09
  • 打赏
  • 举报
回复
大哥,你好好看看自己的程序
"for (j=0;i <3;j++)"
这样的句子都有,我还能说什么?
本来是数组做为参数是没有问题的,
但是写程序要仔细啊,
害我调老半天!!!!
分数必须都给我!!!!!

for (i=0;i <3;i++)
{
for (j=0;i <3;j++)
oo_v_oo 2008-09-09
  • 打赏
  • 举报
回复
来晚了

i-->j问题
lunarfan 2008-09-09
  • 打赏
  • 举报
回复
for (i=0;i <3;i++)
{
for (j=0;i <3;j++) printf("%7d",t[i][j]); //for (j=0;j <3;j++)
printf("\n");
}
}
lunarfan 2008-09-09
  • 打赏
  • 举报
回复
理解错了晕上面我的代码有问题。


#include <stdio.h>
void fun(int a[3][3],int b[3][3])
{ /*start*/
int i,j;
for(i=0;i <3;i++)
for(j=0;j <3;j++)
{
b[i][j]=a[i][j]+a[j][i];
}
/*end*/
}
main ()
{
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int t[3][3];
int i,j ;
fun(a,t);
for (i=0;i <3;i++)
{
for (j=0;j <3;j++)
printf("%7d",t[i][j]);
printf("\n");
}
}
h123hyb 2008-09-09
  • 打赏
  • 举报
回复
4楼没把题读完哦
h123hyb 2008-09-09
  • 打赏
  • 举报
回复
/* 写函数fun,功能是:实现B=A+A',即把A加上A的倒置,存放于B中 */
/*???????????为什么的不到正确的结果???????????????*/
#include <stdio.h>
void fun(int a[3][3],int b[3][3])
{ /*start*/
int i,j;
for(i=0;i <3;i++)
for(j=0;j <3;j++)
{
b[i][j]=a[i][j]+a[j][i];
}
/*end*/
}
main ()
{
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int t[3][3];
int i,j ;
fun(a,t); //我这里是传的数组名,应该是地址才对啊for (i=0;i <3;i++)
{
for (j=0;i <3;j++)
printf("%7d",t[i][j]);
printf("\n");
}
}
lunarfan 2008-09-09
  • 打赏
  • 举报
回复
行列对换啊呵呵

void fun(int a[3][3],int b[3][3])
{ /*start*/
int i,j, temp;
for(i=0;i <3;i++)
for(j=0;j <3;j++)
{
if(i < j)
{
temp = a[i][j];
a[i][j] = a[j][i]
a[j][i] = temp;
}
}

}
main ()
{
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int t[3][3];
int i,j ;
fun(a,t);
for (i=0;i <3;i++)
{
for (j=0;i <3;j++)
printf("%7d",t[i][j]);
printf("\n");
}
}
djwinter 2008-09-09
  • 打赏
  • 举报
回复
因为你的fun是对数组的拷贝值操作,main中的数组t值根本没有改变

可以用三重指针实现,void fun(int a[3][3],int *b[3][3])
h123hyb 2008-09-09
  • 打赏
  • 举报
回复
就是啊A : 1,2,3 A‘ 1,4,7
4,5,6 2,5,8
7,8,9 3,6,9
lunarfan 2008-09-09
  • 打赏
  • 举报
回复
A的倒置是什么,就是i,j对调?

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧