鱼C论坛

 找回密码
 立即注册
查看: 1477|回复: 4

[已解决]将三行四列的矩阵,转置输出

[复制链接]
发表于 2020-2-19 19:26:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
输入一个三行四列的矩阵,专置后输出,代码如下,为什么我的最后一行有乱码,请高人指教,哪里错了
  1. #include <stdio.h>
  2. void main ()
  3. {
  4.         int i,j,a[3][4],b[4][3];
  5.         for(i=0;i<3;i++)
  6.         {
  7.                 scanf("%d%d%d%d",&a[i][0],&a[i][1],&a[i][1],&a[i][2]);
  8.                
  9.         }
  10.         for(i=0;i<3;i++)
  11.         {        for(j=0;j<4;j++)
  12.         {
  13.                 b[j][i]=a[i][j];
  14.         }
  15.         }
  16.         for(i=0;i<4;i++)
  17.         {        for(j=0;j<3;j++)
  18.                         printf("%4d ",b[i][j]);
  19.         printf("\n");

  20.         }       
  21. }
复制代码

5.PNG
最佳答案
2020-2-19 21:12:06
本帖最后由 4goodworld 于 2020-2-19 21:25 编辑

我突然发现

你好像写错了
应该是

  1. scanf("%d %d %d %d", &a[i][0], &a[i][1], &a[i][2], &a[i][3]);
复制代码

才对
建议写成这样子,更清晰
  1. int test6(){


  2.                 int i, j, a[3][4], b[4][3];
  3.                 for (i = 0; i < 3; i++)
  4.                 {
  5.                         for (j = 0; j < 4; j++)
  6.                         {
  7.                                 scanf("%d", &a[i][j]);
  8.                         }
  9.                         //scanf("%d %d %d %d", &a[i][0], &a[i][1], &a[i][1], &a[i][2]);

  10.                 }
  11.                 for (i = 0; i < 3; i++)
  12.                 {
  13.                         for (j = 0; j < 4; j++)
  14.                         {
  15.                                 b[j][i] = a[i][j];
  16.                                
  17.                         }
  18.                 }
  19.                 for (i = 0; i < 4; i++)
  20.                 {
  21.                         for (j = 0; j < 3; j++) {
  22.                                 printf("%4d", b[i][j]);
  23.                         }
  24.                         printf("\n");

  25.                 }

  26.         return 0;
  27. }

  28. int main() {

  29.         test6();
  30.         return 0;
  31. }
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-19 19:31:33 | 显示全部楼层
你这代码写的也太乱了点。。。。。
缩进根本判断不清楚
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-19 20:14:36 | 显示全部楼层
输出的四行三列
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-19 21:12:06 | 显示全部楼层    本楼为最佳答案   
本帖最后由 4goodworld 于 2020-2-19 21:25 编辑

我突然发现

你好像写错了
应该是

  1. scanf("%d %d %d %d", &a[i][0], &a[i][1], &a[i][2], &a[i][3]);
复制代码

才对
建议写成这样子,更清晰
  1. int test6(){


  2.                 int i, j, a[3][4], b[4][3];
  3.                 for (i = 0; i < 3; i++)
  4.                 {
  5.                         for (j = 0; j < 4; j++)
  6.                         {
  7.                                 scanf("%d", &a[i][j]);
  8.                         }
  9.                         //scanf("%d %d %d %d", &a[i][0], &a[i][1], &a[i][1], &a[i][2]);

  10.                 }
  11.                 for (i = 0; i < 3; i++)
  12.                 {
  13.                         for (j = 0; j < 4; j++)
  14.                         {
  15.                                 b[j][i] = a[i][j];
  16.                                
  17.                         }
  18.                 }
  19.                 for (i = 0; i < 4; i++)
  20.                 {
  21.                         for (j = 0; j < 3; j++) {
  22.                                 printf("%4d", b[i][j]);
  23.                         }
  24.                         printf("\n");

  25.                 }

  26.         return 0;
  27. }

  28. int main() {

  29.         test6();
  30.         return 0;
  31. }
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-19 21:41:47 | 显示全部楼层
是scanf那里错了
  1. #include <stdio.h>
  2. void main ()
  3. {
  4.     int i,j,a[3][4],b[4][3];
  5.     for(i=0; i<3; i++)
  6.     {
  7.         scanf("%d%d%d%d",&a[i][0],&a[i][1],&a[i][2],&a[i][3]);

  8.     }



  9.     for(i=0; i<3; i++)
  10.     {
  11.         for(j=0; j<4; j++)
  12.         {
  13.             b[j][i]=a[i][j];
  14.         }
  15.     }



  16.     for(i=0; i<4; i++)
  17.     {
  18.         for(j=0; j<3; j++)
  19.         {
  20.              printf("%-4d ",b[i][j]);
  21.         }
  22.         printf("\n");
  23.     }
  24. }
复制代码


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

  6.     for(i=0; i<3; i++)
  7.     {
  8.         for(j=0; j<4; j++)
  9.         {
  10.             scanf("%d",&a[i][j]);
  11.         }
  12.     }

  13.     for(i=0; i<3; i++)
  14.     {
  15.         for(j=0; j<4; j++)
  16.         {
  17.              printf("%-2d",a[i][j]);
  18.         }
  19.         printf("\n");
  20.     }
  21. }
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-11 02:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表