2301_77272461 2023-04-12 09:13 采纳率: 100%
浏览 130
已结题

c语言,将一个二维数组每行元素逆序存放

输入a={{1,2,3},{4,5,6}}
输出a={{3,2,1},{6,5,4}}

  • 写回答

10条回答 默认 最新

  • 语言-逆行者 2023-04-12 09:45
    关注

    img

    
    #include <stdio.h>
    
    int main() {
        // 定义一个二维数组 a
        int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
        int i, j, temp;
    
        // 遍历数组的每一行
        for (i = 0; i < 2; i++) {
            // 遍历行的一半
            for (j = 0; j < 3 / 2; j++) {
                // 使用临时变量 temp 来交换元素的位置
                temp = a[i][j];
                a[i][j] = a[i][3 - j - 1];
                a[i][3 - j - 1] = temp;
            }
        }
    
        // 输出结果
        for (i = 0; i < 2; i++) {
            for (j = 0; j < 3; j++) {
                printf("%d ", a[i][j]);
            }
            printf("\n");
        }
    
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 快乐鹦鹉 2023-04-12 09:19
    关注

    逐行首尾交换就行

    #include <stdio.h>
    int main()
    {
        int a[2][3] = {{1,2,3},{4,5,6}};
        for(int i=0;i<2;i++)
        {
            for(int j=0;j<3/2;j++)
            {
                int t = a[i][j];
                a[i][j] = a[i][2-j];
                a[i][2-j] = t;
            }
        }
        for(int i=0;i<2;i++)
        {
            for(int j=0;j<3;j++)
              printf("%d ",a[i][j]);
            printf("\n");
        }
    }
    
    
    评论 编辑记录
  • 「已注销」 2023-04-12 09:30
    关注

    以下内容部分参考ChatGPT模型:


    思路:遍历二维数组,对每一行进行逆序操作。

    代码示例:

    #include <stdio.h>
    #define ROW 2
    #define COL 3
    
    void reverse(int arr[], int n)
    {
        int temp;
        for(int i=0; i<n/2; i++)
        {
            temp = arr[i];
            arr[i] = arr[n-i-1];
            arr[n-i-1] = temp;
        }
    }
    
    int main()
    {
        int a[ROW][COL] = {{1, 2, 3}, {4, 5, 6}};
        for(int i=0; i<ROW; i++)
        {
            reverse(a[i], COL);
        }
        for(int i=0; i<ROW; i++)
        {
            for(int j=0; j<COL; j++)
            {
                printf("%d ", a[i][j]);
            }
            printf("\n");
        }
        return 0;
    }
    

    输出结果:

    3 2 1 
    6 5 4 
    

    如果我的建议对您有帮助、请点击采纳、祝您生活愉快

    评论
  • 一杯水果茶! 2023-04-12 10:12
    关注

    思路:

    1. 定义并初始化二维数组 a,如2行3列 a[2][3],注意行下标从0到1共2行,列下标从0到2共3列;
    int a[2][3] = { {1,2,3},{4,5,6} };
    
    1. 遍历二维数组 a 的每一行,对于每一行,进行列的逆序操作;
      逆序相当于把每一列和该行中对称的列交换数据,
      比如 a[2][3] 列有3列,从 a[i][0] 到 a[i][2],所以列的首尾的下标之和为 0 + 2 = 2,第 j 列的对称位置是 2-j,如第0列的对称列是第2列,只需交换 a[i][0] 和 a[i][2] 的数据即可。

    代码如下:

    // 给定二维数组版本
    #include <stdio.h>
     
    int main() {
        int a[2][3] = { {1,2,3},{4,5,6} };  // 定义并初始化二维数组 a,2行3列 a[2][3],行下标从0到1,列下标从0到2
     
        // 遍历二维数组a的每一行
        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < 3 / 2; j++) {  // 对于每一行,进行逆序操作
                int temp = a[i][j];
                a[i][j] = a[i][2-j];  // 注意列有3列,从 a[i][0] - a[i][2],所以首尾的下标之和为 0 + 2 = 2,j列的对称位置是 2-j
                a[i][2-j] = temp;
            }
        }
     
        // 输出逆序后的二维数组a
        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < 3; j++) {
                printf("%d ", a[i][j]);
            }
            printf("\n");
        }
     
        return 0;
    }
    

    输出如下:

    img

    如果要手动输入几行几列的二维数组,代码如下:

    #include <stdio.h>
    
    int main() {
        int m, n; // m 行 n 列 
        int a[50][50];  // 定义并初始化二维数组 a
    
        scanf("%d %d", &m,&n); // 输入 m 行 n 列
        // 逐行输入 二维数组
        for(int i = 0; i < m; i++){
            for(int j = 0; j < n; j++){
                scanf("%d", &a[i][j]); 
            }
        }
    
        // 遍历二维数组a的每一行
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n / 2; j++) {  // 对于每一行,进行逆序操作
                int temp = a[i][j];
                a[i][j] = a[i][n-1-j];  // 注意列有n列,从 a[i][0] - a[i][n-1],所以首尾的下标之和为 0 + (n-1) = n-1,j列的对称位置是 n-1-j
                a[i][n-1-j] = temp;
            }
        }
     
        // 输出逆序后的二维数组a
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                printf("%d ", a[i][j]);
            }
            printf("\n");
        }
     
        return 0;
    }
    

    输出:

    img

    img

    评论 编辑记录
  • 蓝白、波罗歌 2023-04-12 10:17
    关注

    以下答案由GPT-3.5大模型与博主波罗歌共同编写:
    以下是C语言实现该功能的代码:

    #include <stdio.h>
    #define ROW 2
    #define COL 3
    
    void reverse_2d_array(int a[][COL], int row, int col);
    
    int main()
    {
        int a[ROW][COL] = { {1, 2, 3}, {4, 5, 6} };
        printf("Original array:\n");
        for (int i = 0; i < ROW; i++)
        {
            for (int j = 0; j < COL; j++)
                printf("%d ", a[i][j]);
            printf("\n");
        }
        reverse_2d_array(a, ROW, COL);
        printf("Reversed array:\n");
        for (int i = 0; i < ROW; i++)
        {
            for (int j = 0; j < COL; j++)
                printf("%d ", a[i][j]);
            printf("\n");
        }
        return 0;
    }
    
    void reverse_2d_array(int a[][COL], int row, int col)
    {
        int temp;
        for (int i = 0; i < row; i++)
            for (int j = 0; j < col / 2; j++)
            {
                temp = a[i][j];
                a[i][j] = a[i][col - j - 1];
                a[i][col - j - 1] = temp;
            }
    }
    

    程序中定义了一个名为 reverse_2d_array 的函数来逆序存放每行元素。该函数的参数为二维数组 a、行数 row 和列数 col,采用了双重循环,其中外层循环控制行数,内层循环控制每行元素的逆序。

    程序中采用了宏定义 ROWCOL 来定义二维数组的行数和列数,方便修改和调整。在 main 函数中,首先输出原始数组,然后调用 reverse_2d_array 函数逆序存放每行元素,最后输出结果。

    以上代码执行结果如下:

    Original array:
    1 2 3 
    4 5 6 
    Reversed array:
    3 2 1 
    6 5 4 
    

    如果我的回答解决了您的问题,请采纳!

    评论
  • yy64ll826 2023-04-12 10:29
    关注

    可以借鉴下

    #include <stdio.h>
    int main()
    {
        int a[2][3] = { {1,2,3},{4,5,6} }, i, j, k, n;
        for (i = 0; i < 2; i++)
        {
            for (j = 0, k = 2; j < k; j++, k--)
            {
                n = a[i][j];
                a[i][j] = a[i][k];
                a[i][k] = n;
            }
        }
        for (i = 0; i < 2; i++)
        {
            for (j = 0; j < 3; j++)
            {
                printf("%d,", a[i][j]);
            }
        }
        return 0;
    }
    
    
    评论
  • teellyy 2023-04-12 10:50
    关注

    以下是C语言的代码实现,具体思路是使用双重循环遍历二维数组,对每一行进行逆序操作:

    #include <stdio.h>
    
    int main()
    {
        int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
        int i, j, temp;
    
        // 对每一行进行逆序操作
        for (i = 0; i < 2; i++) {
            for (j = 0; j < 3 / 2; j++) {
                temp = a[i][j];
                a[i][j] = a[i][2 - j];
                a[i][2 - j] = temp;
            }
        }
    
        // 输出结果
        for (i = 0; i < 2; i++) {
            for (j = 0; j < 3; j++) {
                printf("%d ", a[i][j]);
            }
            printf("\n");
        }
    
        return 0;
    }
    
    
    

    输出结果为:

    3 2 1 
    6 5 4 
    
    
    

    以上代码中,首先定义一个二维数组a并初始化,然后使用两个for循环对每一行进行逆序操作,最后输出结果。具体逆序操作是利用一个temp变量来交换数组元素的值,从而完成每行的逆序。

    评论
  • weixin_42846454 2023-04-12 14:15
    关注
    
    #include <stdio.h>
    #define ROW 2
    #define COL 3
    
    void reverse(int arr[][COL], int row)
    {
        int i, j, temp;
        for(i = 0; i < row; i++)
        {
            for(j = 0; j < COL / 2; j++)
            {
                temp = arr[i][j];
                arr[i][j] = arr[i][COL - j - 1];
                arr[i][COL - j - 1] = temp;
            }
        }
    }
    
    int main()
    {
        int arr[ROW][COL] = {{1, 2, 3}, {4, 5, 6}};
        int i, j;
    
        printf("原数组:\n");
        for(i = 0; i < ROW; i++)
        {
            for(j = 0; j < COL; j++)
            {
                printf("%d ", arr[i][j]);
            }
            printf("\n");
        }
    
        reverse(arr, ROW);
    
        printf("\n逆序后的数组:\n");
        for(i = 0; i < ROW; i++)
        {
            for(j = 0; j < COL; j++)
            {
                printf("%d ", arr[i][j]);
            }
            printf("\n");
        }
    
        return 0;
    }
    
    

    输出结果如下:

    原数组:
    1 2 3 
    4 5 6 
    
    逆序后的数组:
    3 2 1 
    6 5 4
    
    
    

    该程序中,使用双重循环遍历每一行的元素,然后交换对称位置的元素,实现逆序存放。函数reverse的参数arr表示输入的二维数组,参数row表示行数,通过传递参数的方式进行处理,使得函数具有通用性。最后,主函数中调用reverse函数,实现对输入数组的逆序存放,输出结果即为所求。

    评论
  • Tristan Tsai 2023-04-12 14:17
    关注
    
     
    #include <stdio.h>
     
    int main() {
        int array_test[2][3] = {{1,2,3},{4,5,6}};  // 定义并初始化二维数组
        int i, j k;
        int temp;
    
        // 遍历二维数组的每一行,对每一行进行逆序操作
        for (i = 0; i < 2; i++) {
            j = 2;  // j指向当前行最后一个元素
            for (k = 0; k < 3 / 2; k++) {  // 对每一行进行逆序操作
                temp = array_test[i][k];
                array_test[i][k] = array_test[i][j];
                array_test[i][j] = temp;
                j--;  // 移动j指针
            }
        }
     
        // 输出逆序后的二维数组
        printf("{");
        for (i = 0; i < 2; i++) {
            printf("{");
            for (j = 0; j < 3; j++) {
                printf("%d, ", array_test[i][j]);
            }
            printf("}, ");
        }
        printf("}");
    
        return 0;
    }
     
    
    评论 编辑记录
  • 独处东汉 2023-04-13 13:31
    关注

    太卷了,回答了这么多答案还没被采纳

    评论
查看更多回答(9条)

报告相同问题?

问题事件

  • 系统已结题 4月22日
  • 已采纳回答 4月14日
  • 创建了问题 4月12日

悬赏问题

  • ¥15 matlab+波形匹配算法
  • ¥15 转录组分析做聚类树图时癌旁组被分到了癌组
  • ¥15 大一Python字典
  • ¥15 multisim电路设计(相关搜索:设计报告)
  • ¥15 PC-lint Plus
  • ¥15 gpl24676注释
  • ¥15 php5.3内存泄露
  • ¥15 DigSilent如何复制复合模型到自己案例?
  • ¥15 求日版华为b610s-77a 官方公版固件,有偿
  • ¥15 关于#java#的问题,请各位专家解答!(相关搜索:java程序)