第3章选择结构
VB第3章_控制结构
8
type参数及功能
常数 vbOKOnly VbOKCancel VbAbortRetryIgnore VbYesNoCancel 值 0 1 2 3 显示OK按钮 显示OK及Cancel 按钮 显示Abort、Retry 及 Ignore 按钮 显示显示 Yes、No 及 Cancel 按钮 功能描述
Print "B" Else Print "C" End If ElseIf score >= 60 Then Print "D" Else Print "E" End If End Sub
'此处为小于70分的情况
22
3.2.3 Select Case语句
格式:
说明: 变量或表达式:数值型或字符表达 式 表达式列表:与“变量或表达式” 的类型必须相同,可以是下面4种类型
End Sub
28
求和运行结果
29
例3.10 实现计算器函数区中求阶乘(n!) Private Sub Cmd_n_Click( ) Dim i, n, s As Long s=1 n = Val(InputBox("输入n(1-12)", "求n!")) For i = 1 To n s=s*i Next MsgBox s, 0, "n!" End Sub
7
3.1.2 数据的输入、输出函数
2. 输出函数MsgBox
格式 :MsgBox(prompt [,type][,title][,helpFile,context]) 说明:
① prompt是字符串类型,提示
② type是一个整数值或符号常量,用来控制在对话 框内显示的按钮、图标的类型。 如上例中输出: MsgBox s, 0, "Area"
第3章 结构化程序设计语句
图3-16 程序运行界面
3.3.2 上机练习二:捉拿肇事司机 上机练习二:
【练习题目】 练习题目】 题目 一辆卡车违反交通规则,撞死行人, 一辆卡车违反交通规则,撞死行人,司机畏罪驾车逃 当时有三个人目击这一车祸的发生, 跑。当时有三个人目击这一车祸的发生,但都没有看清卡 车的牌照号码,只记住牌照号码的部分特征, 车的牌照号码,只记住牌照号码的部分特征,甲记住牌照 号码的前两位数字是相同的, 号码的前两位数字是相同的,乙记住牌照号码的后两位数 字是相同的,丙是一位数学家,他说“ 字是相同的,丙是一位数学家,他说“车牌号码肯定是四 位数,而且恰好是一个整数的平方。 位数,而且恰好是一个整数的平方。”,并且丙已推导出 符合该条件的号码只可能有一个。 符合该条件的号码只可能有一个。根据这些信息来判定车 牌号并捉拿肇事司机。要求编写控制台应用程序。 牌号并捉拿肇事司机。要求编写控制台应用程序。
3.1 循序渐进学理论
3.1.1 if语句 语句
1.用if语句实现单分支选择结构 . 语句实现单分支选择结构 [格式 :(表达式 语句 格式]: 表达式 语句; 表达式) 格式
图3-1 单分支选择结构执行流 程图
编写一个程序实现如下功能: 【 例 3-1】 编写一个程序实现如下功能 : 输入一个成绩, 如果成绩大于等于60 60则输出 输入一个成绩 , 如果成绩大于等于 60 则输出 恭喜您,您通过了这次考试! “恭喜您,您通过了这次考试!”,否则不输 出任何信息。要求编写成控制台应用程序。 出任何信息。要求编写成控制台应用程序。
[格式2]:randomObj.Next(N) 格式2]: 2] 例如,有下列语句: 例如,有下列语句: Random randomObj=new Random() i=randomObj.Next(10 10) i=randomObj.Next(10); 其作用是产生一个0~9之间的随机整数并赋值给变量i 0~9之间的随机整数并赋值给变量 其作用是产生一个0~9之间的随机整数并赋值给变量i。 格式3] 3]: [格式3]:randomObj.Next(N,M) 例如,有下列语句: 例如,有下列语句: Random randomObj=new Random() i=randomObj.Next(5 10) i=randomObj.Next(5,10); 其作用是产生一个5~9之间的随机整数并赋值给变量i 5~9之间的随机整数并赋值给变量 其作用是产生一个5~9之间的随机整数并赋值给变量i。
第3章 预处理与程序结构
2008-2009-2 C++程序设计
7
编译预处理
3.1.2条件编译
格式一: 条件编译 格式二: 如果在程序中未定义指定 如果在程序中定义了指定 目的和作用 的“标识符”时,就用程 的“标识符”时,就用程 条件编译是指对源程序中某段程序通过条件来控制是否参加编译。 序段1参与编译,否则,用 序段1参与编译,否则,用 根据条件来选取需要的代码进行编译,以便生成不同的应用程序, 程序段2参与编译。 程序段2参与编译。 供不同用户使用。 此外,条件编译还可以方便程序的逐段调试,简化程序调试工作。 #ifndef 标识符 #ifdef 标识符 常用的条件编译命令有如下三种: 程序段1 程序段1 # ifdef #else #else # ifndef 程序段2 程序段2 # if #endif #endif
void score≥90为优, main() { 90>score≥80为良, float score; cout<<"Input score(0~100):"; cin>>score; 70>score≥60为及格, if score<60为不及格。 (score>=90) cout<<"Excellent!\n"; else if (score>=80) cout<<"Good!\n"; else if (score>=70) cout<<"Right!\n"; else if (score>=60) cout<<"Pass!\n"; else cout<<"Failed!\n";
第3章 运算符和条件结构
表达 式
真 语句
7
如何使用if条件结构6-1
回顾:如果令狐冲的Java考试成绩大于90分,师父就奖 励他《独孤九剑》剑谱
import java.util.Scanner;
public class Hello2 {
使用if条件结构该如何实现 public static void main(String[ ] args) { Scanner input = new Scanner(System.in); System.out.print("输入令狐冲的Java成绩: "); int score = input.nextInt(); if ( score > 90 ) { //令狐冲的Java成绩 //判断是否大于90分
int score = 70; //考试成绩 大于等于90分 if ( score >= 90 ) { System.out.println("优秀"); 大于等于80分,小于90分 } else if (score >= 80 ) { System.out.println("良好"); } else if (score >= 60 ) { 大于等于60分,小于80分 System.out.println("中等"); } else { 小于60分 System.out.println("差"); }
}
22
……
演示示例8:完整代码
比较switch和多重if结构
相同点
都可以实现多分支结构
不同点
switch
只能处理等值的条件判断,且条件是整型变量或字符 变量的等值判断
多重if
java语言程序设计第3章
3.2 选择结构语句
3.2.1 if语句
3.if语句形式之三 当程序执行到if-else if-else语句时,计算机首先计算表达式1的值, 如果值是true,则执行if语句中的子语句体A,然后跳过else if语句和 else语句,继续执行下面的语句D。如果表达式1的值为false,则执行 else if语句。 如果else if语句中的表达式2的值为true,则执行else if语句中的子语 句体B,然后跳过else语句,继续执行下面的语句D。如果表达式2的值 为false,则执行else语句的字语句体C,然后再继续执行下面的语句D。 在实际应用中,else if语句可以多次使用,但是else语句只有一个。
3.2 选择结构语句
3.2.1 if语句
1.if语句形式之二 (2)if语句形式。if-else语句形式:
if ( 表达式 ) { 语句体; } else { 语句体; }
其中表达式的值必须是布尔类型的,可以是布尔类型的常量或者 变量、关系表达式、或者逻辑表达式。语句体可以是一条语句或者多 条语句,但是多条语句要用一对大括号括起来。 else语句不能单独作 为一个独立的语句使用,它必须和if语句配对使用。
3.1 算法和控制结构
3.1.2 算法的描述方法 3.PAD图
图3.5 用PAD图描述程序的3种基本结构
3.2 选择结构语句
3.2.1 if语句
1.if语句形式之一 (1)if形式流程图:可以根 据表达式的值来判断应该执行哪 一条或者哪些条语句,其语句的 流程图如书中图3.6所示。 图中判断框内的条件是if语句中的表达式,处理框A是if语句中的子语 句体,处理框B是if语句下面所有的语句。 当程序执行到if语句时,计算机首先计算表达式的值,如果值是true, 则执行if语句中的子语句体,然后再执行if语句下面的一条语句;如果 值是false,则不执行if语句中的子语句,直接执行if语句下面的语句。
C#第3章
对于这些选择结构,除了可以利用if语句来实现以 外,还可以用switch语句来完成。
3.2 if语句——二分支选择语句
C#程序设计教程——蒙祖强编著
为表述方便,我们将if语句分为三种类型:
if…语句
C#程序设计教程——蒙祖强编著
Console.Write("请输入出行月份(1-12):"); 游客在其他月份出行,怎样出现提示信息? int mon = int.Parse(Console.ReadLine()); if (mon >= 5 && mon <= 10) { Console.WriteLine("旺季出行,机票不打折"); } else { Console.WriteLine("淡季出行,机票打折"); } Console.ReadLine();
3.2 if语句——二分支选择语句
C#程序设计教程——蒙祖强编著
3.2.2 if…else…语句(续)
【例3.3】 编写一个窗体应用程序,使之能够对给 定的实数进行四舍五入。 创建C#窗体应用程序Rounding,界面如下图:
3.2 if语句——二分支选择语句
C#程序设计教程——蒙祖强编著
3.2.2 if…else…语句(续)
——分段函数的实现
C#程序设计教程——蒙祖强编著
【例3.1】 构造一个C#控制台应用程序,使之实 现下列分段函数的功能:
3.1一个简单的选择结构程序
——分段函数的实现
C#程序设计教程——蒙祖强编著
3.1.1 创建C#控制台应用程序 创建一个控制台应用程序PiecewiseFunction:
[Python语言程序设计][刘卫国]第3章 选择结构 配源代码
例 硅谷公司员工的工资计算方法如下: (1)工作时数超过 120小时者,超过部分加发 15%。 (2)工作时数低于60小时者,扣发 700元。 (3)其余按每小时84元计发。 输入员工的工号和该员工的工作时数,计算应发 工资。
分析:为了计算应发工资,首先分两种情况,即 工时数小于等于120小时和大于120小时。工时数超过 120小时时,实发工资有规定的计算方法。而工时数 小于等于120小时时,又分为大于60和小于等于60两 种情况,分别有不同的计算方法。所以程序分为3个 分支,即工时数>120、60<工时数≤120和工时数≤60, 可以用多分支if结构实现,也可以用if的嵌套实现。
例 写出下列条件。 (1)判断年份year是否为闰年。 (2)判断ch是否为小写字母。 (3)判断m能否被n整除。 (4)判断ch既不是字母也不是数字字符。 条件1:(year%4==0 and year%100!=0) or year%400==0 条件2:ch>='a' and ch<='z' 条件3:m%n==0或m-m/n*n==0 条件4: not((ch>='A' and ch<='Z') or (ch>='a' and ch<='z') or (ch>='0' and ch<='9'))
单分支if语句的执行过程
注意: (1)在if语句的表达式后面必须加冒号。 (2)因为Python把非0当作真,0当作假, 所以表示条件的表达式不一定必须是结果为 True或False的关系表达式或逻辑表达式,可 以是任意表达式。 (3)if语句中的语句块必须向右缩进,语 句块可以是单个语句,也可以是多个语句。 当包含两个或两个以上的语句时,语句必须 缩进一致,即语句块中的语句必须上下对齐。 (4)如果语句块中只有一条语句,if语句 也可以写在同一行上。例如:
第3章 选择&循环结构程序设计
switch语句的语义
switch语句的语义如下:
计算整型表达式; 将整型表达式的值顺序地与各个case后的整常量 相比较,若与某个整常量相等,则从对应的case 之后的语句组开始往下执行,若与所有整常量均 不等,在有default的情况下,只执行语句组n。
以上语义中隐含着:
每个分支中可以有多个语句,而且不必复合。 一旦找到匹配 (或defaulte),就会一直往下执行 而非执行单个分支。若想在执行单个分支后退出, 则必须让每个语句组的最后一条语句是 break;。
与人类擅长解析和符号运算等特点不同, 计算机必须从具体数据出发,按照人为其 设计好的程序机械地进行运算。另一方面, 由于计算机的运算速度很快,因此最擅长 完成那些计算工作量很大的重复性运算。 这种重复是指运算步骤,数据则在重复中 不断地改变,每当执行这组步骤时,程序 都从变量的原值推出它的一个新值,这一 过程称为“迭代” ,是计算机得以发展的 关键因素。循环则是实现迭代的必要条件。
3.3.2 while语句
while语句的语法 while语句的语义 while语句程序实例
while语句的语法
while语句的语法是:
while (表达式) 语句
其中:
“while (表达式)”为循环控制,其中“表达式” 可以为任意类型,但其值将当作逻辑值使用。 “语句 ”为循环体,它可以是一个语句、一个由 花括弧括起来的复合语句或另一个控制结构。
如果表达式的初值为false,则一次循环也不执行 表达式的值必须在循环体中改变,否则为死循环
while语句程序实例
// 从键盘输入一组整数(以0作为输入结束的标志),打印其最大值 #include <stdio.h> int main() { int x, max; printf("输入一个整数:"); scanf("%d", &x); max = x; while (x != 0) { printf("输入一个整数:"); scanf("%d", &x); if (x > max) max = x; } printf("最大值 max = %d\n", max); return 0;
第3章--选择结构--参考答案
main( )
{
int k;
scanf("%d",&k);
switch (k)
{
case 1: printf("%d\n",k++);
case 2: printf("%d\n",k++);
case 3: printf("%d\n",k++);
case 4: printf("%d\n",k++); break;
default: printf("Full!\n");
}
}
A) 1 B) 2
C) 2 D) 1
3 2
4 3
5 4
D
29.执行下面程序时,若从键盘输入"2<CR>",则程序的
运行结果是( )。
#include <stdio.h>
main( )
{ int j,k; char cp;
cp=getchar( );
顺序分支结构选择题:
1.设ch是char型变量,其值为A,且有下面的表达式:
ch=(ch>='A'&&ch<='Z')?(ch+32):ch
上面表达式的值是
A) A B) a
C) Z D) z
B
2.设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,
值为0的表达式是
A) 'a'&&'b' B) a<=b
第3章-用顺序结构设计程序解决简单实际问题
说明
对于整型:指long型,如%ld等; 对于实型:指double型,如%lf。
指域宽,即输出数据所输出的
m
最小宽度m;,n且的在格域式内向右对齐。
为%m.nf
指精度,对于实数,表示输出n位小数
n 对于字符串,表示截取的字符个数。
-
字符
l
说明
p对ri于nt整f(型“%:10指.2lfon\gn型”,,12如3.%4l6d2等);; p对ri于nt实f(型“%:7.指2sdo\unb”l,e“型CH,IN如A”%)lf;。
练习:对于f格式例题
main( ) { float a=1.2345; printf(“%f %10f\n”,a,a); printf(“%8.2f %.2f\n”,a,a); printf(“%-8.2f\n”,a); }
储备知识:
标准函数:指可以在各种计算机系统中都能使 用的函数。
标准输入六种标准输入输出函数: printf() 、scanf()、putchar() getchar()、puts() 、gets()
3.2 数据的输入与输出 预处理命令
用双引号括起来并以字符串的形式描述 包括:格式说明和普通字符。
由“%”和格式字符组成。 指需要原样输出 作用:将输出的数据转换 的字符,如逗号、
为指定的格式输出 空格等。
格式字符 输注出意形:式 举 例
输出结果
d或i
1、除了e、g格in式t 可a=以65;用大写,其它
格式十说进明制的整格数式字p符rin应tf用("小%d"写,a;);
以下问题如何处理:
域宽小于实际宽度时如何处理? 缺省的域宽与精度各是多少? 精度说明大于、小于实际精度时, 如何处理? float与double的最大精度是多少? 多余的小数是被截断?还是舍入?
Fortran教程第三章 选择结构程序设计
所作的处理在其后的块语句中完成。
(3)case default与其后的默认块,是缺省情况,可有可无。
如果加入它,则代表前面所有选择表达式的值皆非的情况下 执行该块。 (4)end select为case结构结束的标志。
例3.3、设计程序,完成小学加、减、乘、除四则运算, 即输入两个数,再输入一个运算符号,做对应的运算,
program exam
implicit none integer n
read *, n
if ( mod(n,3)==0.and.mod(n,5)==0 ) then print *,’该数能同时被3和5整除。’
else
print *,’该数不能同时被3和5整除。’ endif end
块IF结构的组成
program exam3 real g read *,g if (g>=90) then print *,“优秀”
else if( g>=80) then
print *,"良好" else if( g>=60) then
print *, "通过"
else print *,"不及格" endif end
FORTRAN所用的基本逻辑运算有:
.AND.
.EQV.
.OR.
.NEQV.
.NOT.
.XOR.
(1)逻辑与,运算符.AND. 当连接的两个逻辑操作数为真时, 逻辑表达式取值为真,只要一个为假则取假。例如数学表达式 1<X<2,在FORTRAN中应写成逻辑表达式:X>1.AND.X<2。
(2)逻辑或,运算符为.OR. 连接的两个逻辑操作数只要有一个 为真时,逻辑表达式取值为真,全部为假时才为假。例如|X|>5,
VB第3章第3节2-Select语句
第3章 面向对象程序设计——第3节 2 选择结构语句
程序: Dim Num1 As Integer, Num2 As Integer Dim SExp As String Dim Result Dim NOk%, NError%
'两个操作数 '计算结果
'统计计算正确与错误数
Private Sub Button2_Click(……) Handles Button2.Click
Txtoutput.Text = "---------------"
Txtoutput.Text = Txtoutput.Text & vbCrLf & “一共计算 ” & _
(NOk + NError) & " 道题" Txtoutput.Text = Txtoutput.Text & vbCrLf & “得分: ” & _ Int(NOk / (NOk + NError) * 100) & "分"
第3章 面向对象程序设计——第3节 2 选择结构语句
(7)计算机执行Select Case语句的过程: 计算测试表达式的值并与语句中各Case子句中 表达式的值进行比较。如果相等,就执行与该 Case相关联的语句。
若没有一个Case子句的值与测试表达式的值相
等,则执行Case Else部分的语句。 若无Case Else部分,则直接执行Select Case语句的后 继语句。
No
Case ② Yes 语句块2
No
Case ③ Yes 语句块3
No (Case Else)
语句块4
第3章 选择结构.
if、else、switch、while、do和for等都是C++关键字。 这些关键字是该语言保留的,用于实现C++控制结构的不同 特性。关键字不能作为变量名等一些标识符。注意,将关键 字while的拼写变为“While”是个语法错误,因为C++是区分 大小写的语言。while、if和else等所有C++保留关键字只能 包含小写字母。
格式2 :
if (条件表达式) { 语句1; 语句2; …… } 若条件成立时,要执行的操作由多个句子构成, 我们必须把这些句子括在一对花括号{ }内,我们称 这种形式为语句块或复合语句。 程序设计风格提示:书写语句块(也称为复合 语句)时,左右花括号要对齐,组成语句块的各语 句要相对花括号缩进一层并对齐。
第二节 if选择结构
C++提供三种选择结构,即if选择结构、if-else选择结构 和switch选择结构。 一、if语句(单分支结构) 格式1:
if (条件表达式) 语句1;
功能:如果条件表达式的值为真, 即条件成立,语句1将被执行。否则, 语句1将被忽略(不被执行),程序将 按顺序从整个选择结构之后的下一条 语句继续执行。执行流程如图3-1所示 说明:格式中的“条件表达式”必 须用圆括号括起来。
VB6.0理论第三版第3-4章
以下部分不要
⑶ MsgBox函数和MsgBox过程
MsgBox函数格式:变量% = MsgBox (prompt [, buttons] [,title]) MsgBox过程格式:MsgBox (prompt [, buttons] [,title]) 功能:打开一个消息框,等待用户选择一个按钮。MsgBox函数返回所 选按钮对应的整数值,以便告诉用户单击哪一个按钮。若不需要返回 值,则可作为MsgBox过程使用。 说明:① “prompt‖和“title‖的含义与InputBox()函数中对应的参数 相同。 ② “buttons(按钮)”:可选项,为整型参数。用来设定要显示的按 钮的数目、类型和出现在消息框中的图标类型。 ③ “变量%‖: 返回值。当用户按下消息框按钮时,系统将返回按键 相对应的数值,利用这个返回信息,用户可以在以后的程序中作出不 同的响应。例如,在打印文件时,如果选择“确定”按钮,那么程序 就应该打印文件;如果选择“取消”按钮,程序就不再打印文件;如 果选择“重试”,那么程序就应该能重新开始打印文件。
⑶ End语句 格式:End 功能:在过程中关闭代码执行、关闭以Open语句打开的文件 并清除变量,停止执行程序。 说明: ① End语句可以放在过程中的任何位置。 ② End语句在执行时会重新设置所有模块级变量和所有模块 的静态局部变量。如果不想改变这些变量的值,应将End语 句改为Stop语句,此时在保留这些变量值的基础上可以恢复 执行。 ③ End语句提供的是一种强迫中止程序的方法。VB程序正常 结束应该卸载所有的窗体,只要没有其他程序引用该程序公 共类模块创建的对象并无代码执行,程序将立即关闭。
第3章 流程控制语句
本章主要内容:
3.1 顺序结构程序设计 3.2 选择结构程序设计
Python程序设计课件第3章 Python的基本流程控制
3 循环语句嵌套
循环结构
在Python中,允许在一个循环体中嵌入另一个循环,这称为循环嵌套。 它在Python中,for循环和while循环都可以进行循环嵌套。
while循环中可以嵌套while循环
while 条件表达式1: 代码块1 ...... while 条件表达式2: 代码块2 ......
合法结婚年龄。因此如果要判断一个人是否到了合法结婚年龄,首先需
要使用双分支结构判断性别,再用递进的双分支结构判断年龄,并输出
判断结果。
sex=input("请输入您的性别(M或者F):")
age=int(input("请输入您的年龄(1~20):"))
if sex=='M':
if age>=22:
print("到达合法结婚年龄")
使用break语句完全中 止循环。
使用continue语句直接 跳到下一次循环
1 break语句
break语句用于跳出离它最近一级的循环。 1.在while语句中使用break语句
while 条件表达式1: 执行代码 if 条件表达式2:
break
2.在for语句中使用break语句
for 迭代变量 in 对象: if 条件表达式: break
while...else与for...else语句
与别的编程语言不一样的是python还支持这样的语法:while...else与 for...else语句。
只要没有break或者return,不管while是否执行,都会执行else语句 (continue也是可以执行else)。
1 while...else语句
高中信息技术选择结构教案
高中信息技术选择结构教案一、引入新知,激发兴趣在讲授选择结构之前,我们首先需要引起学生的兴趣。
可以通过提出一个生活中常见的问题,例如“如果明天下雨,你会带伞吗?”这样的问题,引导学生思考生活中的选择情境,从而自然过渡到计算机程序中的选择结构。
二、概念讲解,清晰明了教师需要对选择结构的概念进行详细讲解。
可以借助流程图的方式,形象地展示条件判断的过程,让学生明白当满足某个条件时,计算机将执行特定的命令,反之则执行另一命令或不做任何操作。
三、案例分析,深化理解理论与实践相结合是教学的黄金法则。
教师应设计几个典型的编程案例,如根据用户输入的成绩判断等级、根据时间显示不同的问候语等。
通过这些案例的分析,让学生在实践中理解选择结构的运用。
四、动手实践,巩固知识知识的掌握离不开反复的实践。
教师应布置相关的编程练习,如使用if-else语句解决实际问题,鼓励学生动手编写代码,并在课堂上进行调试。
这样不仅能够检验学生的学习效果,还能增强他们解决问题的能力。
五、拓展提高,开阔视野为了让学生更全面地了解选择结构的应用,教师可以介绍一些高级的选择结构应用,如switch-case语句的使用,以及如何在复杂的程序中合理运用选择结构。
六、作业布置,巩固提升课后作业是学习过程的重要组成部分。
教师应设计一些既能够巩固知识点又具有一定挑战性的任务,如编写一个小型的计算器程序,要求学生使用选择结构来实现功能的切换。
七、课堂小结,反馈总结在课程的教师应对本节课的内容进行小结,强调选择结构的重要性和应用场景。
同时,鼓励学生提出疑问,对学生在学习过程中遇到的问题进行解答和讨论。
通过以上七个步骤,我们构建了一个系统的高中信息技术选择结构教案范本。
这样的教案不仅能够帮助学生建立正确的编程思维,还能够培养他们解决问题的能力,为他们未来的学习和生活打下坚实的基础。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三节 switch语句
应用条件语句可以很方便地使程序实现分支,但是出现 分支比较多的时候,虽然可以用嵌套的if语句来解决,但是程 序结构会显得复杂,其至凌乱。为方便实现多情况选择,C++ 提供了一种switch开关语句。
1.语句格式: switch(表达式)
{ case 常量表达式1: 语句序列1;
称为多分支(或多项)选择结构,以多种不同的情况选择多
个不同的操作。
循环类语句包括for循环语句、while循环语句和do循环
语句三种,用它们来解决实际应用中需要重复处理的问题。
如当统计全班同学总分时,就需要重复地做加法,依次把每
个人的分数累加起来。
if、else、switch、while、do和for等都是C++关键字。
是负数,则输出“-”。 3、假设邮局规定寄邮件时若每件重量在1公斤以内(含1公斤),
按1.5元计算邮费,如果超过1公斤时,其超出部分每公斤加 收0.8元。请编程序计算邮件收费。 4、某服装公司为了推销产品,采取这样的批发销售方案:凡订 购超过100 套的,每套定价为50元,否则每套价格为80元。 输入订购套数,输出应付款的金额数。 5、某市的士费起步价8元,可以行驶3公里。3公里以后,按每 公里1.6元计算,输入的士的公里数,请你计算顾客需付费 多少元? 6、输入三个正整数,若能用这三个数作为边长组成三角形, 就计算并输出该三角形的面积,否则输出Can't。(组成三角 形的条件为:任意两边之和大于第三边)
二、if-else语句(双分支结构)
if单分支选择结构只在条件为true时采取操作,条件为 false时则忽略这个操作。利用if-else双分支选择结构则可 以在条件为true时和条件为false时采取不同操作。
格式1: 功能:如果(条件表达式)的值为“真” ,即条件
成立,则执行语句1,执行完“语句1”后继续执行整个if- else语句的后继语句;如果(条件表达式)的值为“假” , 即条件不成立,那么跳过语句1选择执行“语句2” ,执行 完语句2后继续执行整个if-else语句的后继语句;也就是 说if-else语句总是根据(条件表达式)的结果,选择 “语句1”和“语句2”中的一个执行,执行完以后,整个if -else就算执行完了。执行流程如图4-2所示
printf("%.2f",w*1.68); else
printf("%.2f",w*1.98); return 0; }
if语句允许嵌套,即语句1和语句2还可以是if语句,当if 语句嵌套时,约定else总是和最近的一个if语句配对。
例3.7 if (a>b) if (b>c) y=a; else y=c;
else部分否定的是条件b>c,即它与第二个if语 句配对;若想让else部分与第一个if语句配对,则要 引入一个复合语句,将上述语句写成如下形式:
if (a>b) { if (b>c) y=a; } else y=c;
【上机练习3.1】
1、判断两个数a,b,输出较大数的平方值。 2、从键盘读入一个数,判断它的正负。是正数,则输出“+”,
须用圆括号括起来。
图3-1
程序设计风格提示:从语法上来讲,整个if语句可以写 在一行。如果条件表达式和语句都非常简单,那么整个语句 可以写在一行;否则,最好在条件表达式后换行,而且语句 部分要相对if缩进两格。
例3.1 读入一个整数a,如果a为偶数在屏幕上输出yes
#include<iostream> using namespace std; int main( ) {
格式2 :
if (条件表达式) {
语句1; 语句2; …… }
若条件成立时,要执行的操作由多个句子构成, 我们必须把这些句子括在一对花括号{ }内,我们称 这种形式为语句块或复合语句。
程序设计风格提示:书写语句块(也称为复合 语句)时,左右花括号要对齐,组成语句块的各语 句要相对花括号缩进一层并对齐。
switch(a) {
case 1: x++; break;
case 2: y++; break;
case 3: z++; break;
default: cout<<"error";
}
(2)switch(ch) {
case ‘a‘: case ‘A‘:
d1=(x+y)/2; d2=x*y-2; break; case ‘b‘:
这些关键字是该语言保留的,用于实现C++控制结构的不同
特性。关键字不能作为变量名等一些标识符。注意,将关键
字while的拼写变为“While”是个语法错误,因为C++是区分
大小写的语言。while、if和else等所有C++保留关键字只能
包含小写字母。
第二节 if选择结构
C++提供三种选择结构,即if选择结构、if-else选择结构
例3.3 读入a,b,若a>b则交换a,b的值
#include<iostream> using namespace std; int main ( ) {
float a,b,c; cin>>a>>b; if (a>b)
{ c=a; a=b; b=c; } cout<<"a="<<a<<" b="<<b; return 0; }
程序设计风格提示:写switch语句时,switch(表达 式)单独一行,各case分支和default分支要缩进两格并 对齐,分支处理语句要相对再缩进两格,以体现不同层次 的结构。
3.语句格式举例 (1)左右两边的书写格式是等价的
switch(a) {
case 1:x++;break; case 2:y++;break; case 3:z++;break; default:cout<<"error"; }
int a; cin>>a; if (a%2==0)
cout<<"yes"; return 0; }
注意:关系运算符==用来表达该符号的左右两边是 否相等,不要写成赋值号=。 试一试
若题目改为“读入一个整数a,如果a为奇数在屏幕 上输出no”该如何修改程序?
例3.2 读入一个数,若这个数大于1并且小于100,则输出yes
(3)让M依次同M1、M2、…进行比较,一旦遇到M与 某个值相等,则就从对应标号的语句开始执行;在碰不 到相等的情况下,若存在default子句,则就执行其冒号 后面的语句序列,否则不执行任何操作;当执行到复合 语句最后的右花括号时就结束整个switch语句的执行。
在实际使用switch语句时,通常要求当执行完某个case 后的一组语句序列后,就结束整个语句的执行,而不让它继 续执行下一个case语句后面的语句序列,为此,可通过使用 break语句来实现。该语句只有保留字break,而没有其它任 何成分。它是一条跳转语句,在switch中执行到它时,将结 束该switch语句,系统接着向下执行其它语句。
并且不容易出错,结构化编程要尽量少用或不用goto等跳转
语句。
选择类语句包括if语句和switch语句,用它们来解决实际
应用中按不同的情况进行不同处理的问题。如根据学生的成
绩,对学生做出不同的等级评价。if选择结构称为单分支选
择结构,选择或忽略一个分支的操作。if/else选择结构称为
双分支选择结构,在两个不同分支中选择。switch选择结构
int c; cin >> c; if (c>=60)
cout<<"pass! \n"; else
cout<<"sorry!\n"; return 0; }
例3.5 输入温度t的值,判断是否适合晨练。(25<=t<=30, 则适合晨练ok,否则不适合no)
#include<iostream> using namespace std; int main() {
在使用switch语句时,还应注意以下几点:
1. case语句后的各常量表达式的值不能相同,否则会出现错误码。
2.每个case或default后,可以包含多条语句,不需要使用“{”和“}” 括起来。
3.各case和default子句的先后顺序可以变动,这不会影响程序执行 结果。
4. default子句可以省略,default后面的语句末尾可以不必写break。
# include<iostream> using namespace std; int main ( ) {
int a; cin>>a; if ((a>1)&&(a<100))
cout<<"yes"; return 0; }
注意:此程序中的条件表达式为(a>1)&&(a<100),根据要 求 “条件表达式”必须用圆括 if ((t>=25) &&(t<=30))
cout<<"ok!\n"; else
cout<<"no!\n"; return 0; }
格式2 : if (条件表达式) { 语句1; 语句2; …… } else { 语句1; 语句2; …… }
若分支语句由多个句子构成,我们必须把这些句子括在 一对花括号{ }内。