循环语句

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

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

例如:求 60 100 之间所有数字的加和。
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(;;)
{
核心运算区 ; 递增区 ;
}
例如:求 60 100 之间所有数字的加和。
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 语句:
初始化区,条件判断区 , 递增区三个条件框架区混合在语句头部,方便灵活。
)while for 语句对比 :
a)while 语句还包括一种 do..while 格式,当第一次必须无条件执行时使用。
b) 所有 while 语句能表达的功能 for 语句全都能实现,反之亦然。
四)循环语句中的三个重要关键字: break continue return
a break 是结束整个循环体:
例如:找出 20 50 之间,第一个 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;
}
b return 是比 break 还强的中断:
直接退出中断该函数, return 后面所有语句,包括循环体之外的语句全都不执行。
例如:找出 20 50 之间,第一个 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 函数也未被执行。
c continue 是结束本次循环进入下一次循环:
如果是 while 语句,递增区必须放在 continue 之前; continue 经常跟 for 语句连用效果更好,因为 for 语句的递增区是每次循环后自动执行。
int main()
{// 20 70 之间 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、付费专栏及课程。

余额充值