用二维数组实现矩阵转置
实例说明:
这里给出两套源码。
自己写的:
1 /** 2 * Copyright (c) 1991 - 2016 Arvin Tang. 3 * All rights reserved. 4 * 5 * 文件名称:实例12 6 * 简要描述:二维数组的转置 7 * 8 * 当前版本:1.0 9 * 作 者: 10 * 完成日期:2016-1-7 11 * 修订说明: 12 * 13 * 取代版本: 14 * 作 者: 15 * 完成日期: 16 * 修订说明: 17 */ 18 #include <stdio.h> 19 #include <stdlib.h> 20 // 21 //clrscr();函数不是标准的C函数,只存在Tuber C中且#include <conio.h>。 22 //但是可以用system("cls");代替,且#include <stdlib.h>。 23 24 #define ROW 3//定义行 25 #define COL 4//定义列 26 27 int main(int argc, char const *argv[]) 28 { 29 //二维数组转换 30 int a[ROW][COL]; 31 32 int i,j; 33 34 printf("请输入一个%d行,%d列的矩阵:\n", ROW,COL); 35 36 for(i = 0; i < ROW; i++) 37 { 38 for(j = 0; j < COL;j++) 39 { 40 scanf("%d", &a[i][j]); 41 } 42 } 43 44 system("cls");//清屏 45 46 printf("你刚才输入的是一个%d行,%d列的矩阵:\n", ROW,COL); 47 48 for(i = 0; i < ROW; i++) 49 { 50 for(j = 0; j < COL;j++) 51 { 52 printf("%d\t", a[i][j]); 53 } 54 55 printf("\n"); 56 } 57 58 printf("下面将为你转换为一个%d行,%d列的矩阵:\n", COL,ROW); 59 60 for(i = 0; i < COL; i++) 61 { 62 for(j = 0; j < ROW; j++) 63 { 64 printf("%d\t", a[j][i]); 65 } 66 67 printf("\n"); 68 } 69 70 return 0; 71 }
书上的:
1 /* 用二维数组实现矩阵的转置 */ 2 #include <stdio.h> 3 #define ROW 3 4 #define COL 4 5 main() 6 { 7 int matrixA[ROW][COL],matrixB[COL][ROW]; 8 int i,j; 9 10 clrscr(); 11 printf("Enter elements of the matrixA,"); 12 printf("%d*%d:\n",ROW,COL); 13 for( i=0; i<ROW; i++ ) 14 { 15 for( j=0; j<COL; j++ ) 16 { 17 scanf("%d",&matrixA[i][j]); 18 } 19 } 20 21 for( i=0; i<ROW; i++ ) 22 { 23 for( j=0; j<COL; j++ ) 24 { 25 matrixB[j][i] = matrixA[i][j]; 26 } 27 } 28 29 printf("MatrixB,"); 30 printf("%d*%d:\n",COL,ROW); 31 for( i=0; i<COL; i++ ) 32 { 33 for( j=0; j<ROW; j++ ) 34 { 35 printf("%8d",matrixB[i][j]); 36 } 37 printf("\n"); 38 } 39 printf("\n Press Any Key to Quit... \n"); 40 getch(); 41 }
补充: