问答详情
源自:4-6 循环结构之while循环

为什么程序运行后得到数字不对

#include<stdio.h>
int main()
{
  int amount;
  int n = 1;
  scanf("%d",&amount);
  while( n <= amount){
    amount *= n;
    n ++;
    }
  printf("阶乘为%d",amount);
  return 0;
  //在D++上运行成功,但是除输入零外的任何数字都无法算出正确的阶乘,一直都是负号开头的数字

?

提问者:慕九州0173060 2020-03-06 14:15

个回答

  • WE_Xing
    2020-03-06 17:00:28
    已采纳

    先给amount赋初值

    int amount = 1;


  • 慕九州0173060
    2020-03-06 22:11:52

    /*理解了,amount是计算所比较的数,并不能直接加入while中,否则会使()内的比较随之变动,因此需要一个数字储存过程中所取得的数*/

    #include<stdio.h>
    int main()
    {
        int n = 1;int sum =1;
        int amount ;
        printf("请输入你想要阶乘的数字\n");
        scanf("%d",&amount);
        while(n <= amount){
            sum *= n;
            n ++;
        }
        printf("n! = %d",sum);
        return 0;
    }

  • WE_Xing
    2020-03-06 19:57:16

    int a,n = 1,f = 1;
    scanf("%d", n);
    while(n <= a)
    {    f *= n;    
        n ++;
     }
     printf("%d\n", f);   //  这样估计...