1.8.2 情景应用2——求10!
视频讲解:光盘\mr\lx\01\求10!.exe
实例位置:光盘\mr\01\qjyy\02
编写代码实现求10!。程序运行效果如图1.36所示。
在写程序之前首先要理清求10!的思路。求一个数n的阶乘的公式为n*(n-1)*(n-2)*…*2*1,那么反过来从1一直乘到n求依然成立。当n为0和1时单独考虑,此时它们的阶乘均为1。
实现过程如下:
(1)在TC中创建一个C文件。
(2)引用头文件。
#include<stdio.h>
(3)定义数据类型,本实例中i、n均为基本整型,fac为单精度型,分别赋初值1。
(4)用if语句判断如果输入的数是0或1,输出阶乘是1。
(5)当while语句中的表达式i小于等于输入的数n时,执行while循环体中的语句,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函数获取n的值*/
if(n==0||n==1) /*当n为0或1时输出阶乘为1*/
{
printf("factorial is 1.\n");
return 0;
}
while(i<=n) /*当满足输入的数值大于等于i时执行循环体语句*/
{
fac=fac*i; /*实现求阶乘的过程*/
i++; /*变量i自加*/
}
printf("factorial of %d is:%.2f.\n",n,fac); /*输出n和fac最终的值*/
}
DIY:编写求1到10连乘的程序,输出结果。(25分)(实例位置:光盘\mr\01\qjyy\02_diy)
1.8.3 情景应用3——猴子吃桃
视频讲解:光盘\mr\lx\01\猴子吃桃.exe
实例位置:光盘\mr\01\qjyy\03
猴子吃桃问题:猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。编写程序求第一天共摘了多少桃子。程序运行效果如图1.37所示。