编写函数将一个n*n矩阵转置,要求在同一个数组中完成,

例如:

1 2 3 4 1 5 3 4

5 6 7 8 ->2 6 2 7

3 2 5 9 3 7 5 2

4 7 2 3 4 8 9 3

#include<stdio.h>

int main()

{

 int a[4][4]={{1,2,3,4},{5,6,7,8},{3,2,5,9},{4,7,2,3}};

 int i,j,t;

 printf("原来的数组:\n");

 for(i=0;i<4;i++)

 {

  for(j=0;j<4;j++)

    printf("%d ",a[i][j]);

  printf("\n");

 }

 for(i=0;i<3;i++)

for(j=i+1;j<4;j++)

{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}

 printf("\n转置后的数组:\n");

 for(i=0;i<4;i++)

 {

  for(j=0;j<4;j++)

    printf("%d ",a[i][j]);

  printf("\n");

 }

return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-11-08
#include <stdio.h>
#include<stdlib.h>
#include<math.h>

void Transpose(int a[][10],int n);

main()
{
int n;  //储存矩阵的大小
int i,j;  
int a[10][10]={0};  //定义一个最大范围的数组储存矩阵

printf("Input n:");
scanf("%d",&n);
//用户按顺序输入一个矩阵
printf("Input %d*%d matrix:\n",n,n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
scanf(" %d",&a[i][j]);
}

Transpose(a,n);
//按顺序输出一个矩阵
printf("The transposed matrix is:\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%4d",a[i][j]);
printf("\n");
}

system("pause");
}

//函数功能:实现矩阵转置
void Transpose(int a[][10],int n)
{
int i,j;
int t;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
}

第2个回答  2015-12-04
#include "stdio.h"
int main() {
  int n,i,j,t;
  int a[10][10];
  scanf("%d",&n);
  for(i=0;i<n;i++)
    for(j=0;j<n;j++)
      scanf("%d",&a[i][j]);
  printf("转置后的矩阵:\n");
  for(i=0;i<n;i++) {
    for(j=0;j<n;j++){
      t = a[i][j];
      a[i][j]=a[j][i];
      a[j][i] = t;
      printf("%d ",a[i][j]);
   }
   printf("\n");
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网