c语言怎么实现二维数组的转置输入

二维数组的转置是将一个二维数组的行列互换,得到一个新的二维数组,在C语言中,我们可以通过遍历原数组,将元素按照新的顺序放入新的数组中来实现二维数组的转置。

c语言怎么实现二维数组的转置输入
(图片来源网络,侵删)

以下是一个简单的C语言实现二维数组转置的示例:

1、我们需要定义一个二维数组,并初始化它,我们定义一个3行4列的二维数组,并给它赋值:

int arr[3][4] = {
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12}
};

2、我们需要定义一个新的二维数组,用于存放转置后的数据,由于原数组是3行4列的,所以转置后的数组应该是4行3列的,我们可以使用动态内存分配来创建这个新数组:

int rows = 3;
int cols = 4;
int transpose_rows = cols;
int transpose_cols = rows;
int *transpose_arr = (int *)malloc(transpose_rows * transpose_cols * sizeof(int));
if (transpose_arr == NULL) {
    printf("内存分配失败!
");
    return 1;
}

3、接下来,我们需要遍历原数组,并将元素按照新的顺序放入新数组中,我们可以使用两层嵌套循环来实现这个功能:

for (int i = 0; i < rows; i++) {
    for (int j = 0; j < cols; j++) {
        transpose_arr[j * transpose_rows + i] = arr[i][j];
    }
}

这里,外层循环遍历原数组的行,内层循环遍历原数组的列,我们将原数组的元素按照新的顺序放入新数组中,即transpose_arr[j * transpose_rows + i],这样,我们就实现了二维数组的转置。

4、我们需要释放新数组所占用的内存:

free(transpose_arr);

至此,我们就完成了二维数组的转置,以下是完整的代码示例:

#include <stdio.h>
#include <stdlib.h>
int main() {
    int rows = 3;
    int cols = 4;
    int transpose_rows = cols;
    int transpose_cols = rows;
    int *transpose_arr = (int *)malloc(transpose_rows * transpose_cols * sizeof(int));
    if (transpose_arr == NULL) {
        printf("内存分配失败!
");
        return 1;
    }
    int arr[3][4] = {
        {1, 2, 3, 4},
        {5, 6, 7, 8},
        {9, 10, 11, 12}
    };
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            transpose_arr[j * transpose_rows + i] = arr[i][j];
        }
    }
    for (int i = 0; i < transpose_rows; i++) {
        for (int j = 0; j < transpose_cols; j++) {
            printf("%d ", transpose_arr[i * transpose_cols + j]);
        }
        printf("
");
    }
    free(transpose_arr);
    return 0;
}

运行上述代码,我们可以得到如下输出:

1 5 9 
2 6 10 
3 7 11 
4 8 12 

这就是原二维数组的转置结果。

原创文章,作者:酷盾叔,如若转载,请注明出处:https://www.kdun.com/ask/360067.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
酷盾叔订阅
上一篇 2024-03-21 16:05
下一篇 2024-03-21 16:06

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入