for语句完全可以代替while语句
for语句的一般形式为
for(表达式1;表达式2;表达式3)
语句
【表达式1】设置初始条件,只执行一次。可以为零个、一个或多个变量设置初值执行
【表达式2】循环条件表达式,用来判定是否继续循环。在每次执行循环体前先执行此表达式,决定是否继续执行循环
【表达式3】作为循环的调整器,例如使循环变量增值,它是在执行完循环体后才进行的
for语句的执行过程:
(1) 先求解表达式1
(2) 求解表达式2,若其值为真,执行循环体,然后执行下面第(3)步。若为假,则结束循环,转到第(5)步
(3) 求解表达式3
(4) 转回上面步骤(2)继续执行
(5) 循环结束,执行for语句下面的一个语句
for(i=1;i<=100;i++)
sum=sum+i;
等价于
i=1;
while(i<=100)
{
sum=sum+i;
i++;
}
5.3.2 for循环程序举例
例5.4 在象棋的棋盘第1个格子中放1粒麦子,第2个格子中放2粒麦子,第3个格子中放4粒麦子,以后按此比例每一格加一倍,一直放到第64格(象棋的棋盘是8×8=64格),共放多少?
麦子总粒数=1+2+22+23+…+263
1m3=1.42×108粒
#include <stdio.h>
void main()
{ double p=1, t=1, v; int i;
for(i=1; i<64; i++)
{ p = p * 2;
t = t + p;
}
v = t / 1.42e8;
printf(“total=%e\n”,t);
printf(“volume=%e\n”,v);
}
p是当前一个格子中麦子粒数
t是当前麦子总粒数
v是总体积
total=1.844674e+019
volnme=1.299066e+011
#include <stdio.h>
void main()
{ double p=1, t=1, v; int i;
for(i=1; i<64; i++) //若改为i=1;i<=64;i++会怎样?再或者改为i=0;i<64;i++会怎样?
{ p = p * 2;
t = t + p;
}
v = t / 1.42e8;
printf(“total=%e\n”,t);
printf(“volume=%e\n”,v);
}
例5.5 人口增长预测。据2005年末统计,我国人口为130756万人,如果人口的年增长率为1%,请计算到哪一年中国总人口超过15亿。
解题思路:
假设原来人口为p0 ,则一年后的人口为:p=p0*(1+r) ,r是年增长率
每算出一年的人口后就检查是否达到或超过15亿。如果未达到或超过,再计算下一年的人口,直到某一年的人口达到或超过15亿为止
#include <stdio.h>
void main()
{
double p=1.30756e9,r=0.01;
int y;
for(y=2006; p<1.5e9; y++)
p=p*(1+r);
printf("year=%d,p=%e\n",y-1,p);
}
year=2019,p=1.503007e+009
2019年达到15.03007亿人口
详细内容可下载幻灯片细看:
http://www.edu399.com/kejian/C/C.rar