叶依兰 2022-03-04 20:51 采纳率: 100%
浏览 78
已结题

关于#c语言#的问题:2) 不允许使用数组下标访问数组元素或为数组元素赋值

声明一个3×2的二维整型数组arr,其数组元素通过控制台输入。输出输入的数组,转置,输出转置后的数组。要求:1) 声明一个以指向数组行的指针变量为参数的函数并在main函数中调用,该函数把arr中的元素转置;2) 不允许使用数组下标访问数组元素或为数组元素赋值。

  • 写回答

2条回答 默认 最新

  • 关注
    
    #include<stdio.h>
    #define M 10
    #define N 10
    void Transpose(int (*a)[N], int (*at)[M], int m, int n);
    void InputMatrix(int (*a)[N], int m, int n);
    void PrintMatrix(int (*at)[M], int n, int m);
    int main()
    {
        int s[M][N],st[N][M],m,n;// 1 2 3 4 5 6 7 8 9
        printf("Input m, n:");
        scanf("%d %d",&m,&n);
        InputMatrix(s,m,n);
        Transpose(s,st,m,n);
        printf("The transposed matrix is:\n");
        PrintMatrix(st,n,m);
        return 0;
    }
    void Transpose(int (*a)[N], int (*at)[M], int m, int n)
    {
        int i,j;
        for(i=0; i<m; i++)
            for(j=0; j<n; j++)
                *(*(at+j)+i)=*(*(a+i)+j);
    }
    void InputMatrix(int (*a)[N], int m, int n)
    {
        int i,j;
        printf("Input %d*%d matrix:\n",m,n);
        for(i=0; i<m; i++)
            for(j=0; j<n; j++)
                scanf("%d",*(a+i)+j);
    }
    void PrintMatrix(int (*at)[M], int n, int m)
    {
        int i,j;
        for(i=0; i<n; i++)
        {
            for(j=0; j<m; j++)
                printf("%3d",*(*(at+i)+j));
            printf("\n");
        }
    }
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月6日
  • 已采纳回答 3月6日
  • 请提交代码 3月5日
  • 创建了问题 3月4日

悬赏问题

  • ¥20 ARKts悬浮窗和快捷方式问题
  • ¥15 comparecluster没有办法kegg
  • ¥15 远程访问linux主机超时
  • ¥15 odoo17存货管理优势于中国国内该行业传统ERP或MES的详细解读和举例
  • ¥15 CPU卡指令整合指令数据都在图片上
  • ¥15 odoo17处理受托加工产品
  • ¥15 如何用MATLAB编码图三的积分
  • ¥15 圆孔衍射光强随孔径变化
  • ¥15 MacBook pro m3max上用vscode运行c语言没有反应
  • ¥15 ESP-PROG配置错误,ALL ONES