第4章 选择结构程序设计
合集下载
C语言第四章.选择结构程序设计
case 常量表达式n: 语句n; default : 语句n+1; }
语句的执行过程:
先计算表达式的值,并逐个与其后的常量表达式值相 比较; 当表达式的值与某个常量表达式的值相等时,即执行
其后的语句;
然后不再进行判断,继续执行后面所有case后的语句;
如表达式的值与所有case后的常量表达式均不相同时,
a+b>c && x+y<b 等价于 ((a+b)>c) && ((x+y)<b)
2)逻辑运算的值: 逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”
来表示。
反过来在判断一个量是为“真”还是为“假”时,以“0” 的数值代表“假”,以非“0”的数值代表“真”。
3)逻辑运算的规则:
(1)与运算&&
条件运算符和条件表达式
条件表达式通常用于赋值语句之中。 例如条件语句:
if(a>b) max=a;
else max=b; 可用条件表达式写为 max=(a>b)?a:b;
执行该语句的语义是:如a>b为真,则把a 赋予max, 否则把b 赋予max。
注意以下几点:
条件运算符的运算优先级 低于关系运算符和算术运算符,高于赋值符。 因此 max=(a>b)?a:b可以去掉括号而写为 max=a>b?a:b
注意:
(3) 在if 语句的三种形式中,所有的语句应为单个语句,
如果要想在满足条件时执行一组(多个)语句,则必须
把这一组语句用{ } 括起来组成一个复合语句。 例如:交换两个变量 if (a>b) { t= a; a=b; b=t; }
第4章_选择结构程序设计
语句1
语句2
语句3
语句4
2013-5-19
图4-9 多分支选择结构
19
例4.5 :体型判断
按“体指数”对肥胖程度进行划分: 体指数t = w / h2 (体重w单位为公斤,身高h单位为米) – 当t < 18时,为低体重; – 当18 ≤ t < 25时,为正常体重; – 当25 < t < 27时,为超重体重; – 当t ≥ 27时,为肥胖。 编程从键盘输入你的身高h和体重w,根据给定公式计算体指 数t,然后判断你的体重属于何种类型。 用3种方法编程: – 算法1:用不带else子句的if语句编程 – 算法2:用在if子句中嵌入if 语句的形式编程 – 算法3:用在else子句中嵌入if 语句的形式编程
}
思考题
语句 if (0 == data2)的必要性 – 1998年11月《科学美国人》杂志,描述了美国导弹巡
洋舰约克敦号上的一起事故,除零错导致军舰推进系统 的关闭
取绝对 值函数 2013-5-19
如果要求程序能进行浮点数的算术运算,语句 if (0 == data2)还能用于比较实型变量data2和 常数0的大小吗? – if (fabs(data2) <= 1e-7) 如果要求输入的算术表达式中的操作数和运算符之 间可以加入任意多个空格符,那么程序如何修改? – scanf("%d%c%d", &data1, &op, &data2); – scanf("%d%1s%d", &data1, &op, &data2);
2013-5-19
13
if-else
04 选择结构程序设计
}
程序输出举例: Enter two numbers: 2 2 (用户从键盘输入2 2)
num1=2 num2=2 result=1
4.2 逻辑运算符及逻辑表达式
逻辑运算符用于支持基本逻辑运算。三 种逻辑运算符及其意义,如表4.2.1所示。
表4.2.1
逻辑运算符 !
&& ||
名称 逻辑非 逻辑与 逻辑或
下面给出程序清单:
#include <stdio.h> main() { int value,choice;
printf("Convert : \n");
/*输出菜单*/
printf(" 1: decimal to hexadecimal\n");
printf(" 2: hexadecimal to decimal\n");
printf("Enter a decimal value: "); scanf("%d", &value); printf("%d in hexadecimal is %x\n", value,value); } else if(choice==2) { printf("Enter a hexadecimal value: "); scanf("%x", &value); printf("%x in decimal is %d\n",
例4.3.3 用双分支if语句重新编写例4.3.1的 程序。
可以利用一个分支处理变量a为正数的情 况,如令x=a。用另一个分支初处理变量a为 负数的情况,如令x=−a。最后输出结果。下 面给出程序:
程序输出举例: Enter two numbers: 2 2 (用户从键盘输入2 2)
num1=2 num2=2 result=1
4.2 逻辑运算符及逻辑表达式
逻辑运算符用于支持基本逻辑运算。三 种逻辑运算符及其意义,如表4.2.1所示。
表4.2.1
逻辑运算符 !
&& ||
名称 逻辑非 逻辑与 逻辑或
下面给出程序清单:
#include <stdio.h> main() { int value,choice;
printf("Convert : \n");
/*输出菜单*/
printf(" 1: decimal to hexadecimal\n");
printf(" 2: hexadecimal to decimal\n");
printf("Enter a decimal value: "); scanf("%d", &value); printf("%d in hexadecimal is %x\n", value,value); } else if(choice==2) { printf("Enter a hexadecimal value: "); scanf("%x", &value); printf("%x in decimal is %d\n",
例4.3.3 用双分支if语句重新编写例4.3.1的 程序。
可以利用一个分支处理变量a为正数的情 况,如令x=a。用另一个分支初处理变量a为 负数的情况,如令x=−a。最后输出结果。下 面给出程序:
第4章 选择结构程序设计
含义
举例
结果
说明
Not
取反
Not (4 > 3)
False
结果与操作数的值相反
And
与 (2 >= 0) And ("c" > "a") True 两个表达式均为真时结果为真
Or
或
(7 < 4) Or (8 >= 8)
True 两个表达式一个为真时结果为真
Xor
异或
(4 = 6) Xor ( 9 < 3) False 两个表达式的值相异时结果为真
Mid(“Visual Basic 程序设计”,8,5)<”basic” 先计算
Mid(“Visual Basic 程序设计”,8,5),结果为”Basic”,再计
算”Basic” <”basic”结果为True
5=5=5 先计算5=5,结果为True,再计算True=5,结
果是False
6
4.1.2 逻辑运算符与逻辑表达式
后,流程都会到End If后下一条语句去。 ElseIF不能写成Else If。
当多分支中有多个条件同时满足,则只执行第一个与之匹配 的语句块。因此,要注意对多分支的条件的书写次序,防止某些值 被过滤。
If 和 End If 必须成对出现。
(3)功能 依次测试条件1到条件n,当条件i成立时(i为1到n之间的整数), 执行语句块i,然后执行End If后面的下一条语句;如果所有的条件 都不成立,并且
11
4.2.1 If…Then 语句
⑴、格式: If…Then 语句属于单分支结构语句,书写格式有两种:单行结构和
块结构。 “单行结构”格式: If 条件表达式 Then 语句组 “块结构” 格式: If 条件表达式 Then 语句组
《C语言程序设计(第五版)》第4章选择结构程序的设计 PPT课件
►(b*b-4*a*c)>=0
b*b-4*a*c>=0
►z= (x>y+3)
z= x>y+3
►(a>b)= = c
a>b= =c
►a=(b!=c)
a=b!=c
当然为提高程序的可读性、可维护性你不妨多使用 括号,因为C语言中的有些优先级很容易让你不小心犯 错。
C语言程序设计
第4章 选择结构程序设计
第10页
“>”的结果为“假”,即条件不成立。
C语言程序设计
第4章 选择结构程序设计
第5页
4.1 关系运算及关系表达式
4.1.1 关系运算符及其优先次序
运算符
含义
> 大于
优先级
结合性
>= 大于或等于 这些关系运算符等优
< 小于
先级,但比下面的优 先级高
左结合性
<= 小于或等于
== 等于 != 不等于
这些关系运算符等优 先级,但比上面的优 先级低
C语言程序设计
第4章 选择结构程序设计
第4页
4.1 关系运算及关系表达式
所谓“关系运算”实际上就是“比较运算”, 即将两个数据进行比较,判定两个数据是否符合 给定的关系。例如,
► “x>y+3”中的“>”表示一个大于关系运算。 ➢如果a的值是5,b的值是1,则大于关系运算
“>”的结果为“真”,即条件成立; ➢如果a的值是2,b的值是1,则大于关系运算
因为按照自左至右的结合方向,先执行关系运算
“a>b”得值为1(“真”),再执行关系运算“1>c”, 得值为0(“假”),因此y为0。
C语言程序设计
C语言程序设计:第4章 选择结构程序设计
gt; >= == !=
作用 小于 小于等于 大于 大于等于 等于 不等于
运算数 双目 双目 双目 双目 双目 双目
结合性 左结合 左结合 左结合 左结合 左结合 左结合
优先级 10 10 10 10 9 9
2
例如:
(1) 比较整型变量k大于0,表达式为:k>0 (2) 比较考试成绩score大于等于60,表达式为:score>=60 (3) 比较整型变量k模2等于0,即判断k是否是偶数:k%2==0 (4) 比较字符变量ch的值等于'A',表达式为:ch!='A'
return 0; }
Input 2 integers(a b):100 10<回车> 100,10
Input 2 integers(a b):10 100<回车> 100,10
2.双分支if语句
if (表达式) 语句1 else 语句2
执行过程: 首先先判断表达式的值 若为非0则执行语句1 若为0则执行语句2
if语句的双分支形式,在语法上 视为一条语句。
表达式
真
语句1
假
语句2
例4-4:判断整数的奇偶性。从键盘输入一个整数x,根据其奇 偶性输出x是奇数或x是偶数。
Input an integer: 12<回车> 12 is odd number.
#include <stdio.h>
int main()
return 0;
}
例4-5:修改例3-6使用海伦公式计算三角形面积程序的要求,当输入 的三个边长能够构成三角形时,计算面积;否则,输出不能构成三角 形。
思路分析:三角形面积的计算过程与原例题相同,新要求是在“三个 边长能构成三角形”这一条件成立时才进行计算面积,否则直接输出 提示信息。根据数学知识,这一条件可以描述为“任意两个边长之和 大于第三个边长”,输入三个边长a、b、c后,条件可以使用如下的 逻辑表达式描述:
作用 小于 小于等于 大于 大于等于 等于 不等于
运算数 双目 双目 双目 双目 双目 双目
结合性 左结合 左结合 左结合 左结合 左结合 左结合
优先级 10 10 10 10 9 9
2
例如:
(1) 比较整型变量k大于0,表达式为:k>0 (2) 比较考试成绩score大于等于60,表达式为:score>=60 (3) 比较整型变量k模2等于0,即判断k是否是偶数:k%2==0 (4) 比较字符变量ch的值等于'A',表达式为:ch!='A'
return 0; }
Input 2 integers(a b):100 10<回车> 100,10
Input 2 integers(a b):10 100<回车> 100,10
2.双分支if语句
if (表达式) 语句1 else 语句2
执行过程: 首先先判断表达式的值 若为非0则执行语句1 若为0则执行语句2
if语句的双分支形式,在语法上 视为一条语句。
表达式
真
语句1
假
语句2
例4-4:判断整数的奇偶性。从键盘输入一个整数x,根据其奇 偶性输出x是奇数或x是偶数。
Input an integer: 12<回车> 12 is odd number.
#include <stdio.h>
int main()
return 0;
}
例4-5:修改例3-6使用海伦公式计算三角形面积程序的要求,当输入 的三个边长能够构成三角形时,计算面积;否则,输出不能构成三角 形。
思路分析:三角形面积的计算过程与原例题相同,新要求是在“三个 边长能构成三角形”这一条件成立时才进行计算面积,否则直接输出 提示信息。根据数学知识,这一条件可以描述为“任意两个边长之和 大于第三个边长”,输入三个边长a、b、c后,条件可以使用如下的 逻辑表达式描述:
c语言 第四章 选择结构课件
if (expr1) if (expr2) statement1 else statement2
内嵌if
if (expr1) if (expr2) statement1
else statement3
内嵌if
if (expr1) statement1
else if(expr3) statement3 else statement4
if ~ else 配对原则:缺省{ }时,else 总是和它上面离它最近的未配对的if配对
if(……) if(……) if(……) else…... else…...
else…...
例: if (a==b) if(b==c) printf("a==b==c");
else printf("a!=b");
if(x>y) printf("X>Y\n");
else printf("X<Y\n");
else printf("X==Y\n");
}
运行:Enter integer x,y:12,23 X<Y Enter integer x,y:12,6 X>Y Enter integer x,y:12,12 X==Y
内嵌if
if (expr1)
if (expr2) else
statement1 statement2
内嵌if
else
if(expr3) else
statement3 statement4
内嵌if
例 输入两数并判断其大小关系
main() { int x,y;
printf("Enter integer x,y:"); scanf("%d,%d",&x,&y); if(x!=y)
第四章 选择(分支)结构程序设计
4.2.2 逻辑表达式 掌握C语言的关系运算符和逻辑运算符后,可以
用一个逻辑表达式来表示一个复杂的条件。
例如:判断某一年是否闰年。 闰年:能被4整除,但不能被100整除;或能被 400整除。
(year%4==0&&year%100!=0)||year%400==0
表达式为“真”,闰年条件成立,是闰年,否则 非 闰年。
复合语句的形式:
{ 语句1; 语句2; 语句3; ……
}
4.3 if语句
4.3.1 if语句三种形式
复合语句在选择结构,循环结构中经常用到。 我们在逻辑上把复合语句看成是一条语句。
4.3 if语句
4.3.1 if语句三种形式
例:要求用户输入一个实数,然后求出这个实数 的绝对值。
4.3 if语句
逻辑运算的真值表:
a b a&&b
a||b
真真 真
真
真假 假
真
假真 假
真
假假 假
假
a
!a
真
假
假
真
4.2 逻辑运算符和逻辑表达式
4.2.1 逻辑运算符及其优先顺序
例:逻辑运算举例 a&&b 若a、b为真,则a&&b为真。 a||b 若a、b之一为真,则a||b为真。 !a 若a为真,则!a为假,反之若a为假,
4.3.1 if语句三种形式
▪ 在C语言中,表达式P的值是非0时,系统均按真 值处理。
例(1) if (‘a’) printf(“ok!”); (2) x=-5; if(x) printf(“ok!”); (3) y=0; if(y==0) printf(“ok!”); if(y) printf(“ok!”);
用一个逻辑表达式来表示一个复杂的条件。
例如:判断某一年是否闰年。 闰年:能被4整除,但不能被100整除;或能被 400整除。
(year%4==0&&year%100!=0)||year%400==0
表达式为“真”,闰年条件成立,是闰年,否则 非 闰年。
复合语句的形式:
{ 语句1; 语句2; 语句3; ……
}
4.3 if语句
4.3.1 if语句三种形式
复合语句在选择结构,循环结构中经常用到。 我们在逻辑上把复合语句看成是一条语句。
4.3 if语句
4.3.1 if语句三种形式
例:要求用户输入一个实数,然后求出这个实数 的绝对值。
4.3 if语句
逻辑运算的真值表:
a b a&&b
a||b
真真 真
真
真假 假
真
假真 假
真
假假 假
假
a
!a
真
假
假
真
4.2 逻辑运算符和逻辑表达式
4.2.1 逻辑运算符及其优先顺序
例:逻辑运算举例 a&&b 若a、b为真,则a&&b为真。 a||b 若a、b之一为真,则a||b为真。 !a 若a为真,则!a为假,反之若a为假,
4.3.1 if语句三种形式
▪ 在C语言中,表达式P的值是非0时,系统均按真 值处理。
例(1) if (‘a’) printf(“ok!”); (2) x=-5; if(x) printf(“ok!”); (3) y=0; if(y==0) printf(“ok!”); if(y) printf(“ok!”);
第4章选择结构程序设计
4.1 选择结构和条件判断
C语言有两种选择语句: (1)if语句,实现两个分支的选择结构 (2)switch语句,实现多分支的选择结构
4.1 选择结构和条件判断
例4.1 在例3.5的基础上对程序进行改进。 题目要求是求 ax2 bx c 0 方程的根。
由键盘输入a,b,c。假设a,b,c的值任意, 并不保证 b2 4ac 0。需要在程序中进行 判别,如果 b2 4ac 0 ,就计算并输出方 程的两个实根,否则就输出“方程无实根” 的信息。
在C的逻辑运算中,以“1”代表“真” ,以“0”代表“假”
4.4 逻辑运算符和逻辑表达式
4.4.1 逻辑运算符及其优先次序 4.4.2 逻辑表达式 4.4.3 逻辑型变量
4.4.1 逻辑运算符及其优先次序
3种逻辑运算符:
&&(逻辑与) ||(逻辑或) !(逻辑非)
&&和||是双目(元)运算符 !是一目(元)运算符 逻辑表达式
解题思路:
只需要做一次比较,然后进行一次交换即可 用if语句实现条件判断 关键是怎样实现两个变量值的互换
互换前 A ★
●B
互换后 A ●
★B
4.2.1 用if语句处理选择结构举例
C★
A★
●B
4.2.1 用if语句处理选择结构举例
C★ A ●★ ● B
4.2.1 用if语句处理选择结构举例
解题思路:可以先用伪代码写出算法:
if a>b,a和b对换 (a是a、b中的小者) if a>c,a和c对换 (a是三者中最小者) if b>c,b和c对换 (b是三者中次小者) 顺序输出a,b,c
#include <stdio.h> int main() { float a,b,c,t;
第4章 选择结构程序设计
2. IF语句的嵌套格式ELSEIF 其语法结构为 If〈条件1〉Then [语句列1] ElseIf〈条件2〉Then
[语句列2]
... [Else [其他语句列]] End If
【例4-10】在例4-9中使用带ElseIf的块If语句来计算出优惠价,只 需将其中命令按钮Command1的单击(Click)事件代码改为 Private Sub Command1_Click() Dim x As Single, y As Single x = Val(Text1.Text) If x < 1000 Then y=x ElseIf x < 2000 Then y = 0.95 * x ElseIf x < 3000 Then y = 0.9 * x ElseIf x < 5000 Then y = 0.85 * x Else y = 0.08 * x End If Text2.Text = y End Sub
4.3.2 使用IIF函数
还可以使用IIf函数来实现一些比较简单的选择结构。IIf函数的 语法结构为 IIf(〈条件表达式〉,〈真部分〉,〈假部分〉) 【例4-6】例4-3中命令按钮Command1的单击(Click)事件代码可 以改为
Private Sub Command1_Click()
Dim x As Single, y As Single x = Val(Text1.Text) y = IIf(x >= 0, 1 + x, 1 – 2 * x) Text2.Text = y
4.4 多分支条件选择语句SELECT CASE
4.4.1 SELECT CASE结构与语法 4.4.2 SELECT CASE结构的应用 4.5 使用计时器控件 4.5.1 设计一个电子表 4.5.2 设计一个计时器 4.5.3 设计一个流动字幕板 4.6 提供简单选择的控件 4.6.1 选项按钮 4.6.2 复选框
第4章 选择结构程序设计
#include <stdio.h> 4.2用if语句实现选择结构程序设计 int main() { float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(a<b) { t=a; a=b; b=t; } if(a<c) { t=a; a=c; c=t; } if(b<c) 如果 b<c,将b和c对换 b是三者中的次大者 { t=b; b=c; c=t; } printf("%5.2f,%5.2f,%5.2f\n",a,b,c); return 0; }
用条件运算符改写if语句
• 有一种if语句,当被判别的表达式的值为 “真”或“假” 时,都执行一个赋值语 句且向同一个变量赋值 • 如:if (a>b)
max=a; else max=b;
max = (a > b) ? a : b;
条件表达式
4.2用if语句实现选择结构程序设计
4.2.2if语句的一般形式
4.1条件判断
4.1.1条件判断的含义
在现实生活中,需要进行判断和选择的情况是很 多的
• 处理这些问题,关键在于进行条件判断 • 由于程序处理问题的需要,在大多数程序中都会 包含选择结构,需要在进行下一个操作之前先进 行条件判断
4.1条件判断
4.1.1条件判断的含义
• C语言有两种选择语句:
(1)if语句,实现两个分支的选择结构
4.2用if语句实现选择结构程序设计
4.2.1用if语句实现选择结构举例
例4.3 输入3个成绩a,b,c,要求按由高 到低的顺序输出。
4.2用if语句实现选择结构程序设计
第4章 C语言选择结构程序设计
《 C语言程序设计》
流程图
真 (非0) 表达式
假(0)
语句1
语句2
《 C语言程序设计》
例4.1
【例4.1】试用if…else语句编写程序,判断学生成绩 是否合格。
判断方法: ①如果成绩大于等于60,输出及格 ②否则输出成绩不及格
《 C语言程序设计》
4.2 if语句 if语句
C语言中if条件语句有三种结构形式,分别是: if结构(单分支结构) if if-else if-else结构(双分支结构) if-else-if结构 (多分支结构) if-else-if
《 C语言程序设计》
例4.5 设计一个应用程序,判断某一年是否为闰年
判断方法: ①如果该年能被4整除而不能被100整除,则为闰年; ②或者能被400整除也是闰年。 如: 1996年、2000年是闰年 1996年 2000年是闰年
1998年 1900年不是闰年 1998年、1900年不是闰年
逻辑表达式为: year%4==0 && year%100!=0 || year%400==0
4.4 条件运算符和条件表达式
条件运算符: 1、条件运算符:?:是C语言中惟一的一个三 目运算符。 一般形式为: 2、一般形式为: 表达式1 ? 表达式2 : 表达式3 3、操作过程:如果表达式1成立,则表达式2的 操作过程: 值就是此条件表达式的值;否则,表达式3 的值是此条件表达式的值。
《 C语言程序设计》
《 C语言程序设计》
4.2.2 if-else结构 if-else结构
1、格式: if(条件表达式 语句1 条件表达式) if(条件表达式) 语句1; 真 (非0) else 语句2; 语句 ; 语句1 2、执行过程:
C语言程序设计教程:选择结构程序设计
25
4.2 switch语句
(5) case后面的语句块可以是一条语句或多条语句,也可 是空语句,但不需要用大括号括起来。
(6) 当case后面常量表达式与switch后面的表达式均不匹 配时,则执行default后面的语句块,default可以放在程序的 任何位置,不一定要位于最后。
(7) 多个case可以共用一个语句块。 例如: switch(n)
注意:当多分支中有多个表达式同时满足时,只执行第一个与之匹配的语句块。 因此要注意对多分支中条件表达式的书写次序,防止某些值被过滤掉。
15
4.1.1 if语句的三种形式
思考:若将例4.4中程序改为以下两种写法,结果分别会如何?
程序段一如下: #include <stdio.h> main() {
float score; printf("请输入学生期末考试成绩(0-100):\n "); scanf("%f", &score); if(score>=90)
4.1.1 if语句的三种形式
程序段二如下: #include <stdio.h> main() {
float score; printf("请输入学生期末考试成绩(0-100):\n "); scanf("%f", &score); if(score>=60)
printf("及格!\n "); else if(score>=70)
9
4.1.1 if语句的三种形式
2. 双分支选择结构
双分支结构语法的一般格式为:
if(表达式)
{
语句块1;
}
4.2 switch语句
(5) case后面的语句块可以是一条语句或多条语句,也可 是空语句,但不需要用大括号括起来。
(6) 当case后面常量表达式与switch后面的表达式均不匹 配时,则执行default后面的语句块,default可以放在程序的 任何位置,不一定要位于最后。
(7) 多个case可以共用一个语句块。 例如: switch(n)
注意:当多分支中有多个表达式同时满足时,只执行第一个与之匹配的语句块。 因此要注意对多分支中条件表达式的书写次序,防止某些值被过滤掉。
15
4.1.1 if语句的三种形式
思考:若将例4.4中程序改为以下两种写法,结果分别会如何?
程序段一如下: #include <stdio.h> main() {
float score; printf("请输入学生期末考试成绩(0-100):\n "); scanf("%f", &score); if(score>=90)
4.1.1 if语句的三种形式
程序段二如下: #include <stdio.h> main() {
float score; printf("请输入学生期末考试成绩(0-100):\n "); scanf("%f", &score); if(score>=60)
printf("及格!\n "); else if(score>=70)
9
4.1.1 if语句的三种形式
2. 双分支选择结构
双分支结构语法的一般格式为:
if(表达式)
{
语句块1;
}
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2、输入一个整数;
3、如果该整数除2取余等于0, 则输出该数是偶数, 否则输出该数是奇数;
真 n%2 ==0 输出偶 数
假
输出奇 数
2.双分支结构
实例1:输入一个整数,判断是奇数还是偶数。
语句编写
算法设计:
1、定义一个整型变量;
main() { int n; scanf("%d",&n); if(n%2==0) printf("该数是偶数!\n"); else printf("该数是奇数!\n"); }
语句体1
break
否 否 case2
否… 是 是
语句体2
否 … 否 语句体n 否
break
…
case n 否
break
是
default
语句体 n+1
break
结束
3.多分支结构
编程实现,输入考试成绩,其中90-100 分属于A级别,80-89分属于B级别,7079分属于C级别,60-69分属于D级别, 低于60分属于E级别,将成绩转化为相应 五级制级别并输出。 算法设计:
1、定义两个实型变量; 2、输入顾客购买商品的消费总额; 3、利用多分支结构判断条件,执行相应语句; 4、输出顾客实际付款金额;
3.多分支结构
流程图:
A≥100 00
假
真
A≥80 00 真
பைடு நூலகம்
假
A≥50 00 真
假
A≥30 00 真
假
A≥10 00
真
假
打5折
打6折
打7折
打8折
打9折
不打 折
3.多分支结构
执行描述: 如果表达式1为真,继续判断表达式2如果为真,那么执行语句1; 如果表达式1为真,表达式2为假,那么执行语句2;如果表达式 1为假,继续判断表达式3如果为真,那么执行语句3;如果表达 式1为假,表达式3为假,那么执行语句4。
3.多分支结构
语句编写
编程实现,输入一个点的x和y坐标,输出该 点属于哪个象限。 算法设计:
假
输出正确
输出错误
2.双分支结构
实例2:输入一个密码,判断密码是否正 语句编写 确。 main() 算法设计:
{
1、定义一个整型变量;
int pwd; scanf("%d",&pwd); if(pwd==123456 ) printf(“密码正确,登录成功!\n"); else printf("密码错误,无法登录!\n"); }
课后作业
作业集:作业四
2
第12讲
第二节 选择结构程序设计
主要内容:
多分支结构语句 1、if else if 2、if else 嵌套 3、switch语句
3.多分支结构
if...else if语句的格式 :
if(表达式1) 语句1 else if(表达式2) 语句2 … else if(表达式n) 语句n else 语句n+1
1、定义三个变量,其中一个 用于交换; 2、输入两个整数; 3、如果第一个数大于第二个
a>b 真 交换a和b
假
数,则交换;
4、输出两个整数;
输出a和b
1. 单分支结构
实例2:输入两个整数,将这两个数按照从小到大的 顺序输出。 语句编写 算法设计:
1、定义三个变量,其中 一个用于交换; 2、输入两个整数; 3、如果第一个数大于第
运行结果
85↙ B
常见编译错误与调试
1. 赋值符号问题
2. 书写格式问题
3. 类型匹配问题
1. 赋值符号问题
语句编写
问题描述:
将条件中的等于号“= =” 写成赋值号“=”。
解决办法:
将n%2=0改为n%2==0。
编译错误
main() { int n; scanf("%d",&n); if(n%2==0) if(n%2=0) printf("该数是偶 数!\n"); else printf("该数是奇 } 数!\n");
2、输入一个整数;
3、如果该整数除2取余等于0, 则输出该数是偶数, 否则输出该数是奇数;
运行结果
315 ↙ 该数是奇数!
2.双分支结构
实例2:输入一个密码,判断密码是否正确。 算法设计: 流程图:
输入 pwd 真 pwd==1 23456
1、定义一个整型变量;
2、输入一个密码;
3、如果该密码等于设定密码, 则输出“密码确定,登录成 功!”,否则输出“密码错误, 无法登录!”;
1、定义一个成绩变量; 2、输入成绩; 3、如果成绩大于等于60分, 则输出“成绩及格”;
score
假 score≥ 60
真
输出“及格”
1. 单分支结构
实例1:输入C语言课程的成绩,如果大于等于60分,则输出 “成绩及格”。 语句编写 算法设计:
1、定义一个成绩变量; 2、输入成绩; 3、如果成绩大于等于60分, 则输出“成绩及格”;
3.多分支结构
编程实现,输入顾客购买商品的消费总额,输出顾客实际付 款金额,某商场打折活动,具体细则如下: (1)购买商品总额超过10000元(含10000元),打5折。 (2)购买商品总额超过8000元(含8000元),打6折。 (3)购买商品总额超过5000元(含5000元),打7折。 (4)购买商品总额超过3000元(含3000元),打8折。 (5)购买商品总额超过1000元(含1000元),打9折。 (6)购买商品总额小于1000元不打折。 算法设计:
1、定义两个整型变量和一个字符型变 量; 2、输入考试成绩; 3、成绩整除10,将范围最小; 4、利用switch语句对成绩进行五级 制级别转化; 5、输出级别;
语句编写
#include<stdio.h> main(){ int score,temp; char grade; scanf("%d",&score); temp=score/10; switch(temp){ case 10: case 9:grade='A';break; case 8:grade='B';break; case 7:grade='C';break; case 6:grade='D';break; case 5: case 4: case 3: case 2: case 1: case 0:grade='E'; break; } printf("五级制级别为:%c\n",grade); }
main() { int a,b,t; scanf("%d%d",&a,&b); if(a>b) { t=a;a=b;b=t; } printf("a=%d,b=%d\n",a,b); }
运行结果
二个数,则交换;
4、输出两个整数;
3 2↙ a=2,b=3
2. 双分支结构
if…else…语句格式 : 流程图:
执行描述:
先判断表达式1如果为真,那么执行语句1;否则判断表达式2如果为真, 那么执行语句2;…否则判断表达式n如果为真,那么执行语句n;否则 执行语句n+1。语句1、语句2…语句n和语句n+1 只能执行其中一个。
3.多分支结构
流程图:
表达 式1 N
Y
表达 式2 Y
N
…
表达 式n Y
N
…
语句1 语句2 语句n 语句 n+1
真
表达式
假
if(表达式){ 语句1 }
语句1
语句2
else {
执行描述:
语句2 }
先判断表达式是否为真,如果为真,那么执行语句1, 如果为假,那么执行语句2,语句1和语句2 只能执行其 中一个。
2.双分支结构
实例1:输入一个整数,判断是奇数还是偶数。 算法设计: 流程图:
输入n
1、定义一个整型变量;
2、输入一个密码;
3、如果该密码等于设定密码, 则输出“密码确定,登录成 功!”,否则输出“密码错误, 无法登录!”;
运行结果
123456 ↙ 密码正确,登录成 功!
任务六
【任务描述】
制作登陆功能的验证,如果在键盘输入
“Y”或“y”说明用户输入信息正确,就提示 用户“Welcome to here”否则说明输入信息
第11讲
第二节 选择结构程序设计
主要内容:
1.单分支结构
2.双分支结构
1. 单分支结构
if语句格式: if(表达式) {
执行描述:
语句 }
先判断表达式是否为真,如果为真,那么执行语句, 如果为假,那么跳过语句执行后面的程序。
流程图:
表达式 真 语句 假
1. 单分支结构
实例1:输入C语言课程的成绩,如果大于等于60分,则输出 “成绩及格”。 算法设计: 流程图: 输入
1、定义两个整型变量;
2、输入两个整数;
3、利用嵌套语句判断横坐 标和纵坐标的大小; 4、输出象限;
main() { int x,y; scanf("%d%d",&x,&y); if(x>0) if(y>0) printf("该点属于第一象限!\n") else printf("该点属于第四象限!\n"); else if(y>0) printf("该点属于第二象限!\n"); else printf("该点属于第三象限!\n"); }