C++笔记:二维数组行列互换
/* 将二维数组中行数据和列数据相互置换 */
#include<iostream>
#include<iomanip>//主要是对cin,cout之类的一些操纵运算子,比如setfill,setw,setbase,setprecision等等。
//它是I/O流控制头文件,就像C里面的格式化输出一样.
using namespace std;
int fun(int array[3][3]){ //此处函数是对数组的引用调用,直接操作数组
int temp;//定义临时存放变量
for(int i=0;i<3;i++){
for(int j=0;j<i;j++){ //注意此处循环限制语句j<i
temp=array[i][j];
array[i][j]=array[j][i];
array[j][i]=temp;
}
}
return 0;
}
int main(){
int array[3][3]={ { 1,2,3},{ 4,5,6},{ 7,8,9}};
int array_row=sizeof(array)/sizeof(array[0]);//求数组array的行数
int array_column=sizeof(array[0])/sizeof(array[0][0]);//求数组array的列数
cout<<"Converted Front:"<<endl;
for(int i=0;i<array_row;i++){
for(int j=0;j<array_column;j++){
cout<<setw(7)<<array[i][j];
}
cout<<endl;
}
fun(array);//数组名保存的是数组内存首地址
cout<<"Converted Result:"<<endl;
for(int i=0;i<array_row;i++){
for(int j=0;j<array_column;j++){
cout<<setw(7)<<array[i][j];
}
cout<<endl;
}
return 0;
}
输出:
重点关注fun函数部分:
当i=0时(第一行),内层不执行循环。
当i=1时(第二行),此时j<1,操作互换的是(1,0)号位,与(0,1)号位。
当i=2时(第三行),此时j<2,可操作(2,0)与(2,1)号位,即(2,0)与(0,2), (2,1)与(1,2)执行互换操作。
还没有评论,来说两句吧...