huafeng 发表于 2023-11-24 21:50:21

数组行列转换

#include<stdio.h>
void arr(int a)
{
    int i, j, t;
    for (i = 0; i < 4; i++) {
      for (j = 0; j < 4; j++) {
            t = a;
            a = a;
            a = t;
      }
    }
}
int main()
{
    int i, j;
    int a = { {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);
      }
      printf("\n");
    }
    return 0;
}
运行后还是原样输出,转换不了

FishC_GPT 发表于 2023-11-24 21:51:18

在你的代码中有几个问题需要修正。

首先,你的函数`arr`参数类型应该是一个二维数组,而不是一个整数。修正后的函数定义应该如下:

void arr(int a)

其次,在你的数组初始化部分,应该使用大括号 `{}` 而不是小括号 `()`。修正后的初始化部分应该如下:

int a = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};

最后,在你的循环中,交换元素的部分有问题。你需要使用一个临时变量来保存要交换的值。修正后的`arr`函数如下:

void arr(int a)
{
    int i, j, t;
    for (i = 0; i < 4; i++) {
      for (j = i+1; j < 4; j++) {
            t = a;
            a = a;
            a = t;
      }
    }
}

这样,你的程序就能正确地完成数组行列转换了。完整的修正后的代码如下:

#include <stdio.h>

void arr(int a)
{
    int i, j, t;
    for (i = 0; i < 4; i++) {
      for (j = i+1; j < 4; j++) {
            t = a;
            a = a;
            a = t;
      }
    }
}

int main()
{
    int i, j;
    int a = {{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);
      }
      printf("\n");
    }
    return 0;
}

输出:

1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 数组行列转换