陽哥( )認為:在寫程序之前首先要理清求n!的思路。要求一個數n的階乘n!也就是用n*(n-1)*(n-2)*......*2*1,那麼反過來從1一直乘到n依然成立。當n為0和1的時候我們單獨考慮,此時它們的階乘均為1。
求得結成的最終結果,這裡我們要給他定義為單精度或雙精度類型,如果定義為整型就很容易有溢出現象。
求n!方法
先來給大家看看輸出的結果:
編程如下:
#include<stdio.h>
/*引用預處理命令,預處理包含stdio.h的頭文件*/
main()
/*定義一個主函數,所有程序在執行前都開始於主函數,且結束於主函數*/
{
int i=2,n;
/*定義整型變量i和n,並賦值i的值為2*/
float fac=1;
/*定義單精度類型變量fac,並賦值為1,fac的含義是階乘值*/
printf("please input an interger>=0.\\n");
/*輸出函數:(請輸入一個大於等於0的變量:),其中interger是C語言中的變量代表符而已,沒有具體含義*/
scanf("%d",&n);
/*輸入n值*/
if(n==0||n==1)
/*如果n為0值或者n為1值;||指的是邏輯或*/
{
printf("factorial is 1.\\n");
/*輸出函數:(這個階乘值為1.)換行*/
}
while(i<=n)
/*當i值小於等於n時*/
{
fac=fac*i;
/*將fac值與i值相乘,並賦值給fac*/
i++;
/*i值累加*/
}
printf("factorial of %d is:%.2f.\\n",n,fac);
/*輸出函數:(整型的階乘值為:);%d指的是n,指的類型即整型,%.2f指的是fac,即單精度類型,其中.2指的是保留兩位小數*/
return 0;
/*返回空值,0指空,沒有,即將0返回給主函數main,其目的是告訴給main函數此程序執行完了*/
}
如果大家有問題,歡迎大家留言討論,我都會一一解答呦,歡迎關注,給你不一樣的自己!
閱讀更多 陽哥說IT 的文章