C基础----控制流程

来源:互联网 发布:广告图设计软件 编辑:程序博客网 时间:2024/05/01 20:49


 

 流程控制
  顺序结构:默认的流程结构。按照书写顺序执行每一条语句。
  选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码。
  循环结构:在给定条件成立的情况下,反复执行某一段代码。
一、选择结构-if
  if (表达式)  语句1;
         if(count>50)  开班;  上课;
  if(表达式)  语句1;  else 语句2;
          if(count>50)  开班;  else 不开班;
   if(表达式)  {  }
         if(count>50)  {开班; 布置课室;}  else {}
  if -else if-else
         if(a==0) else if (a>0)  else
  特点:只有一个括号会被执行
注意:
·        if(a!=0) { a不是0;} else {a是0;}
 if (a); {  } //if后面加后,那么后面的{}就是代码块,与if语句无关。
·        if (10) int a = 9;
二、选择结构-switch
 switch(表达式) { case 数值1: break; … default: break;}
 举例

int a = 10; switch (a) {    case 0:        printf("这是一个0");        break;    case 5:        printf("这是一个5");        break;    case 10:        printf("这是一个10");        break;    default:        printf("什么也不是");        break; }

break的作用:退出整个switch语句。默认情况下,只有一个case后的代码被执行,如果case后面没有break,就会执行满足条件的那行语句后所有case中的语句,直到遇到break为止。 若在case中定义变量,则必须用{}括起来。
if和switch的对比
1>  很多情况可以互换,switch能完成的功能,if都能完成。
2>   if用得比较多,比较灵活,switch只能某个单值,所以能用if就用if(if能完成的功能,switch并不一定能完成)。
三、循环结构-while
1. 结构
 while(条件)
{
        循环体;
}
2. 运行原理
1>  如果条件一开始就不成立,永远不会执行循环体;
2>  如果条件成立,就会执行一次循环体,执行完毕,再次判断条件是否成立……
3. 注意
while(条件); 即在后面加上“;”,也是可以的,只是每次运行一次while语句,执行一次空语句,然后再次进入while循环,容易产生死循环。while(1);是最简单的死循环。
循环结构-do while
1、  结构:
do{ 
}while(条件);
2、  特点:无论条件是否成立,一定会执行一次循环体。
3、  while和do while循环对比

int i=0;while(i<0){ i++;}
int i=0;                                                                                                                                          do{ i++;} while(i<0);
  •  do while循环不论条件是否成立,一定会执行一次循环体,而wile循环只要条件不成立,就不会执行循环体。  很多情况下两者可以相互转换。

循环结构-for
1.    常用结构
for(语句1;条件;语句2)
{
        循环体;
}
2.    运行过程
语句1为初始化语句;语句2是增量语句(执行完循环体之后再次执行的语句)。在运行过程中,for一开始就会执行一次语句1(整个for循环只会执行一次语句1),然后判断条件是否成立,如果条件成立,就会执行一次循环体,然后再执行语句2,再次判断条件是否成立,然后再次执行语句2……。
初始化语句等可以是多句(把printf放到for的括号中)
3.    for循环嵌套
好友列表1
        好友1
        好友2
好友列表2
        好友1
        好友2
好友列表3
        好友1
        好友2

#include<stdio.h>int main(){        int i,j;for(i=1;i<=3;i++)    {         Print(“好友列表%d”,i);         for(j=1;j<=2;j++)        {             printf(“   好友%d”,j);        }    }      return0;}

4.    注意事项
1>   死循环 for(;;);
2>   for循环体内部变量的作用域
3>   作用域混淆
for (int i = 0; i<5; i++)  int a =10;
5.    while循环和for循环的比较
 1>  可以互换
 2>  for循环的变量可以及时回收
break和continue
1.break语句
break语句可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句
一般形式:
              break;
注意:break语句不能用于循环语句和switch语句之外的任何其他语句中。
比如:

unsigned char i, j=50;for(i=0;i<100;i++){      if(i>j)break;}j=i;

当程序循环到i=51时,执行break语句,跳出for循环,开始执行j=i这条语句。
2.continue语句
作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。
一般形式:
        continue;
比如:

unsigned char i, j=50;for(i=0;i<100;i++){      if(i>j)continue;      j=i;}

当程序循环到i=51时,执行continue语句,结束本次循环,即不执行下面的j=i语句,而是执行i++,即i=52,故i<100,循环的条件成立,循环继续执行,直到i<100的条件不成立,for循环才终止。
continue与break的区别:
continue语句跳出本次循环,进入下一次循环体判断,只结束本次循环,而不是终止整个循环的执行。
break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。
1.continue只结束上一级本次循环,针对只是for  while两大类循环语句。
2.break结束上一级整个循环语句,可以是for while,还可以为swtich.
测试代码:    

 #include<stdio.h> #include<string.h>     int main()     {       char i;      for(i=0;i<5;i++){             switch(i){                 case0:printf("i=%d\n",i);break;                 case1:printf("i=%d\n",i);break;                 case2:printf("i=%d\n",i);break;                 case3:printf("i=%d\n",i);continue;printf("ok\n");                 case4:printf("i=%d\n",i);break;                 default:printf("erro\n");           }           printf("abanda\n");        }    }

输出:
i=0
abanda
i=1
abanda
i=2
abanda
i=3
i=4
abanda 

0 0
原创粉丝点击