1.8.2 情景應用2——求10!
視頻講解:光盤\mr\lx\01\求10!.exe
實例位置:光盤\mr\01\qjyy\02
編寫代碼實現(xiàn)求10!。程序運行效果如圖1.36所示。
在寫程序之前首先要理清求10!的思路。求一個數(shù)n的階乘的公式為n*(n-1)*(n-2)*…*2*1,那么反過來從1一直乘到n求依然成立。當n為0和1時單獨考慮,此時它們的階乘均為1。
實現(xiàn)過程如下:
(1)在TC中創(chuàng)建一個C文件。
(2)引用頭文件。
#include<stdio.h>
(3)定義數(shù)據(jù)類型,本實例中i、n均為基本整型,fac為單精度型,分別賦初值1。
(4)用if語句判斷如果輸入的數(shù)是0或1,輸出階乘是1。
(5)當while語句中的表達式i小于等于輸入的數(shù)n時,執(zhí)行while循環(huán)體中的語句,fac=fac*i的作用是當i為2時求2!,當i為3時求3!,…,當i為n時求n!。
(6)將n的值和最終所求的fac的值輸出。
(7)主要程序代碼如下:
main()
{
int i=2,n=10; /*定義變量i、n為基本整型,并為i賦初值2*/
float fac=1; /*定義fac為單精度型并賦初值1*/
/*使用scanf函數(shù)獲取n的值*/
if(n==0||n==1) /*當n為0或1時輸出階乘為1*/
{
printf("factorial is 1.\n");
return 0;
}
while(i<=n) /*當滿足輸入的數(shù)值大于等于i時執(zhí)行循環(huán)體語句*/
{
fac=fac*i; /*實現(xiàn)求階乘的過程*/
i++; /*變量i自加*/
}
printf("factorial of %d is:%.2f.\n",n,fac); /*輸出n和fac最終的值*/
}
DIY:編寫求1到10連乘的程序,輸出結(jié)果。(25分)(實例位置:光盤\mr\01\qjyy\02_diy)
1.8.3 情景應用3——猴子吃桃
視頻講解:光盤\mr\lx\01\猴子吃桃.exe
實例位置:光盤\mr\01\qjyy\03
猴子吃桃問題:猴子第1天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個,第2天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。編寫程序求第一天共摘了多少桃子。程序運行效果如圖1.37所示。