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