C语言实现矩阵的转置

Today,让我来带大家学习怎样用C语言实现矩阵的转置

话不多说,直接上代码:

#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#define N 100
void display(int **a,int m,int n);
void fun(int **a,int **b,int m,int n);
void create(int **a,int m,int n);


void main()
{
	int **a, **b;
	int m,n;
	printf("请输入矩阵的行数和列数\n");
	scanf("%d%d", &m, &n);
	a=(int **)malloc(m*sizeof(int*));
	b=(int **)malloc(m*sizeof(int*));
	for(int i=0;i<m;i++){
		a[i]=(int *)malloc(n*sizeof(int));
	}
	for(int j=0;j<m;j++){
		b[j]=(int *)malloc(n*sizeof(int));
	}
	create(a,m,n);
	display(a,m,n);
	fun(a,b,m,n);
	display(b,n,m);
}


void create(int **a,int m,int n){
	int i,j;
	srand(time(NULL));
	for (i = 0; i < m; i++)  
	{
		for (j = 0; j < n; j++)
		{
			*( *( a+i)+j)= rand() % 100;
		}
	}
}


void display(int **a,int m,int n)
{ 
	printf("该矩阵为:\n");
	int i,j;
	for (i = 0; i < m; i++)
	{
		for (j = 0; j < n; j++)
		{
			printf("%3d ", *( *( a+i)+j));
		}
		printf("\n");
	}
}

void fun (int **a,int **b,int m,int n){ 
	printf("该矩阵转置后为:\n");
	int i,j;
	for (i = 0; i < n; i++)   
	{
		for (j = 0; j < m; j++)
			*( *( b+i)+j) = *( *( a+j)+i);
	}
}


以上便是C中矩阵转置的一种实现方式

Finally,各位觉得有所帮助的看官,麻烦点个赞m.m——我是小C


版权声明:本文为contashi原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。