大学一年级c语言的小测试

写一个函数名为Transp,使得给定的一个2x2的二维数组转置,即行列互换。
要求:
(1)在主函数main中调用子函数Transp实现二维数组转置;
(2)输入输出二维数组在主函数main中实现。

如果只是将2x2的二维数组转置的话, 我认为可以简化为将左下角元素和右上角元素交换就可以了,因为左上角和右下角的元素转置后没变。

代码如下:

参考链接:


C语言二维数组作为函数参数传递_c语言传入二维数组_bigbee2333的博客-CSDN博客 二维数组存放方式二维数组在内存中是按行存放的,先存储第一行,在接着存储第二行…..二维数组作为函数参数二维数组作为函数的参数,实参可以直接使用二维数组名,在被调用函数中可以定义形参所有维数的大小,也可以省略以为大小的说明。例如:void find(char a[3][10]);void find (char a[ ][10]);也可以使用数组指针来作为函数参数,例如:... https://blog.csdn.net/weixin_41666244/article/details/80615661

https://matrix.reshish.com/zh/transpose.php



#include <stdio.h>

// https://blog.csdn.net/weixin_39791665/article/details/104592286 
// https://blog.csdn.net/weixin_41666244/article/details/80615661
void Transp(int arr[][2]){
    
    // 因为只需要转置2x2的数组,而2x2数组的左上角和右下角交换后位置没变
    // 所需要交换左下角和右上角的元素即可。 
   // https://matrix.reshish.com/zh/transpose.php
    int temp = arr[0][1];
    arr[0][1]=arr[1][0];
    arr[1][0]=temp;
    
    
} 

int main(void){
    
    int arr[2][2]={{1,2,},{3,4}};
    
    printf("2x2数组转置前:\n");
    for(int i=0;i<2;i++){
        for(int j=0;j<2;j++){
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
    
    Transp(arr);
    
    printf("2x2数组转置后:\n");
    for(int i=0;i<2;i++){
        for(int j=0;j<2;j++){
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
    
    
}

img