| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1708 人关注过本帖
标题:入门的阶乘算法
只看楼主 加入收藏
do8do8do8
Rank: 10Rank: 10Rank: 10
来 自:沙滩
等 级:贵宾
威 望:17
帖 子:366
专家分:1845
注 册:2010-7-2
收藏
得分:5 
(把算法直接扔给计算机,是不太好的!!!要经过思考)
int b,d;       //声明 整型数 b,d并未赋初值
    scanf("%d",&b); //输入  整数b  (万一输入的不是有效数字呢)
    while(b>=1 && b<=9)   // while( 会产生死循环)
        {
             d=b;
        }
     while(d>=1)    //如果 d==2  那么b==2
        {
            b=b*d;  //有 b=2*2(正确的应该为b=2*1,如何解决,若把 d=d-1 放在前面,则 当d==1时  d==0,b=1*0=0 也不符合)
            d=d-1;  //其实 当 输入1时 也就是 scanf 得到1 ,这个可以不作运算,因为1的阶乘就是1
        }          //所以修改如下
    printf("%d",b);
    system("pause");
    return 0;

要求算1~9中任意数的阶乘,能运行,但是结果不正确.....这个要咋改啊

修改后如下(供参考)
int b,d;       //声明 整型数 b,d并未赋初值
    scanf("%d",&b); //
    if(b>1 && b<=9)   // ( 进行1---9的数据判断)
        {
             d=b;
       /* } *///去掉这个括号
     while(d>1)    //  大于1才进行连乘
        {
            d=d-1; //位置上调
            b=b*d;  //
        }   
        }// if 的结束括号 要移动到这里,因为范围内的数据才进行连乘     
    printf("%d",b);
    system("pause");
    return 0;

[此贴子已经被作者于2022-5-30 17:50编辑过]


学C语言从底层开始,学编程从问题开始,一日学会C!!!
2022-05-30 17:48
dogontree
Rank: 1
等 级:新手上路
威 望:1
帖 子:4
专家分:5
注 册:2022-6-16
收藏
得分:0 
阶乘不就是累积吗?经常用的模式就是for循环d=1;d=d*i;i<=b;
和积累求和类似,只不过求和是for循环d=0;d=d+i;i<=b;
一通百通
2022-06-16 12:22
快速回复:入门的阶乘算法
数据加载中...
 
   



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

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