一只超大的甲鱼 发表于 2022-12-19 16:00:47

函数 二维数组 指针

1、将一个3X3的矩阵转置,用一个自定义函数实现矩阵的转置过程。

在主函数中用scanf函数输入以下矩阵元素:

    1    3   5

    7    9    11

    1315    17

将数组名作为函数实参,在执行函数的过程中实现矩阵转置,函数调用结束后在主函数中输出已转置的矩阵。



预取输出的结果:

1   713

3   915

5    1117


楼主刚学C不久,对这种地址有关的问题困惑比较大,麻烦注释一下一些赋址或传递地址的关键语句让我看看到底是怎么理解的,谢谢啦。

jhq999 发表于 2022-12-19 17:23:32

本帖最后由 jhq999 于 2022-12-19 18:30 编辑


int zz(int *a,int N)
{
        int (*b)=(int(*))a;
    for(int i=0;i<N-1;i+=1)
    {
      for(int j=i+1;j<N;j+=1)
      {
            int tmp=b;//让矩阵的位置对角线(i,j)(j,i)调换
            b=b;
            b=tmp;
      }
    }
        return 0;
}
int main()
{
    int i,j,N;
    scanf("%d",&N);
    int a;
    for(i=0;i<N;i+=1)
    {
      for(j=0;j<N;j+=1)
      {
            scanf("%d",&a);
      }
    }
    zz(a,N);
    for(i=0;i<N;i+=1)
    {
      for(j=0;j<N;j+=1)
      {
            printf("%4d",a);
      }
      printf("\n");
    }

    return 0;
}



傻眼貓咪 发表于 2022-12-19 18:22:56

#include <stdio.h>

void foo(int arr[]) {
        for (int r = 0; r < 3; ++r) {
                for (int c = 0, temp; c < r; ++c) {
                        temp = arr;
                        arr = arr;
                        arr = temp;
                }
        }
}

int main(void) {
        int arr = {
                {1, 2, 3},
                {4, 5, 6},
                {7, 8, 9}
        };
        foo(arr);
        for (int i = 0; i < 3; ++i) {
                for (int j = 0; j < 3; ++j) {
                        printf("%d ", arr);
                }
                printf("\n");
        }
        return 0;
}
页: [1]
查看完整版本: 函数 二维数组 指针