我是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();
}
答案 0 :(得分:4)
使用printf("%d", x)
代替printf("%d", &x)
。
答案 1 :(得分:4)
这些是您必须在程序中进行的更正
printf("%d", x)
而非printf("%d", &x)
- 避免使用
#include<conio.h>
,它已被折旧。- 最好使用
醇>int main()
代替void main()
, 如果一切顺利,则返回正整数0
。
答案 2 :(得分:3)
作为一元操作符&x
将返回x
的地址,其地址为int*
。这可以解释为int
,但是,当您尝试使用错误的格式化标记打印内容时,通常编译器会发出警告(如果您使用GCC try -Wall
作为编译器选项)。
由于您不想打印地址,但x
的值只是删除不必要的操作数:
printf("%d", x);
答案 3 :(得分:0)
首先,int的可用空间为小,你的最大值将是n = 15
第二,你不需要使用库conio.h
第三,因为你正在使用&x
而无法正常工作,删除它并且可以正常工作
,你可以在一行
中执行 for statement第五,将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;
}