因子程序在C中无法正常工作?

时间:2013-03-05 18:41:43

标签: c

我是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();
 }

4 个答案:

答案 0 :(得分:4)

使用printf("%d", x)代替printf("%d", &x)

答案 1 :(得分:4)

这些是您必须在程序中进行的更正

  
      
  1. printf("%d", x)而非printf("%d", &x)
  2.   
  3. 避免使用#include<conio.h>,它已被折旧。
  4.   
  5. 最好使用int main()代替void main(),    如果一切顺利,则返回正整数0
  6.   

答案 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;
 }