第五章 循环结构程序设计

5.2 用while语句实现循环

while语句的一般形式:
while(循环条件表达式) 语句

while循环的特点:
先判断条件表达式,后执行循环语句。

求1+2+3+4+5+…+100的和。

#include <stdio.h>
int main()
{
  int i,sum=0;
  while(i<=100)
  {
    sum=sum+i;
    i++;
  }
  printf("sum=%d\n",sum);
  return 0;
}

程序分析
⑴循环体如果包含一个以上的语句,应该用花括号括起来,作为复合语句出现。如果不加花括号,则while语句的范围只到while后面第1个分号处。
⑵不要忽略给i和sum赋初值,否则它们的值是不可预测的,结果显然不正确。
⑶在循环体中应有使循环趋向于结束的语句。一般是"i++"。如果无此语句,循环永远不结束。

5.3 用do…while语句实现循环

do…while语句的一般形式:
do
语句
while(表达式);

do…while循环的特点:
先无条件执行循环体,然后判断循环条件是否成立。

用do…while语句求1+2+3+…+100的和。

#include <stdio.h>
int main()
{  
  int i=1,sum=0;  
  do
  {
    sum=sum+i;    
    i++;  
  }while(i<=100);//语句末尾有分号!
  printf("sum=%d\n",sum);  
  return 0;

5.4 用for语句实现循环

最常用的for语句形式是:
for(循环变量赋初值;循环条件;循环变量增值)
语句

说明:
⑴for循环可以改写成while循环的形式。
⑵"表达式1"可以省略,但分号不能省略。

i=1;  //对循环变量i赋初值
for(;i<=100;i++) //for语句中没有表达式1
sum=sum+i;

⑶表达式2可以省略,不设置和检查循环的条件,循环将无终止的进行。
⑷表达式3可以省略,但应另外设法保证循环能正常结束。

for(i=1;i<=100;)  //没有表达式3
{
  sum=sum+i;
  i++;  //这时可以在循环体中使循环变量增值
}

⑸只有表达式2。

int i=1;  //给循环变量赋初值
for(;i<=100;)  //只有表达式2
{
  sum=sum+i;
  i++;  //在循环体中使循环变量增值
}

⑹3个表达式都可以省略。无终止地执行循环体语句,显然这是没有实用价值的。

for(;;) printf("%d\n",i);
//相当于
while(1) printf("%d\n",i);

⑺==表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式。表达式3也可以是与循环控制无关的任意表达式。==但不管怎么写for语句,都必须使循环能正常执行。

for(sum=0;i<=100;i++) sum=sum+i;

⑻表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即包含一个以上的简单表达式,==中间用逗号间隔。==在逗号表达式内按自左自至右顺序求解,整个逗号表达式的值为最右边的表达式的值。

for(i=1;i<=100;i++,i++) sum=sum+i;
//相当于
for(i=1;i<=100;i=i+2) sum=sum+i;

在这里插入图片描述

5.7 改变循环执行的状态

用break语句提前终止循环,break语句只能用于循环语句和switch语句之中,而不能单独使用。

用continue语句提前结束本次循环,而接着执行下次循环。

要求输出100~200的不能被3整除的数。

#include <stdio.h>
int main()
{
  int n;
  for(n=100;n<=200;n++)
  {
     if(n%3==0)
       continue;
     printf("%d\n",n);
  }
  printf("\n");
  return 0;
}

break语句和continue语句的区别

continue语句只结束本次循环,而不是终止整个循环的执行。而break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。

如果是双重循环,在内循环体内有一个break语句,是提前终止内循环,而不是提前终止整个循环。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值