代码说明:
一个n*n的矩阵转置的代码:
输入一个矩阵的维数,代码会自动生成一个随机的n*n的矩阵然后实现转置:
运行结果:
#include <iostream>
#include <stdlib.h>
#include <time.h>
int main()
{
int blag = 1;
int **A,**B;
int n = 0;
/********判断输入的维数是否合法*********/
do{
std::cout << "请输入矩阵的维数!" << std::endl;
std::cin >> n;
if(n <= 0)
{
std::cout << "你输入的维数有误,请重新输入!" << std::endl;
}else{
blag = 0;
}
}while(blag);
/*****申请二维数组*******/
A = (int**)malloc(sizeof(int*)*n);
B = (int**)malloc(sizeof(int*)*n);
for(int i = 0; i < n; ++i)
{
A[i] = (int*)malloc(sizeof(int)*n);
B[i] = (int*)malloc(sizeof(int)*n);
}
/*****产生随机数并给矩阵赋值*****/
srand(time(NULL));
for(int i = 0; i < n; ++i)
{
for(int j = 0; j < n; ++j)
{
A[i][j] = rand() % 11;
B[i][j] = 0;
std::cout << "A[" << i << "][" << j << "] = " << A[i][j] << " ";
}
std::cout << std::endl;
}
std::cout << "输出转置:" <<std::endl;
/******转置实现*******/
for(int i = 0; i < n; ++i)
{
for(int j = 0; j < n; ++j)
{
B[j][i] = A[i][j];
}
std::cout << std::endl;
}
for(int i = 0; i < n; ++i)
{
for(int j = 0; j < n; ++j)
{
std::cout << "B[" << i << "][" << j << "] = " << B[i][j] << " ";
}
std::cout << std::endl;
}
return 0;
}