| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 525 人关注过本帖
标题:【求助】求阶乘
只看楼主 加入收藏
lltt022
Rank: 1
等 级:等待验证会员
帖 子:3
专家分:0
注 册:2010-9-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
【求助】求阶乘
当n=7的时候一切正常,n>7以后的数值都不对,比如n=8时 8!= -25216

#include<stdio.h>
main ()
{
    int n, n1=1;
    unsigned n2=1;
   
    printf("scan a number>0: \n");
    scanf("%d", &n);
   
    while(n1<=n)
    {
      n2*=n1;
      ++n1;   
    }
   
    printf("%d! is %d \n", n, n2);
}
搜索更多相关主题的帖子: 阶乘 
2010-11-30 12:16
zghnxzdcx
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:550
专家分:1176
注 册:2010-4-6
收藏
得分:7 
变量超范围了

你永远不可能战胜一个纯傻子,因为他会把你的智商拉到和他同一个水平,然后用他的丰富经验打败你。
2010-11-30 12:20
lltt022
Rank: 1
等 级:等待验证会员
帖 子:3
专家分:0
注 册:2010-9-16
收藏
得分:0 
以下是引用zghnxzdcx在2010-11-30 12:20:58的发言:

变量超范围了
那个变量,小弟新手,请详细点。
2010-11-30 12:26
DreamSkyCC
Rank: 2
来 自:河北赵县
等 级:论坛游民
帖 子:40
专家分:58
注 册:2010-11-28
收藏
得分:7 
n2 的值超范围了,可以这样改
#include <stdio.h>
int main(int argc , char *argv[])
{
    long long int n,n1 =1;
    long long int n2 = 1;
    scanf("%lld",&n);
    while(n1 <= n)
    {
        n2 *= n1;
        n1++;
    }
    printf("%lld! is %lld\n",n,n2);
   
    return 0;
}



努力总会有收获!
2010-11-30 13:08
甘俊霖
Rank: 2
等 级:论坛游民
帖 子:20
专家分:41
注 册:2010-11-21
收藏
得分:7 
n2这个变量溢出了,
#include<stdio.h>
main ()
{
    int n, n1=1;
    double n2;   
    printf("scan a number>0: \n");
    scanf("%d", &n);   
    while(n1<=n)
    {
      n2*=n1;
      ++n1;   
    }   
    printf("%d! is %d \n", n, n2);
}
 
2010-11-30 13:59
liu495302453
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-11-30
收藏
得分:0 
唉!!看不懂啊!!要多学习啊!
2010-11-30 14:29
木头lbj
Rank: 7Rank: 7Rank: 7
来 自:黄山
等 级:黑侠
威 望:1
帖 子:269
专家分:527
注 册:2010-11-6
收藏
得分:0 
确实是溢出了。。。

。。。!!!)))000
2010-11-30 19:14
prefect
Rank: 1
来 自:安徽
等 级:新手上路
帖 子:8
专家分:2
注 册:2010-11-29
收藏
得分:0 
楼上正解
2010-11-30 19:40
快速回复:【求助】求阶乘
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018027 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved