循环语句

C语言中的循环语句,分为while语句和for语句两类分支语句。
a)所有while语句能表达的功能for语句全都能实现,反之亦然。
while层次清晰,for方便。(老外多爱用while,中国人多爱用for
b)每个循环语句都由三个框架区域构成:
a)初始化区,条件判断区,递增区

一)while循环语句:
初始化区;
while(条件判断区)
{
  核心运算区;
  。。。。。
  递增区;
}

例如:求60100之间所有数字的加和。
int main()
{
  int i = 60,sum = 0;
  while(i<=100)
  {
  sum += i;
  ++i;
  }
  printf("结果是:%d\n",sum);
  return 0;
}

二)do..while循环语句:特点是先执行再判断,核心运算区无条件地执行一次。
初始化区;
do
{
  核心运算区;
  。。。。。
  递增区;
} while(条件判断区);
注意语句尾部要带有分号;
int main()
{
  int sum=0,i = 6;
  do
  {
  sum=sum+i;
  ++i;
  }while(i<=10);
 
  printf("结果是:%d\n",sum);
  return 0;
}

三)for循环语句:完全可以和while语句或do..while语句互相替代。
a)for语句相当于将while语句的三个区域,用分号间隔全放在循环头部的小括号里:
for(初始化区;条件判断区;递增区)
{
  核心运算区;
}
b)递增区是在每次循环结束时执行:
第一次进入循环之前,递增区并不执行
c)当条件区为空时代表无条件循环:
例如:for(初始化区;;递增区)
等价于for(初始化区;1;递增区)
d)for的括号内3个区全都可为以空:
初始化区;
for(;;)
{
核心运算区;递增区;
}
例如:求60100之间所有数字的加和。
int main()
{
  int i,sum;
  for(i=60,sum=0;i<=100;++i)
  {
  sum += i;
  }
  printf("结果是:%d\n",sum);
  return 0;
}


*************************************************************************************


小结
一)条件分支语句包括:if语句和switch语句两大类。
a)if语句有3种形式:
单分支条件语句、双分支条件语句和多分支条件语句。
b)switch语句:开关语句,只能对小范围的数值型开关管理。
if语句能实现所有switch语句的功能,但是switch语句不能实现所有if语句能表达的功能。
二)循环语句包括:while语句和for语句两大类。
a)while语句:
初始化区,条件判断区,递增区三个条件框架区独立分布,层次清晰。
b)for语句:
初始化区,条件判断区,递增区三个条件框架区混合在语句头部,方便灵活。
)whilefor语句对比:
a)while语句还包括一种do..while格式,当第一次必须无条件执行时使用。
b)所有while语句能表达的功能for语句全都能实现,反之亦然。
四)循环语句中的三个重要关键字:breakcontinuereturn
abreak是结束整个循环体:
例如:找出2050之间,第一个19的整数倍的数字。
int main()
{
  int i = 20;
  while(i<50)
  {
  if(i%19==0)
  break;
  ++i;
  }
  printf("i=%d\n",i);
  return 0;
}
实际上凡是break语句的条件,都可以提取到while语句的条件区。
但是break语句使循环体看上去更清晰,便于阅读和代码维护。
等价写法:
int main()
{
  int i = 20;
  while(i<50 && i%19!=0)
  ++i;
  printf("i=%d\n",i); 
  return 0;
}
breturn是比break还强的中断:
直接退出中断该函数,return后面所有语句,包括循环体之外的语句全都不执行。
例如:找出2050之间,第一个19的整数倍的数字。
int main()
{
  int i = 20;
  while(i<50)
  {
  if(i%19==0)
  {
  printf("i=%d\n",i);
  return 1;
  }
  ++i;
  }
  printf("很抱歉,没有找到匹配的数字\n",i);
  return 0; 
}
直接跳出函数,连循环体外的printf函数也未被执行。
ccontinue是结束本次循环进入下一次循环:
如果是while语句,递增区必须放在continue之前;continue经常跟for语句连用效果更好,因为for语句的递增区是每次循环后自动执行。
int main()
{//2070之间13的整数倍的数字及个数
  int i = 20,sum=0;
  while(i<70)
  {
  ++i;
  if(i%13)
  continue;
  ++sum;
  printf("i=%d\n",i);
  }
  printf("总共%d\n",sum);
  return 0;
}
int main()
{//等价写法:
  int i = 20,sum=0;
  for(;i<70;++i)
  {
  if(i%13)
  continue;
  ++sum;
  printf("i=%d\n",i);
  }
  printf("总共%d\n",sum);
  return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值