作业帮 > 综合 > 作业

编写一个函数,使给定的一个n*n矩阵转置,即行列互换.

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/13 05:17:35
编写一个函数,使给定的一个n*n矩阵转置,即行列互换.
/* Note:Your choice is C IDE */
#include "stdio.h"
void input(int *p,int m,int n)
{ int i,j;
\x09printf("请输入数组:");
\x09for(i=0;i
/*请输入行、列数为:3 4请输入数组3×4:1 2 3 45 6 7 89 10 11 12    1    2    3    4    5    6    7    8    9   10   11   12
    1    5    9    2    6   10    3    7   11    4    8   12
Press any key to continue*/#include <stdio.h>
#include <stdlib.h>

void input(int **p,int m,int n) {
\x09int i,j;
\x09printf("请输入数组%d×%d:\n",m,n);
\x09for(i = 0;i < m;i++)
\x09\x09for(j = 0;j < n;j++)
\x09\x09\x09scanf("%d",&p[i][j]);
}

void output1(int **p,int m,int n) {
\x09int i,j;
\x09for(i = 0;i < m;i++) {
\x09\x09for(j = 0;j < n;j++)
\x09\x09\x09printf("%5d",p[i][j]);
\x09\x09printf("\n");
\x09}
\x09printf("\n");
}

void output2(int **q,int m,int n) {
\x09int i,j;
\x09for(i = 0;i < n;i++) {
\x09\x09for(j = 0;j < m;j++)
\x09\x09\x09printf("%5d",*(*(q + i) + j));
\x09\x09printf("\n");
\x09}
\x09printf("\n");
}

void zhuanzhi(int **p,int **q,int m,int n) {
\x09int i,j;
\x09for(i = 0;i < m;i++)
\x09\x09for(j = 0;j < n;j++)
\x09\x09\x09*(*(q + j) + i) = *(*(p + i) + j);
}

int main() {
\x09int **a,**b,m,n,i;
\x09printf("请输入行、列数为:");
\x09scanf("%d%d",&m,&n);
\x09a = (int **)malloc(m * sizeof(int));
\x09for(i = 0; i < m; ++i)
\x09\x09a[i] = (int *)malloc(n * sizeof(int));
\x09b = (int **)malloc(n * sizeof(int));
\x09for(i = 0; i < n; ++i)
\x09\x09b[i] = (int *)malloc(m * sizeof(int));
\x09input(a,m,n);
\x09output1(a,m,n);
\x09zhuanzhi(a,b,m,n);
\x09output2(b,m,n);
\x09for(i = 0; i < m; ++i)
\x09\x09free(a[i]);
\x09free(a);
\x09for(i = 0; i < n; ++i)
\x09\x09free(b[i]);
\x09free(b);
\x09return 0;
}