八、控制流。 -- while循环
1、在C语言中,控制流有两种,一种是分支,一种是循环。
分支: if-else switch
循环: for while do-while
2、while循环。
1)基本框架。
while(判定条件)
{ //循环体 --> 写你需要循环的内容
表达式;
}
2)处理流程。
先判断判定条件 --> 真 --> 执行循环体中所有的表达式 --> 判断判定条件 --> 假 --> 跳出循环
3)死循环。
每次判断判定条件结果恒为真,那么这种循环就称之为死循环,也就是说无法通过判定条件为假来跳出循环。
while(1)
{
xxxx; //一直被执行
}
4)省略{}情况。
---------------------------------------
while(1)
xxx; --> 紧跟着while(1)的语句才是循环体的内容
yyy; --> 不属于循环体的内容
等价于
while(1)
{
xxx;
}
yyy;
---------------------------------------
while(1); --> 有分号,代表有循环体,但是循环体中没有任何的内容。
xxx;
yyy;
等价于
while(1) --> 空循环
{
}
xxx;
yyy;
结论:
1)当循环体中的表达式大于等于2个时,则复合语句{}不可以省略。
2)当循环体中的表达式只有1个时。则复合语句{}可以省略。
练习1: 使用while循环输出1~10。
#include
int main(int argc,char *argv[])
{
int i = 1;
while(i < 11)
{
printf("i = %dn",i++);
}
return 0;
}
练习2: 实现无论输入多少个参数,都可以将全部的参数打印出来(while循环)
#include
int main(int argc,char *argv[])
{
int i = 0; //argv数组的下标从0开始的。
while(i < argc)
{
printf("argv[%d]:%sn",i,argv[i]);
i++;
}
return 0;
}
练习3: 从键盘中获取一个数字,并存放在变量x中,并计算出来1+2+3+4+5+....+x的值是多少。
#include
int main(int argc,char *argv[])
{
//1. 从键盘中获取一个数字
int x;
scanf("%d",&x);
//2. 求和
int sum = 0;
int i = 1;
while(i <= x)
{
sum += i; //把i累加到sum变量中。
i++; //每次累加完之后,i都要加1
}
//3. 输出结果
printf("sum = %dn",sum);
return 0;
}
九、控制流。 --- for循环。
1)基本框架。
for(初始化控制变量语句;判定条件;变量 *** 作) --> 里面任意一个东西都可以不填。
{
}
2)处理流程。
aaaa;
for(bbbb;cccc;dddd)
{
eeee;
}
ffff;
aaaa; --> bbbb; ---> cccc; --> 真 --> eeee; --> dddd; ---> cccc; --> 假 --> ffff;
无论for循环要执行多少次,这个bbbb都只会执行一次。
3)死循环。
for(;;); 等价于 while(1);
等价于
for(;;) 等价于 while(1)
{ {
} }
4)省略{}情况。
for(;;)
xxx; --> 属于循环体的内容
yyy; --> 不属于循环体的内容
等价于
for(;;)
{
xxx;
}
yyy;
----------------------------------
for(;;);
xxx;
yyy;
等价于
for(;;)
{
}
xxx;
yyy;
练习4: 使用for循环输出1~10。
#include
int main(int argc,char *argv[])
{
int i;
for(i=1;i<11;i++)
{
printf("i=%dn",i);
}
return 0;
}
练习5: 从键盘中获取一个数字,并存放在变量x中,并计算出来1+2+3+4+5+....+x的值是多少。
#include
int main(int argc,char *argv[])
{
int x;
scanf("%d",&x);
int sum = 0;
int i;
for(i=1 ; i<=x ; i++)
{
sum += i;
}
printf("sum = %dn",sum);
return 0;
}
十、控制流。 --- do_while循环
1)基本框架。
do{
}while(判定条件); --> 注意:如果这里没有分号,就会编译出错。
2)处理流程。
先执行一遍循环体 --> 判断判定条件 --> 真 --> 执行循环体的内容 --> 判断判定条件 --> 假 --> 跳出循环
3)死循环。
do{
}while(1);
4)省略{}情况。
do
xxx;
while(1);
等价于
do{
xxx;
}while(1);
-----------------------
do
xxx;
yyy;
while(1); --> 编译出错。
不要以为会等价于
while(1)
xxx;
yyy;
等价于
do
xxx;
while(1);
yyy;
结论:当表达式只有一条,则复合语句{}可以省略,如果大于1条表达式,则必须添加{},否则编译出错。
练习6: 使用do_while循环输出1~10。
#include
int main(int argc,char *argv[])
{
int i = 1;
do{
printf("i = %dn",i);
i++;
}while(i < 11);
return 0;
}
练习7: 从键盘中获取一个数字,并存放在变量x中,并计算出来1+2+3+4+5+....+x的值是多少。
#include
int main(int argc,char *argv[])
{
int x;
scanf("%d",&x);
int sum = 0;
int i = 1;
do{
sum+=i;
i++;
}while(i<=x);
printf("sum = %dn",sum);
return 0;
}
练习8: 实现无论输入多少个参数,都可以将全部的参数打印出来(do_while循环)
#include
int main(int argc,char *argv[])
{
int i = 0;
do{
printf("argv[%d]:%sn",i,argv[i]);
i++;
}while(i
return 0;
}
总结:
1、如果是死循环,一般就是使用while循环。
2、如果循环次数有限的,一般就是使用for循环。
3、如果无论如何都要先执行一遍循环体,那么就使用do_while循环。
十一、控制流。 -- 分支。
分支:if-else switch
1、if分支。 -- 用法一。
if语句单独使用。
1)基本框架
if(判定条件) --> 如果判定条件为真,则执行复合语句中的所有表达式,否则就不执行复合语句中的内容。
{ -> 复合语句
}
2)省略{}情况
if(判定条件)
xxxx; --> 属于if语句的响应范围
yyyy; --> 不属于if语句的响应范围,无论条件真假,yyyy都会执行。
等价于
if(判定条件)
{
xxxx;
}
yyyy;
-------------------------------
if(判定条件); -> 无论条件的真假,xxxx与yyyy都会被执行。
xxxx;
yyyy;
等价于
if(判定条件)
{
}
xxxx;
yyyy;
2、if分支。 -- 用法二。
if语句与else语句配合使用。
1)基本框架
if(判定条件) --> 如果判定条件为真,就会执行复合语句1。
{ --> 复合语句1
}
else{ --> 复合语句2 --> 不满足判定条件的所有情况,都会执行复合语句2。
}
2)注意以下的情况。
if(判定条件1) --> 如果判定条件1为真,则执行xxx,如果条件1为假,就不执行xxx
xxx;
if(判定条件2) --> 如果判定条件2为真,则执行yyy,如果条件2为假,就执行zzz
yyy;
else
zzz;
---------------------
if(判定条件1) --> 这个写法是错误的。
xxx;
else
yyy;
else
zzz;
注意:复合语句一与复合语句二之间肯定有一个会被执行。
3、if分支。 -- 用法三。
else if多种情况判定。
1)基本框架
if(判定条件1) --> 如果判定条件1为真,则执行复合语句1,就结束整个分支。
{ --> 复合语句1
}
else if(判定条件2) --> 如果判定条件1为假,则进行判断判定条件2,如果判定条件2为真,则执行复合语句2,就结束整个分支。
{ --> 复合语句2
}
else if(判定条件3) --> 如果判定条件2为假,则进行判断判定条件3,如果判定条件3为真,则执行复合语句3,就结束整个分支。
{ --> 复合语句3
}
else{ --> 复合语句4 --> 如果判定条件3为假,则执行复合语句4,就结束整个分支。
}
练习9: 分别使用以上的三种办法,完成该题。
从键盘中获取一个数字。
0~100 输出small
101~200 输出middle
201~300 输出large
其他 输出error
#include
int main(int argc,char *argv[])
{
int x;
scanf("%d",&x);
if(x >= 0 && x <= 100)
{
printf("small!n");
}
else if(x >= 101 && x <= 200)
{
printf("middle!n");
}
else if(x >= 201 && x <= 300)
{
printf("large!n");
}
else{
printf("error!n");
}
return 0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)