C语言实现矩阵的转置

来源:互联网 发布:java中的foreach循环 编辑:程序博客网 时间:2024/05/17 03:46
#include<stdio.h>#include<stdlib.h>#include<string.h>void output_matrix(char* p,int m,int n);int main(){char matrix[30][30];int m,n;int i,j;int min;char temp;printf("请输入矩阵的行数和列数:\n");scanf("%d%d",&m,&n);getchar();printf("请输入数据:\n");for(i = 0;i < m;i++){for(j = 0;j < n;j++){matrix[i][j] = getchar();}}printf("\n");output_matrix(matrix[0],m,n);min = m>n?n:m;for(i = 0;i < m;i++){for(j = 0;j < n;j++){if(i < min && j < min){if(i < j){temp = matrix[i][j];matrix[i][j] = matrix[j][i];matrix[j][i] = temp;}}else{matrix[j][i] = matrix[i][j];}}}printf("\n");output_matrix(matrix[0],n,m);system("pause");return 0;}void output_matrix(char* p,int m,int n){int i,j;for(i = 0;i < m;i++){for(j = 0;j < n;j++){printf("%c ",*(p+i*30+j) );}printf("\n");}}
注意:在输出矩阵的函数中,*(p+i*30+j)中的30是初始定义matrix时的列数。即matrix【30】【30】中的后一个30。如果写成了*(p+i*n+j)会造成地址的错误。还有就是,我采用的是字符,故而输入比如 2*3 的字符矩阵时,直接输入连续的6个字母即可,中间不用空格隔开,如:abcdef
原创粉丝点击