永发信息网

求0到1000的数n的阶乘,为什么输入10000,输出时0,如何改

答案:4  悬赏:80  手机版
解决时间 2021-04-06 03:37
  • 提问者网友:我们很暧昧
  • 2021-04-05 21:07
#include
using namespace std;
int main()
{
int n,i;
unsigned _int64 factorial;

while( cin>>n)
{
if(n>=0&&n<=10000)
for(factorial=1,i=1;i<=n;i++)
factorial*=i;

cout< }
return 0;

}
最佳答案
  • 五星知识达人网友:woshuo
  • 2021-04-05 22:23
在DEV C++和VC++6.0上均不能通过编译
将unsigned _int64 factorial改成double factorial方可通过编译
一个数据类型有其能容纳的最大数据
输入过大的数值n,计算出来的结果过大,类型无法容纳
全部回答
  • 1楼网友:十鸦
  • 2021-04-05 23:35
应该是溢出了吧
  • 2楼网友:煞尾
  • 2021-04-05 23:07
我用VC++ 6.0 也没法用调通,不过建议楼主 每乘一下将值打印出来,查看一下问题在哪里如下: //#include //32最大的0xffffffff unsigned int i = 0; i--; printf("%0x\n",i); int n; unsigned factorial; while( cin>>n) { if( n>=0 && n<=10000) for(factorial=1,i=1;i<=n;i++) { factorial*=i; printf("%0x\n",factorial); //16进制输出 比较一下 } else cout<<"bad input"<
  • 3楼网友:佘樂
  • 2021-04-05 22:53
检查下是否是溢出了?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯