C语言:5.循环结构

目录

三种循环结构

·while语句

·do-while语句

·for语句

循环的嵌套

辅助控制语句(转移语句)

·break语句

·continue语句

·break语句和continue语句的主要区别

常用循环的算法


三种循环结构

·while语句

while语句属于当型循环,一般形式为:

while(循环控制表达式)
{
   语句序列
}

循环控制表达式成为“循环条件”,可以是任何类型的表达式(一般为关系型或逻辑型)。表达式为真则进入循环。语句序列成为“循环体”,可以是多条语句,也可以是空语句。

注:

1.while语句的特点是先计算表达式的值,然后根据表达式的值决定是否执行循环体中的语句。

(循环体有执行0次的可能)

2.当循环体由多条语句组成时,必须用{}括起来,形成复合语句。

在循环体中一般应该包含改变循环条件表达式的值的语句,即使循环趋于结束的语句,避免造成无限循环的发生。

3.赋初值的语句的位置一定在循环前面。

如下就是一个死循环。

int i;
while(i<=100)
{
  i=0;  //每次循环i都被赋值为0
  ...
  i++;
}

·do-while语句

do-while循环属于直到型循环,一般形式为:

do
{
   语句序列;
}while(循环控制系统);

先执行循环体语句一次,再判别表达式的值。

注:

1.无论表达式的值是否为“真”,循环体至少执行一次。

2.在if,while语句中,表达式后面都不能加分号,do-while语句的表达式后面则必须加分号。

3.do和while之间的循环体由多条语句组成时,也必须用{}括起来组成一个复合语句,避免“死循环”的要求和while循环相同。

·for语句

for语句是C语言中最常用的循环结构之一,既可以用于循环次数确定的情况,也可以用于循环次数未知的情况,一般形式为:

for (初始化表达式; 条件表达式; 更新表达式)
 {
    // 循环体语句
 }

每个表达式都可以由多个表达式组成。

初始化表达式只会在循环开始执行一次(允许在for语句外给循环变量赋初值,此时可省略初始化表达式)条件表达式在每次循环前都会被求值,如果为真,则继续执行循环体语句,否则跳出循环(条件表达式省略时,相当于表达式的值永远为“真”,此时循环体内应有控制循环结束的语句)更新表达式在每次循环结束后都会被执行(通常用来修改循环变量的值,以便在某次循环后退出循环)。

注:

1.for后面的括号()不能省,三个表达式都是任选项,可以省掉一个、两个或全部,但是括号内的分号一个都不能省。

2.如果第二个表达式为空,则相当于第二个表达式的值为真。

3.for语句后面不能直接加分号。

4.while循环是for循环的一种简化形式,即默认初始化表达式和更新表达式,实现形式如下:

初始化表达式;
while(条件表达式)
{
语句序列
循环表达式;
}

循环的嵌套

一个循环的循环体中套有另一个完整的循环结构称为循环嵌套。一个循环外面包含一层循环成为双层循环,一个循环外面包含多余两层循环称为多重循环。外面的语句称为“外层循环”,外层循环的循环体中的循环称为"内层循环"。

先内后外,外一次,内一趟。

辅助控制语句(转移语句)

·break语句

在循环体中可以通过break语句立即终止循环的执行,而转到循环结构的下一条语句处执行。使用形式如下:

//表达式 1是条件表达式,表达式 2是决定是否执行break语句
#do-while语句
do
{
  ...
  if(表达式2) break;
  ...
}while(表达式1);


#while语句
while(表达式1) 
{
  ...
  if(表达式2) break;
  ...
}


#for语句
for(;表达式1;)
{
  ...
  if(表达式2) break;
  ...
}

说明:

1.break语句只能用在循环语句的循环体中或switch语句中。在循环体中,break常常和if语句一起使用。

2.在循环体中单独使用break语句是无意义的。

3.当break语句处于嵌套结构中时,它将使break语句所处的该层及内各层结构循环终止,跳出所在循环,对外层结构无影响。要实现跳出外层循环,可以设置一个标志变量(标签),逐层跳出。

举例如下:

#include <stdio.h> 
int main() 
{
 int i, j,flag=0;
 for (i = 1; i <= 3; i++) 
  { 
    printf("外部循环: i = %d ", i);
    for (j = 1; j <= 3; j++) 
     { 
         if (i == 2 && j == 2) {flag=1;break;}// 使用带有标签的 break 语句来跳出外部循环 
         printf(" 内部循环: j = %d ", j);
     }
  if(flag==1)break;//通过break语句跳出外层for循环
  } 
 printf("结束 "); 
 return 0; 
}

输出结果为:

 i 的值等于 2 并且 j 的值等于 2 时,程序使用带有标签的 break 语句跳出外部循环。因此,程序只输出了一次 "结束。" 的信息。

·continue语句

continue语句只能出现在3种循环语句的循环体中,用于结束本次循环。当在循环体中遇到continue语句时,程序将跳过continue后面尚未执行的语句,开始下一次循环。(以当前条件进行是否执行下一次循环的判定)使用形式如下:

//表达式 1是条件表达式,表达式 2决定是否执行continue语句
#do-while语句
do
{
 ...
 if(表达式2) continue;
 ...
}while(表达式1);


#while语句
while(表达式1)
{
 ...
 if(表达式2) continue;
 ...
}


#for语句
for(;表达式1;)
{
 ...
 if(表达式2) continue;
 ...
}

说明:

1.continue语句通常是和if语句配合使用

2.continue语句只是结束本次循环,即跳过循环体中尚未执行的语句,然后进行下一次是否执行循环的判定,而不是结束整个循环。

·break语句和continue语句的主要区别

1.continue语句是终止本次循环,break语句是终止本层循环;

2.continue语句用于强制继续循环,break语句用于强制中断循环;

3.break语句还可用在switch语句中。

常用循环的算法

求和(累加),阶乘(累乘),Fib数列(迭代),素数,最大公约数,字符转换等

此文不再详细阐述上述问题,具体问题可见专栏“C语言练习”后续文章

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值