用c语言将一个3*3的整形矩阵转置,不用指针方法(最基础的方法)。急

如题所述

第1个回答  2013-06-19

楼主请等会,马上好,在帮你编写源代码。

终于写好了,以下是代码:

// 用c语言将一个3*3的整形矩阵转置,
#include<stdio.h>
void main()
{ int a[3][3];
 int b[3][3];
 int i,j,t=0;
 printf("请输入原矩阵的9个元素");
 for(i=0;i<3;i++)
  for(j=0;j<3;j++)
  { ++t;
   scanf("%d",&a[i][j]);
   if(t%3==0)
   {
    printf("\n");
   }
   
  }//初始化矩阵;
 for(i=0;i<3;i++)
  for(j=0;j<3;j++)
   b[j][i]=a[i][j];
  printf("\n");
 printf("转制后的矩阵为: \n");
 t=0;
 for(i=0;i<3;i++)
  for(j=0;j<3;j++)
  {
   ++t;
   printf(" %d ",b[i][j]);
   if(t%3==0)
    printf("\n");
  }
  printf("谢谢使用************************************\n");
}

这是我运行的结果:

追问

这里的t%3是指神马意思啊?

追答

恩恩, if(t%3==0) printf("\n");这个语句的作用是用于换行的,当每行输出的数据数达到3个时,就输出换行,以使得输出的结果可以看起来像个矩阵一样。t%3的意思是t整除3所得的余数,“%”是求模运算符(即求余数用的,模即余数),当t是3的倍数时,t%3的结果才会是0(因为此时余数为0,整除了),即t=3,6,9事会进行换行操作;这样就可以使输出的9个数输出的形式是矩阵的形式,楼主若还有疑问请问。

第2个回答  2013-06-19

/*

  12  13  14  15

  16  17  18  19

  20  21  22  23

  24  25  26  27


  12  16  20  24

  13  17  21  25

  14  18  22  26

  15  19  23  27


Press any key to continue

*/

#include <stdio.h>
#define N 4

void Transpose_Matrix(int a[][N]) {
int i,j,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;
}
}
}

void Show(int a[][N]) {
int i,j;
for(i = 0; i < N; ++i) {
for(j = 0; j < N; ++j)
printf("%4d",a[i][j]);
printf("\n");
}
printf("\n");
}

int main() {
    int a[N][N] = {12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27};
Show(a);
Transpose_Matrix(a);
Show(a);
    return 0;
}

本回答被网友采纳