我想为阶乘运算编写尽可能短的代码段,同时使用最少数量的变量(不能少于 2 个)和最少的行数。但是,尽管我认为逻辑是好的和正确的,但它不起作用:/
这里是:说 5 的阶乘。
#include<stdio.h>
main()
int x, i = 5;
{
while(i!=1)
{
i--;
x *= i;
}
printf("%d",x);
}
所以,让我们描述一下这段代码会做什么:
在循环内部i
转 4,然后我们有x = 5 * 4
它使它成为 20。
下一轮i
是 3,我们有
x = 20 * 3
下一轮i
是2
x = 60 * 2
nexti
是 1 x = 120 * 1
,所以这是阶乘。
我知道那里有聪明的头脑,他们可以想出混淆代码来在半行内完成所有这些,但只要找出为什么给我错误,我就会很满意。
人们输入后更新:
它现在总是产生 0,即使我改变 i!=2
main()
{
int x, i = 5;
while(i!=1)
{
i--;
x *= i;
}
printf("%d",x);
}
最终解决方案和解释:
我用 PHP 和 Java 编码,今天我想用 C 做一个快速的,所以当我写这个时:
整数 x,我 = 5;
我理所当然地认为它会初始化为 5,就像它在 PHP 和 JAVA 中所做的那样,但事实并非如此!
所以,如果我这样做
#include<stdio.h>
main()
int x = 5;
int i = 5;
{
while(i!=1)
{
i--;
x *= i;
}
printf("%d",x);
return (0);
}
我的代码有效。
感谢所有指出基本语法错误的人。
当一个人不熟悉语言规则时会发生语法错误,但最重要的是代码的逻辑并且是正确的。