高级语言程序设计教学课件2次课选择结构_第1页
高级语言程序设计教学课件2次课选择结构_第2页
高级语言程序设计教学课件2次课选择结构_第3页
高级语言程序设计教学课件2次课选择结构_第4页
高级语言程序设计教学课件2次课选择结构_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

第三章选择结构

C语言程序设计第三章选择结构C语言程序设计2学习目标if语句switch语句关系运算与逻辑运算

牛牛文库文档分享2学习目标if语句牛牛文库文档分3if(表达式)语句1

else语句2if(表达式)语句if(表达式1) 语句1

else

if(表达式2)语句2

else

if(表达式3)语句3

……

else

语句nif语句格式小结两个分支一个分支多分支

牛牛文库文档分享3if(表达式)语句1if(表达式)语句if(表达式143.3两个分支的if语句if~else~语句的基本形式格式

if(表达式)

语句1

else

语句2表达式语句1语句2TF

牛牛文库文档分享43.3两个分支的if语句if~else~语句的基本形式53.4一个分支的语句if语句格式

if(表达式)

语句表达式语句TF

牛牛文库文档分享53.4一个分支的语句if语句表达式语句TFwww.niu63.5多个分支的if语句if~elseif语句的形式

if(表达式1) 语句1

else

if(表达式2)

语句2

else

if(表达式3)

语句3

……

else

语句n执行过程表达式1语句1TF表达式2表达式3语句2语句3语句n……TFTF

牛牛文库文档分享63.5多个分支的if语句if~elseif语句的形式

7【例3-9】从键盘上输入学生的成绩,输出学生成绩的等级#include"stdio.h"voidmain(void){intscore;printf("请输入学生的成绩:");scanf("%d",&score);if(score>=90)printf("优秀\n");elseif(score>=80)printf("良好\n");elseif(score>=70)printf("中等\n");elseif(score>=60)printf("及格\n");

elseprintf("不及格\n");}请输入学生的成绩:88良好Pressanykeytocontinueelseif(score<90&&score>=80)思考对于score>100和score<0的情况,可以认为是输入数据错误。那么程序将如何改写?

牛牛文库文档分享7【例3-9】从键盘上输入学生的成绩,输出学生成绩的等级#i83.6if语句的嵌套在if语句中又包含一个或多个if语句,称为if语句嵌套一般形式if(表达式1)

if(表达式2)

语句1

else语句2else

if

(表达式3)语句3

else语句4

牛牛文库文档分享83.6if语句的嵌套在if语句中又包含一个或多个if语句9if..else配对原则当缺省{}时,else总是与

前面最近的未配对的

if配对if(exp1)if(exp2)statement1elsestatement2if(exp1)if(exp2)statement1elsestatement2if(exp1){if(exp2)statement1}elsestatement2

牛牛文库文档分享9if..else配对原则if(exp1)if(ex10y=0;if(b!=0)if(a!=0)y=a/b;elseprintf("数据错误b=0!");y=0;if(b!=0){if(a!=0) y=a/b;}elseprintf("数据错误b=0!");y=0;if(b!=0)if(a!=0)y=a/b;elseprintf("数据错误b=0!");计算机理解为改写为【例】计算y=a/b的值

牛牛文库文档分享10y=0;y=0;y=0;计算机理解为改【例】计算y=a/11书写程序的缩进规则同一级别的语句要对齐else语句应与其配对的if语句垂直对齐。大括号放在单独的一行中,以表明其包含的语句是一个语句块。每行只放一条语句。

牛牛文库文档分享11书写程序的缩进规则同一级别的语句要对齐www.niuwk12总结if语句的语法规则表达式必须用括号括起来通常是逻辑表达式或关系表达式,但也可以是其它任意表达式。非0即为真,0则为假else子句,必须与if配对使用语句可以为五种语句中的任何一种if(表达式)语句1

else语句2

牛牛文库文档分享12总结if语句的语法规则if(表达式)语句1www.n13If语句常见的编程错误在不该出现分号的地方加了分号复合语句的花括号后不应再加分号,否则将会画蛇添足对于复合语句,忘记加花括号。if(x>y);

printf(xislargerthany.\n);if(b>a){

t=a;a=b;b=t;};推荐都使用复合语句{}

牛牛文库文档分享13If语句常见的编程错误在不该出现分号的地方加了分号if(14格式执行过程switch(表达式){caseE1:

语句组1;

caseE2:

语句组2;…….

caseEn:

语句组n;[default:

语句组n+1;]

}

3.7switch语句default子句可以省略不用switch表达式语句组1语句组2语句组n语句组n+1...E1E2Switch之后的语句defaultcaseEn

牛牛文库文档分享14格式switch(表达式)3.7switch语句d15要每次只执行一个分支使用break语句switch(表达式){caseE1:

语句组1;[break;]

caseE2:

语句组2;[break;]…….

caseEn:

语句组n;[break;][default:

语句组n+1;[break;]]}

switch表达式语句组1语句组2语句组n语句组...E1E2Endefaultcase

牛牛文库文档分享15要每次只执行一个分支switch(表达式)switc16注意switch语句的使用规则E1,E2,…En是整型或字符型的常量表达式,且值必须互不相同case语句起到标号的作用,必须用break跳出case后可包含多个可执行语句,且不必加{}switch可嵌套多个case可共用一组执行语句switch(score){case5:printf("Verygood!");case4:printf("Good!");case3:printf("Pass!");case2:printf("Fail!");default:printf("dataerror!");}score为5时,输出:Verygood!Good!Pass!Fail!dataerror!switch(score){case5:printf("Verygood!");break;case4:printf("Good!");break;case3:printf("Pass!");break;case2:printf("Fail!");break;default:printf("dataerror!");break;}score为5时,输出:Verygood!……case'A':case'B':case'C':printf("score>=60\n");break;……..

牛牛文库文档分享16注意switch语句的使用规则switch(score)17【例3-10】输入数字(1-7),输出对应的英文单词Monday…Sunday#include<stdio.h>voidmain(void){inta;printf("inputintegernumber(1-7):");scanf("%d",&a);

牛牛文库文档分享17【例3-10】输入数字(1-7),输出对应的英文单词Mo18

switch(a)

{

case

1:printf("Monday\n");

case

2:printf("Tuesday\n");

case

3:printf("Wednesday\n");

case

4:printf("Thursday\n");

case

5:printf("Friday\n");

case

6:printf("Saturday\n");

case

7:printf("Sunday\n"); default:printf("Error\n");}}inputintegernumber:5FridaySaturdaySundayErrorbreak;break;break;break;break;break;break;break;inputintegernumber:5Friday

牛牛文库文档分享18switch(a)inputinteger19【例3-11】计算器程序。用户输入两个运算数和一个四则运算符,输出计算结果#include<stdio.h>#include<math.h>voidmain(void){floata,b;charc;printf("输入表达式:运算数<运算符>运算数\n");scanf("%f%c%f",&a,&c,&b);

牛牛文库文档分享19【例3-11】计算器程序。用户输入两个运算数和一个四则运20switch(c){case'+':printf("%f\n",a+b);break;case'-':printf("%f\n",a-b);break;case'*':printf("%f\n",a*b);break;case'/':if(fabs(b)<=1e-6) printf("数据错误,除数不能为0!\n");else printf("%f\n",a/b);

break;default:printf("运算符只能是+,-,*,/!\n");}}输入表达式:运算数<运算符>运算数3.5+5.69.100000输入表达式:运算数<运算符>运算数10%3运算符只能是+,-,*,/!输入表达式:运算数<运算符>运算数2.5/0数据错误,除数不能为0!输入表达式:运算数<运算符>运算数5/2.52.000000

牛牛文库文档分享20switch(c)输入表达式:运算数<运算符>21【例3-12】从键盘上输入百分制的学生成绩,输出学生成绩的等级(优秀、良好、中等、及格、不及格)#include<stdio.h>voidmain(void){intscore;printf("请输入学生的成绩:");scanf("%d",&score);

/*利用switch语句判断并输出成绩的等级*/

牛牛文库文档分享21【例3-12】从键盘上输入百分制的学生成绩,输出学生成绩22if(score>=0&&score<=100){switch(score){ casescore>=90:printf("优秀\n");break;casescore>=80:printf("良好\n");break;casescore>=70:printf("中等\n");break;casescore>=60:printf("及格\n");break;default:printf("不及格\n");break;}}elseprintf("数据错误!\n");}方案一:switch(表达式){caseE1:

语句组1;

caseE2:

语句组2;…….

caseEn:

语句组n;[default:

语句组n+1;]

}

牛牛文库文档分享22if(score>=0&&score<=1023switch(score){ case100:

case99: case98: case97: case96: case95: case94: case93: case92: case91: case90:printf("优秀\n");break; case89:…………………… }方案二:

牛牛文库文档分享23switch(score)方案二:w24最优方案:if(score>=0&&score<=100){switch(score/10){case10:case9:printf("优秀\n");break;case8:printf("良好\n");break;case7:printf("中等\n");break;case6:printf("及格\n");break;default:printf("不及格\n");break;}}elseprintf("数据错误!\n");}case10:printf("优秀\n");break;case9:printf("优秀\n");break;等价请输入学生的成绩:96优秀Pressanykeytocontinue

牛牛文库文档分享24最优方案:if(score>=0&&scor253.8小结1.关系运算符和关系表达式关系运算符:>,<,>=,<=,==,!=

结合方向:从左至右运算结果:逻辑值(0,1)关系运算的优先级关系运算符中:>,<,>=,<=高于==和!=和其他运算符比较:算术运算符→关系运算符→赋值运算符

牛牛文库文档分享253.8小结1.关系运算符和关系表达式www.niuwk262.逻辑运算符和逻辑表达式逻辑运算符:&&,||,!结合方向:&&和||从左至右,!从右至左运算结果:逻辑值(0为假,1为真)逻辑运算的优先级逻辑运算符中:!→&&→||和其他运算符比较:!→算术运算符→关系运算符→&&→||→赋值运算符

牛牛文库文档分享262.逻辑运算符和逻辑表达式牛27if(表达式)语句1

else语句2switch(表达式){caseE1:

语句组1;[break;]

caseE2:

语句组2;[break;]…….

caseEn:

语句组n;[break;][default:

语句组n+1;[break;]]}

if(表达式)语句if(表达式1) 语句1

else

if(表达式2)语句2

else

if(表达式3)语句3

……

else

语句nif语句和switch语句

牛牛文库文档分享27if(表达式)语句1switch(表达式)if(第三章选择结构

C语言程序设计第三章选择结构C语言程序设计29学习目标if语句switch语句关系运算与逻辑运算

牛牛文库文档分享2学习目标if语句牛牛文库文档分30if(表达式)语句1

else语句2if(表达式)语句if(表达式1) 语句1

else

if(表达式2)语句2

else

if(表达式3)语句3

……

else

语句nif语句格式小结两个分支一个分支多分支

牛牛文库文档分享3if(表达式)语句1if(表达式)语句if(表达式1313.3两个分支的if语句if~else~语句的基本形式格式

if(表达式)

语句1

else

语句2表达式语句1语句2TF

牛牛文库文档分享43.3两个分支的if语句if~else~语句的基本形式323.4一个分支的语句if语句格式

if(表达式)

语句表达式语句TF

牛牛文库文档分享53.4一个分支的语句if语句表达式语句TFwww.niu333.5多个分支的if语句if~elseif语句的形式

if(表达式1) 语句1

else

if(表达式2)

语句2

else

if(表达式3)

语句3

……

else

语句n执行过程表达式1语句1TF表达式2表达式3语句2语句3语句n……TFTF

牛牛文库文档分享63.5多个分支的if语句if~elseif语句的形式

34【例3-9】从键盘上输入学生的成绩,输出学生成绩的等级#include"stdio.h"voidmain(void){intscore;printf("请输入学生的成绩:");scanf("%d",&score);if(score>=90)printf("优秀\n");elseif(score>=80)printf("良好\n");elseif(score>=70)printf("中等\n");elseif(score>=60)printf("及格\n");

elseprintf("不及格\n");}请输入学生的成绩:88良好Pressanykeytocontinueelseif(score<90&&score>=80)思考对于score>100和score<0的情况,可以认为是输入数据错误。那么程序将如何改写?

牛牛文库文档分享7【例3-9】从键盘上输入学生的成绩,输出学生成绩的等级#i353.6if语句的嵌套在if语句中又包含一个或多个if语句,称为if语句嵌套一般形式if(表达式1)

if(表达式2)

语句1

else语句2else

if

(表达式3)语句3

else语句4

牛牛文库文档分享83.6if语句的嵌套在if语句中又包含一个或多个if语句36if..else配对原则当缺省{}时,else总是与

前面最近的未配对的

if配对if(exp1)if(exp2)statement1elsestatement2if(exp1)if(exp2)statement1elsestatement2if(exp1){if(exp2)statement1}elsestatement2

牛牛文库文档分享9if..else配对原则if(exp1)if(ex37y=0;if(b!=0)if(a!=0)y=a/b;elseprintf("数据错误b=0!");y=0;if(b!=0){if(a!=0) y=a/b;}elseprintf("数据错误b=0!");y=0;if(b!=0)if(a!=0)y=a/b;elseprintf("数据错误b=0!");计算机理解为改写为【例】计算y=a/b的值

牛牛文库文档分享10y=0;y=0;y=0;计算机理解为改【例】计算y=a/38书写程序的缩进规则同一级别的语句要对齐else语句应与其配对的if语句垂直对齐。大括号放在单独的一行中,以表明其包含的语句是一个语句块。每行只放一条语句。

牛牛文库文档分享11书写程序的缩进规则同一级别的语句要对齐www.niuwk39总结if语句的语法规则表达式必须用括号括起来通常是逻辑表达式或关系表达式,但也可以是其它任意表达式。非0即为真,0则为假else子句,必须与if配对使用语句可以为五种语句中的任何一种if(表达式)语句1

else语句2

牛牛文库文档分享12总结if语句的语法规则if(表达式)语句1www.n40If语句常见的编程错误在不该出现分号的地方加了分号复合语句的花括号后不应再加分号,否则将会画蛇添足对于复合语句,忘记加花括号。if(x>y);

printf(xislargerthany.\n);if(b>a){

t=a;a=b;b=t;};推荐都使用复合语句{}

牛牛文库文档分享13If语句常见的编程错误在不该出现分号的地方加了分号if(41格式执行过程switch(表达式){caseE1:

语句组1;

caseE2:

语句组2;…….

caseEn:

语句组n;[default:

语句组n+1;]

}

3.7switch语句default子句可以省略不用switch表达式语句组1语句组2语句组n语句组n+1...E1E2Switch之后的语句defaultcaseEn

牛牛文库文档分享14格式switch(表达式)3.7switch语句d42要每次只执行一个分支使用break语句switch(表达式){caseE1:

语句组1;[break;]

caseE2:

语句组2;[break;]…….

caseEn:

语句组n;[break;][default:

语句组n+1;[break;]]}

switch表达式语句组1语句组2语句组n语句组...E1E2Endefaultcase

牛牛文库文档分享15要每次只执行一个分支switch(表达式)switc43注意switch语句的使用规则E1,E2,…En是整型或字符型的常量表达式,且值必须互不相同case语句起到标号的作用,必须用break跳出case后可包含多个可执行语句,且不必加{}switch可嵌套多个case可共用一组执行语句switch(score){case5:printf("Verygood!");case4:printf("Good!");case3:printf("Pass!");case2:printf("Fail!");default:printf("dataerror!");}score为5时,输出:Verygood!Good!Pass!Fail!dataerror!switch(score){case5:printf("Verygood!");break;case4:printf("Good!");break;case3:printf("Pass!");break;case2:printf("Fail!");break;default:printf("dataerror!");break;}score为5时,输出:Verygood!……case'A':case'B':case'C':printf("score>=60\n");break;……..

牛牛文库文档分享16注意switch语句的使用规则switch(score)44【例3-10】输入数字(1-7),输出对应的英文单词Monday…Sunday#include<stdio.h>voidmain(void){inta;printf("inputintegernumber(1-7):");scanf("%d",&a);

牛牛文库文档分享17【例3-10】输入数字(1-7),输出对应的英文单词Mo45

switch(a)

{

case

1:printf("Monday\n");

case

2:printf("Tuesday\n");

case

3:printf("Wednesday\n");

case

4:printf("Thursday\n");

case

5:printf("Friday\n");

case

6:printf("Saturday\n");

case

7:printf("Sunday\n"); default:printf("Error\n");}}inputintegernumber:5FridaySaturdaySundayErrorbreak;break;break;break;break;break;break;break;inputintegernumber:5Friday

牛牛文库文档分享18switch(a)inputinteger46【例3-11】计算器程序。用户输入两个运算数和一个四则运算符,输出计算结果#include<stdio.h>#include<math.h>voidmain(void){floata,b;charc;printf("输入表达式:运算数<运算符>运算数\n");scanf("%f%c%f",&a,&c,&b);

牛牛文库文档分享19【例3-11】计算器程序。用户输入两个运算数和一个四则运47switch(c){case'+':printf("%f\n",a+b);break;case'-':printf("%f\n",a-b);break;case'*':printf("%f\n",a*b);break;case'/':if(fabs(b)<=1e-6) printf("数据错误,除数不能为0!\n");else printf("%f\n",a/b);

break;default:printf("运算符只能是+,-,*,/!\n");}}输入表达式:运算数<运算符>运算数3.5+5.69.100000输入表达式:运算数<运算符>运算数10%3运算符只能是+,-,*,/!输入表达式:运算数<运算符>运算数2.5/0数据错误,除数不能为0!输入表达式:运算数<运算符>运算数5/2.52.000000

牛牛文库文档分享20switch(c)输入表达式:运算数<运算符>48【例3-12】从键盘上输入百分制的学生成绩,输出学生成绩的等级(优秀、良好、中等、及格、不及格)#include<stdio.h>voidmain(void){intscore;printf("请输入学生的成绩:");scanf("%d",&score);

/*利用switch语句判断并输出成绩的等级*/

牛牛文库文档分享21【例3-12】从键盘上输入百分制的学生成绩,输出学生成绩49if(score>=0&&score<=100){switch(score){ casescore>=90:printf("优秀\n");break;casescore>=80:printf("良好\n");break;casescore>=70:printf("中等\n");break;casescore>=60:printf("及格\n");break;default:printf("不及格\n");break;}}elseprintf("数据错误!\n");}方案一:switch(表达式){caseE1:

语句组1;

caseE2:

语句组2;…….

caseEn:

语句组n;[default:

语句组n+1;]

}

牛牛文库文档分享22if(score>=0&&score<=1

温馨提示

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

评论

0/150

提交评论