求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,计算出来的结果过大,类型无法容纳
全部回答
应该是溢出了吧
我用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"<
检查下是否是溢出了?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯