《选择结构程序设计 》PPT课件

上传人:汽*** 文档编号:578882436 上传时间:2024-08-25 格式:PPT 页数:40 大小:2.15MB
返回 下载 相关 举报
《选择结构程序设计 》PPT课件_第1页
第1页 / 共40页
《选择结构程序设计 》PPT课件_第2页
第2页 / 共40页
《选择结构程序设计 》PPT课件_第3页
第3页 / 共40页
《选择结构程序设计 》PPT课件_第4页
第4页 / 共40页
《选择结构程序设计 》PPT课件_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《《选择结构程序设计 》PPT课件》由会员分享,可在线阅读,更多相关《《选择结构程序设计 》PPT课件(40页珍藏版)》请在金锄头文库上搜索。

1、1第第5章章 选择结构程序设计选择结构程序设计王占全王占全2第5章:选择结构程序设计 u学习的意义学习的意义 语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C第第第第4 4章已讨论章已讨论章已讨论章已讨论程序结构程序结构程序结构程序结构顺序结构顺序结构顺序结构顺序结构选择结构选择结构选择结构选择结构循环结构循环结构循环结构循环结构本章讨论本章讨论本章讨论本章讨论第第第第6 6章讨论章讨论章讨论章讨论3C程序中语句的分类 关系运算符、逻辑运算符、条件运算符 选择结构的程序设计(if语句、switch语句) 选择结构程序设计举例 本章小结u学习目标学习

2、目标 理解选择结构的含义; 掌握C语言语句的分类; 掌握关系运算符、逻辑运算符和条件运算符的用法; 记住关系运算符、逻辑运算符和条件运算符与其它运算符的优先级关系和结合性; 掌握if、switch语句的使用方法。 u学习内容学习内容 语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C45.1 C程序中语句的分类 语言程序的执行部分是由语句组成的。程序的功能也语言程序的执行部分是由语句组成的。程序的功能也语言程序的执行部分是由语句组成的。程序的功能也语言程序的执行部分是由语句组成的。程序的功能也是由执行语句实现的。是由执行语句实现的。是由执行语句实现的

3、。是由执行语句实现的。C C C C语言中的语句可以分为以下语言中的语句可以分为以下语言中的语句可以分为以下语言中的语句可以分为以下5 5 5 5类:类:类:类: 表达式语句表达式语句表达式语句表达式语句 由表达式加上分号由表达式加上分号由表达式加上分号由表达式加上分号“ “;” ”组成。其一般形式为:组成。其一般形式为:组成。其一般形式为:组成。其一般形式为:表达式;表达式;表达式;表达式; 函数调用语句函数调用语句函数调用语句函数调用语句 由函数名、实际参数加上分号由函数名、实际参数加上分号由函数名、实际参数加上分号由函数名、实际参数加上分号“ “;” ”组成。其一般形组成。其一般形组成。

4、其一般形组成。其一般形式为:式为:式为:式为:函数名函数名函数名函数名( ( ( (实际参数表实际参数表实际参数表实际参数表) ) ) );a = 10 a = 10 a = 10 a = 10 赋值表达式赋值表达式赋值表达式赋值表达式a = 10; a = 10; a = 10; a = 10; 赋值语句赋值语句赋值语句赋值语句k+ k+ k+ k+ 表达式表达式表达式表达式k+; k+; k+; k+; 表达式语句表达式语句表达式语句表达式语句 while (getchar( ) != n ) while (getchar( ) != n ) ; ; 本语句的功能是,只要从键盘输入的字符不

5、是回车则本语句的功能是,只要从键盘输入的字符不是回车则本语句的功能是,只要从键盘输入的字符不是回车则本语句的功能是,只要从键盘输入的字符不是回车则重新输入。这里的循环体为重新输入。这里的循环体为重新输入。这里的循环体为重新输入。这里的循环体为空语句空语句空语句空语句。 空语句空语句空语句空语句 只有分号只有分号只有分号只有分号“ “;” ”组成的语句称为空语句。空语句是什么组成的语句称为空语句。空语句是什么组成的语句称为空语句。空语句是什么组成的语句称为空语句。空语句是什么也不执行的语句。在程序中空语句可用来作空循环体。也不执行的语句。在程序中空语句可用来作空循环体。也不执行的语句。在程序中空

6、语句可用来作空循环体。也不执行的语句。在程序中空语句可用来作空循环体。printf (C Program) printf (C Program) 函数调用;函数调用;函数调用;函数调用;printf (“C Program”); printf (“C Program”); 函数调用语句函数调用语句函数调用语句函数调用语句 其功能是输出字符串其功能是输出字符串其功能是输出字符串其功能是输出字符串C ProgramC Program。语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计Cl l 说明:说明:说明:说明: (1)(1) “ “ ” ”后不加分号

7、后不加分号后不加分号后不加分号 (2) (2) (2) (2) 语法上和单一语句相同语法上和单一语句相同语法上和单一语句相同语法上和单一语句相同 (3) (3) (3) (3) 复合语句可嵌套复合语句可嵌套复合语句可嵌套复合语句可嵌套 (4) (4) 复合语句内定义的变量只能在复合语句内使复合语句内定义的变量只能在复合语句内使复合语句内定义的变量只能在复合语句内使复合语句内定义的变量只能在复合语句内使用。用。用。用。 5 复合语句复合语句复合语句复合语句 用用用用 括起来的一组语句括起来的一组语句括起来的一组语句括起来的一组语句。 int a = 2, b = 3, c; int a = 2,

8、 b = 3, c; c = a + b; c = a + b; printf (c = %dn, c); printf (c = %dn, c); l l 一般形式为:一般形式为:一般形式为:一般形式为: 数据说明部分;数据说明部分;数据说明部分;数据说明部分; 执行语句部分;执行语句部分;执行语句部分;执行语句部分; #include #include void main ( )void main ( ) int x = 10, y = 20, z; int x = 10, y = 20, z; z = x + y; z = x + y; int z; int z; z = x * y;

9、z = x * y; printf (z = %dn, z); printf (z = %dn, z); /输出复合语句中输出复合语句中输出复合语句中输出复合语句中z z z z的值的值的值的值 printf (z = %dn, z); printf (z = %dn, z); /输出复合语句外输出复合语句外输出复合语句外输出复合语句外z z z z的值的值的值的值 输出结果:输出结果:输出结果:输出结果:z = 200z = 200z = 200z = 200z = 30z = 30z = 30z = 30语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设

10、设计计C6 控制语句控制语句控制语句控制语句 用来实现一定的控制功能的语句称为用来实现一定的控制功能的语句称为用来实现一定的控制功能的语句称为用来实现一定的控制功能的语句称为控制语句控制语句控制语句控制语句 。C C C C语语语语言用控制语句来实现选择结构和循环结构。语言有九种言用控制语句来实现选择结构和循环结构。语言有九种言用控制语句来实现选择结构和循环结构。语言有九种言用控制语句来实现选择结构和循环结构。语言有九种控制语句。可分成以下三类:控制语句。可分成以下三类:控制语句。可分成以下三类:控制语句。可分成以下三类: if( )else if( )else switchswitchfor

11、( )for( )while( )while( )dowhile( )dowhile( )continuecontinuebreakbreakgotogotoreturnreturn分支分支分支分支循环循环循环循环辅助控制辅助控制辅助控制辅助控制本章讨论本章讨论本章讨论本章讨论语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C75.2 关系运算符、逻辑运算符、条件运算符1. 1. 关系运算符和关系表达式关系运算符和关系表达式关系运算符和关系表达式关系运算符和关系表达式 关系运算符含 义优 先 级结 合 性大于这些关系运算符等优先级,但比下面的优先级高

12、左结合性= (和=之间没有空格)大于或等于小于= ( c d x 3 / 2 a + 1 c d x 3 / 2 a + 1 a + b c a + b 等价于:等价于:等价于:等价于: a b != c a b != c 等价于:等价于:等价于:等价于: a = b c a = b c a = b c 等价于:等价于:等价于:等价于: a 2 2 b | c a & 4 b | c 等价于:等价于:等价于:等价于: c (a + b)c (a + b)(a b) != c(a b) != ca = (b c)a = (b c)a = (b c)(a 2) 2) b) | c(a & (4 b

13、) | c例:int a = 3, b = 2, c = 1, d, f; a b (a b) = c b + c b f = a b c/表达式值表达式值表达式值表达式值1 1 1 1/表达式值表达式值表达式值表达式值1 1 1 1/表达式值表达式值表达式值表达式值0 0 0 0/d = 1/d = 1/d = 1/d = 1/f = 0/f = 0/f = 0/f = 0语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C9关系运算注意:例例例例 若若若若a = 0; b = 0.5; x = 0.3;a = 0; b = 0.5; x = 0.3

14、; 则则则则 a a = x = b= x 2 7 85 2 7 8在在在在C C中是中是中是中是允许的,值为允许的,值为允许的,值为允许的,值为0 0例例例例 int i = 1, j = 7, a; int i = 1, j = 7, a; a = i + (j % 4 != 0); a = i + (j % 4 != 0); 则则则则a =a =2 2例例例例 a0 a0 结果为结果为结果为结果为 A100 A100 结果为结果为结果为结果为1 10 0例例例例 应避免对应避免对应避免对应避免对实数实数实数实数作相等或不等的判断作相等或不等的判断作相等或不等的判断作相等或不等的判断如如如

15、如 1.0/3.0*3.0=1.0 1.0/3.0*3.0=1.0 结果为结果为结果为结果为可改写为:可改写为:可改写为:可改写为:fabs(1.0/3.0*3.0-1.0)1e-6fabs(1.0/3.0*3.0-1.0)1e-60 0语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C102. 2. 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式 逻辑运算符逻辑运算符逻辑运算符逻辑运算符 逻辑运算符含 义结 合 性优先级关系!单目运算符,逻辑非,表示相反右结合性 高 低& (两个&之间没有空格)双目运算符,

16、逻辑与,表示并且左结合性| (两个|之间没有空格)双目运算符,逻辑或,表示或者AB!A!BA & BA | B假假1100假真1001真假0101真真0011 逻辑运算真值表逻辑运算真值表逻辑运算真值表逻辑运算真值表 语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C11! !、 、+、- -、sizeof sizeof 高高高高算术运算符算术运算符算术运算符算术运算符移位运算符移位运算符移位运算符移位运算符关系运算符关系运算符关系运算符关系运算符&、| |、 &、| |赋值运算符赋值运算符赋值运算符赋值运算符 低低低低2. 2. 逻辑运算符和逻辑表

17、达式逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式 逻辑表达式逻辑表达式逻辑表达式逻辑表达式 用逻辑运算符连接起来的式子称为用逻辑运算符连接起来的式子称为用逻辑运算符连接起来的式子称为用逻辑运算符连接起来的式子称为逻辑表达式逻辑表达式逻辑表达式逻辑表达式。逻辑表达式的一般形式为:逻辑表达式的一般形式为:逻辑表达式的一般形式为:逻辑表达式的一般形式为:表达式表达式表达式表达式 逻辑运算符逻辑运算符逻辑运算符逻辑运算符 表达式表达式表达式表达式例:例:例:例:a b & b 10 | x 3 & 2 | 8 3 & 2 | 8 3) & 2) | (8 3) & 2) | (8

18、 b) & (n = c d) (m = a b) & (n = c d)/结果:结果:结果:结果:m = 0, n = 1m = 0, n = 1m = 0, n = 1m = 0, n = 1语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C3. 条件运算符与表达式一般形式: expr1 ? expr2 : expr3执行过程功能:相当于条件语句,但不能取代一般if语句例:小写字母转盘。例:小写字母转盘。例:小写字母转盘。例:小写字母转盘。#include #include #include #include void main ( )void

19、main ( ) char ch, ch1, ch2; char ch, ch1, ch2; / /变量定义变量定义变量定义变量定义 ch = getche ( ); ch = getche ( ); / /读取一字符读取一字符读取一字符读取一字符 putchar (n); putchar (n); / /换行换行换行换行 ch1 = ch1 = ch = a ? z : ch - 1;ch = a ? z : ch - 1; / /求前驱字符求前驱字符求前驱字符求前驱字符 ch2 = ch2 = ch = z ? a : ch + 1;ch = z ? a : ch + 1; / /求后继字

20、符求后继字符求后继字符求后继字符 printf (ch1 = %c, ch2 = %cn, ch1, ch2); printf (ch1 = %c, ch2 = %cn, ch1, ch2); / /显示结果显示结果显示结果显示结果 语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C14运算符总结: 总体上讲,单目运算符都是同等优先级的,具有右结合总体上讲,单目运算符都是同等优先级的,具有右结合总体上讲,单目运算符都是同等优先级的,具有右结合总体上讲,单目运算符都是同等优先级的,具有右结合性,并且优先级比双目运算符和三目运算符都高。性,并且优先级比双

21、目运算符和三目运算符都高。性,并且优先级比双目运算符和三目运算符都高。性,并且优先级比双目运算符和三目运算符都高。 三目运算符的优先级比双目运算符要低,但高于赋值运三目运算符的优先级比双目运算符要低,但高于赋值运三目运算符的优先级比双目运算符要低,但高于赋值运三目运算符的优先级比双目运算符要低,但高于赋值运算符和逗号运算符。算符和逗号运算符。算符和逗号运算符。算符和逗号运算符。 逗号运算符的优先级最低,其次是赋值运算符。逗号运算符的优先级最低,其次是赋值运算符。逗号运算符的优先级最低,其次是赋值运算符。逗号运算符的优先级最低,其次是赋值运算符。 只有单目运算符、赋值运算符和条件运算符具有右结合

22、只有单目运算符、赋值运算符和条件运算符具有右结合只有单目运算符、赋值运算符和条件运算符具有右结合只有单目运算符、赋值运算符和条件运算符具有右结合性,其它运算符都是左结合性。性,其它运算符都是左结合性。性,其它运算符都是左结合性。性,其它运算符都是左结合性。 双目运算符中,算术运算符的优先级最高,逻辑运算符双目运算符中,算术运算符的优先级最高,逻辑运算符双目运算符中,算术运算符的优先级最高,逻辑运算符双目运算符中,算术运算符的优先级最高,逻辑运算符的优先级最低。的优先级最低。的优先级最低。的优先级最低。 单目运算符单目运算符单目运算符单目运算符 高高高高算术运算符算术运算符算术运算符算术运算符移

23、位运算符移位运算符移位运算符移位运算符关系运算符关系运算符关系运算符关系运算符位运算符位运算符位运算符位运算符逻辑运算符逻辑运算符逻辑运算符逻辑运算符条件运算符条件运算符条件运算符条件运算符赋值运算符赋值运算符赋值运算符赋值运算符逗号运算符逗号运算符逗号运算符逗号运算符 低低低低 到现在为止,我们已经学习了到现在为止,我们已经学习了到现在为止,我们已经学习了到现在为止,我们已经学习了30303030多个运算符。掌握它多个运算符。掌握它多个运算符。掌握它多个运算符。掌握它们的优先级关系特别重要。优先级的记忆规则:们的优先级关系特别重要。优先级的记忆规则:们的优先级关系特别重要。优先级的记忆规则:

24、们的优先级关系特别重要。优先级的记忆规则:语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C155.3 选择结构的程序设计 1. if1. if语句语句语句语句 简单简单简单简单ifififif语句形式语句形式语句形式语句形式 if (if (if (if (表达式表达式表达式表达式) ) ) ) 语句语句语句语句; ; ; ;l l 格式格式格式格式: : : :l l 执行流程:执行流程:执行流程:执行流程:语句语句语句语句表达式表达式表达式表达式T例如:下面的程序段是输入两个整数,输出其中的大数。例如:下面的程序段是输入两个整数,输出其中的大数

25、。例如:下面的程序段是输入两个整数,输出其中的大数。例如:下面的程序段是输入两个整数,输出其中的大数。 int a, b, max;int a, b, max; printf (input two numbers: ); printf (input two numbers: ); scanf (%d%d, &a, &b); scanf (%d%d, &a, &b); max = a; max = a; if (max b) if (max b)if (a b) printf (max = %dn, a); printf (max = %dn, a); else else printf (max

26、 = %dn, b); printf (max = %dn, b);161. if1. if语句语句语句语句 if_else_if if_else_if if_else_if if_else_if形式形式形式形式 if(if(if(if(表达式表达式表达式表达式1) 1) 1) 1) 语句语句语句语句1;1;1;1;else if (else if (else if (else if (表达式表达式表达式表达式2) 2) 2) 2) 语句语句语句语句2;2;2;2;else if (else if (else if (else if (表达式表达式表达式表达式3) 3) 3) 3) 语句语句语

27、句语句3;3;3;3;else if (else if (else if (else if (表达式表达式表达式表达式n) n) n) n) 语句语句语句语句n;n;n;n;else else else else 语句语句语句语句n+1;n+1;n+1;n+1;l l 格式格式格式格式: : : :l l 执行流程:执行流程:执行流程:执行流程:表达式表达式表达式表达式1 1 1 1F表达式表达式表达式表达式2 2 2 2表达式表达式表达式表达式3 3 3 3FTFTT语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计CF表达式表达式表达式表达式n n

28、 n n语句语句语句语句n n n n语句语句语句语句n+1n+1n+1n+1T语句语句语句语句3 3 3 3语句语句语句语句2 2 2 2语句语句语句语句1 1 1 1例如:下面的程序段是判断输入字符的种类。例如:下面的程序段是判断输入字符的种类。例如:下面的程序段是判断输入字符的种类。例如:下面的程序段是判断输入字符的种类。 char c;char c; printf (Enter a character: ); printf (Enter a character: ); c = getchar ( ); c = getchar ( ); if if (c 0x20) (c = 0 & c

29、 = 0 & c = A & c = A & c = a & c = a & c = z) printf (The character is a lower lettern); printf (The character is a lower lettern); else else printf (The character is other charactern); printf (The character is other charactern);17上次上机中的问题上次上机中的问题 1:scanf(“%d”,变量变量);变量,类型匹配。;变量,类型匹配。printf;原样输入原样输入2

30、:if()语句语句 中表达式的写法(中表达式的写法(0 x0&x 0 if x 0 printf (“x 0”); printf (“x 0”);例例例例: : if (x 0) if (x 0) printf (“x 0”); printf (“x 0”); if (a = 5) if (a = 5) 语句;语句;语句;语句; / /表达式的值永远为非表达式的值永远为非表达式的值永远为非表达式的值永远为非0 0, 所以其后的语句总是要执行的所以其后的语句总是要执行的所以其后的语句总是要执行的所以其后的语句总是要执行的 if (b) if (b) 语句;语句;语句;语句; / /等价于等价于等

31、价于等价于if (b != 0) if (b != 0) 语句;语句;语句;语句;例例例例: : if (a b) if (a b) a+; a+; b+; b+; else else a = 0; a = 0; b = 1; b = 1; 例例例例: : if (a b) if (a b) a+; a+; b+; b+; else else a = 0; a = 0; b = 1; b = 1; 例例例例: : #include #include void main ( ) void main ( ) int x = 0; int x = 0; if ( if (x = 0x = 0) )

32、printf (“x = 0n”); printf (“x = 0n”); else else printf (“x != 0n”); printf (“x != 0n”); 例例例例: : #include #include void main ( ) void main ( ) int x = 0; int x = 0; if ( if (x = 0x = 0) ) printf (“x = 0n”); printf (“x = 0n”); else else printf (“x != 0n”); printf (“x != 0n”); 运行结运行结运行结运行结果:果:果:果:x = 0

33、x = 0运行结运行结运行结运行结果:果:果:果:x != 0x != 0语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C19ifififif语句嵌套语句嵌套语句嵌套语句嵌套:l l 一般形式:一般形式:一般形式:一般形式:if (expr1)if (expr1) if (expr2) statement1if (expr2) statement1 else statement2 else statement2elseelse if (expr3) statement3if (expr3) statement3 else statement4 el

34、se statement4内嵌内嵌内嵌内嵌if if内嵌内嵌内嵌内嵌if ifif (expr1)if (expr1) if (expr2) if (expr2) statement1 statement1 else else statement2 statement2内嵌内嵌内嵌内嵌if ifif (expr1)if (expr1) if (expr2) if (expr2) statement1 statement1elseelse statement3 statement3 内嵌内嵌内嵌内嵌if ifif (expr1)if (expr1) statement1 statement1el

35、seelse if (expr3) if (expr3) statement3 statement3 else else statement4 statement4内嵌内嵌内嵌内嵌if if语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C20例例例例 输入两数并判断其大小关系输入两数并判断其大小关系输入两数并判断其大小关系输入两数并判断其大小关系 #include #include void main ( )void main ( ) int x, y; int x, y; printf (Enter integer x, y: ); printf

36、 (Enter integer x, y: ); scanf (%d, %d, &x, &y); scanf (%d, %d, &x, &y); if (x != y) if (x != y) if (x y) printf (X Yn); if (x y) printf (X Yn); else printf (X Yn); else printf (X Yn); else else printf (X = Yn); printf (X = Yn); 运行结果:运行结果:运行结果:运行结果: Enter integer x, y: 12, 23Enter integer x, y: 12,

37、23 XY XY XY Enter integer x, y: 12, 12 Enter integer x, y: 12, 12 X=Y X=Y语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C21 if () if () if () else else else 语言规定,在缺省语言规定,在缺省语言规定,在缺省语言规定,在缺省 时,时,时,时,elseelseelseelse总是和它上总是和它上总是和它上总是和它上面离它最近的未配对的面离它最近的未配对的面离它最近的未配对的面离它最近的未配对的ifififif配对配对配对配对 例例例例: : #i

38、nclude #include void main ( ) void main ( ) int a = 1, b = -1;int a = 1, b = -1; if (a 0)if (a 0) if (b 0)if (b 0) a+; a+; elseelse a-; a-; printf (a = %dn); printf (a = %dn); 例例例例: : #include #include void main ( ) void main ( ) int a = 1, b = -1;int a = 1, b = -1; if (a 0)if (a 0) if (b 0) if (b 0

39、) a+; a+; elseelse a-; a-; printf (a = %dn); printf (a = %dn); 运行结运行结运行结运行结果:果:果:果:a = 0a = 0运行结运行结运行结运行结果:果:果:果:a = 1a = 1l l if_else if_else if_else if_else 配对原则配对原则配对原则配对原则语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C22例:例:例:例: if (a=b)if (a=b) if(b=c) if(b=c) printf(“a=b=c”); printf(“a=b=c”);

40、else else printf(“a!=b”); printf(“a!=b”);修改:修改:修改:修改: if (a=b)if (a=b) if(b=c) if(b=c) printf(“a=b=c”); printf(“a=b=c”); else else printf(“a!=b”); printf(“a!=b”);实现实现实现实现if else if else 正确配对方法:加正确配对方法:加正确配对方法:加正确配对方法:加 语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C232. switch2. switch2. switch2. sw

41、itch语句(开关分支语句)语句(开关分支语句)语句(开关分支语句)语句(开关分支语句)l l 一般形式:一般形式:一般形式:一般形式:switch ( switch ( 表达式表达式表达式表达式) ) case E case E1 1: : 语句组语句组语句组语句组 1;1; break; break; case E case E2 2: : 语句组语句组语句组语句组 2;2; break; break; . . case E case En n: : 语句组语句组语句组语句组 n;n; break; break; default: default: 语句组语句组语句组语句组 ; ; bre

42、ak; break; l l 执行过程:执行过程:执行过程:执行过程:switchswitch表达式表达式表达式表达式语句组语句组语句组语句组1 1语句组语句组语句组语句组2 2语句组语句组语句组语句组n n语句组语句组语句组语句组.语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计CE E 1 1casecase E E 2 2casecase E En ncasecase defaultdefaultcasecase 24l l 使用使用使用使用switchswitchswitchswitch语句注意事项语句注意事项语句注意事项语句注意事项 (1)

43、 switch (1) switch (1) switch (1) switch后面的后面的后面的后面的“ “表达式表达式表达式表达式” ”,可以是,可以是,可以是,可以是intintintint、charcharcharchar和枚举和枚举和枚举和枚举型中的一种,但不可为浮点型。型中的一种,但不可为浮点型。型中的一种,但不可为浮点型。型中的一种,但不可为浮点型。 float a, b = 4.0;float a, b = 4.0;scanf (%f, &a);scanf (%f, &a);switch ( a ) switch ( a ) case 1: b = b + 1; break;

44、case 1: b = b + 1; break; case 2: b = b - 1; break; case 2: b = b - 1; break; printf (b = %fn, b);printf (b = %fn, b);不可为浮点型不可为浮点型不可为浮点型不可为浮点型表达式表达式表达式表达式语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C25 int a, b = 4; int a, b = 4; scanf (%d, &a); scanf (%d, &a); switch (a) switch (a) case 1: b = b

45、+ 2; break; case 1: b = b + 2; break; case 2: b = b * 2; break; case 2: b = b * 2; break; case 1: b = b + 2; break; case 1: b = b + 2; break; printf (b = %dn, b); printf (b = %dn, b);l l 使用使用使用使用switchswitchswitchswitch语句注意事项语句注意事项语句注意事项语句注意事项 (2) case (2) case (2) case (2) case后面语句(组)可加后面语句(组)可加后面语

46、句(组)可加后面语句(组)可加 也可以不加也可以不加也可以不加也可以不加 ,但一,但一,但一,但一般不加般不加般不加般不加 。 (3) (3) (3) (3) 每个每个每个每个casecasecasecase后面后面后面后面“ “常量表达式常量表达式常量表达式常量表达式” ”的值,必须各不相同,的值,必须各不相同,的值,必须各不相同,的值,必须各不相同,否则会出现相互矛盾的现象。否则会出现相互矛盾的现象。否则会出现相互矛盾的现象。否则会出现相互矛盾的现象。 switch ( i ) switch ( i ) case 1: b = b + 1; break; case 1: b = b + 1

47、; break; / / 可加可不加可加可不加可加可不加可加可不加 case 2: b = b - 1; break;case 2: b = b - 1; break; case 1case 1在前面已使用在前面已使用在前面已使用在前面已使用语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C26l l 使用使用使用使用switchswitchswitchswitch语句注意事项语句注意事项语句注意事项语句注意事项 (4) (4) (4) (4) 每个每个每个每个casecasecasecase后面必须是后面必须是后面必须是后面必须是“ “常量表达式常

48、量表达式常量表达式常量表达式” ”,表达式中不,表达式中不,表达式中不,表达式中不能包含变量。能包含变量。能包含变量。能包含变量。 例:按成绩分成例:按成绩分成例:按成绩分成例:按成绩分成A A A A、B B B B、C C C C、D D D D、E E E E、F F F F几个等级。几个等级。几个等级。几个等级。 char score;char score; printf (Enter Score: ); printf (Enter Score: ); scanf (%d, &score); scanf (%d, &score); switch (score) switch (scor

49、e) case score = 90 : printf (A); break; case score = 90 : printf (A); break; case score = 80 & score = 80 & score = 70 & score = 70 & score = 60 & score = 60 & score 70 : printf (“E); break;printf (“E); break; default : printf (“F); break; default : printf (“F); break; case case 后面包含变量后面包含变量后面包含变量后面

50、包含变量语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C27l l 使用使用使用使用switchswitchswitchswitch语句注意事项语句注意事项语句注意事项语句注意事项 (5) case (5) case (5) case (5) case后面的后面的后面的后面的“ “常量表达式常量表达式常量表达式常量表达式” ”仅起语句标号作用,并仅起语句标号作用,并仅起语句标号作用,并仅起语句标号作用,并不进行条件判断。系统一旦找到入口标号,就从此标号开始不进行条件判断。系统一旦找到入口标号,就从此标号开始不进行条件判断。系统一旦找到入口标号,就从

51、此标号开始不进行条件判断。系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,所以必须加上执行,不再进行标号判断,所以必须加上执行,不再进行标号判断,所以必须加上执行,不再进行标号判断,所以必须加上breakbreakbreakbreak语句,以便结语句,以便结语句,以便结语句,以便结束束束束switchswitchswitchswitch语句。语句。语句。语句。 #include #include void main ( ) void main ( ) char ch; char ch; ch = getch ( ); ch = getch ( ); switch ( ch ) sw

52、itch ( ch ) case Y : printf (Yesn); break; case Y : printf (Yesn); break; case N : printf (Non); break; case N : printf (Non); break; case A : printf (Alln); break; case A : printf (Alln); break; default : printf (Yes,No or Alln); default : printf (Yes,No or Alln); 运行结果:运行结果:运行结果:运行结果: NoNo/假设输入为:假设

53、输入为:假设输入为:假设输入为:N N #include #include void main ( ) void main ( ) char ch; char ch; ch = getch ( ); ch = getch ( ); switch ( ch ) switch ( ch ) case Y : printf (Yesn); break; case Y : printf (Yesn); break; case N : printf (Non); case N : printf (Non); case A : printf (Alln); break; case A : printf (

54、Alln); break; default : printf (Yes,No or Alln); default : printf (Yes,No or Alln); /假设输入为:假设输入为:假设输入为:假设输入为:N N运行结果:运行结果:运行结果:运行结果: NoNo ALL ALL语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C28l l 使用使用使用使用switchswitchswitchswitch语句注意事项语句注意事项语句注意事项语句注意事项 (6) (6) (6) (6)多个多个多个多个casecasecasecase子句,可共用

55、同一语句(组)。子句,可共用同一语句(组)。子句,可共用同一语句(组)。子句,可共用同一语句(组)。 例:当例:当例:当例:当a a a a的值是的值是的值是的值是1 1 1 1、2 2 2 2、3 3 3 3时,将时,将时,将时,将b b b b的值加的值加的值加的值加2 2 2 2,当,当,当,当a a a a的值是的值是的值是的值是4 4 4 4、5 5 5 5、6 6 6 6时,将时,将时,将时,将b b b b的值减的值减的值减的值减2 2 2 2。 int a, b = 4;int a, b = 4; scanf (%d, &a); scanf (%d, &a); switch (

56、a) switch (a) case 1: case 1: case 2: case 2: case 3: b += 2; break; case 3: b += 2; break; case 4: case 4: case 5: case 5: case 6: b -= 2; break; case 6: b -= 2; break; default: b *= 2; break; default: b *= 2; break; printf (b = %dn, b); printf (b = %dn, b);语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序

57、序设设计计C29l l 使用使用使用使用switchswitchswitchswitch语句注意事项语句注意事项语句注意事项语句注意事项 (7) (7) (7) (7) casecase子句和子句和defaultdefault子句如果都带有子句如果都带有breakbreak子句,那子句,那么它们之间顺序的变化不会影响么它们之间顺序的变化不会影响switchswitch语句的功能。语句的功能。 #include #include void main ( )void main ( ) char ch; char ch; ch = getch ( ); ch = getch ( ); switch

58、( ch ) switch ( ch ) case Y : printf (Yesn); case Y : printf (Yesn); break; break; case N : printf (Non); case N : printf (Non); break; break; case A : printf (Alln); case A : printf (Alln); break; break; default : printf (Yes,No or Alln); default : printf (Yes,No or Alln); break; break; #include #i

59、nclude void main ( )void main ( ) char ch; char ch; ch = getch ( ); ch = getch ( ); switch ( ch ) switch ( ch ) case Y : printf (Yesn); case Y : printf (Yesn); break; break; default : printf (Yes,No or Alln); default : printf (Yes,No or Alln); break; break; case N : printf (Non); case N : printf (No

60、n); break; break; case A : printf (Alln); case A : printf (Alln); break; break; 语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C30l l 使用使用使用使用switchswitchswitchswitch语句注意事项语句注意事项语句注意事项语句注意事项 (8) case (8) case (8) case (8) case子句和子句和子句和子句和defaultdefaultdefaultdefault子句如果有的带有子句如果有的带有子句如果有的带有子句如果有的带有bre

61、akbreakbreakbreak子句,子句,子句,子句,而有的没有带而有的没有带而有的没有带而有的没有带breakbreakbreakbreak子句,那么它们之间顺序的变化可能会影子句,那么它们之间顺序的变化可能会影子句,那么它们之间顺序的变化可能会影子句,那么它们之间顺序的变化可能会影响输出的结果。响输出的结果。响输出的结果。响输出的结果。 #include #include void main ( )void main ( ) char ch; char ch; ch = getch ( ); ch = getch ( ); switch ( ch ) switch ( ch ) cas

62、e Y : printf (Yesn); case Y : printf (Yesn); break; break; case N : printf (Non); case N : printf (Non); break; break; case A : printf (Alln); case A : printf (Alln); break; break; default : printf (Yes,No or Alln); default : printf (Yes,No or Alln); #include #include void main ( )void main ( ) char

63、 ch; char ch; ch = getch ( ); ch = getch ( ); switch ( ch ) switch ( ch ) case Y : printf (Yesn); case Y : printf (Yesn); break; break; default : printf (Yes,No or Alln); default : printf (Yes,No or Alln); case N : printf (Non); case N : printf (Non); break; break; case A : printf (Alln); case A : p

64、rintf (Alln); break; break; /假设输入为:假设输入为:假设输入为:假设输入为:B B运行结果:运行结果:运行结果:运行结果:Yes,No or AllYes,No or All运行结果:运行结果:运行结果:运行结果:Yes,No or AllYes,No or AllNoNo/假设输入为:假设输入为:假设输入为:假设输入为:B B语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C31l l 使用使用使用使用switchswitchswitchswitch语句注意事项语句注意事项语句注意事项语句注意事项 (9) switch

65、 (9) switch (9) switch (9) switch语句可以嵌套。语句可以嵌套。语句可以嵌套。语句可以嵌套。 void main ( ) void main ( ) int x = 1, y = 0, a = 0, b = 0; int x = 1, y = 0, a = 0, b = 0; switch ( x ) switch ( x ) case 1: case 1: switch ( y )switch ( y ) case 0: a+; break; case 0: a+; break; case 1: b+; break; case 1: b+; break; cas

66、e 2: a+; b+; break; case 2: a+; b+; break; case 3: a+; b+; case 3: a+; b+; printf (na = %d, b = %d, a, b); printf (na = %d, b = %d, a, b); 运行结果:运行结果:运行结果:运行结果:a = 2a = 2,b = 1b = 1 语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C325.4 选择结构程序设计举例 【例例例例1 1 1 1】已知某公司员工的保底薪水为已知某公司员工的保底薪水为已知某公司员工的保底薪水为已知某

67、公司员工的保底薪水为500500500500,某月所接,某月所接,某月所接,某月所接工程的利润工程的利润工程的利润工程的利润profitprofitprofitprofit(整数)与利润提成的关系如下所示(整数)与利润提成的关系如下所示(整数)与利润提成的关系如下所示(整数)与利润提成的关系如下所示(计量单位:元)。计算员工的当月薪水。(计量单位:元)。计算员工的当月薪水。(计量单位:元)。计算员工的当月薪水。(计量单位:元)。计算员工的当月薪水。 工程利润profit提成比率profit1000没有提成没有提成1000profit2000提成提成10%2000profit5000提成提成15

68、%5000profit10000提成提成20%10000profit提成提成25%程序应该这样来设计:程序应该这样来设计:程序应该这样来设计:程序应该这样来设计: 首先要定义一个变量用来存放员工所接工程的利润;首先要定义一个变量用来存放员工所接工程的利润;首先要定义一个变量用来存放员工所接工程的利润;首先要定义一个变量用来存放员工所接工程的利润; 其次提示用户输入员工所接工程的利润,并调用其次提示用户输入员工所接工程的利润,并调用其次提示用户输入员工所接工程的利润,并调用其次提示用户输入员工所接工程的利润,并调用scanfscanfscanfscanf函数接受用户输函数接受用户输函数接受用户输

69、函数接受用户输入员工所接工程的利润;入员工所接工程的利润;入员工所接工程的利润;入员工所接工程的利润; 然后根据上表的规则,计算该员工当月的提成比率。然后根据上表的规则,计算该员工当月的提成比率。然后根据上表的规则,计算该员工当月的提成比率。然后根据上表的规则,计算该员工当月的提成比率。 最后计算该员工当月的薪水(保底薪水最后计算该员工当月的薪水(保底薪水最后计算该员工当月的薪水(保底薪水最后计算该员工当月的薪水(保底薪水+ + + +所接工程的利润所接工程的利润所接工程的利润所接工程的利润* * * *提成比率),提成比率),提成比率),提成比率),并输出结果。并输出结果。并输出结果。并输出

70、结果。语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C33#include #include void main ( )void main ( ) long profit; long profit; / /所接工程的利润所接工程的利润所接工程的利润所接工程的利润 float ratio; float ratio; / /提成比率提成比率提成比率提成比率 float salary = 500; float salary = 500; / /薪水,初始值为保底薪水薪水,初始值为保底薪水薪水,初始值为保底薪水薪水,初始值为保底薪水500500 print

71、f (Input profit: ); printf (Input profit: ); / /提示输入所接工程的利润提示输入所接工程的利润提示输入所接工程的利润提示输入所接工程的利润 scanf (%ld, &profit); scanf (%ld, &profit); / /输入所接工程的利润输入所接工程的利润输入所接工程的利润输入所接工程的利润 / /计算提成比率计算提成比率计算提成比率计算提成比率 if if (profit = 1000) (profit = 1000) ratio = 0; ratio = 0; else ifelse if (profit = 2000) (pro

72、fit = 2000) ratio = (float)0.10; ratio = (float)0.10; else ifelse if (profit = 5000) (profit = 5000) ratio = (float)0.15; ratio = (float)0.15; else ifelse if (profit = 10000) (profit = 10000) ratio = (float)0.20; ratio = (float)0.20; elseelse ratio = (float)0.25; ratio = (float)0.25; salary += profi

73、t * ratio; salary += profit * ratio; / /计算当月薪水计算当月薪水计算当月薪水计算当月薪水 printf (salary = %.2fn, salary); printf (salary = %.2fn, salary); / /输出结果输出结果输出结果输出结果 运行结果:运行结果:运行结果:运行结果:Input profit: 4000Input profit: 4000 salary = 1100.00salary = 1100.00方法一:使方法一:使方法一:使方法一:使用用用用if_else ifif_else ifif_else ifif_els

74、e if语句语句语句语句语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C34#include #include void main ( )void main ( ) long profit; long profit; / /所接工程的利润所接工程的利润所接工程的利润所接工程的利润 float ratio; float ratio; / /提成比率提成比率提成比率提成比率 float salary = 500; float salary = 500; / /薪水,初始值为保底薪水薪水,初始值为保底薪水薪水,初始值为保底薪水薪水,初始值为保底薪水500

75、500 printf (Input profit: ); printf (Input profit: ); / /提示输入所接工程的利润提示输入所接工程的利润提示输入所接工程的利润提示输入所接工程的利润 scanf (%ld, &profit); scanf (%ld, &profit); / /输入所接工程的利润输入所接工程的利润输入所接工程的利润输入所接工程的利润 / /计算提成比率计算提成比率计算提成比率计算提成比率 if if (profit = 1000) (profit = 1000) ratio = 0; ratio = 0; if if (1000 profit & profi

76、t = 2000) (1000 profit & profit = 2000) ratio = ratio = (float)(float)0.10;0.10; if if (2000 profit & profit = 5000) (2000 profit & profit = 5000) ratio = ratio = (float)(float)0.15;0.15; if if (5000 profit & profit = 10000) (5000 profit & profit = 10000) ratio = ratio = (float)(float)0.20;0.20; if

77、if (10000 profit) (10000 profit) ratio = ratio = (float)(float)0.25;0.25; salary += profit * ratio; salary += profit * ratio; / /计算当月薪水计算当月薪水计算当月薪水计算当月薪水 printf (salary = %.2fn, salary); printf (salary = %.2fn, salary); / /输出结果输出结果输出结果输出结果 运行结果:运行结果:运行结果:运行结果:Input profit: 4000Input profit: 4000 sal

78、ary = 1100.00salary = 1100.00方法二:使方法二:使方法二:使方法二:使用用用用ifififif语句语句语句语句0.10.10.10.1默认为默认为默认为默认为doubledoubledoubledouble型,型,型,型,不进行强制类型转不进行强制类型转不进行强制类型转不进行强制类型转换将产生警告信息!换将产生警告信息!换将产生警告信息!换将产生警告信息!语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C35方法三:使方法三:使方法三:使方法三:使用用用用switchswitchswitchswitch语句语句语句语句算法

79、设计要点:算法设计要点:算法设计要点:算法设计要点: 为使用为使用为使用为使用switchswitch语句,必须将利润语句,必须将利润语句,必须将利润语句,必须将利润profitprofit与提成的关系转换成某些整与提成的关系转换成某些整与提成的关系转换成某些整与提成的关系转换成某些整数与提成的关系。分析本题可知,提成的变化点都是数与提成的关系。分析本题可知,提成的变化点都是数与提成的关系。分析本题可知,提成的变化点都是数与提成的关系。分析本题可知,提成的变化点都是10001000的整数倍的整数倍的整数倍的整数倍(10001000、20002000、50005000、),如果将利润),如果将利

80、润),如果将利润),如果将利润profitprofit整除整除整除整除10001000,则当:,则当:,则当:,则当: profit 1000 profit 1000 对应对应对应对应0 0、1 1 1000 1000 profit 2000 profit 2000 对应对应对应对应1 1、2 2 2000 2000 profit 5000 profit 5000 对应对应对应对应2 2、3 3、4 4、5 5 5000 5000 profit 10000 profit 10000 对应对应对应对应5 5、6 6、7 7、8 8、9 9、1010 10000 10000 profit prof

81、it 对应对应对应对应1010、1111、1212、 为解决相邻两个区间的重叠问题,最简单的方法就是:利润为解决相邻两个区间的重叠问题,最简单的方法就是:利润为解决相邻两个区间的重叠问题,最简单的方法就是:利润为解决相邻两个区间的重叠问题,最简单的方法就是:利润profitprofit先减先减先减先减1 1(最小增量),然后再整除(最小增量),然后再整除(最小增量),然后再整除(最小增量),然后再整除10001000即可:即可:即可:即可: profit 1000 profit 1000 对应对应对应对应0 0 1000 1000 profit 2000 profit 2000 对应对应对应对

82、应1 1 2000 2000 profit 5000 profit 5000 对应对应对应对应2 2、3 3、4 4 5000 5000 profit 10000 profit 10000 对应对应对应对应5 5、6 6、7 7、8 8、9 9 10000 10000 profit profit 对应对应对应对应1010、1111、1212、语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C36#include #include void main ( )void main ( ) long profit; long profit; / /所接工程的

83、利润所接工程的利润所接工程的利润所接工程的利润 int grade;int grade; float ratio; float ratio; / /提成比率提成比率提成比率提成比率 float salary = 500; float salary = 500; / /薪水,初始值为保底薪水薪水,初始值为保底薪水薪水,初始值为保底薪水薪水,初始值为保底薪水500500 printf (Input profit: ); printf (Input profit: ); / /提示输入所接工程的利润提示输入所接工程的利润提示输入所接工程的利润提示输入所接工程的利润 scanf (%ld, &prof

84、it); scanf (%ld, &profit); / /输入所接工程的利润输入所接工程的利润输入所接工程的利润输入所接工程的利润方法三:使方法三:使方法三:使方法三:使用用用用switchswitchswitchswitch语句语句语句语句 / /将利润将利润将利润将利润-1-1、再整除、再整除、再整除、再整除10001000,转化成,转化成,转化成,转化成switchswitch语句中的语句中的语句中的语句中的casecase标号标号标号标号 grade = (profit - 1) / 1000; grade = (profit - 1) / 1000; switchswitch (

85、grade ) ( grade ) / /计算提成比率计算提成比率计算提成比率计算提成比率 casecase 0: ratio = 0; break; 0: ratio = 0; break; / profit1000/ profit1000 casecase 1: ratio = (float)0.10; break; 1: ratio = (float)0.10; break; / 1000/ 1000profit2000profit2000 casecase 2: 2: casecase 3: 3: case case 4: ratio = (float)0.15; break; 4:

86、ratio = (float)0.15; break; / 2000/ 2000profit5000profit5000 casecase 5: 5: case case 6: 6: casecase 7: 7: casecase 8: 8: casecase 9: ratio = (float)0.20; break; 9: ratio = (float)0.20; break; / 5000/ 5000profit10000profit10000 defaultdefault: ratio = (float)0.25; : ratio = (float)0.25; / 10000/ 100

87、00profitprofit salary += profit * ratio; salary += profit * ratio; / /计算当月薪水计算当月薪水计算当月薪水计算当月薪水 printf (salary = %.2fn, salary); printf (salary = %.2fn, salary); / /输出结果输出结果输出结果输出结果 运行结果:运行结果:运行结果:运行结果:Input profit: 4000Input profit: 4000 salary = 1100.00salary = 1100.00语语言言程程序序设设计计教教程程第第二二版版 第第五五章章

88、选选择择结结构构程程序序设设计计C37 【例例例例2 2 2 2】写一程序,从键盘上输入写一程序,从键盘上输入写一程序,从键盘上输入写一程序,从键盘上输入1 1 1 1年份年份年份年份yearyearyearyear(4 4 4 4位十进制位十进制位十进制位十进制数),判断其是否闰年。闰年的条件是:能被数),判断其是否闰年。闰年的条件是:能被数),判断其是否闰年。闰年的条件是:能被数),判断其是否闰年。闰年的条件是:能被4 4 4 4整除、但不整除、但不整除、但不整除、但不能被能被能被能被100100100100整除,或者能被整除,或者能被整除,或者能被整除,或者能被400400400400整

89、除。整除。整除。整除。 语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C38#include #include void main ( )void main ( ) int year, leap = 0; int year, leap = 0; / leap=0/ leap=0:预置为非闰年:预置为非闰年:预置为非闰年:预置为非闰年 printf (Please input the year: ); printf (Please input the year: ); / /提示输入年份提示输入年份提示输入年份提示输入年份 scanf (“%d”,

90、&year); scanf (“%d”, &year); / /输入年份输入年份输入年份输入年份 if (year % 4 = 0) if (year % 4 = 0) / /如果被如果被如果被如果被4 4整除整除整除整除 if (year % 100 != 0) if (year % 100 != 0) / /如果不被如果不被如果不被如果不被100100整除整除整除整除 leap = 1; leap = 1; / /置为闰年置为闰年置为闰年置为闰年 if (year % 400 = 0) if (year % 400 = 0) / /如果被如果被如果被如果被400400整除整除整除整除 le

91、ap = 1; leap = 1; / /置为闰年置为闰年置为闰年置为闰年 / /输出结果输出结果输出结果输出结果 if (leap) if (leap) / /如果是闰年如果是闰年如果是闰年如果是闰年(leap=1)(leap=1) printf (%d is a leap year.n, year); printf (%d is a leap year.n, year); else else printf (%d is not a leap year.n, year); printf (%d is not a leap year.n, year); 运行结果:运行结果:运行结果:运行结果:

92、Please input the year: 2008Please input the year: 2008 2008 is a leap year.2008 is a leap year.判断是否判断是否判断是否判断是否为闰年为闰年为闰年为闰年if ( ( year % 4 = 0 & year % 100 != 0 ) | ( year % 400 = 0 ) )if ( ( year % 4 = 0 & year % 100 != 0 ) | ( year % 400 = 0 ) ) leap = 1; leap = 1;或或或或leap = ( year % 4 = 0 & year

93、% 100 != 0 ) | ( year % 400 = 0 );leap = ( year % 4 = 0 & year % 100 != 0 ) | ( year % 400 = 0 );语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C39 【例例例例3 3 3 3】写写一程序,从键盘上输入任意两个数和一运算写写一程序,从键盘上输入任意两个数和一运算写写一程序,从键盘上输入任意两个数和一运算写写一程序,从键盘上输入任意两个数和一运算符(符(符(符(+ + + +:加,:加,:加,:加,- - - -:减,:减,:减,:减,* * * *:乘,

94、:乘,:乘,:乘,/ / / /:除),计算其运算的结果并:除),计算其运算的结果并:除),计算其运算的结果并:除),计算其运算的结果并输出输出输出输出 。 语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C40#include #include void main ( )void main ( ) float a, b; float a, b; / /存放两个数的变量存放两个数的变量存放两个数的变量存放两个数的变量 int tag = 0; int tag = 0; / /运算合法的标志,运算合法的标志,运算合法的标志,运算合法的标志,0-0-合法

95、,合法,合法,合法,1-1-非法非法非法非法 char ch; char ch; / /运算符变量运算符变量运算符变量运算符变量 float result; float result; / /运算结果变量运算结果变量运算结果变量运算结果变量 printf (input two number: ); printf (input two number: ); / /提示输入两个数提示输入两个数提示输入两个数提示输入两个数 scanf (%f%f, &a, &b); scanf (%f%f, &a, &b); / /输入两个数输入两个数输入两个数输入两个数 fflush (stdin); fflus

96、h (stdin); / /清键盘缓冲区清键盘缓冲区清键盘缓冲区清键盘缓冲区 printf (input arithmetic lable(+ - * /): ); printf (input arithmetic lable(+ - * /): ); / /提示输入运算符提示输入运算符提示输入运算符提示输入运算符 scanf (%c, &ch); scanf (%c, &ch); / /输入运算符输入运算符输入运算符输入运算符 switch ( ch ) switch ( ch ) / /根据运算符来进行相关的运算根据运算符来进行相关的运算根据运算符来进行相关的运算根据运算符来进行相关的运算

97、 case +: result = a + b; break; case +: result = a + b; break; / /加法运算加法运算加法运算加法运算 case -: result = a - b; break; case -: result = a - b; break; / /减法运算减法运算减法运算减法运算 case *: result = a * b; break; case *: result = a * b; break; / /乘法运算乘法运算乘法运算乘法运算 case /: if (!b) case /: if (!b) / /除法运算,判除数是否为除法运算,判除

98、数是否为除法运算,判除数是否为除法运算,判除数是否为0 0 printf (divisor is zero!n); printf (divisor is zero!n); / /显示除数为显示除数为显示除数为显示除数为0 0 tag = 1; tag = 1; / /置运算非法标志置运算非法标志置运算非法标志置运算非法标志 else else / /除数非除数非除数非除数非0 0 result = a / b; result = a / b; / /计算商计算商计算商计算商 break;break; default: printf (illegal arithmetic lablen); de

99、fault: printf (illegal arithmetic lablen); / /非法的运算符非法的运算符非法的运算符非法的运算符 tag = 1; tag = 1; / /置运算非法标志置运算非法标志置运算非法标志置运算非法标志 if (!tag) if (!tag) / /运算合法,显示运算结果运算合法,显示运算结果运算合法,显示运算结果运算合法,显示运算结果 printf (%.2f %c %.2f = %.2fn, a, ch, b, result);printf (%.2f %c %.2f = %.2fn, a, ch, b, result); 运行结果:运行结果:运行结果:运行结果:input two number: 20 30input two number: 20 30 input arithmetic lable(+ - * /): +input arithmetic lable(+ - * /): + 20.00 + 30.00 = 50.0020.00 + 30.00 = 50.00 语语言言程程序序设设计计教教程程第第二二版版 第第五五章章 选选择择结结构构程程序序设设计计C

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号