为了账号安全,请及时绑定邮箱和手机立即绑定

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

#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 回答

先给amount赋初值

int amount = 1;


0 回复 有任何疑惑可以回复我~
#1

慕九州0173060 提问者

尝试过了,还是不行
2020-03-06 回复 有任何疑惑可以回复我~
#2

WE_Xing 回复 慕九州0173060 提问者

这尴尬了
2020-03-06 回复 有任何疑惑可以回复我~
#3

WE_Xing 回复 慕九州0173060 提问者

哦哦我知道了,你得找另外一个值存储结果
2020-03-06 回复 有任何疑惑可以回复我~
#4

慕九州0173060 提问者 回复 WE_Xing

为什么非要找一个值储存结果?数学上来说两个数即可实现了啊!
2020-03-06 回复 有任何疑惑可以回复我~
#5

WE_Xing 回复 慕九州0173060 提问者

关键是你也没告诉程序算几个阶乘啊,如果你写n<5告诉它明确求5的阶乘,那就是两个变量
2020-03-06 回复 有任何疑惑可以回复我~
查看2条回复

/*理解了,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;
}

1 回复 有任何疑惑可以回复我~
int a,n = 1,f = 1;
scanf("%d", n);
while(n <= a)
{    f *= n;    
    n ++;
 }
 printf("%d\n", f);   //  这样估计...


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信