鱼C论坛

 找回密码
 立即注册
查看: 1865|回复: 2

[已解决]s1e25动动手第0题,输出不正确,求助

[复制链接]
发表于 2022-9-26 08:52:48 | 显示全部楼层 |阅读模式

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

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

x
通过中间加入检查,过程都正确,只是最后输出时,参照第一个矩阵敲入的后面两个,结果第一个不能正确输出了。求助第一个为什么不能正确输出结果。
  1. #include<stdio.h>

  2. int main()
  3. {
  4. int m,n,p,q;
  5. int i,j,k,x,row;
  6. printf("请输入第一个矩阵的尺寸(M*P);");
  7. scanf("%d",&m);
  8. getchar();
  9. scanf("%d",&p);
  10. printf("请输入第二个矩阵的尺寸(P*N);");
  11. scanf("%d",&q);
  12. getchar();
  13. scanf("%d",&n);
  14. if(p!=q)printf("矩阵尺寸不能计算");

  15. int array1[m][p];
  16. printf("请输入第一个矩阵的值:\n");
  17. for(i=0;i<m;i++)
  18. {
  19.         for(j=0;j<p;j++)
  20.         {
  21.                 scanf("%d",&array1[i][j]);
  22.         }
  23.         getchar();
  24. }
  25. //临时检查用输出
  26. //输出第一个矩阵值
  27. //printf("第一个矩阵值\n");
  28. //for(i=0;i<m;i++)
  29. //{
  30. //        for(j=0;j<p;j++)
  31. //        {
  32. //                printf("%d ",   array1[i][j]);
  33. //        }
  34. //        printf("\n");
  35. //}





  36. printf("请输入第二个矩阵的值:\n");
  37. int array2[p][n];
  38. for(i=0;i<p;i++)
  39. {
  40.         for(j=0;j<n;j++)
  41.         {
  42.                 scanf("%d",&array2[i][j]);
  43.         }
  44.         getchar();
  45. }
  46. //临时检查输入用,输出第二个矩阵值
  47. //printf("第二个矩阵值\n");
  48. //for(i=0;i<p;i++)
  49. //{
  50. //        for(j=0;j<n;j++)
  51. //        {
  52. //                printf("%d ",array2[i][j]);
  53. //        }
  54. //        printf("\n");
  55. //}

  56. //计算矩阵值
  57. int array3[m][n];
  58. for(i=0;i<m;i++) //矩阵赋初值为0
  59. {
  60.         for(j=0;j<n;j++)
  61.         {
  62.                 array3[i][j]=0;
  63.         }
  64. }
  65. for(i=0;i<m;i++)  //矩阵相乘计算
  66. {
  67.         for(j=0;j<n;j++)
  68.         {
  69.                 for(k=0;k<p;k++)
  70.                 {
  71.                         array3[i][j]+=array1[i][k]*array2[k][j];
  72.                 }

  73.         }

  74. }
  75. //临时检查,输出运算结果矩阵值
  76. //printf("第三个矩阵计算结果\n");
  77. //for(i=0;i<m;i++)
  78. //{
  79. //        for(j=0;j<n;j++)
  80. //        {
  81. //                printf("%d ",array3[i][j]);
  82. //        }
  83. //        printf("\n");
  84. //}



  85. //输出
  86. row=m>p?m:p;
  87. for(i=0;i<row;i++)
  88. {
  89.         //打印第一个矩阵行
  90.         printf("| ");
  91.         for(j=0;k<p;j++)
  92.         {
  93.                 if(i<m)
  94.                 {
  95.                         printf("\b%d ",array1[i][j]);
  96.                         printf("|");
  97.                 }
  98.                 else
  99.                 {
  100.                         printf("\b\b\b   ");
  101.                 }
  102.         }

  103.         //打印*号
  104.         if(i==row/2)
  105.         {
  106.                 printf(" * ");
  107.         }       
  108.         else
  109.         {
  110.                 printf("   " );
  111.         }
  112.         //打印第二个矩阵行
  113.         printf("| ");
  114.         for(j=0;j<n;j++)
  115.         {
  116.                 if(i<p)
  117.                 {
  118.                         printf("\b%d ",array2[i][j]);
  119.                         printf("|");
  120.                 }
  121.                 else
  122.                 {
  123.                         printf("\b\b\b   ");
  124.                 }

  125.         }       
  126.         //打印=号
  127.         if(i==row/2)
  128.         {
  129.                 printf(" = ");
  130.         }
  131.         else
  132.         {
  133.                 printf("   ");
  134.         }
  135.         //打印第三个矩阵行
  136.         printf("| ");
  137.         for(j=0;j<n;j++)
  138.         {
  139.                 if(i<m)
  140.                 {
  141.                         printf("\b%d ",array3[i][j]);
  142.                         printf("|");
  143.                 }
  144.                 else
  145.                 {
  146.                         printf("\b\b\b   ");
  147.                 }
  148.         }
  149.         printf("\n");
  150. }
  151. return 0;

  152. }
复制代码


屏幕截图 2022-09-26 084937.jpg
最佳答案
2022-9-26 11:42:14
  1.         for(j=0;k<p;j++)
复制代码


第104行  改成 j<p
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-26 11:42:14 | 显示全部楼层    本楼为最佳答案   
  1.         for(j=0;k<p;j++)
复制代码


第104行  改成 j<p
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-26 11:48:58 | 显示全部楼层

谢谢,检查了几遍,居然没有看到这么脑残的错误。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-23 02:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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