流程控制语句
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上一页 下一页
程序举例(p85例4-3-1) Chap4
case 4: cout<<"Thursday"<<endl;break; case 5:cout<<"Friday"<<endl;break; case 6: cout<<"Saturday"<<endl;break; default:cout<<"Input error!"<<endl;break;
Chap4
第四章 流程控制语句
Chap4
上一页 下一页
Chap4
上一页 下一页
§4.2
Chap4
if 语句——条件语句
一、if语句的简单格式 二、if语句的双分支格式 三、if语句的嵌套
上一页 下一页
一、if语句的简单分支
语句:if(表达式) 语句
Chap4
表达式为任意表达式
若有多条语句,则要构成复合语句
Chap4
上一页 下一页
§4.3 switch 语句(开关语句)Chap4
switch 语句是多分支选择语句
形式:
switch (表达式) { case 常量表达式1:语句序列1; case 常量表达式2:语句序列2;
….. case 常量表达式n:语句序列n; default:语句序列n+1; }
上一页 下一页
程序举例P86 程序4-3-3 Chap4
y=rand()%10+1; cout<<"输入一个算术运算符(+,-,*,/,%):"; cin>>mark; cout<<x<<mark<<y<<'='; cin>>z; switch (mark) { case '+': if (z==x+y) b=true;break; case '-': if (z==x-y) b=true;break; case '*': if (z==x*y) b=true;break;
若改为”0<x<=3”,会发生 什么现象?
当x>3时,运行程序,看 结果如何?
注:这种方法是判区间法。
上一页 下一页
Chap4
例4.2.5:输入年份,判断是否为闰年,若是,
回答“Yes”,否则回答“No”。 什么样的年份是闰年?
• 能被4整除,不能被100整除,是闰年
• 能被4整除,也能被100整除:不是闰年
要考虑条件成立与不成立
}
上一页 下一页
方法3 三个并列的if 结构------源程序
Chap4
#include<iostream.h>
void main()
{ int x,y;
cout<<"please enter the number:";
cin>>x;
if (x>3) y=x*x+4;
if (x>0&&x<=3) y=x; if (x<=0) y=x*x-4; cout<<"y="<<y<<endl; }
else if(x>0)
y=x; // 0<X<=3
else
y=x*x-4; //X<=0
cout<<"y="<<y<<endl;
} 注:这种方法是判判断点法
各条件互相关联形成区间
要考虑条件成立与不成立
Chap4
上一页 下一页
方法2:if_else嵌套结构设计
Chap4
#include<iostream.h>
#include<iostream.h> void main() {char ch; cin>>ch; if(ch>='A'&&ch<='Z')ch=ch+32; cout<<ch<<endl; }
上一页 下一页
二、if语句的双分支
Chap4
语句: if(表达式) 语句1 else 语句2
执行:若表达式的值不为0,执行语句1,否则 执行语句2 入口
exit(1);
}
上一页 下一页
Chap4
程序举例(P85例4-3-2)
switch (int (score)/10) { case 9: case 10: cout<<score<<":优"<<endl;break; case 8: case 7: cout<<score<<":良"<<endl;break; case 6: cout<<score<<":及格"<<endl;break; default: cout<<score<<":不及格"<<endl;break; } }
cin>>x;
absx=x; if(x<0) absx=-x; cout<<"x="<<x<<endl;
absx=abs(x); if(x>=0) absx=x; else absx=-x;
cout<<"|x|="<<absx<<endl;
}
上一页 下一页
Chap4
例4.2.2:C若为大写字母,则把它变为小写字母, 否则为c本身。
上一页 下一页
if_else 嵌套流程图
Chap4
上一页 下一页
Chap4
(2)嵌套 else if
if(表达式1) 语句1;
else if(表达式2) 语句2;
else if(表达式3) 语句3;
….
else if(表达式n) 语句n;
else 语句n+1 ;
/*前面n个条件均
不成立,执行语句n+1*/
• 能被4整除,也能被100整除,还能被400整除: 是闰年
上一页 下一页
Chap4
真
year被4整除
假
真
year被100整除
假
真
year被400整除
No
假
Yes
Yes
No
上一页 下一页
Chap4
#include<iostream.h> void main() { int year;
cout<<"please input the year:"; cin>>year; if(year%4==0) if ( year%100==0) if( year%400==0)
真
假
表达式
语句1
语句2
出口
上一页 下一页
Chap4
例4.2.3:输入两个数a,b,若a 大,则输出a的平 方,若b大,输出b 。
#include<iostream.h>
void main()
{
int a,b,x;
cin>>a>>b;
if(a>b)
{ x=a;
x*=x;}
{x=a;x*=a;}
else
中层
内层
else 语句2 ;
else 语句3 ;
else 语句4;
若表达式1的值为非0 ,即真,则执行中层if—else结构; 否则,执行语句4。
执行中层时,若表达式2的值为非0 ,即真,则执行内 层if—else结构;否则,执行语句3。
执行内层时,若表达式3的值为非0 ,即真,则执行语 句1;否则,执行语句2。
上一页 下一页
else_if 嵌套流程图
Chap4
上一页 下一页
例4.2.4 :编写程序计算函数
x*x-4 (x<=0) y = x (0<x<=3)
x*x+4 (x>3)
Chap4
上一页 下一页
Chap4
解: 根据题目的三个区间,两个判断点,形成三分支,可采 用三种选择结构设计。
方法1:else_if 嵌套结构设计 方法2:if_else嵌套结构设计
x=b;
cout<<x<<endl;
}
复合语句一定要加大括号 上一页 下一页
三、if 语句的嵌套(处理多分支问题)Chap4
嵌套的两种形式:
(1) 嵌套 if—else (2) 嵌套 else if
上一页 下一页
(1) 嵌套 if—else
Chap4
外层
if(表达式1)
if(表达式2)
if(表达式3)语句1;
嵌套
方法3: 三个并列的if结构设计
上一页 下一页
方法1 :else_if 嵌套结构----源程序:
#include<iostream.h>
void main()
{ int x,y;
cout<<"please enter the number:";
cin>>x; if(x>3)
//X>3
y=x*x+4;
上一页 下一页
程序举例(p85例4-3-1) Chap4
#include<iostream.h> void main() {
int weekday; cout<<"今天星期几(0-6)?"; cin>>weekday; switch(weekday){
case 0: cout<<"Sunday"<<endl;break; case 1:cout<<"Monday"<<endl;break; case 2: cout<<"Tuesday"<<endl;break; case 3:cout<<"Wednesday"<<endl;break;
例4.3.1:输入成绩,若:90 — 100 :A 70 — 89 :B 60 — 69 :C <60 :D
上一页 下一页
#include<iostream.h> 不加break
void main()
98
加break
Chap4
{ int cj; cin>>cj; switch (cj/10)
98 A
执行:计算 表达式的值,若为真(不为0) 则执行语句;否则不执行语句
真
表达式
假
语句
上一页 下一页
例4.2.1:求x的绝对值
Chap4
#include<iostream.h>
void main()
#include<math.h>
{
int x,absx;
cout<<"please input x=";
Chap4
返回 上一页 下一页
也用一个逻辑表达式包含所有条件:
#include<iostream.h> void main() { int year; cout<<"please input the year:";
cin>>year; if ((year%4==0 && year%100!=0)||(year%400==0)) cout<<"Yes"<<endl; else cout<<"No"<<endl; }
} }
上一页 下一页
程序举例(P86 程序4-3-3)Chap4
#include<iostream.h> #include<stdlib.h> #include<time.h> void main() {
char mark; int x,y,z; bool b=false; srand(time(0));// srand(time(0));//初始化系统中的随机数序列 x=rand()%50+1;
注意: 语句序列中可以有若干条语句,不用
复合语句序列;
多个case标号可以共用一条语句;
可以配合break语句使用;
大括号
上一页 下一页
cin>> N; cout <<x;
Chap4
上一页 下一页
cin>> N; cout <<x;
Chap4
上一页 下一页
break语句:
Chap4
switch 通常与break语句联用:break用于中断 或结束语句(只能用在switch语句和循环语句中)
}wenku.baidu.com
}
上一页 下一页
程序举例(P85例4-3-2) Chap4
#include<iostream.h>
#include<stdlib.h>
void main()
{
float score;
cout<<"输入一个人的成绩:";
cin>>score;
if (score<0||score>100){
cout<<"输入数据有误!"<<endl;
上一页 下一页
执行:
Chap4
1. 先计算switch中表达式的值M,若不是整数,只取整 数部分;
2. 依次计算每个常量表达式的值M1,M2…,若不是整 型,自动转为整型,起标号的作用。
3. M与 M1,M2…比较,若找到一个匹配的值就从该语 句开始,依次向下执行.否则,执行default后面的语句 组。
void main()
{ int x,y;
cout<<"please enter the number:";
cin>>x;
if (x>0)
if (x<=3)
y=x;
else
y=x*x+4; 注:这种方法也是判判断点法
else y= x*x-4;
各条件互相关联形成区间
cout<<"y="<<y<<endl;
B
A
C
{ case 10:
D
case 9:cout<<"\nA"; break;
case 8: case 7:cout<<"\nB"; break;
case 6:cout<<"\nC"; break; default:cout<<"\nD"<<"\n";
运行:不 加”break” 和加”break” 的区别!
cout<<"Yes"<<endl; else cout<<"No"<<endl; //不能被400整除// else cout<<"Yes"<<endl; //不能被100整除// else cout<<"No"<<endl; //不能被4整除// }
上一页 下一页
或:
if ( year % 4 )
/*不能被4整除*/
cout<<"No"<<endl;
else if ( year %100 )
/*不能被100整除*/
cout<<"Yes"<<endl;
else if ( year % 400 )
/*不能被400整除*/
cout<<"No"<<endl;
else cout<<"Yes"<<endl;
程序举例(p85例4-3-1) Chap4
case 4: cout<<"Thursday"<<endl;break; case 5:cout<<"Friday"<<endl;break; case 6: cout<<"Saturday"<<endl;break; default:cout<<"Input error!"<<endl;break;
Chap4
第四章 流程控制语句
Chap4
上一页 下一页
Chap4
上一页 下一页
§4.2
Chap4
if 语句——条件语句
一、if语句的简单格式 二、if语句的双分支格式 三、if语句的嵌套
上一页 下一页
一、if语句的简单分支
语句:if(表达式) 语句
Chap4
表达式为任意表达式
若有多条语句,则要构成复合语句
Chap4
上一页 下一页
§4.3 switch 语句(开关语句)Chap4
switch 语句是多分支选择语句
形式:
switch (表达式) { case 常量表达式1:语句序列1; case 常量表达式2:语句序列2;
….. case 常量表达式n:语句序列n; default:语句序列n+1; }
上一页 下一页
程序举例P86 程序4-3-3 Chap4
y=rand()%10+1; cout<<"输入一个算术运算符(+,-,*,/,%):"; cin>>mark; cout<<x<<mark<<y<<'='; cin>>z; switch (mark) { case '+': if (z==x+y) b=true;break; case '-': if (z==x-y) b=true;break; case '*': if (z==x*y) b=true;break;
若改为”0<x<=3”,会发生 什么现象?
当x>3时,运行程序,看 结果如何?
注:这种方法是判区间法。
上一页 下一页
Chap4
例4.2.5:输入年份,判断是否为闰年,若是,
回答“Yes”,否则回答“No”。 什么样的年份是闰年?
• 能被4整除,不能被100整除,是闰年
• 能被4整除,也能被100整除:不是闰年
要考虑条件成立与不成立
}
上一页 下一页
方法3 三个并列的if 结构------源程序
Chap4
#include<iostream.h>
void main()
{ int x,y;
cout<<"please enter the number:";
cin>>x;
if (x>3) y=x*x+4;
if (x>0&&x<=3) y=x; if (x<=0) y=x*x-4; cout<<"y="<<y<<endl; }
else if(x>0)
y=x; // 0<X<=3
else
y=x*x-4; //X<=0
cout<<"y="<<y<<endl;
} 注:这种方法是判判断点法
各条件互相关联形成区间
要考虑条件成立与不成立
Chap4
上一页 下一页
方法2:if_else嵌套结构设计
Chap4
#include<iostream.h>
#include<iostream.h> void main() {char ch; cin>>ch; if(ch>='A'&&ch<='Z')ch=ch+32; cout<<ch<<endl; }
上一页 下一页
二、if语句的双分支
Chap4
语句: if(表达式) 语句1 else 语句2
执行:若表达式的值不为0,执行语句1,否则 执行语句2 入口
exit(1);
}
上一页 下一页
Chap4
程序举例(P85例4-3-2)
switch (int (score)/10) { case 9: case 10: cout<<score<<":优"<<endl;break; case 8: case 7: cout<<score<<":良"<<endl;break; case 6: cout<<score<<":及格"<<endl;break; default: cout<<score<<":不及格"<<endl;break; } }
cin>>x;
absx=x; if(x<0) absx=-x; cout<<"x="<<x<<endl;
absx=abs(x); if(x>=0) absx=x; else absx=-x;
cout<<"|x|="<<absx<<endl;
}
上一页 下一页
Chap4
例4.2.2:C若为大写字母,则把它变为小写字母, 否则为c本身。
上一页 下一页
if_else 嵌套流程图
Chap4
上一页 下一页
Chap4
(2)嵌套 else if
if(表达式1) 语句1;
else if(表达式2) 语句2;
else if(表达式3) 语句3;
….
else if(表达式n) 语句n;
else 语句n+1 ;
/*前面n个条件均
不成立,执行语句n+1*/
• 能被4整除,也能被100整除,还能被400整除: 是闰年
上一页 下一页
Chap4
真
year被4整除
假
真
year被100整除
假
真
year被400整除
No
假
Yes
Yes
No
上一页 下一页
Chap4
#include<iostream.h> void main() { int year;
cout<<"please input the year:"; cin>>year; if(year%4==0) if ( year%100==0) if( year%400==0)
真
假
表达式
语句1
语句2
出口
上一页 下一页
Chap4
例4.2.3:输入两个数a,b,若a 大,则输出a的平 方,若b大,输出b 。
#include<iostream.h>
void main()
{
int a,b,x;
cin>>a>>b;
if(a>b)
{ x=a;
x*=x;}
{x=a;x*=a;}
else
中层
内层
else 语句2 ;
else 语句3 ;
else 语句4;
若表达式1的值为非0 ,即真,则执行中层if—else结构; 否则,执行语句4。
执行中层时,若表达式2的值为非0 ,即真,则执行内 层if—else结构;否则,执行语句3。
执行内层时,若表达式3的值为非0 ,即真,则执行语 句1;否则,执行语句2。
上一页 下一页
else_if 嵌套流程图
Chap4
上一页 下一页
例4.2.4 :编写程序计算函数
x*x-4 (x<=0) y = x (0<x<=3)
x*x+4 (x>3)
Chap4
上一页 下一页
Chap4
解: 根据题目的三个区间,两个判断点,形成三分支,可采 用三种选择结构设计。
方法1:else_if 嵌套结构设计 方法2:if_else嵌套结构设计
x=b;
cout<<x<<endl;
}
复合语句一定要加大括号 上一页 下一页
三、if 语句的嵌套(处理多分支问题)Chap4
嵌套的两种形式:
(1) 嵌套 if—else (2) 嵌套 else if
上一页 下一页
(1) 嵌套 if—else
Chap4
外层
if(表达式1)
if(表达式2)
if(表达式3)语句1;
嵌套
方法3: 三个并列的if结构设计
上一页 下一页
方法1 :else_if 嵌套结构----源程序:
#include<iostream.h>
void main()
{ int x,y;
cout<<"please enter the number:";
cin>>x; if(x>3)
//X>3
y=x*x+4;
上一页 下一页
程序举例(p85例4-3-1) Chap4
#include<iostream.h> void main() {
int weekday; cout<<"今天星期几(0-6)?"; cin>>weekday; switch(weekday){
case 0: cout<<"Sunday"<<endl;break; case 1:cout<<"Monday"<<endl;break; case 2: cout<<"Tuesday"<<endl;break; case 3:cout<<"Wednesday"<<endl;break;
例4.3.1:输入成绩,若:90 — 100 :A 70 — 89 :B 60 — 69 :C <60 :D
上一页 下一页
#include<iostream.h> 不加break
void main()
98
加break
Chap4
{ int cj; cin>>cj; switch (cj/10)
98 A
执行:计算 表达式的值,若为真(不为0) 则执行语句;否则不执行语句
真
表达式
假
语句
上一页 下一页
例4.2.1:求x的绝对值
Chap4
#include<iostream.h>
void main()
#include<math.h>
{
int x,absx;
cout<<"please input x=";
Chap4
返回 上一页 下一页
也用一个逻辑表达式包含所有条件:
#include<iostream.h> void main() { int year; cout<<"please input the year:";
cin>>year; if ((year%4==0 && year%100!=0)||(year%400==0)) cout<<"Yes"<<endl; else cout<<"No"<<endl; }
} }
上一页 下一页
程序举例(P86 程序4-3-3)Chap4
#include<iostream.h> #include<stdlib.h> #include<time.h> void main() {
char mark; int x,y,z; bool b=false; srand(time(0));// srand(time(0));//初始化系统中的随机数序列 x=rand()%50+1;
注意: 语句序列中可以有若干条语句,不用
复合语句序列;
多个case标号可以共用一条语句;
可以配合break语句使用;
大括号
上一页 下一页
cin>> N; cout <<x;
Chap4
上一页 下一页
cin>> N; cout <<x;
Chap4
上一页 下一页
break语句:
Chap4
switch 通常与break语句联用:break用于中断 或结束语句(只能用在switch语句和循环语句中)
}wenku.baidu.com
}
上一页 下一页
程序举例(P85例4-3-2) Chap4
#include<iostream.h>
#include<stdlib.h>
void main()
{
float score;
cout<<"输入一个人的成绩:";
cin>>score;
if (score<0||score>100){
cout<<"输入数据有误!"<<endl;
上一页 下一页
执行:
Chap4
1. 先计算switch中表达式的值M,若不是整数,只取整 数部分;
2. 依次计算每个常量表达式的值M1,M2…,若不是整 型,自动转为整型,起标号的作用。
3. M与 M1,M2…比较,若找到一个匹配的值就从该语 句开始,依次向下执行.否则,执行default后面的语句 组。
void main()
{ int x,y;
cout<<"please enter the number:";
cin>>x;
if (x>0)
if (x<=3)
y=x;
else
y=x*x+4; 注:这种方法也是判判断点法
else y= x*x-4;
各条件互相关联形成区间
cout<<"y="<<y<<endl;
B
A
C
{ case 10:
D
case 9:cout<<"\nA"; break;
case 8: case 7:cout<<"\nB"; break;
case 6:cout<<"\nC"; break; default:cout<<"\nD"<<"\n";
运行:不 加”break” 和加”break” 的区别!
cout<<"Yes"<<endl; else cout<<"No"<<endl; //不能被400整除// else cout<<"Yes"<<endl; //不能被100整除// else cout<<"No"<<endl; //不能被4整除// }
上一页 下一页
或:
if ( year % 4 )
/*不能被4整除*/
cout<<"No"<<endl;
else if ( year %100 )
/*不能被100整除*/
cout<<"Yes"<<endl;
else if ( year % 400 )
/*不能被400整除*/
cout<<"No"<<endl;
else cout<<"Yes"<<endl;