题目来源:

C语言程序设计(第四版)/ 第七章 / 习题7.3

题目要求:

写一个函数,使给定的一个3 × 3的二维整型数组转置,即行列互换。

具体思路:

将给定的二维整型数组a用另外一个二维数组b备份,再用数组b将原给定的数组a覆盖。

代码实现:

int main(){// 声明函数void td_array_turn(int array[3] [3]);void print_td_array(int array[3] [3]);int i, j, a[3] [3] = {{1,2,3},{4,5,6},{7,8,9}};// 调用函数printf("二维数组a的值为:\n");print_td_array(a);td_array_turn(a);printf("行列转换后的值为:\n");print_td_array(a);}// 定义输出二维数组的函数void print_td_array(int array[3] [3]){int i, j;for (i=0; i<3; i++){for (j=0; j<3; j++)printf("%d ", array[i] [j]);printf("\n");}}// 定义转置二维数组的函数void td_array_turn(int array[3] [3]){int i, j, k, b[3] [3];// k这层控制两次循环,第一次循环将数组a暂存至数组b,第二次循环将数组b覆盖至数组afor (k=0; k<2; k++)for (i=0; i<3; i++)for (j=0; j<3; j++)// 用条件运算符进行判断(k==0) ? (b[i] [j]=array[i] [j]) : (array[i] [j]=b[j] [i]);}

代码已通过编译,由于是第七章的习题,所以只用到了第七章及之前所学到的知识点,因此代码可能不够简洁。此处只是提供一个思路,大家相互学习,有待改进或理解有误的地方欢迎指正。