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

来源:4-6 循环结构之while循环

慕九州0173060

2020-03-06 14:15

#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++上运行成功,但是除输入零外的任何数字都无法算出正确的阶乘,一直都是负号开头的数字

?

写回答 关注

3回答

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

    先给amount赋初值

    int amount = 1;


    WE_Xin... 回复慕九州017...

    关键是你也没告诉程序算几个阶乘啊,如果你写n<5告诉它明确求5的阶乘,那就是两个变量

    2020-03-06 20:26:45

    共 5 条回复 >

  • 慕九州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);   //  这样估计...


C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926210 学习 · 20797 问题

查看课程

相似问题