您的位置:首页 > 编程语言 > C语言/C++

黑马程序员---C语言基础---循环控制

2015-07-04 15:27 375 查看
-------
android培训、java培训IOS培训期待与您交流! ----------

1、概述:程序中涉及到阶乘、累加、排序等问题时,一般都要用到循环来解决,因为程序中的某一段需要执行若干次。

C语言实现循环的语句有while语句、do~while语句、for语句,还有我们不用的goto和if的组合。

2、while语句:

while语句实现”当“型结构,即当满足某一条件时,才执行循环体。

(1)一般形式:while(表达式)//这里没有分号

循环体语句;

(2)功能:先判断表达式,如果为真(即值不为0),则执行一遍循环体再判断表达式,重复上面过程,直到表达式值为假(即值为0),才终止循环,继续执行循环后面的语句。如求1+2+3+……+99+100

<span style="font-size:14px;"></span><pre name="code" class="objc">#include <stdio.h>
void main()
{
int i,sum=0;
i=1;
while(i<100)
{
sum=sim+i;
i++;
}
printf("%d",sum);
}


(3)暖心Tips:

①while循环先判断表达式,再执行循环体。循环体有可能一次也不执行。

②while循环体如果包含一个以上的循环语句,则应该用{}括起来。

③循环体应该包含有使循环趋向结束的语句。

④遇到以下两种情况,while循环都将退出。

表达式为假、循环体内遇到break或者goto

⑤无限循环:while(1) 循环体;

⑥另外,while语句不会自己改变循环变量的值,循环体内部可以自行修改。

(4)活学活用:用循环体显示1-10的平方。

<span style="font-size:14px;"></span><pre name="code" class="objc">#include <stdio.h>
void main()
{
int i=1;
while(i<=10)
{
printf("我要进黑马系列之%d的平方是:%d\n",i,i*i);
i++;
}
}


3、do-while语句:

(1)一般形式:do

循环体

while(表达式);//这里必须有分号

(2)功能:先执行一遍循环体,然后再判断表达式的真假,真则继续执行循环体,假则退出循环。

暖心Tip:do-while循环中,循环体至少执行一次。

对比while循环与do-while循环,可以发现,循环体相同时,如果i的初始值为101,则while循环的输出结果是0,循环体一次也没有执行,而do-while语句的输出结果为101,可见其循环体执行了一次。

<span style="font-size:14px;"></span>
<pre name="code" class="objc">#include <stdio.h>
void main()
{
int i,sum=0;
i=101;
do
{
sum=sim+i;
i++;
}while(i<100);
printf("%d",sum);
}




4、for语句:for语句是C语言中最灵活、应用也最多最广的循环语句,从某种程度上可以完全替代while语句以及do-while语句。

(1)一般形式:for(表达式1;表达式2;表达式3)

循环体语句;

暖心Tip:该形式中,表达式1-3以及循环体语句都可以为空,但不能省略“;”。

(2)常用形式:for(循环变量赋初始值;循环条件;循环变量增值)

循环体语句;

用for循环实现1+2+……+99+100:

<span style="font-size:14px;"></span><pre name="code" class="objc">#include <stdio.h>
void main()
{
int i,sum=0;
for(i=1;i<=100;i++)
{
sum=sim+i;
//i++;
}
printf("%d",sum);
}


暖心Tip:for循环中,不允许在循环体内部改变循环变量的值,否则会报错,每次循环体执行结束,会根据循环变量增值语句自动改变循环变量的值。

(3)几种形式:

①省略表达式1:那么就应该在for循环之前初始化循环变量。

②省略表达式2:循环条件始终为真,循环不终止(除非遇到break或者goto语句)。

③省略表达式3:应该另外设法将循环结束,给它一个出口。

④省略表达式1、3:完全等同于while语句。

⑤省略表达式1、2、3:循环变为无限无条件循环,死循环。

5、各种循环的嵌套:

(1)定义:循环的嵌套是指一个循环体内部,又包含了另外一个完整的循环结构。

(2)三种循环可以互相嵌套,并且不限制层数。

(3)循环可以相互嵌套,但不可以交叉。

(4)活学活用:利用循环嵌套输出99乘法表。

<span style="font-size:14px;"></span><pre name="code" class="objc">#include <stdio.h>
void main()
{
int i,j;
for(i=1;i<10;i++)
printf("%4d",i);
printf("\n-------------------------------------\n");
for(i=1;i<10;i++)
for(j=1;j<10;j++)
printf((j==9)?"%4d\n":"%4d",i*j);
}


暖心Tip:上边的最后一个输出语句中,使用了?表达式,其格式为:表达式1?表达式2:表达式3,其作用机制为:判断表达式1的值,如果为真则整个表达式的值为表达式2的值,否则整个表达式的值为表达式3的值。

6、break和continue语句:

(1)break语句:

①功能:在循环语句与switch语句中,终止并跳出循环体或者开关体。

②说明:只能跳出最近一层的结构。

只能用于循环语句以及switch语句,不能用于其他语句。

③一般形式:break;

④应用:计算圆的面积,面积大于100时停止计算

<span style="font-size:14px;"></span><pre name="code" class="objc">#include <stdio.h>
#define PI 3.14159//#define是定义常量的语句,定义时常量和数值之间没有"="。
void main()
{
int r;
float area;
for(r=1;r<=10;r++)
{
area=PI*r*r;
if(area>100)
break;
printf("r=%d,area=%f",r,area);
}
}


<span style="font-size:14px;"></span>

(2)continue语句:

①功能:结束本次循环,跳过循环体中未执行的语句,进行下一次是否执行循环的判断。

②continue语句仅用于循环语句中;

③和break的区别:continue只结束本次循环,而break结束整个循环。break还可用于switch语句中,而break不可以。

④应用:吧100-200之间,不能被三整除的数进行输出:
#include <stdio.h>
void main()
{
int i;
for(i=100;i<=200;i++)
{
if(i%3==0)
continue;//被三整除则继续循环而不执行printf语句。
printf("%d",i);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: