5. 选择结构if-else可以有多种变数,程序并非唯一的。
如,if-else也可修改为:
if(i>=m) printf("YES\n");
else printf("NO\n");
【4.3】编程实现:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。程序文件名ex4_3.c。
分析:本程序的关键问题求和,则采用累加算法,该算法采用循环结构。
算法思想,引入一个和变量sum,一个加数变量b,求和表达式为,sum=sum+b; 累加算法就是重复执行求和表达式sum=sum+b的过程。细化问题,该求和表达式要执行多少次,或满足何条件就不再执行;每次执行时b如何变化。
具体问题具体分析。由题意,求自然数的倒数之和,倒数可考虑为1/i。循环次数为n。 #include <stdio.h>
void main( )
{
int i,n;
float sum=0.0;
scanf("%d",&n);
for(i=1;i<=n;i++)
if(i%5==0||i%9==0)
sum+=1.0/i;
printf("%f ",sum);
}
输入测试数据:20
程序运行结果:s=0.583333
小结:
1. 求满足能被5或9整除的所有自然数的条件表达式:i%5==0||i%9==0
2. 求分数之和时,一定要考虑整型除整型的情况。源程序中变量i为整型,所以倒数1/i,在具体编程时可处理为1.0/i或1/(float)i的形式。
【4.4】编程实现,计算 n!的值。程序文件名:ex4_4.c。
n 110
分析:原题为求1+2!+ +10!。程序设计的核心是累加。观察第n-1项与第n项,可知第n-1项与第n项的关系为:n!=(n-1)!*n。由此该程序设计,可采用递推算法。
递推算法是计算机数值计算中的一个重要算法,算法思想是给定一个已知条件,根据前后项的关系,由前项推后项。
假设变量t表示项,t的初始值为1,则第n项的表达式为: t=t*n。
递推算法,采用循环语句。
#include <stdio.h>
void main()
{
long i,n,sum=0,t=1;
for(i=1;i<=10;i++)