| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 398 人关注过本帖
标题:关于矩阵转置的为什么没有输出转置的结果,直接输出原来的了
只看楼主 加入收藏
NeQhk
Rank: 2
等 级:论坛游民
威 望:1
帖 子:164
专家分:85
注 册:2014-7-19
结帖率:69.23%
收藏
已结贴  问题点数:10 回复次数:2 
关于矩阵转置的为什么没有输出转置的结果,直接输出原来的了
#include<stdio.h>

void change(int *a,int n)
{
   int temp;
   int i,j;
   for(i=0;i<n;i++)
   {
       for(j=0;j<3;j++)
       {
         temp=*(a+n*i+j);
         *(a+n*i+j)=*(a+n*j+i);
         *(a+n*j+i)=temp;
       }
   }





}

int main()
{
  int a[3][3];
  int i,j;
  for(i=0;i<3;i++)
  {
    for(j=0;j<3;j++)
    {
     scanf("%d",&a[i][j]);
    }
  }
  change(&a[0],3);
  for(i=0;i<3;i++)
   {
       for(j=0;j<3;j++)
       {
         printf("%d ",a[i][j]);      
      
       }
       printf("\n");
   }

  return 0;   
}
搜索更多相关主题的帖子: include change 
2015-01-16 23:29
mohun
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:49
专家分:125
注 册:2014-12-22
收藏
得分:9 
你的void change(int *a,int n)
 {
    int temp;
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<3;j++)//这里相当于对数组a[][]进行了两次转置操作
        {              //讲第二个循环改为for( j = 0 ; j < i ; j++ )就好了
          temp=*(a+n*i+j);
          *(a+n*i+j)=*(a+n*j+i);
          *(a+n*j+i)=temp;
        }
    }
2015-01-17 00:07
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:1 
回复 2楼 mohun
二楼高见啊!
还有一处要改一下
change(&a[0][0], 3);

Only the Code Tells the Truth             K.I.S.S
2015-01-17 00:45
快速回复:关于矩阵转置的为什么没有输出转置的结果,直接输出原来的了
数据加载中...
 
   



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

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