张世来4610484 发表于 2020-2-19 19:26:39

将三行四列的矩阵,转置输出

输入一个三行四列的矩阵,专置后输出,代码如下,为什么我的最后一行有乱码,请高人指教,哪里错了
#include <stdio.h>
void main ()
{
        int i,j,a,b;
        for(i=0;i<3;i++)
        {
                scanf("%d%d%d%d",&a,&a,&a,&a);
               
        }
        for(i=0;i<3;i++)
        {        for(j=0;j<4;j++)
        {
                b=a;
        }
        }
        for(i=0;i<4;i++)
        {        for(j=0;j<3;j++)
                        printf("%4d ",b);
        printf("\n");

        }       
}

qiuyouzhi 发表于 2020-2-19 19:31:33

你这代码写的也太乱了点。。。。。
缩进根本判断不清楚

萌新3 发表于 2020-2-19 20:14:36

输出的四行三列

4goodworld 发表于 2020-2-19 21:12:06

本帖最后由 4goodworld 于 2020-2-19 21:25 编辑

我突然发现

你好像写错了
应该是

scanf("%d %d %d %d", &a, &a, &a, &a);
才对
建议写成这样子,更清晰
int test6(){


                int i, j, a, b;
                for (i = 0; i < 3; i++)
                {
                        for (j = 0; j < 4; j++)
                        {
                                scanf("%d", &a);
                        }
                        //scanf("%d %d %d %d", &a, &a, &a, &a);

                }
                for (i = 0; i < 3; i++)
                {
                        for (j = 0; j < 4; j++)
                        {
                                b = a;
                               
                        }
                }
                for (i = 0; i < 4; i++)
                {
                        for (j = 0; j < 3; j++) {
                                printf("%4d", b);
                        }
                        printf("\n");

                }

        return 0;
}

int main() {

        test6();
        return 0;
}

龙龙龙龙龙龙 发表于 2020-2-19 21:41:47

是scanf那里错了
#include <stdio.h>
void main ()
{
    int i,j,a,b;
    for(i=0; i<3; i++)
    {
      scanf("%d%d%d%d",&a,&a,&a,&a);

    }



    for(i=0; i<3; i++)
    {
      for(j=0; j<4; j++)
      {
            b=a;
      }
    }



    for(i=0; i<4; i++)
    {
      for(j=0; j<3; j++)
      {
             printf("%-4d ",b);
      }
      printf("\n");
    }
}

想二维数组用二重循环比较好,稍微简洁一些
#include <stdio.h>
void main ()
{
    int a;
    int i,j;

    for(i=0; i<3; i++)
    {
      for(j=0; j<4; j++)
      {
            scanf("%d",&a);
      }
    }

    for(i=0; i<3; i++)
    {
      for(j=0; j<4; j++)
      {
             printf("%-2d",a);
      }
      printf("\n");
    }
}

页: [1]
查看完整版本: 将三行四列的矩阵,转置输出