#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
C语言实现矩阵的转置
最新推荐文章于 2024-05-14 11:04:08 发布