循环算法
/*设置俩个变量,一个变量代表被乘数,一个变量代表乘数。不另设变量存放乘积结果,而是直接将每一步骤的乘积放在被乘数变量中。今设变量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页的题。
不用怀疑你的代码 输出的就是6 大哥啊,你也是够了,害我足足看了好久代码
首先一个错误,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了,也说不通,你看看题是否一致,还有能否对照下答案? 当然你也可以把循环语句中的i和p对换,这样也可以达到你要的目的 入门C语言不建议使用*谭*浩*强*,我不是鄙视,真的。
页:
[1]