写一个函数,使给定的一个m*n的二维整型数组转置,要求函数参数是数组名.

请说下,写一个函数,使给定的一个m*n的二维整型数组转置,要求函数参数是数组名.
最新回答
晚春里

2024-10-18 05:42:14

在原二维数组上进行修改的C语言代码和运行结果如下:

注意函数的输入参数为二维数组时,必须显示地标明数组的列数,而行数可以省略;

转置时要遍历数组的所有下三角元素(满足j<i),再交换a[i][j]和a[j][i]即可

如果帮到你,望采纳~

附源码:

#include <stdio.h>

#define M 3 

#define N 3

void transpose(int a[][N]) { // 注意输入二维数组时列数必须显示给出

    int i, j, t;

    for (i = 0; i < M; i++) {

        for (j = 0; j < i; j++) { // 遍历所有下三角元素

            t = a[i][j];

            a[i][j] = a[j][i];

            a[j][i] = t; // 交换a[i][j]和a[j][i]

        }

    }

}

int main() {

    int i, j, a[M][N];

    for (i = 0; i < M; i++) 

        for (j = 0; j < N; j++)

            scanf("%d", &a[i][j]); // 输入二维数组每个元素

    transpose(a);

    printf("转置后:\n");

    for (i = 0; i < M; i++) {

        for (j = 0; j < N; j++)

            printf("%d ", a[i][j]);

        printf("\n");

    }

    return 0;

}

空城仅有旧梦在

2024-10-18 07:03:29

int change(int a[][], int b[][], int m, int n)
{ int i,j;
for(i=0; i<m;i++)
for(j=0; j<n; j++)
b[j][i]=a[i][j];
return b;
}