3.4.3 多维数组应用举例
下面给出的示例代码3.9演示了如何转置一个二维数组。所谓转置,指的是将数组中的元素关于对角线互换。
代码3.9 将二维数组中的数据关于对角线互换TwoDimentionArray
<———————————文件名:example309.cpp————————————————> 01 #include<iostream> 02 #include<iomanip> 03 int main() 04 { 05 using namespace std; 06 const int row=4; 07 int temp; 08 int i,j;//创建一个2维数组sz,并初始化 09 10 int sz[row][row]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; 11 cout<<"初始状态:"<<endl; 12 for(i=0;i<row;i++)//初始状态输出 13 { 14 for(j=0;j<row;j++) 15 cout<<setw(4)<<sz[i][j]; 16 cout<<endl; 17 } 18 for(i=0;i<row;i++) 19 for(j=i+1;j<row;j++)//关于对角线对称交换元素 20 { 21 temp=sz[i][j]; 22 sz[i][j]=sz[j][i]; 23 sz[j][i]=temp; 24 } 25 cout<<"翻转后状态:"<<endl; 26 for(i=0;i<row;i++)//交换后状态输出 27 { 28 for(j=0;j<row;j++) 29 cout<<setw(4)<<sz[i][j]; 30 cout<<endl; 31 } 32 return 0; 33 }
输出结果如下所示。
初始状态: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 翻转后状态: 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16
【代码解析】代码以二维数组为例子,如代码第18~19行对多维数组元素的访问和处理也是通过循环结构来实现的,多维数组与一维数组最大的不同在于访问元素时下标的个数,以及运算在内存中的排列机制。