正文

第一堂課 初識(shí)C語言(18)

學(xué)通C語言的24堂課 作者:劉彬彬


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所示。


上一章目錄下一章

Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)