C语言——循环语句
一、 前言
C语言是结构化的程序设计语言,而这结构主要指的是顺序结构、选择结构、循环结构。而日常生活中的事情基本上可由这三种结构组合形成。
二、什么是循环语句
循环就是反复执行,循环语句就是把某个语句(循环体)反复执行的语句。一般可分为四个部分组成:初始化部分,判断部分,循环部分和调整部分。C语言提供了三个循环语句:for语句,while语句,do while语句。
为了更好理解,举一个不是很恰当的例子:
许多人进入大学后,在 纯洁而天真的 校园时期,想拥有一段浪漫的爱情,那就可能会进入上面的循环。红线就为循环部分。一个完美的循环语句不仅要有判断表达式,还需要循环语句。这个例子只是为了更好理解而已,因为学会C语言后一样找不到女朋友…
三、while循环语句
1. while语句的语法
通过if语句和while语句的对比,能发现有些类似:
#include <stdio.h>
int main()
{
if(表达式)
语句;
return 0;
}
#include <stdio.h>
int main()
{
while(表达式)
循环部分;
return 0;
}
这里的表达式都是一个规则:真,则语句执行;假,则语句不执行。而C语言中的真假是用非0或0来表示,非0表示真,0表示假,也就是说表达式的结果为0时,就不执行,为非0时就执行。
举个例子:
#include <stdio.h>
int main()
{
int a = 1;
if (a)//if(1)一样也可以
printf("a=1,为真,能执行语句");
return 0;
}
结果如下:
(注意:文件名尽量不要出现汉语)
当while循环中的表达式为真时,程序就会进入循环体内执行循环部分的语句。如下:
从调试控制台可以发现,它一直在执行循环部分,这将导致程序进入死循环,所以我们需要用到调整部分来调整循环次数。如下:
#include <stdio.h>
int main()
{
int a = 3;//初始化部分
while (a)//判断表达式
{ //{}内为循环部分
printf("a=1,为真,能执行语句\n");
a--;//循环部分里的特殊存在——调整部分
}
return 0;
}
调整部分就是驯服while的工具之一,所以要记得写调整部分。
2. while循环语句中的流氓——break和continue
- continue是跳过循环里位于它之后的代码,即本次循环中continue后边的代码不会再执行,
而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。 - break就是结束该循环,所以while中的break是用于永久终止循环的。
写两段代码对比一下:
continue:
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
{
printf("1");//证明还在循环
continue;
}
printf("%d ", i);
i = i + 1;
}
return 0;
}
break:
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
{
printf("1");//证明不再循环
break;
}
printf("%d ", i);
i = i + 1;
}
return 0;
}
通过对比就能很清楚的知道continue为跳过;break为终止。
三、do while循环语句
1. do while的语法
其实do while与while只有一点差别,do为做的意思,就是先循环一次后判断要不要再循环,用代码对比一下,如下:
#include <stdio.h>
int main()
{
int i = 0;//初始化部分,
do
{
printf("%d ", i);//循环部分
i = 0;//调整部分
} while (i);//表达式,i=0,0为假,所以不再循环
return 0;
}
#include <stdio.h>
int main()
{
int i = 0;//初始化部分,
while (i)//表达式,i=0,0为假,所以不循环
{
printf("%d ", i);//循环部分
i = 0;//调整部分
}
return 0;
}
do while一般用在至少循环一次的场景,用的比较少。
2. do while循环语句中的流氓——continue和break
一句话:continue和break在do while和while中的用法和特点相同。
continue:
#include <stdio.h>
int main()
{
int i = 1;
do
{
if (3 == i)
{
printf("1");//证明还在循环
continue;
}
printf("%d ", i);
i ++;
} while (i);
return 0;
}
注意:调整部分在continue很容易造成死循环这中程序错误,所以使用continue时需要多加小心。
break:
#include <stdio.h>
int main()
{
int i = 1;
do
{
if (3 == i)
{
printf("1");//证明不再循环
break;
}
printf("%d ", i);
i ++;
} while (i);
return 0;
}
四、for循环语句
1. for循环语句的语法
for比while又要高级一丢丢了。for把初始化部分,判断部分和调整部分调到了一个小括号里了。
for(表达式1,表达式2,表达式3)
{
语句;
}
表达式1:用于循环变量的初始化
表达式2:用于循环结束条件的判断
表达式3:用于循环变量的调整
for首先执行表达式1 初始化循环变量,接下来就是执行表达式2的判断部分,表达式2的结果如果==0,则循环结束;表达式2的结果如果!=0则执行循环语句,循环语句执行完后,再去执行表达式3,调整循环变量,然后再去表达式2的地方执行判断,表达式2的结果是否为0,决定循环是否继续。整个循环的过程中,表达式1初始化部分只被执行1次,剩下的就是表达式2、循环语句、表达式3在循环。
用for打印1-10的代码来熟悉一下:
#include<stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
}
return 0;
}
2. 对比while和for
for和while在实现循环的过程中都有初始化、判断、调整这三个部分,但是for循环的三个部分非集中,便于代码的维护。而如果代码较多的时候while循环的三个部分就比较分散,所以从形式上for循环要更优一些。
3. for循环中的流氓——continue和break
contune在for和while里的表现是不同的,如下:
从代码执行结果可以发现,它只有5没有打印,所以continue在for循环中的作用是跳过本次循环中continue后的代码,直接执行循环的调整部分。可以运用这特性来完成“当在条件下是,不满足什么要求,需要跳过本次的什么程序”这种场景。举个简单的例子,y=1/x,x在【-10,0)U(0,10】,且x为整数,求y的所有值,我们就可以利用continue跳过x=0这个值,使整个代码简化,而不是用两个for来算。
break在for和while循环中的表现是一样的,只要执行break,则一定终止循环。如下:
#include<stdio.h>
int main()
{
int i = 0;
for(i=1;i <= 10;i++)
{
if (i == 5)
{
break;
}
printf("%d ", i);
}
return 0;
}
五、continue和break并非流氓
在很多时候都会用的这两个关键字的
比如下面这段代码:
这是一个猜数字的小游戏,游戏嘛,自然要看玩家这下是否愿意玩,这就需要提供一个退出游戏的选项,而break就可以完美的完成循环的终止,用在此处就好比钱花在刀刃上。所以C语言中是没有一个无用的东西,应该把每一个关键字都学懂,并且加以利用。