数据结构分析:矩阵的存储要用到二维数组,但是要考虑到存储转换后的矩阵,由于行和列不可等相等,所以必须定义两个二维数组分别存储。
题目分析:关键在于行列的转换,首先原矩阵的行变换为转换为转换后的列,原矩阵的列转换为转换后的行,需要旋转90度,所以原来的行转换为列后的值应该为MAC_ROW - row - 1, MAC_ROW 为原矩阵的总行数,row为当前要转换的元素所在的行,由于row从0开始,所以要再减去1。
#include <iostream> #define MAC_ROW 3 #define MAC_COL 4 using namespace std; int main() { //define original matrix and set default value 0 int OriMatrix[MAC_ROW][MAC_COL] = {0}; //define converted matirx int ConvMatrix[MAC_COL][MAC_ROW] = {0}; int elem = 0; //initial int row = 0; for(; row < MAC_ROW; row++) { for(int col = 0; col < MAC_COL; col++) { cin>>elem; OriMatrix[row][col] = elem; ConvMatrix[col][MAC_ROW - row - 1] = OriMatrix[row][col]; } } //cout original matrix row = 0; cout<<"original matrix:"<<endl; for(; row < MAC_ROW; row++) { for(int col = 0; col < MAC_COL; col++) { cout<<OriMatrix[row][col]<<"\t"; } cout<<endl; } //cout converted matrix cout<<"converted matrix:"<<endl; row = 0; for(; row < MAC_COL; row++) { for(int col = 0; col < MAC_ROW; col++) { cout<<ConvMatrix[row][col]<<"\t"; } cout<<endl; } system("pause"); return 1; }