一、while循环和for循环
1)while循环
1.基本框架
while (判定条件)
{ //花括号里面的是循环体
表达式1;
表达式2;
... // 表达式是循环的内容
}
2.处理流程
判定条件 -> 真 -> 执行循环体中的所有表达式 -> 判定条件 -> 假 -> 跳出循环
3.死循环
死循环就是判定条件恒为真,无法通过判断判定条件为假来跳出循环。
while(1)
{
xxxx; //一直被执行
}
4.省略{}情况
while(1)
xxxx; //紧跟在while(1)语句的表达式就是循环体的内容。
yyyy; //不属于循环体的内容
等价于
while(1)
{
xxxx;
}
yyyy;
while(1); //有分号,代表是有循环体,但是循环体中没有任何的内容 -> 空循环
xxxx;
yyyy;
等价于
while(1)
{
}
xxxx;
yyyy;
结论:
- 当循环体中表达式大于2个时,复合语句{}不能省略。
- 当循环体中表达式只有1个时,则复合语句{}可以省略的!
例:
/* 测试while循环 */
#include<stdio.h>
int main(int argc, char *argv[])
{
char c;
printf("");
while(c != EOF) // EOF为文本结束符
{
scanf("%c", &c);
printf("%c", c);
}
return 0 ;
/mnt/hgfs/1.22 Ubuntu-14.4share/C/day02 --> :./while1
5
5
/mnt/hgfs/1.22 Ubuntu-14.4share/C/day02 --> :./while1
44984313
44984313
2)for循环
1.基本框架
for(初始化控制变量语句;判定条件;变量操作) // 里面的语句不一定要填,可以空白。
{ // 循环体
需要循环地执行的语句;
}
等价于下列的wiile语句:
初始化控制变量语句;
while (判定条件)
{
需要循环地执行的语句;
变量操作;
}
2.处理流程
1
for(2;3;4)
{
5
}
6
1->2.初始化语句->3.判定条件->真->5.执行循环->4.变量操作->3.判定条件->假->6 (初始化语句只会执行一次)
3.死循环
for( ; ;); // 等价于 while(1);
等价于
for(;;) * 等价于 while(1)
{ * {
*
} * }
4.省略{}情况
for(;;)
xxx; //属于循环体的内容
yyy; //不属于循环体的内容
等价于
for(;;)
{
xxx;
}
yyy;
例:
/* 测试for语句 */
#include "stdio.h"
int main(int agrc, char *argv[])
{
char c;
printf("please input:\n");
for( ; ;)
{
scanf("%c", &c);
printf("%c", c);
}
return 0;
}/mnt/hgfs/1.22 Ubuntu-14.4share/C/day02 --> :./for1
please input:
13123456
13123456
二、do-while循环
1.基本框架
do{ // 循环体
需要循环的语句;
...
}while(判定条件);
【注意】while后面没有分号是语法出错。
2.处理流程
先执行一次循环体 -> 判定条件 -> 真 -> 执行循环体内容 -> 判定条件 -> 假 -> 跳出循环
3.死循环
do{
}while(1);
4.省略{}写法
do
xxxx;
while(1);
等价于
do{
xxxx;
}while(1);
例:
#include<stdio.h>
int main(int argc, char *argv[])
{
char c;
printf("please input:\n");
do
{
scanf("%c", &c);
printf("%c", c);
}while(1);
return 0 ;
/mnt/hgfs/1.22 Ubuntu-14.4share/C/day02 --> :./while1
dwadsafa
dwadsafa
【注意】do-while语句一定会执行一条循环体中的需要循环的语句;
例:
#include<stdio.h>
int main(int argc, char *argv[])
{
char c;
printf("please input:\n");
do
{
scanf("%c", &c);
printf("%c", c);
}while(0);
return 0 ;
}
/mnt/hgfs/1.22 Ubuntu-14.4share/C/day02 --> :./do_while3
please input:
090
0 //一定会执行一次需要的循环语句;