Zijeak
2018-10-31 13:53
采纳率: 66.7%
浏览 1.1k
已采纳

【C语言】有关数组转置与指针应用的题目,求大佬解答

编写函数实现矩阵(4行4列)的转置。要求函数的实参为数组名,形参为指针形式。

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • dabocaiqq 2018-10-31 14:27
    已采纳
    #include <stdio.h>
    void fun(int (*p1)[4],int (*p2)[4]);
    int main()
    {
        int p1[4][4]={0} ,p2[4][4] = {0};//{7,8,9,1},{4,5,6,1},{1,2,4,1},{1,1,1,1}};
        
        int i = 0, j = 0;
    
        for(i = 0;i < 4;i++){
            for(j = 0;j < 4;j++){
                scanf("%d",&p2[i][j]);
            }
        }    
    //    printf("输入一个4*4矩阵:\n");
    //    scanf("%d",p2);
        fun(p1,p2);
        for(i = 0;i < 4;i++){
            for(j = 0;j < 4;j++){
                printf("%d ",*(*(p1+i)+j));    
            }
            printf("\n");
        }        
        
    
        return 0;
    }
    void fun(int (*p1)[4],int (*p2)[4])
    {
        int i = 0,j = 0;
    
        for(i = 0;i < 4;i++){
            for(j = 0;j < 4;j++){
                
                *(p1[j]+i) = *(p2[i]+j);
            }
        }
    }
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • devmiao 2018-10-31 14:16
    评论
    解决 无用
    打赏 举报
  • Italink 2018-10-31 14:21
     #include<stdio.h>
    void trans(int (*a)[4]) {
        int tmp;
        for (int i = 0; i < 3; i++) {
            for (int j = i+1; j < 4; j++) {
                tmp = a[i][j];
                a[i][j] = a[j][i];
                a[j][i] = tmp;
            }
        }
    }
    int main() {
        int a[4][4] = {
        {1,2,3,4},
        {5,6,7,8},
        {1,1,1,1},
        {2,2,2,2}
        };
        trans(a);
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 4; j++) {
                printf("%d ", a[i][j]);
            }
            printf("\n");
        }
        return 0;
    }
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题