Dragon. 发表于 2015-7-25 22:31:29

循环算法

/*设置俩个变量,一个变量代表被乘数,一个变量代表乘数。不另设变量存放乘积结果,
而是直接将每一步骤的乘积放在被乘数变量中。今设变量p为被乘数,变量i为乘数。用
循环算法来求结果。*/

#include <stdio.h>

int main()
{
        int p,i;
        p = 1;   //S1
        i = 2;       //S2
        p = p * i;//S3、结果为2
        i = i + 1;//s4、结果为3
        if(i < 5)/*s5、如果i不大于5,返回重新执行S3及其后的步骤S4和S5;否则算法结束。
                       最后得到P的值就是5!*/
        {
                p = p * i;//结果为6=2*3
        }
        printf("%d\n",p);//输出6
}

请问各位前辈怎么求出P的值等于5,想了很久了。 想不通。
这是谭浩强c语言第四版第18页的题。


牡丹花下死做鬼 发表于 2015-7-25 22:48:02

不用怀疑你的代码 输出的就是6

东梨子 发表于 2015-7-25 23:18:15

大哥啊,你也是够了,害我足足看了好久代码

首先一个错误,i<5一定是成立的,这样你的if语句的true部分是一定会执行,所以p=6。

假设说i<5不成立,p=2,怎么可能算出5?!

如果改成while循环:
#include <stdio.h>


int main(void)

{

        int p = 1, i = 2;

        p = p * i;//S3、结果为2

        i++;//s4、结果为3


        while (i < 5)
        {
                p = p * i;
                i++;
        }

        printf("%d", p);

        return 0;
}


这样的话p为24了,也说不通,你看看题是否一致,还有能否对照下答案?

东梨子 发表于 2015-7-25 23:19:23

当然你也可以把循环语句中的i和p对换,这样也可以达到你要的目的

hsf 发表于 2015-7-26 18:06:41

入门C语言不建议使用*谭*浩*强*,我不是鄙视,真的。
页: [1]
查看完整版本: 循环算法