循环结构(二)

本文详细介绍了C语言中的for语句,包括其执行流程、常见使用形式,并通过实例展示了如何用for循环求前100个数的和及解决斐波那契数列问题。此外,还探讨了for语句在不同情况下的表达式省略及其含义,揭示了for语句的灵活性和功能强大性。

for语句

表达形式

for(表达式1; 表达式2; 表达式3)
语句

等同于while语句形式:

表达式1;
while 表达式2
{
语句
表达式3
}

执行流程

执行for语句时:
1.求解表达式1
2.判断表达式2的真假
3.若为真则执行循环体语句,求解表达式3,并重复从判断表达式2开始的循环
4.若为假,for语句执行结束

流程图:

True
求解表达式1
表达式2
语句
求解表达式3
结束循环

执行示例

用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

兔子繁殖问题(斐波那契数列)

题目

一对兔子从出生后第三个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子。假设所有兔子都不死,问每个月兔子的总数是多少?编程序求出前四十个月的兔子数

理解

月份12345678……
兔子数1123581321……
数学关系1+12+13+25+38+513+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语句的知识点

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值