為什么程序運(yùn)行后得到數(shù)字不對
#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++上運(yùn)行成功,但是除輸入零外的任何數(shù)字都無法算出正確的階乘,一直都是負(fù)號開頭的數(shù)字
?
2020-03-06
先給amount賦初值
2020-03-06
/*理解了,amount是計(jì)算所比較的數(shù),并不能直接加入while中,否則會使()內(nèi)的比較隨之變動,因此需要一個(gè)數(shù)字儲存過程中所取得的數(shù)*/
#include<stdio.h>
int main()
{
?? ?int n = 1;int sum =1;
?? ?int amount ;
?? ?printf("請輸入你想要階乘的數(shù)字\n");
?? ?scanf("%d",&amount);
?? ?while(n <= amount){
?? ??? ?sum *= n;
?? ??? ?n ++;
?? ?}
?? ?printf("n! = %d",sum);
?? ?return 0;
}
2020-03-06