第4-2课 选择结构程序.doc_第1页
第4-2课 选择结构程序.doc_第2页
第4-2课 选择结构程序.doc_第3页
第4-2课 选择结构程序.doc_第4页
第4-2课 选择结构程序.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4-2课 选择结构程序一、教学目标 1、if语句 if语句的三种形式 if语句的嵌套 条件运算符和条件表达式2、switch语句二、教学过程1、复习if 语句2、复习if else语句3、第三种形式为if-else-if形式 if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式m) 语句m; else 语句n;其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。 if-else-if语句的执行过程如图33所示。【例-】输入成绩判断等级(多条件,多分支语句)main()int cj;scanf(%d,&cj);printf(cj=%dn,cj);if(cj=60 & cj=70 & cj=80 & cj=90 & cjb)a+; b+;elsea=0; b=10;5、if语句的嵌套 当if语句中的执行语句又是if语句时,则构成了if 语句嵌套的情形。其一般形式可表示如下: if(表达式) if语句; 或者为 if(表达式) if语句; else if语句;在嵌套内的if语句可能又是if-else型的,这将会出现多个if和多个else重叠的情况,这时要特别注意if和else的配对问题。例如: if(表达式1) if(表达式2) 语句1; else语句2;其中的else究竟是与哪一个if配对呢? 应该理解为: if(表达式1) if(表达式2) 语句1; else 语句2;还是应理解为: if(表达式1) if(表达式2) 语句1; else 语句2;为了避免这种二义性,语言规定,else 总是与它前面最近的if配对,因此对上述例子应按前一种情况理解。 【例-】main() int a,b; printf(please input A,B: ); scanf(%d%d,&a,&b); if(a!=b) if(ab) printf(ABn); else printf(AB、Ab) printf(ABn); else printf(Ab) max=a; else max=b;可用条件表达式写为 max=(ab)?a:b;执行该语句的语义是:如ab为真,则把a赋予max,否则把b 赋予max。使用条件表达式时,还应注意以下几点: 1)条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。因此 max=(ab)?a:b可以去掉括号而写为 max=ab?a:b2)条件运算符?和:是一对运算符,不能分开单独使用。3)条件运算符的结合方向是自右至左。例如:ab?a:cd?c:d应理解为ab?a:(cd?c:d)这也就是条件表达式嵌套的情形,即其中的表达式3又是一个条件表达式。 【例-】main() int a,b,max; printf(n input two numbers: ); scanf(%d%d,&a,&b); printf(max=%d,ab?a:b);7、Switch语句 语言还提供了另一种用于多分支选择的switch语句, 其一般形式为: switch(表达式) case常量表达式1: 语句1; case常量表达式2: 语句2; case常量表达式n: 语句n; default : 语句n+1; 其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case和default中的语句,直到switch结束。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。main()int n;scanf(%d,&n);switch(n) case 1:n=n+1;break; case 2:n=n+2; default:n=n+3; case 3:n=n+4; printf(n=%d,n);分析当输入1和4的时候,结果分别是多少【例】 main()float a,b;char c;scanf(%f%c%f,&a,&c,&b);switch(c) case + :printf(%fn,a+b);break; case - :printf(%fn,a-b);break; case * :printf(%fn,a*b);break; case / :printf(%fn,a/b);break; default:printf(input errorn); 语言还提供了一种break语句,专用于跳出switch语句,break 语句只有关键字break,没有参数 在使用switch语句时还应注意以下几点:1)在case后的各常量表达式的值不能相同,否则会出现错误。2)在case后,允许有多个语句,可以不用括起来。3)各case和default子句的先后顺序可以变动,而不会影响程序执行结果。4)default子句可以省略不用。三、课堂练习A)B)C)D) 编程1:输入任意三个整数,按升序输出 main() int a,b,c; int k; scanf(%d%d%d,&a,&b,&c); if(ab) k=a;a=b;b=k; if(ac) k=a;a=c;c=k; if(bc) k=b;b=c;c=k; printf(%d,%d,%dn,a,b,c); 编程2:输入字符为大写改小写输出,输入字符为小写改大写输出,不是字符,则原样输出。 main() char ch;ch=getchar();if(ch=A&ch=a&ch0) s=s+1; if(ab) t=s+t; else if(a=b) t=5; else t=2*s; printf(s=%d,t=%dn,s,t);2、下列程序运行后的输出结果是( ) main()int a=1,b=2,c=3;if(c=a) printf(%dn,c);else printf(%dn,b);3、在嵌套使用if语句时,C语言规定else总是( ) A、和之前与其具有相同缩进位置的if 配对 B、和之前与其最近的if配对C、和之前与其最近的且不带else的if配对 D、和之前的第一个if配对4、下列程序运行后的输出结果是( ) main()int x,a=1,b=2,c=3,d=4;x=(ab)?a:b;x=(xx)?x:d;printf(%dn,x);5、以下程序的运行结果是( ) main()int x=1,y=2,z=3;if(xy)if(yz)printf(%d,+z);elseprintf(%d,+y);printf(%dn,x+);getch();A、331 B、41 C、2 D、16、以下程序的运行结果是( ) main()int x=1,y=0,a=0,b=0;switch(x)case 1: switch(y) case 0:a+;break; case 1:b+;break; case 2:a+;b+;break;case 3:a+;b+;printf(a=%d,b=%dn,a,b);getch(); A、a=1,b=0 B、a=2,b=2 C、a=1,b=1 D、a=2,b=17、C语言对嵌套if语句的规定是:else总是与()配对 A) 其之前最近的if B) 第一个ifC) 缩进位置相同的if D) 其之前最近且不带else的if8、以下关于switch语句和break语句的描述中,只有()是正确的 A) 在switch语句中必须使用break语句B) break语句只能用于switch语句C) 在switch语句中,可以根据需要使用或不使用break语句D)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论