资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第四章,C,程序流程设计,C,语句概述,程序的三种基本结构,选择型程序设计,循环型程序设计,辅助控制语句,4.1,C,语句概述,C,语句,:,以“,;”,作分隔符,编译后产生机器指令,.,C,语句分类,表达式语句:表达式加分号构成。,(,包括函数调用语句,),空语句:,;,程序控制语句,(9,种):,if()else,switch,for(),while(),dowhile(),continue,break,goto,return,分支,循环,辅助控制,如,total=total+limit;,a=3;,func,();,printf(“Hello,world!n,”);,:用,括起来的一组语句,一般形式:,数据说明部分;,执行语句部分;,说明:,“,”,后不加分号,语法上和单一语句相同,复合语句可嵌套,复合语句,结构化程序设计,基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(,goto,),结构化程序:由三种基本结构反复嵌套构成的程序叫,优点:结构清晰,易读,提高程序设计质量和效率,三种基本结构,顺序结构,A,B,A,B,流程图,N-S,图,4.2,程序的三种基本结构,P,A,B,真,假,P,B,A,真,假,k,A1,A2,Ai,An,k=k2,k=k1,k=,kn,k=,ki,.,.,二分支选择结构,多分支选择结构,选择结构,当型循环结构,直到型循环结构,P,A,假,真,当,P,为真,A,A,P,真,假,A,直到,P,为真,注:,A,B,A1.An,可以是一个简单语句,也可以是一个基本结构,循环结构,if,语句,(条件选择语句),if,语句的三种形式,形式一:,格式:,if(expression),statement,执行过程:,expr,statement,非,0,=0,例:,if(xy),printf(“%d”,x,);,expr,statement1,statement2,非,0,=0,形式二,:,格式,:,if(expression),statement1,else,statement2,执行过程:,例:,if(xy)max=x;,else max=y;,4.3,选择型程序设计,三:,格式:,if(expr1)statement1,else if(expr2)statement2,else if(expr3)statement3,.,else,statementn,expr1,statemnt1,非,0,=0,expr2,expr3,statemntn,statemnt3,statemnt2,非,0,非,0,=0,=0,执行过程:,例:,if(salary1000)index=0.4;,else if(salary800)index=0.3;,else if(salary600)index=0.2;,else if(salary400)index=0.1;,else index=0;,选择型程序设计形式,如:,if(a=b&x=y),printf(“a,=b,x=y”);,if(3),printf(“OK,”);,if(a),printf(“%d”,a,);,if,后面的表达式类型任意,语句可以是复合语句,if(x),if(x!=0),if(!x),if(x=0),例 考虑下面程序的输出结果,:,#include,main(),int,x,y;,scanf(“%d,%d”,&x,&y,);,if(xy),x=y;y=x;,else,x+;y+;,printf(“%d,%dn”,x,y,);,Compile Error!,说明:,:,一般形式:,if(expr1),if(expr2)statement1,else statement2,else,if(expr3)statement3,else statement4,内嵌,if,内嵌,if,if(expr1),if(expr2),statement1,else,statement2,内嵌,if,if(expr1),if(expr2),statement1,else,statement3,内嵌,if,if(expr1),statement1,else,if(expr3),statement3,else,statement4,内嵌,if,if,语句嵌套,/*ch4_4.c*/,#include,main(),int,x,y;,printf(Enter,integer x,y:);,scanf(%d,%d,&x,&y,);,if(x!=y),if(xy),printf(X,Yn);,else,printf(X,Yn);,else,printf(X,=Yn);,运行:,Enter integer x,y:12,23,XY,Enter integer x,y:12,12,X=Y,例 输入两数并判断其大小关系,缺省,时,,else,总是和它上面离它最近的未配对的,if,配对,if(),if(),if(),else.,else.,else.,if else,配对原则:,例:,if(a=b),if(b=c),printf(“a,=b=c”);,else,printf(“a,!=b”);,修改:,if(a=b),if(b=c),printf(“a,=b=c”);,else,printf(“a,!=b”);,实现,if else,正确配对方法:加,一般形式:,执行过程,:,switch,表达式,语句组,1,语句组,2,语句组,n,语句组,.,E 1,E 2,En,default,case,switch,语句,(,开关分支语句,),switch(,表达式,),case E1:,语句组,1;,break;,case E2:,语句组,2;,break;,.,case En:,语句组,n;,break;,default:,语句组,;,break;,:,E1,E2,En,是,常量表达式,且值必须互不相同,语句标号作用,必须用,break,跳出,case,后可包含多个可执行语句,且不必加,switch,可嵌套,多个,case,可共用一组执行语句,如:,case A:,case B:,case C:,printf(“score,60n”);,break;,.,说明:,例,switch(score),case 5:,printf(“Very,good!”);,case 4:,printf(“Good,!”);,case 3:,printf(“Pass,!”);,case 2:,printf(“Fail,!”);,default :,printf(“data,error!”);,运行结果:,score,为,5,时,输出:,Very good!Good!Pass!Fail!data error!,例子(,1,),/*ch4_5.c*/,#include,int,main(),int,c;,printf(Enter,m or n or h or other:);,c=,getchar,();,switch(c),case m:,printf(nGood,morning!n);break;,case n:,printf(nGood,night!n);break;,case h:,printf(nHello!n,);break;,default:,printf(n?n,);,break;,return 0;,例子(,2,)根据输入字母输出字符串,#include,int,main(),char grade;,grade=,getchar,();,switch(grade,),caseA:printf(90100n);break;,caseB:printf(8089n);break;,caseC:printf(7079n);break;,caseD:printf(6069n);break;,caseE:printf,(60n);break;,default:printf(errorn);break,;,return 0;,#include,int,main(),char grade;,grade=,getchar,();,switch(grade,),caseA,:,caseB,:,caseC,:,caseD:printf,(,60n,);break;,caseE:printf,(60n);break;,default:printf(errorn);break,;,return 0;,输入一个年份,判断是否是闰年,#include,int,main(),int,year;,printf,(“,请输入一个年份,:);,scanf,(%,d,&year,);,if(year%4=0&year%100!=0|year%400=0),printf(“%d,是闰年,n,year,);,else,printf,(“%d,不是闰年,n,year,);,return 0;,概述,C,语言可实现循环的语句:,用,goto,和,if,构成循环,while,语句,do while,语句,for,语句,goto,语句及用,goto,构成循环,goto,语句一般格式:,goto,语句标号,;,.,标号:语句,;,4.4,循环型程序设计,功能:无条件转移语句,说明:,不能用整数作标号,只能出现在,goto,所在函数内,且唯一,只能加在可执行语句前面,限制使用,goto,语句,4.4,循环型程序设计(,1,),/*ch5_1.c*/,#include,main(),int,i,sum=0;,i=1;,loop:,if(i=100),sum+=i;,i+;,goto,loop,;,printf(%d,sum,);,sum=0+1,sum=1+2=3,sum=3+3=6,sum=6+4,sum=4950+100=5050,循环初值,循环终值,循环变量增值,循环条件,循环体,例 用,if,和,goto,语句构成循环,一般形式,:,while(,表达式,),循环体语句;,执行流程,:,expr,循环体,假,(0),真,(,非,0),while,while,语句,特点:先判断表达式,后执行循环体,说明:,循环体有可能一次也不执行,循环体可为任意类型语句,下列情况,退出,while,循环,条件表达式不成立(为零),循环体内遇,break,return,goto,无限循环,:while(1),循环体,;,While,语句特点和说明,用,while,循环求,/*ch5_2.c*/,#include,main(),int,i,sum=0;,i=1;,while(i=100),sum=sum+i;,i+;,printf(%d,sum,);,循环初值,循环终值,循环变量增值,循环条件,循环体,例子,/*ch5_21.c*/,#include,int,main(),int,i=1;,while(i=10),printf(%d,*%d=%dn,i,i,i*i);,i+;,return 0;,运行结果:,1*1=1,2*2=4,3*3=9,4*4=16,5*5=25,6*6=36,7*7=49,8*8=64,9*9=81,10*,10,=100,例 显示,110,的平方,一般形式:,do,循环体语句;,while(,表达式,);,执行流程,:,do,循环体,expr,假,(0),真,(,非,0),while,dowhile,语句,特点:先执行循环体,后判断表达式,说明:,至少执行一次循环体,dowhile,可转化成,while,结构,expr,循环体,假,(0),真,(,非,0),循环体,While,循环,dowhile,语句特点和说明,一般形式:,for(,expr1,;,expr2,;,expr3,),循环体语句;,执行流程,:,expr2,循环体,假,(0),真,(,非,0),for,expr1,expr3,for,语句,:,for(,循
展开阅读全文