,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第四章,C,51,流程控制语句,第一节、,C,语言的基本结构,C,语言是一种结构化编程语言,结构化语言的基本元素是模块,是程序的一部分。,每一个模块中,都只有一个出口和一个入口。,结构化程序由若干模块组成,每个模块中包含若干个基本结构,而每个基本结构中可以有若干条语句。,C,语言有三种基本结构:,顺序结构,选择结构,循环结构,一、顺序结构,顺序结构是一种最基本的、最简单的编程结构。,A,B,二、选择结构,选择结构有两种形式:,二选一结构,多选一结构,二选一结构(,if,语句):,表达式为1?,A,1,B,0,表达式为1?,A,1,0,二、选择结构,多选一结构(,switch,语句,):,表达式的值=?,A1,A2,An,.,常量表达式1,常量表达式2,常量表达式,n,三、循环结构,循环语句有两种:,先判断,后执行,先执行,后判断,先判断,后执行(,while,for):,先执行,后判断(,dowhile):,表达式为1?,A,1,0,表达式为1?,A,1,0,第二节 选择语句,选择结构有两种形式:,多选一结构(,switch/case,语句),复合语句:由一对大括号括起来的语句。,例:,c=a;a=b;b=c;,二选一结构(,if,语句),一、,if,语句的基本形式,if,语句的基本形式有四种:,1.,if(,表达式,)语句;,3.,if(,表达式1,)语句1;,else if(,表达式2),语句2;,else if(,表达式3),语句3;,.,else if(,表达式,n,),语句,n;,else,语句,n+1;,2.,if(,表达式,)语句1;,else,语句2;,4.,if,的嵌套形式:,if(,表达式1),if(,表达式2)语句1;,else,语句2;,else,if(,表达式3)语句3;,else,语句4;,二、,if,语句的各种例子,b=3;,if(a=0)b=5;,b=3;,if(a=0)b=5;,else b=7;,b=3;,if(a=0)b=5;,else if(a=1)b=7;,else if(a=2)b=9;,else if(a=3)b=11;,else b=13;,b=3;,if(a=0)b=5;,if(a=5)b=7;,else b=9;,else if(ab),if(ad)c=15;,else c=0;,if(ab),if(ad)c=15;,else c=0;,当,if,的个数与,else,的个数不相同时,,else,采用就近配对的原则。,if,的个数大于等于,else,的个数。,if(ab),if(ad)c=13;,else if(ae)c=15;,else c=0;,四、条件运算符,条件运算符的格式:,表达式1?表达式2:表达式3,含义:,if(,表达式1)表达式2;,else,表达式,3;,例:,(,ad)?(c=15):(c=0);,也可写为:,c=(ad)?15:0;,含义:,if(ad)c=15;else c=0;,例:,max=(ab)?a:b;,if(ab)max=a;else max=b;,题:,d=(ab)?a:(bc)?a:c,五、,if,语句的例子,y=,1 当,x0,0 当,x=0,-1 当,x0,1.,if(x0)y=1;,2.,if(x0)y=1;,if(x0)y=-1;,else y=0;,3.,if(x0)y=1;,4.,if(x0)y=1;,7.,if(x=0)y=-1;,else y=1;,if(x=0)y=0;,8.,if(x=0)y=1,else y=-1;,9.,if(x=0)y=0;,六、,switch/case,语句,switch,语句的基本形式如下:,switch(,表达式),case,常量表达式1:语句1;,break;,case,常量表达式2:语句2;,break;,.,case,常量表达式,n:,语句,n;,break;,default:,语句,n+1;,说明:,1 表达式一般要求是有序可数的类型,例:整形、字符型、枚举类型等;,2.每个,case,后的常量表达式必须互不相同;,3.,case,后的常量表达式的顺序无所谓;,4.执行方式是根据表达式的值来取,case,后面的常量表达式;,5.,b,reak,可有可无,但执行方式不一样。,七、,switch,语句的例子,用,A,、B、C、D、E,来表示分数的等级:,100=,score=90 A,90,score=80 B,80,score=70 C,70,score=60 D,score=90 E,switch(score),switch(scores/10),case 10:,case 9:grade=A;break;,case 8:grade=B;break;,case 7:grade=C;break;,case 6:grade=D;break;,default:grade=E;,第二节 循环语句,循环语句一般有循环体和循环终止条件组成。,一组被重复执行的语句称为循环体,能否重复执行下去则取决于循环终止条件。,实现循环的语句有以下三种:,while,语句,先判断,后执行;,dowhile,语句,先执行,后判断;,for,语句 先判断,后执行。,一、,while,语句的格式和例子,while,语句的一般形式为:,while(,表达式),循环体;,表达式为1?,循环,体,1,0,void main(void),int,a=0,sum=0;,while(),sum+=a;a+;,printf,(“sum=%d”,sum);,a0&y+=5),a=1;,b=45;,x=P1;,二、,dowhile,语句,do.while,语句的一般形式为:,do,循环体;,while(,表达式);,void main(void),int,a=0,sum=0;,do,sum+=a;a+;,while();,printf,(“sum=%d”,sum);,a101,表达式为1?,循环,体,1,0,三、,for,语句,for,循环语句的一般形式为:,for(,表达式1;表达式2;表达式3)循环体;,for,循环的语句执行过程如下:,1、先对表达式1赋初值,进行初始化。,2、判断表达式2是否满足给定的循环条件,若满足,则执行循环体内语句,然后执行下面第三步。若不满足循环条件,则结束循环,转到第五步。,3、若表达式2为真,在执行指定的循环语句后,求解表达式3。,4、回到第二步继续执行。,5、退出,for,循环,执行下面一第语句。,四、,for,语句的例子,void main(void),int,k,sum=0;,for(k=0;k101;k+),sum+=k;,printf,(“sum=%dn”,sum);,例:1+2+100,对,for(k=0;k101;k+)sum+=k;,语句,的修改及含义:,k=0;,for(;k101;)sum+=k+;,k=0;,for(;k101;k+)sum+=k;,for(k=0;k101;)sum+=k+;,for(k=0;k101;k+)sum+=k;,k=0;,for(;)sum+=k+;,五、,for,语句的应用,延时程序:,void,msec,(unsigned,int,x),unsigned char j;,while(x-),for(j=0;j125;j+);,六、循环语句的嵌套,三个循环语句可以互相嵌套,嵌套即循环语句中套循环语句,例:,while(,表达式),do,while(,表达式),for(,表达式1;表达式2;表达式3),while(,表达式),习题,用三种循环方式分别编写程序显示1到100的平方。,2.用辗转相除法求两个数的最大公约数,