欢迎来到天天文库
浏览记录
ID:43081244
大小:81.50 KB
页数:19页
时间:2019-09-29
《c语言 高级 教程 第三章》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C与C++程序设计第三章程序的流向控制李堂秋厦门大学计算机科学系2021/8/233.1语句和程序块简单语句C中,任何表达式的后面加一个分号就成了语句:x=0;i++;printf(“%d%d”,a,b);分号是语句的终结符(而不是分隔符),即每一个单语句的后面一定要有一个分号。把0-n个语句用{}括起来组成复合语句,称程序块:{<说明语句><执行语句>}因为复合语句本身已是一个完整的语句,所以大括符的后面不用加分号。12021/8/233.2if-elseif-else语句用于表达决策,一般的格式为:if(<表达式>)/*如果
2、表达式成立*/<语句1>/*执行语句1*/else/*否则*/<语句2>/*执行语句2*/由于else部分是可选的,在组成复合语句时往往会引起歧义:if(n>0)if(n>0)if(n>0)if(a>b)if(a>b){if(a>b)z=a;对比z=a;对比z=a;elseelse}z=b;z=b;elsez=b;2if-else(续)下面是一个很难发现的错误:if(n>=0)for(I=0;I0){printf(“….”);retunI;}elseprintf(“error--nisnegati
3、ve”);因为C编译器会认为else是和内层的if配对的33.3else-if多分叉选择结构:if(<表达式>)<语句>;elseif(<表达式>)<语句>;elseif(<表达式>)<语句>;elseif(<表达式>)<语句>;else<语句>;4else-if(续)下面是多分支选择的一个典型应用:/*binsearch:findxinv[0]4、{mid=(low+high)/2;if(xv[mid])low=mid+1;else/*foundmatch*/returnmid;}return-1;/*nomatch*/}53.4switchswitch语句是一个多分支选择的语句,它测试表达式的值是否能与一个常数表达式的值相匹配,一般的格式如下:switch(<表达式>){case<常数表达式>:<语句>case<常数表达式>:<语句>….default:<语句>}如果与其中的一个常数表达式的值匹配,程序就从它后面的语5、句开始执行,直到遇到break语句;如果没有break语句,执行到switch语句的结束;如果没有匹配的常数表达式,就执行default后面的语句。default是可有可无的,如果没有这语句,则什么也不做。6switch(续)#includemain()/*countdigits,whitespace,others*/{intc,i,nwhite,nother,ndigit[10];nwhite=nother=0;for(i=0;i<10;i++)ndigit[i]=0;while((c=getchar())!=EOF){6、switch(c){case‘0’:case‘1’:case‘2’:case‘3’:case‘4’:case‘5’:case‘6’:case‘7’:case‘8’:case‘9’:ndigit[c-‘0’]++;break;case‘‘:case‘’:case‘t’:nwhite++;break;default:nother++;break;}}printf(“digits=“);for(i=0;i<10;i++)printf(“%d”,ndigit[i]);printf(“,whitespace=%d,other=%d7、n”,nwhte,nother);}73.5循环--while,forwhile循环格式如下:while(<表达式>)<语句>如果<表达式>的值是非0,执行语句,再重复计算<表达式>…循环直到<表达式>的值为0,while语句结束转去执行它后面的语句。for语句的格式如下:for(<表达式1>;<表达式2>;<表达式3>)<语句>它相当于:<表达式1>;while(<表达式2>){<语句><表达式3>;}8循环--while,for(续1)for循环的三个表达式的功能不同,但均可省略,<表达式2>省略时表示永真,要通过循环体内的break8、语句才能结束循环,如:for(;;){…}用while还是for主要根据个人的爱好,但一般在不用初始化和重修改变量是用while是恰
4、{mid=(low+high)/2;if(xv[mid])low=mid+1;else/*foundmatch*/returnmid;}return-1;/*nomatch*/}53.4switchswitch语句是一个多分支选择的语句,它测试表达式的值是否能与一个常数表达式的值相匹配,一般的格式如下:switch(<表达式>){case<常数表达式>:<语句>case<常数表达式>:<语句>….default:<语句>}如果与其中的一个常数表达式的值匹配,程序就从它后面的语
5、句开始执行,直到遇到break语句;如果没有break语句,执行到switch语句的结束;如果没有匹配的常数表达式,就执行default后面的语句。default是可有可无的,如果没有这语句,则什么也不做。6switch(续)#includemain()/*countdigits,whitespace,others*/{intc,i,nwhite,nother,ndigit[10];nwhite=nother=0;for(i=0;i<10;i++)ndigit[i]=0;while((c=getchar())!=EOF){
6、switch(c){case‘0’:case‘1’:case‘2’:case‘3’:case‘4’:case‘5’:case‘6’:case‘7’:case‘8’:case‘9’:ndigit[c-‘0’]++;break;case‘‘:case‘’:case‘t’:nwhite++;break;default:nother++;break;}}printf(“digits=“);for(i=0;i<10;i++)printf(“%d”,ndigit[i]);printf(“,whitespace=%d,other=%d
7、n”,nwhte,nother);}73.5循环--while,forwhile循环格式如下:while(<表达式>)<语句>如果<表达式>的值是非0,执行语句,再重复计算<表达式>…循环直到<表达式>的值为0,while语句结束转去执行它后面的语句。for语句的格式如下:for(<表达式1>;<表达式2>;<表达式3>)<语句>它相当于:<表达式1>;while(<表达式2>){<语句><表达式3>;}8循环--while,for(续1)for循环的三个表达式的功能不同,但均可省略,<表达式2>省略时表示永真,要通过循环体内的break
8、语句才能结束循环,如:for(;;){…}用while还是for主要根据个人的爱好,但一般在不用初始化和重修改变量是用while是恰
此文档下载收益归作者所有