我是 c 编程的新手,我制作了一个阶乘程序,但它不能正常工作。我正在添加以下代码:
#include <stdio.h>
#include <conio.h>
void main()
{
int x=1;
int z,n;
scanf("%d",&n);
for(z=1;z<=n;z++)
{
x=x*z;
}
printf("%d",&x);
getch();
}
我是 c 编程的新手,我制作了一个阶乘程序,但它不能正常工作。我正在添加以下代码:
#include <stdio.h>
#include <conio.h>
void main()
{
int x=1;
int z,n;
scanf("%d",&n);
for(z=1;z<=n;z++)
{
x=x*z;
}
printf("%d",&x);
getch();
}
These are the corrections you must make in your program
- It's
printf("%d", x)
notprintf("%d", &x)
- Avoid using
#include<conio.h>
, it is depreciated.- It's good practice to use
int main()
instead ofvoid main()
, and return a positive integer0
, if all goes well.
使用printf("%d", x)
而不是printf("%d", &x)
.
作为一元运算符&x
,将返回 的地址x
,其类型为int*
。这可以解释为int
,但是,当您尝试打印带有错误格式标志的内容时(如果您使用 GCC 尝试-Wall
作为编译器选项),通常您的编译器会发出警告。
由于您不想打印地址,但x
只需删除不必要的操作数的值:
printf("%d", x);
首先,int 的可用空间很小,您的最大值将为 n=15
其次,您不需要使用库conio.h
第三,它不工作,因为你正在使用&x
,擦除它并且会工作
第四,您可以在一行中执行for 语句
五、最后void main()
改成int main()
添加return 0;
第六,这段代码对你有用
#include <stdio.h>
int main()
{
int x=1;
int z,n;
scanf("%i",&n);
for(z=1;z<=n;x*=z++,printf("value of z is =%i , value of factorial is =%i\n",z,x));
printf("%i",x);
return 0;
}