2
3
4

5
6
7
8
9
沿着对角线:1,5,9 翻转180度,变成如下数组:
1
4
7
2
5
8
3
6
9
思路: 利用一个中间临时数组,然后遍历临时数组,进行数组翻转;由于数组是引用类型,以是要clone一个新的数组,不能直接赋值,否则得出的结果不对。用到了一个DeepClone深度克隆库,挺好用的。
代码如下:
static void Main(string[] args){ float[][] arr01 = new float[][] { new float[]{1,2,3}, new float[]{4,5,6}, new float[]{7,8,9} }; Console.WriteLine("翻转前:"); Console.WriteLine(getArrStr(arr01)); int len = arr01.Length; //你可以这样: //for (int i = 0; i < len; i++) //{ // temp[i] = new float[len]; // for (int j = 0; j < len; j++) // { // temp[i][j] = arr01[i][j]; // } //} //也可以这样 DeepClone库,深度克隆库 float[][] temp = arr01.DeepClone(); //但不能这样: //float[][] temp = arr01; for (int i = 0; i < temp.Length; i++) { for (int j = 0; j < len; j++) { if (i == j) { continue; } arr01[i][j] = temp[j][i]; //翻转数组 }}Console.WriteLine("结果");Console.WriteLine(getArrStr(arr01));
/// <summary>/// flattern Array/// </summary>/// <param name="arr"></param>/// <returns></returns>private static string getArrStr(float[][] arr){ StringBuilder sb = new StringBuilder(); for (int i = 0; i < arr.Length; i++) { sb.Append("\r\n"); for (int j = 0; j < arr.Length; j++) { sb.Append("\t" + arr[i][j].ToString("G3")); } } return sb.ToString();}
结果如下: