在你的代码中有几个问题需要修正。
首先,你的函数`arr`参数类型应该是一个二维数组,而不是一个整数。修正后的函数定义应该如下:其次,在你的数组初始化部分,应该使用大括号 `{}` 而不是小括号 `()`。修正后的初始化部分应该如下:int a[4][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};
最后,在你的循环中,交换元素的部分有问题。你需要使用一个临时变量来保存要交换的值。修正后的`arr`函数如下:void arr(int a[4][4]){ int i, j, t; for (i = 0; i < 4; i++) { for (j = i+1; j < 4; j++) { t = a[i][j]; a[i][j] = a[j][i]; a[j][i] = t; } }}
这样,你的程序就能正确地完成数组行列转换了。完整的修正后的代码如下:#include <stdio.h>void arr(int a[4][4]){ int i, j, t; for (i = 0; i < 4; i++) { for (j = i+1; j < 4; j++) { t = a[i][j]; a[i][j] = a[j][i]; a[j][i] = t; } }}int main() { int i, j; int a[4][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}}; arr(a); for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { printf("%d ", a[i][j]); } printf("\n"); } return 0;}
输出:1 5 9 132 6 10 143 7 11 154 8 12 16
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。 |