【问题标题】:Trouble Printing a Matrix in C在 C 中打印矩阵时遇到问题
【发布时间】:2014-04-14 21:20:04
【问题描述】:

我认为这归结为 数据类型 我用于矩阵的内容,但搜索了一段时间后,我似乎无法找到一个明确的答案,它是如何应该看。另一方面,如果您发现其他部分有问题,也请告诉我。谢谢!

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>

int main () {
  double a[][3] = {
                    {1.,2./3.,3.},
                    {4.,5.,6.},
                    {7.,8.,9.}
                   };
  int x, y;

  for (x = 0; x < 3; x++) {
    printf("\n\t\t");
    for (y = 0; y < 3; y++) {
      printf("%5d", a[x][y]);
    }//End y loop
  }//End x loop

  printf("\n\n\t");
  system("pause");

  return 0;
} //End main

代码输出如下:

          01610612736    0
          0    0    0
          0    0    0

按任意键继续。 . .

【问题讨论】:

    标签: c matrix printing


    【解决方案1】:

    %d 代表整数,您希望 %f 在 printf() 中代表双精度。这有点误导,但 %d 代表双重。

    【讨论】:

    • 完美,修复了它。再过几分钟就无法将其标记为已解决,但我已经对其进行了测试。感谢您的快速响应!我想我只需要一双新鲜的眼睛 =)
    • 太棒了。如果您完全确信它不存在,则很难找到错误:D
    【解决方案2】:

    printf("%5d", a[x][y]);
    这一行中的 %d 告诉 printf 将您传递的位解释为 int。但是,您传递给它的是一个浮点值,这就是您得到奇怪输出的原因。要打印双精度,您需要使用%f
    有关不同 printf 说明符期望的数据类型和大小的更多信息,请参阅 http://www.cplusplus.com/reference/cstdio/printf/?kw=printf

    【讨论】:

    • 感谢您的回答和链接!我以后肯定会参考它。
    猜你喜欢
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多