| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7333 人关注过本帖
标题:一个正整数n的阶乘等于。n(n-1)(n-2)X…X 2 X1。编写程序,要求操作者输 ...
只看楼主 加入收藏
跃进中的王者
Rank: 1
等 级:禁止发言
帖 子:6
专家分:0
注 册:2013-4-16
结帖率:33.33%
收藏
已结贴  问题点数:2 回复次数:6 
一个正整数n的阶乘等于。n(n-1)(n-2)X…X 2 X1。编写程序,要求操作者输入一个小于20的正整数,程序输出该数的阶乘。
提示: 作者被禁止或删除 内容自动屏蔽
搜索更多相关主题的帖子: 编写程序 正整数 
2013-04-24 18:10
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:1 
程序代码:
#include <stdio.h>
#include <string.h>
#define max 3000
int f[max];

int main() {
    int i, j, n, c, s;
    scanf("%d", &n);
    f[0] = 1;
    for(i = 2; i <= n; i++) {
        c = 0;
        for(j = 0; j < max; j++) {
            s = f[j] * i + c;
            f[j] = s % 10;
            c = s / 10;
        }
    }
    for(j = max - 1; j >= 0; j--)
        if(f[j]) break;
    for(i = j; i >= 0; i--) printf("%d", f[i]);
    printf("\n");
    return 0;
}

仰望星空...........不忘初心!
2013-04-24 18:11
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:1 
用递归函数做比较方便

#include<stdio.h>
int fun(int);
main()
{
    int m,n;
    printf("please input an integer:");
    scanf("%d",&n);
    m=fun(n);
    printf("%d!=%d\n",n,m);
    return 0;
}

int fun(int n)
{
    if(n<0)
    {
        printf("error!");
        return -1;
    }
    else if(n==0)
        return 1;
    else
        return n*fun(n-1);
}


[ 本帖最后由 韶志 于 2013-4-24 19:25 编辑 ]

三十年河东,三十年河西,莫欺少年穷!
2013-04-24 19:23
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:1 
用递归就可以了

Maybe
2013-04-24 20:03
Magic_July
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:109
注 册:2012-9-25
收藏
得分:1 
这个数的极限值是2×10^17这也许是int的极限,我想说的是小心范围
2013-04-25 08:18
不眠的夜
Rank: 2
等 级:论坛游民
帖 子:63
专家分:96
注 册:2013-3-12
收藏
得分:1 
这样最简单:
#include<stdio.h>
void main()
{
    int n,i;
    long int ji=1;
    printf("请输入整数:");
    scanf("%d/n",&n);

    for(i=n;i>0;i=i-2)
    { if((i-1)!=0)
          ji=i*(i-1)*ji;}
    printf("n!=%d\n",ji);
}
2013-04-25 09:15
不眠的夜
Rank: 2
等 级:论坛游民
帖 子:63
专家分:96
注 册:2013-3-12
收藏
得分:0 
优化了一下;#include<stdio.h>
void main()
{
    int n,i;
    long int ji=1;
    printf("请输入整数:");
    scanf("%d/n",&n);
 if(n=1||n=0)
   ji=1;
 else
    for(i=n;i>0;i=i-2)
    { if((i-1)!=0)
          ji=i*(i-1)*ji;}
printf("n!=%d\n",ji);
}
2013-04-25 09:18
快速回复:一个正整数n的阶乘等于。n(n-1)(n-2)X…X 2 X1。编写程序,要求操 ...
数据加载中...
 
   



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

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