-5

我试图打印两个 3 位数的乘法。

 #include <stdio.h>
 int main()
 {
    int x,y;
    for(x=100;x<1000;x++)
    {
        for(y=100;y<1000;y++)
        {
            printf("%d,",(x*y));
        }
    }
 }

当我将计数值设置为 110 之类的小数字时,这会生成正确的答案,但是当我将其设置为更大的值(例如 500、1000)时,答案是错误的。

4

2 回答 2

1

因为当你乘以更大的数字时999*999,结果值将大于 int 的范围。所以你必须long改用

printf("%ld",(x*y));
于 2013-09-09T06:53:21.233 回答
0

问题是输出太庞大了,你溢出了终端的回滚缓冲区。所以你认为的第一个输出数字可能是其他一些被切断的数字的结尾。这使您相信程序给出了不正确的输出。

将输出重定向到文件,然后在编辑器中查看输出。

prog > output.txt

另一个建议是将每个结果输出在单独的行上,并在输出行上提供xy值,这样您就可以在一行上看到输入和结果:

        printf("%d * %d = %d\n",x,y,(x*y));

这样,您的输出就不会模棱两可,您的问题会表现为一些缺失的输出,而不是导致您假设输出不正确。

于 2013-09-09T04:53:09.920 回答