在C语言中打印矩阵时遇到问题

在C语言中打印矩阵时遇到问题,c,matrix,printing,C,Matrix,Printing,我认为这可以归结为数据类型im用于矩阵的内容,但在搜索了一段时间后,我似乎无法找到应该是什么样子的确切答案。另一方面,如果你发现另一部分有问题,也请告诉我。谢谢 #include <stdio.h> #include <ctype.h> #include <stdlib.h> int main () { double a[][3] = { {1.,2./3.,3.}, {4.

我认为这可以归结为数据类型im用于矩阵的内容,但在搜索了一段时间后,我似乎无法找到应该是什么样子的确切答案。另一方面,如果你发现另一部分有问题,也请告诉我。谢谢

#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

按任意键继续

%d代表整数,您希望在printf()中用%f代表double。这有点误导,但%d不代表double

printf(“%5d”,a[x][y])
此行中的
%d
告诉printf将传递的位解释为int。但是,传递给它的是浮点值,这就是为什么会得到奇怪的输出。要打印双精度打印,您需要使用
%f


有关不同printf说明符所期望的数据类型和大小的更多信息,请参阅。

完美解决了这一问题。我不能再等几分钟,但我已经测试过了。感谢您的快速响应!我想我只是需要一双新鲜的眼睛。如果您完全确信错误不存在,则很难发现错误:感谢答案和链接!我将来肯定会引用它。
          01610612736    0
          0    0    0
          0    0    0