0

我是 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

4 回答 4

4

These are the corrections you must make in your program

  1. It's printf("%d", x) not printf("%d", &x)
  2. Avoid using #include<conio.h>, it is depreciated.
  3. It's good practice to use int main() instead of void main(), and return a positive integer 0, if all goes well.
于 2013-03-05T18:47:11.077 回答
4

使用printf("%d", x)而不是printf("%d", &x).

于 2013-03-05T18:43:40.713 回答
3

作为一元运算符&x,将返回 的地址x,其类型为int*。这可以解释为int,但是,当您尝试打印带有错误格式标志的内容时(如果您使用 GCC 尝试-Wall作为编译器选项),通常您的编译器会发出警告。

由于您不想打印地址,但x只需删除不必要的操作数的值:

printf("%d", x);
于 2013-03-05T18:45:21.987 回答
0

首先,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;
 }
于 2013-03-05T21:39:36.617 回答