for语句
表达形式
for(表达式1; 表达式2; 表达式3)
语句
等同于while语句形式:
表达式1;
while 表达式2
{
语句
表达式3
}
执行流程
执行for语句时:
1.求解表达式1
2.判断表达式2的真假
3.若为真则执行循环体语句,求解表达式3,并重复从判断表达式2开始的循环
4.若为假,for语句执行结束
流程图:
执行示例
用for语句求前100的和
#include<stdio.h>
int main()
{
int i = 1,sum = 0;
for(i=1;i<=100;i++)
sum=sum+i;
printf("%d\n",sum);
return 0;
}
使用形式(以求前100个数和为例)
1.for语句一般形式中的“表达式1”可以省略,此时应该在for语句之前给循环变量赋初值。注意,省略表达式1时,其后分号不可省略
例:
i=1;
for( ;i<=100;i++)
sum=sum+i;
2.若表达式2省略,即不判断条件,循环无终止地执行下去,也就是认为表达式2始终为真
例:
for(i=1; ;i++)
sum=sum+i;
3.若省略表达式3,应该另外设法保证循环能正常结束
例:
for(i=1;i<=100; )
{ sun=sum+i;
i++;
}
4.可以同时省略表达式1和表达式3,只有表达式2,即只给循环条件。此时完全等同于while语句。(可见for语句的功能比while语句功能更强,除了可以给循环条件外,还可以赋初值,使循环变量自动赋值)
例:
i=1;
for( ;i<=100; )
{ sum=sum+i;
i++;
}
5.若三个表达式都省略,即不赋初值,不判断条件(认为表达式2为真值),循环变量不增值。无终止地执行循环体。
例:
for( ; ; ); //相当于while(1)语句
6.表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式。表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即包含一个以上的简单表达式,中间用逗号间隔。
例:
for(i=1,sum=0;i<=100;i++)
sum=sum+i;
7.表达式2一般是关系表达式(如i<=100)或逻辑表达式(如a<b && x<y),但也可以是数值表达式或字符表达式,只要其值为非0,就执行循环体。
例:
for( x=10;x;x--)
sum=sum+x;
此时等价为x!=0
兔子繁殖问题(斐波那契数列)
题目
一对兔子从出生后第三个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子。假设所有兔子都不死,问每个月兔子的总数是多少?编程序求出前四十个月的兔子数
理解
| 月份 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | …… |
|---|---|---|---|---|---|---|---|---|---|
| 兔子数 | 1 | 1 | 2 | 3 | 5 | 8 | 13 | 21 | …… |
| 数学关系 | 1+1 | 2+1 | 3+2 | 5+3 | 8+5 | 13+8 | …… |
分析:从第三个月起,每个月兔子数=原有兔子数+新生兔子数
即满足以下表达式
F1=1 (n=1)
F2=1 (n=2)
Fn=Fn-1 + Fn-2 (n>=3)
程序表示
#include<stdio.h>
int main()
{
int f1=1,f2=2;
int i;
for(i=1;i<=20;i++) //每个循环输出两个月的数据,故只需循环20次
{
printf("%12d %12d",f1,f2); //输出已知的两个月的兔子数
if(i%2==0)printf("\n");
f1=f1+f2; //计算出下一个月的兔子数,并存放在f1中
f2=f2+f1; //计算出下两个月的兔子数,并存放在f2中
}
return 0;
}
总结
简要整理循环语句中for语句的知识点
本文详细介绍了C语言中的for语句,包括其执行流程、常见使用形式,并通过实例展示了如何用for循环求前100个数的和及解决斐波那契数列问题。此外,还探讨了for语句在不同情况下的表达式省略及其含义,揭示了for语句的灵活性和功能强大性。

被折叠的 条评论
为什么被折叠?



