for循环

在C语言和其他高级程序语言中,循环允许执行一系列语句,直到满足一个确定的条件为止。这个条件可以与预定义,比如while ,do while 和下面要说的 for循环

1.For 循环的一般形式

For(表达式1;表达式2;表达式3);
其执行过程如下
步骤1:先求解表达式1
步骤2:求解表达式2,若其值为非0,则执行for语句中指定的内嵌语句,然后执行下面的步骤3;若表达式2的值为0,则结束循环,转到步骤5;
步骤3:求解表达式3
步骤4:返回步骤2继续执行
步骤5:循环结束,执行for语句的下面的一条语句
归纳上述5个步骤,其流程图如下

说明:
⑴表达式1通常用来给循环变量赋初值,一般是赋值表达式。也允许在for语句外给循环变量赋初值,此时可以省略该表达式
⑵表达式2通常是循环条件,一般为关系表达式或逻辑表达式。如果表达式2省略,即不判断循环条件,也就是认为表达式2始终为真,则循环将无终止的进行下去
⑶表达式3通常用来修改循环变量的值,一般是赋值语句。表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束
⑷表达式1、表达式2、及表达式3这三条语句必须以分号间隔

For 循环的简单应用
求1-100整数之和
在这里插入图片描述

2.for循环的变体

⑴for循环有若干种变体,正是因为这种变体而大大增加了它的功能和灵活性,最常见的一种变体是通过运用逗号运算符,使得两个或两个以上的变量共同实现对循环的控制
For(x=0,y=0;x+y<30;++x)
{
Printf(“please input y:\n”);
Scanf(“%d”,&y)
……

}
⑵可以把表达式1省略,在for循环外赋初值

省略表达式1
上面求和的例子来示例
在这里插入图片描述

表达式可以省略,分号不能省略

⑶表达式2可以省略,不判断循环条件,循环将无终止的进行
For(i=1;;i++)
{
Sum+=I;
}

省略表达式1和表达式2
继续用累加的例子来讲解
在这里插入图片描述

实际上在出现for(;;)这种结构时,可以使用break避免死循环。Break语句在之后介绍
⑷表达式3也可以省略

继续用累加的例子省略表达式1和表达式3
在这里插入图片描述

观察上例会发现,省略了表达式1和3的for语句实现的功能相当于while语句所能实现的功能

例如
在这里插入图片描述

⑸三个表达式都可以省略
在这里插入图片描述

三个表达式均省略相当于whille(1)
在这里插入图片描述

循环嵌套

一个for循环体内又包含另一个完整的for循环结构,称为for循环的嵌套。内嵌的循环中还可以嵌套循环i,这样就形成了多层循环

For循环嵌套的一般形式如下

For(;?
{
For(;?
{

}

}

前面我们说过while dowhile 和for循环这三种循环可以相互嵌套,下面都是合法的嵌套形式

⑴while循环嵌套for循环
While()
{
For(;?
{

}
}
⑵while循环内嵌while循环

While()
{
While()
{

}
}

⑶do while 套用 do while

Do
{

While()
{
}

}while();
⑷do while 嵌套 while
Do
{

While()
{
}
}while();

⑸do while 内嵌一个for循环
do
{

For(;?
{

}

}while();

转移语句

程序中的语句通常总是按照顺序方向或语句功能所定义的方向执行。如果需要改变程序的正常流向,可以使用转移语句。例如,goto、break、contine、都是转移语句。

Goto语句

Goto语句 称为无条件转移语句,一般形式如下:

Goto 语句标号;

其中语句标号是按标识符规定书写的符号,放在某一语句行的前面;标号后加冒号(:)。语句标号起标识语句的作用,与goto语句配合使用
flg: i++;
是合法的
123: i++;
不符合标识符的定义规范,不合法

C语言不限制程序中使用标号的次数,但是各标号不能重名,goto语句的语义是改变程序流向,转去执行语句标号所标识的语句。

Goto语句一般有两种用途:

①与if语句语句一起构成循环结构
②从循环体跳转到循环体外

例子 计算从键盘输入的字符数
在这里插入图片描述

当输入的字符不为回车时,便会接受键盘输入的字符并统计数量,当输入回车时,循环结束

Break语句

Break语句只能用到switch语句或循环语句中,其作用是跳出switch语句,或者跳出本层循环,转去执行后面的程序,break还可以用于从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句

由于break,语句的转移方向是明确的,所以不需要配合语句标号,break语句的一般形式如下
Break;
Break语句不能用于switch语句和循环语句之外的任何其他语句
在这里插入图片描述

这个程序本来想输入3的时候 if判定为假,通过break跳出循环,但是break实际上跳出的是最近的那层循环语句或switch语句,现在虽然跳出了switch语句,但是还执行了 我自己出来了嘻嘻嘻 这条语句 并没有达到程序结束的要求

Continue语句只能用在循环体中,一般形式如下

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值