我试图打印两个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)时,答案是错误的。
答案 0 :(得分:1)
因为当你将更大的数字乘以999*999
时,结果值将大于int的范围。所以你必须使用long
代替
printf("%ld",(x*y));
答案 1 :(得分:0)
问题是输出太大,你的终端的回滚缓冲区溢出了。所以你认为第一个输出数字可能是其他一些被切断的数字的结束。这让你相信程序输出不正确。
将输出重定向到文件,并在编辑器中查看输出。
prog > output.txt
另一个建议是在单独的行上输出每个结果,并在输出行上提供x
和y
值,这样您就可以在一行上看到输入和结果:
printf("%d * %d = %d\n",x,y,(x*y));
这样,你的输出不会模糊不清,你的问题本身会表现为一些缺失的输出,而不是让你假设输出不正确。