当前位置:首页 >> 理学 >>

c语言程序设计教程第4章选择结构


第四章 选择结构程序设计(4节) 选择结构程序设计(4
选择结构由选择语句(也称分 选择结构由选择语句( 支语句)组成, 支语句)组成,选择语句控制程序 执行流程的方式是:根据给定条件, 执行流程的方式是:根据给定条件, 选择执行两个或两个以上分支程序 段中的某一个。选择语句有(if) 段中的某一个。选择语句有(if) 条件语句和开关语句(switch)。 条件语句和开关语句(switch)。 4.1 4.2 4.3 条件语句 中断语句 开关语句

4.1 条件语句
条件语句的功能是:根据给定的条件,决定执行两个分 false 条件语句的功能是:根据给定的条件, 支中的某一个分支。 支中的某一个分支。 if语句有以下三种形式 if语句有以下三种 语句有以下三种形式 1、if(表达式)S if(表达式 表达式) 格式1 格式1: if (表达式) 语句; (表达式 语句; 表达式)
表达式 true 语句

执行过程:当表达式为真( 0)时 执行过程:当表达式为真(非0)时,执行表达式后面 的语句, 否则绕过该语句,而执行其后面的语句。 的语句, 否则绕过该语句,而执行其后面的语句。

例:当x=3,-4时,分别写出下列程序的运行结果. x=3,分别写出下列程序的运行结果. #include “iostream.h” void main( ) { float x,y; cin>>x; y=x; if (x<0) y=y=-x; cout<<“x=“<<x<<“ y=“<<y<<endl; }

程序的功能: 的绝对值。 程序的功能:求x的绝对值。 的绝对值

程序: 程序: 【例3.1】已知两个数x和y,比较它们的大小并排列, 3.1】已知两个数x 比较它们的大小并排列, #include “iostream.h” 使得x大于y 使得x大于y。 void main( ) 分析:若x≥y,则输出顺序为{ int x,y,t; 则先交换x与y的 分析: 则输出顺序为x,y;若x<y,则先交换x x,y;若x<y,则先交换 cout<<“输入 cout<<“输入x,y”<<endl; 输入x,y”<<endl; 然后输出顺序为x,y。 值,然后输出顺序为x,y。 cin>>x>>y; if(x<y) 算法: 算法: { t=x; //复合语句 //复合语句 1、输入x,y 输入x,y x=y; y=t; 2、若x<y则交换x,y的值。 x<y则交换 的值 则交换x,y的值。 } cout<<x<<y<<endl; 3、输出x,y的值。 输出x,y的值 的值。 }

2、if(表达式)S1 else S2 if(表达式 表达式) 格式2 格式2、 if (表达式) (表达式 表达式) 语句1 语句1 else 语句2 语句2;
true 语句 1 表达式 false 语句 2

执行过程: 当表达式为真 ( 非 0) 时 , 执行过程 : 当表达式为真( 执行语句1 否则执行语句2 执行语句1,否则执行语句2。

例:当x=3,y=4时,写出下列程序的运行结果. x=3,y=4时 写出下列程序的运行结果.
#include “iostream.h” void main( ) { float x,y,m; cin>>x>>y; if (x>y) m=x; else m=y; cout<<“m=“<<m; } 程序功能:求两个值的最大值。 程序功能:求两个值的最大值。

程序: 程序: 【例3.2】计算分段函数: 】计算分段函数: #include “iostream.h” #include “math.h” 分析: 分析: ?sin main( ) 2 + 1 , x ≠ void ? x+ x 根据x的值, 根据x的值, y = ? float x,y; { 2 ?cos x ? x + 3 x , x = 计算y的值。 计算y的值。 ? cin>>x>>y; if (x) // x!=0 算法: 算法: y=sin(x)+sqrt(x*x+1); 1、输入x 输入x else 2、若x≠0,则y=sin(x)+sqrt(x*x+1); 0,则 y=cos(x)- y=cos(x)-x*x+3*x; cout<<“x=“<<x; 否则,y=cos(x)- 否则,y=cos(x)-x*x+3*x;cout<<“x=“<<x; cout<<“ y=“<<y<<endl; 3、输出x,y 输出x,y }

0 0

思考: 思考: 要使max存放x max存放 中大者, min存放小者 存放小者, 要使max存放x、y中大者, min存放小者,分析下面 程序段正确否? 程序段正确否? if (x>y) max = x; min = y; else max = y; min = x;

错误
应为: 应为: if (x>y) { max = x; min = y;} else {max = y; min = x;}

3、嵌套的条件语句
当条件语句中的内嵌语句是条件语句时, 当条件语句中的内嵌语句是条件语句时,称为 嵌套语句。 嵌套语句。 一般格式: 一般格式: if (表达式1) 语句1; (表达式 表达式1) 语句1; else if (表达式2) 语句2; (表达式 语句2; 表达式2) else if … else 语句n+1; 语句n+1;

表达式 1

false 表达式 2 true false


true

表达式 n true

false

语句 1

语句 2

语句 n

语句 n+1

例:写出下列程序完成的功能. 写出下列程序完成的功能. #include “iostream.h” void main( ) { float x,y; cin>>x; if (x>0) y=1; else if ( x==0) y=0; else y=-1; y=cout<<“x=“<<x<<“ y=“<<y<<endl; }

【例3.3】已知成绩 】已知成绩mark,要求显示对应五 , 级制的评定,评定条件: 级制的评定,评定条件:
分析:根据mark的值 输出等级。 的值, 分析:根据mark的值,输出等级。 算法: 算法: 1、输入mark 输入mark 2、若mark≥90 则输出“优” mark≥ 则输出“ 否则,若mark≥80,则输出“良” 否则, mark≥80,则输出“ 否则,若mark≥70,则输出“中” 否则, mark≥70,则输出“ 若mark≥60,则输出“及格” mark≥60,则输出“及格” 否则,输出“不及格” 否则,输出“不及格”

#include “iostream.h” void main( ) 算法: 算法: 1、输入mark 输入mark { float mark; 2、若mark≥90 则输出 mark≥ cin>>mark; “优” cout<<“mark”<<mark; 否则, mark≥80, 否则,若mark≥80, 则输出“ 则输出“良” if (mark >= 90) 否则, 否则,若 cout<< "优"; "优 mark≥70,则输出“ mark≥70,则输出“中” else if ( mark>=80) 若 cout<< "良"; "良 mark≥60,则输出“及格” mark≥60,则输出“及格” 否则, 否则, else if ( mark>=70) 输出“不有格” 输出“不有格” cout<< "中"; "中 else if (mark>=60) cout<< "及格"; "及格 及格"; else cout<< "不及格"; "不及格 不及格"; }

#include “iostream.h” 【例3.4】已知x,y,z三个数,使得x>y>z。 3.4】已知x 三个数,使得x>y>z。 void main( ) { int x,y,z; cout<<“请输入 cout<<“请输入x,y,z”<<endl; 请输入x,y,z”<<endl; cin>>x>>y>>z; if (x<y) 分析:采用两两比较。 分析:采用两两比较。 { t=x ; x=y ; y=t; } (1) x与 y 比较,使大的存放在x中, if (y<z) x与 比较,使大的存放在x 小的存放在y 小的存放在y中。 比较,使大的存放在y 小的存放在z (2)y与z 比较,使大的存放在y中,{小的存放在z中。 t=y ; y=z ; z=t ; 比较,使大的存放在x 小的存放在y (3)x与y 比较,使大的存放在x中, 小的存放在y中。 if (x<y) { t=x ; x=y ; y=t ;} 算法: 算法: } 1、输入x,y 输入x,y cout<<x<<y<<z<<endl; 2、若x<y ,则 交换x,y的值。 } 交换x 的值。 3、若y<z ,则 交换y,z的值,若x<y ,则 交换x,y的值。 交换y 的值, 交换x 的值。 4、输出x,y,z 输出x,y,z

说明: 说明: 不管if有几个分支 有几个分支, (1)不管if有几个分支,程序只执行一个分支 其余分支不再执行。 后,其余分支不再执行。 if不能写成 不能写成elseif。 (2) else if不能写成elseif。 建议采用锯齿型的书写形式。 (3)建议采用锯齿型的书写形式。 else始终与它上面的最近的 语句配对 始终与它上面的最近的if语句配对。 (4)else始终与它上面的最近的if语句配对。 例1:int x,y; cin>>x>>y; if (x>0) if (y>0) cout<<“x与 均大于0”; cout<<“x与y均大于0”; else cout<<“x大于 小于等于 cout<<“x大于0,y小于等于0”; 大于0,y小于等于0”;

例2: int x,y; cin>>x>>y; if (x>0) { if (y>0) cout<<“x与 均大于0”; cout<<“x与y均大于0”; } else cout<<“x小于 任意值 cout<<“x小于0,y任意值”; 小于0,y任意值”

作业: 作业: 第71页 71页 四、1 补充: 补充: 写出以下各题的算法描述,并编写程序。 写出以下各题的算法描述,并编写程序。 输入一个整数,判断其能否同时被5、7整除。 整除。 输入一个整数,判断其能否同时被5

4.2 中断语句
格式: 格式:break; 功能: 功能: (1)在switch语句中,终止程序执行下一个case switch语句中 终止程序执行下一个case 语句中, 后面的语句。 后面的语句。 (2)在循环语句的循环体中, 终止程序执行该 在循环语句的循环体中, 语句的后续语句,从而终止循环。 语句的后续语句,从而终止循环。

4.3

开关语句

开关语句是switch 语句 开关语句是 switch语句 , 也称多选择语 switch 语句, 句 , 它是可以根据给定的条件, 从多个分支 它是可以根据给定的条件 , 语句序列中选择执行一个分支语句。 语句序列中选择执行一个分支语句。
已知成绩mark 要求显示对应五级制的评定, mark, 【 例 3.3】 已知成绩 mark , 要求显示对应五级制的评定 , 评 定条件: 定条件:

#include “iostream.h” void main( ) { float mark; cin>>mark; cout<<“mark”<<mark; if (mark >= 90) cout<< "优"; "优 else if (80 <= mark && mark < 90) cout<< "良"; "良 else if (60 <= mark && mark < 70) cout<< "及格"; "及格 及格"; else if (70 <= mark && mark < 80) cout<< "中"; "中 else cout<< "不及格"; "不及格 不及格"; }

#include “iostream.h” void main( ) { float mark; cin>>mark; cout<<“mark”<<mark; int x=(int)(mark); swithc(x/10) swithc(x/10) { case 10: case 9: cout<< "优"; "优 break; case 8: cout<< "良"; break; "良 case 7: cout<< "中"; break; "中 case 6: cout<< "及格"; "及格 及格"; break; default: cout<< "不及格"; "不及格 不及格"; } cout<<endl; }

switch语句 switch语句格式 语句格式 switch(表达式) switch(表达式) 表达式 常量表达式1 语句组1 break; {case 常量表达式1:语句组1; [break;] 常量表达式2 语句组2 break; case 常量表达式2:语句组2; [break;] ┆ 常量表达式n 语句组n [break; case 常量表达式n:语句组n; [break;] [default: 语句组n+ n+1 [default: 语句组n+1] } 执行过程: 执行过程:(1)计算表达式的值 表达式的值与case后面的常量表达式比较 后面的常量表达式比较: (2)表达式的值与case后面的常量表达式比较: 若表达式的值与某个常量表达式的值相等, 若表达式的值与某个常量表达式的值相等 , 则执行该常 量表达式后面相应的语句,一直往下执行,直到遇到break语 量表达式后面相应的语句, 一直往下执行, 直到遇到 break语 句或开关语句的右花括号} 为止。 若表达式的值与case 后的任 句或开关语句的右花括号 } 为止 。 若表达式的值与 case后的任 一常量表达式的值不相等,若有default分支 分支, 一常量表达式的值不相等,若有default分支,则执行该分支后 边的语句序列,否则什么也没有执行。 边的语句序列,否则什么也没有执行。

{ float a,b; { case 1: cin>>a; b=2*a+1;break; 算法: 算法: switch( (int)a ) case (int)a ) switch( 2: 1 a>=1&&a<2:…… 输入a case 3: b=a*a-3;break; {case、输入a b=a*a{case 1: b=2*a+1; case 2: b=a; default: 2 a>=2&&a<4:.….. case、x=(int)a } case 3: b=a*a-3; 3、若x=1 default: b=a;则b=2a+1 default: b=a; cout<<a<<‘ ‘<<b<<endl; } 4、若x=2,3 则b=a2-3 x=2, } } cout<<a<<b<<endl; 错误原因: 错误原因: 5、若x>3或x<1 则b=a x>3或 思考:若省去break语句 语句, 思考:若省去break语句, } a>=1&&a<2不是常量表达式 a>=1&&a<2不是常量表达式。 不是常量表达式。 情况会怎样? 情况会怎样? 6、输出b 输出b 错误原因:没有完成题目的要求。

【例】用switch结构求分段函数 结构求分段函数 #include “iostream.h” 2a+1 (1≤a<2) ≤ void main( ) #include “iostream.h” b= a2-3 (2≤a<4) ≤ { float a,b; cin>>a; void main( ) a 其它 switch( (int)a )

之间的一个数字,输出其对应星期几的英文表示 【例3.5】输入 】输入1~7之间的一个数字 输出其对应星期几的英文表示 之间的一个数字 输出其对应星期几的英文表示.

#include “iostream.h” void main( ) { char c; cout<<“Enter a character of number between 1 and 7:”; cin>>c; switch(c) {case ‘1’: cout<<“Monday”; break; case ‘2’: cout<<“Tuesday”; break; case ‘3’: cout<<“Wednesday”; break; case ‘4’: cout<<“Thursday”; break; case ‘5’: cout<<“Fridayday”; break; case ‘6’: cout<<“Saturday”; break; case ‘7’: cout<<“Sunday”; break; default: cout<<“\n wrong number \n”; cout<<“\ }}

下列程序是错误的
错误原因: 错误原因:”1” #include “iostream.h” void main( ) 是字符串 { char c; cout<<“Enter a character of number between 1 and 7:”; cin>>c; switch(c) {case “1”: cout<<“Monday”; break; case “2”: cout<<“Tuesday”; break; case “3”: cout<<“Wednesday”; break; case “4”: cout<<“Thursday”; break; case “5”: cout<<“Fridayday”; break; case 6: cout<<“Saturday”; break; case 7: cout<<“Sunday”; break; default: cout<<“\n wrong number \n”; cout<<“\ }}

作业: 作业: 第71页 71页 四、2


赞助商链接
相关文章:
《c语言程序设计教程》林芳易云飞》第四章选择结构例题...
c语言程序设计教程》林芳易云飞》第四章选择结构例题,习题详解_IT/计算机_专业资料。《c语言程序设计教程》林芳易云飞》第四章选择结构例题,习题详解不包括填空,...
C语言习题答案 第4章 选择结构程序设计
C语言习题答案 第4章 选择结构程序设计 暂无评价|0人阅读|0次下载|举报文档 ...'A'<=c&&c<='Z' 为对应小写字母的语句是( A.c=(c-A)%26+'a' C....
《C语言程序设计》课后习题答案(第四版)谭浩强
C语言程序设计》课后习题答案(第四版)谭浩强_工学_高等教育_教育专区。《C...("%c %c\n",c1,c2); return 0; } 第 4 章选择结构程序设计 85 4.1 ...
C语言第4章 选择结构程序设计
第4 章 选择结构程序设计 4.1 什么是算术运算?什么是关系运算?什么是逻辑运算? 答:略 4.2 C 语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“...
c语言第4章选择结构程序设计
c语言第4章选择结构程序设计_电脑基础知识_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档 c语言第4章选择结构程序设计_电脑基础知识_IT/计算机_专业...
C语言第4章 选择结构
C语言第4章 选择结构_IT认证_资格考试/认证_教育专区。青岛理工大学c语言期末考试...以下程序 main() {int a=0, b=0, c=0, d=0; if(a=1) b=1; c...
《C语言程序设计》课后习题答案(第四版)
("%c %c\n",c1,c2); return 0; } 第 4 章选择结构程序设计 85 4.1 ...《C语言程序设计教程》(... 4页 免费 ©2016 Baidu 使用百度前必读 | 文库...
C语言教程章节测试4.选择结构
C语言程序设计第三版谭浩强... 30页 2财富值 C语言基础教程 92页 免费 c语言...C语言教程章节测试4.选择结构C语言教程章节测试4.选择结构隐藏>> C 语言教程...
谭浩强C语言程序设计第四版例题与课后题答案
谭浩强C语言程序设计第四版例题与课后题答案_工学_高等教育_教育专区。谭浩强C语言程序设计第四版例题与课后题答案 第四章选择程序结构设计 4.1 选择结构和条件判断...
C语言程序设计 实验报告2--选择结构
六、 实验结果 1、 2、(1)switch 语句: (2)if 语句: 3、 4(1) 、 (...C语言程序设计 顺序选择... 2页 1下载券 第2章 选择结构(C语言程... 20...
更多相关标签: