编写一个函数,将二维数组(n*m)转置.在main函数中调用该函数并输出结果.来人啊

如题所述

方法很多。
看前面都有答了。
就写个指针的方法:
用指向指针的指针来实现倒置后的二维数组。
倒置后原数组不变。

#include <stdio.h>
#include <malloc.h>
#define ROW 2
#define CLO 3
int **fzz(int a[][CLO]);
void printfARR(int **arr);
int main()
{
    int i,j,arr[ROW][CLO]={{1,2,3},{4,5,6}},**p=fzz(arr);
    printf("原数组:\n");
    for(i=0;i<ROW;i++,printf("\n"))
        for(j=0;j<CLO;j++)
            printf("%d ",arr[i][j]);
     printf("倒置后的数组:\n");
     for(i=0;i<CLO;i++,printf("\n"))
        for(j=0;j<ROW;j++)
            printf("%d ",p[i][j]);
    return 0;
}
void printfARR(int **arr)
{
    int i,j;
    for(i=0;i<ROW;i++,printf("\n"))
        for(j=0;j<CLO;j++)
            printf("%d ",arr[i][j]);
}
int **fzz(int arr[][CLO])
{
    int i,j,**arr2=(int **)malloc(sizeof(int *)*CLO);
    if(!arr2)
        return NULL;
    for(i=0;i<CLO;i++)
    {
        arr2[i]=(int *)malloc(sizeof(int)*ROW);
        if(!arr2[i])
            return NULL;
        for(j=0;j<ROW;j++)
            arr2[i][j]=arr[j][i];
    }
    return arr2;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-04-30
float avr(int a[],int n) { int i; float s=0; for(i=0;i<n;i++) s+=a[i]; return s/n ; } mean = avr(m,5); printf("数组m中前5个元素的平均值= %4.2f \n",mean );
第2个回答  2019-04-30
#include<stdio.h>
void func(int array[4][4])
{
int temp=0;
int i,j;
for(i=0;i<4;i++)
for(j=i+1;j<4;j++)
{
temp=array[i][j];
array[i][j]=array[j][i];
array[j][i]=temp;
}
}
void main()
{
int test[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int i,j;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
printf("%d ",test[i][j]);
printf("\n");
}
func(test);
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
printf("%d ",test[i][j]);
printf("\n");
}
}本回答被网友采纳
相似回答