}
运行结果:
a=1y=-2
分析:
y--返回2,y=1,whi1e条件为真,进入do-whilee循环;a*=y之后,a=1,a++之后,a=2;y--返问1,,y=0;再执行一次do-while循环,a*=y之后,a=0,a++之后,a=1,y--返回0,y=-1,退出do-while循环;(y--!
=-1)为假,且y=-2,退出外层的while循环。
这时a=1,y=-2。
3.5. 编写程序
例题23:
计算1至70中是7的倍数的数值之和。
分析:
采用单循环语句结构,在循环内判断数值是否能被7整除,满足条件的值累加到求和变量sum中。
程序为:
#include
usingnamespacestd;
intmain()
{inti,sum=0;
for(i=1;i<=70;i++)
if(i%7)sum+=i;
cout<}
例题24:
求下面分数序列的前13项之和。
2/1,3/2,5/3,8/5,13/8,21/13,…
分析:
采用循环结构来实现累加,循环变量表示当前的数列项数,在循环体内计算数列的第i项的值,以及前i项的累加值。
数列的规律为:
从第2项开始,每一项的分母是前一项的分子,分子是前一项的分子和分母之和。
程序如下:
(1)用for语句实现:
#include
usingnamespacestd;
intmain()
{floata,b,t,sum;
inti;
for(i=1;i<=13;i++)
{a=a+b;b=a-b;
t=a/b;sum+=t;
}
cout<<”sum=”<}
(2)用while语句实现:
#include
usingnamespacestd;
intmain()
{floata,b,t,sum;inti;
a=2;b=1;i=2;t=a/b;sum=t;
while(i<=13)
{a=a+b;b=a-b;
t=a/b;sum+=t;
i++;
}
cout<<”sum=”<}
(3)用do-while语句实现:
#include
usingnamespacestd;
intmain()
{floata,b,t,sum;inti=1;
a=b=1;sum=0;
do
{a=a+b;b=a-b;
t=a/b