武汉大学C语言程序设计第6讲(2012级))_第1页
武汉大学C语言程序设计第6讲(2012级))_第2页
武汉大学C语言程序设计第6讲(2012级))_第3页
武汉大学C语言程序设计第6讲(2012级))_第4页
武汉大学C语言程序设计第6讲(2012级))_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2022-3-251 Program Design in C LanguagePage if语句语句 switch语句语句第第4章章第四章第四章 2022-3-252 Program Design in C LanguagePage4.1 用if语句实现选择结构4.1.1 if4.1.1 if语句的三种形式语句的三种形式 格式一:格式一:单分支结构单分支结构 if ( ) 语句语句A ;表 达 式语句AYN语句执行过程:语句执行过程: 先判断条件先判断条件( (表达式表达式) ),若条件成立,若条件成立,就执行语句就执行语句A A;否则,直接执行否则,直接执行ifif后面的语后面的语句。该结构

2、的流程图如右图所示。句。该结构的流程图如右图所示。 例:例:if (grade =60) printf(“Pass n”);注意:注意:单分支结构只有在条件为真时,才执行给定的操作,如果条单分支结构只有在条件为真时,才执行给定的操作,如果条件为假,则不执行任何操作。件为假,则不执行任何操作。2022-3-253 Program Design in C LanguagePage1)条件均为逻辑表达式或关系表达式,也可以是任意)条件均为逻辑表达式或关系表达式,也可以是任意的数值类型。的数值类型。 2)语句可以是单语句,也可以是复合语句。)语句可以是单语句,也可以是复合语句。 注意:在复合语句注意:

3、在复合语句 外不需再加分号外不需再加分号 。例:例:if (3) printf(O. K.n);); if (q) printf(%dn,a);); if (3x & x=5) printf(3xb) t=a; a=b; b=t; 说明:说明:2022-3-254 Program Design in C LanguagePage例:例:键盘输入一个整数,输出该数的绝对值。键盘输入一个整数,输出该数的绝对值。main ()() int shu; printf(请输入一个整数请输入一个整数%d:n); scanf(%d, shu ); if ( shu 0 ) shu = -shu; pr

4、intf(“该数的绝对值为该数的绝对值为: %d。n, shu ); 4.1 用if语句实现选择结构2022-3-255 Program Design in C LanguagePage格式二:格式二:双分支结构双分支结构 if ( ) 语句语句A ; else 语句语句B ;注意:注意: else子句是子句是if语句的一部分,它不能作为语句单独语句的一部分,它不能作为语句单独使用,必须与使用,必须与if配对使用。配对使用。4.1 用if语句实现选择结构表 达 式 1N语 句 B语 句 AY语句执行过程:语句执行过程: 先判断条件先判断条件( (表达式表达式) ),若条件成立,就,若条件成立,

5、就执行语句执行语句A A;否则,执行语句否则,执行语句B B。即一定会执即一定会执行语句行语句A A和语句和语句B B中的一句,且只能执行其中中的一句,且只能执行其中的一句。该结构的流程图如右图所示。的一句。该结构的流程图如右图所示。例:例:if (grade =60) printf(“Pass n”); else printf(“Failure”);2022-3-256 Program Design in C LanguagePage例例 : 计算计算void main ( ) float x, y; printf(送数送数%f: n); scanf(%f, &x ); if ( x

6、 = 0 ) y = 3*x+; else y = -x*x+2*x-8; printf(y=%.2fn, y ); 82632xxxy)0()0(xx4.1 用if语句实现选择结构2022-3-257 Program Design in C LanguagePage例例: 任意输入两个不相等的数,将大数放入任意输入两个不相等的数,将大数放入X, X, 小数放入小数放入Y Y中。中。算法算法:1.定义变量定义变量2.给变量赋初值给变量赋初值3.比较比较x、y, 若若xy, 直接输出;要么xy,两数交换。4.1 用if语句实现选择结构程序:程序:main( ) int x, y, t; prin

7、tf(n请输入两个整数请输入两个整数%d%d:); scanf(%d%d, &x, &y ); if ( x y ) t=x; x=y; y=t; printf( nx=%d, y=%dn, x, y ); 2022-3-258 Program Design in C LanguagePage格式三:格式三:多分支结构多分支结构 if () 语句语句1 ; else if () 语句语句2 ; else if ()语句语句n-1 ; else 语句语句n ;4.1 用if语句实现选择结构语句执行过程:语句执行过程: 先判断条件先判断条件1(1(表达式表达式1)1),若条件,若条

8、件1 1成立,就执行语句成立,就执行语句1 1后,退出该后,退出该ifif结构;结构;否则,再判断条件否则,再判断条件2(2(表达式表达式2)2),若条,若条件件2 2成立,则执行语句成立,则执行语句2 2后,退出该后,退出该ifif结构;否则,再判断条件结构;否则,再判断条件3(3(表达式表达式3)3),若条件若条件3 3成立,则执行语句成立,则执行语句3 3后,退出后,退出该该ifif结构;结构;。表达式1表达式2表达式3表达式n-1语句n语句n-1.语句3语句2语句1.真真真真假假假假2022-3-259 Program Design in C LanguagePage在在if语句中又包

9、含有一个或多个语句中又包含有一个或多个if语句称为语句称为ifif语句的嵌套语句的嵌套。4.1 用if语句实现选择结构4.1.2 if4.1.2 if语句的嵌套语句的嵌套为避免错误可用为避免错误可用 将内嵌结构括起来以确定将内嵌结构括起来以确定if与与else的配对关系属内嵌范围。的配对关系属内嵌范围。说明说明: 嵌套不允许交叉。嵌套不允许交叉。else与与if必须成对出现,且必须成对出现,且else总是与最近的一个未总是与最近的一个未配对的配对的if配对。配对。2022-3-2510 Program Design in C LanguagePage例例 :ex4-7.c至至ex4-10.c。

10、4.1 用if语句实现选择结构2022-3-2511 Program Design in C LanguagePageswitchswitch语句的格式:语句的格式:switch(表达式)表达式) case :语句:语句1;break; case :语句:语句2;break; case :语句语句n-1;break; default :语句语句n ; break; 4.2 用switch语句实现多分支选择结构2022-3-2512 Program Design in C LanguagePage说明:说明:表达式:表达式:可以是整型表达式,或字符表达式,或枚举表达可以是整型表达式,或字符表达式

11、,或枚举表达式。式。case常量表达式常量表达式():casecase也是关键字。常量表达式也是关键字。常量表达式应与应与switchswitch后的表达式类型相同,且各常量表达式的值不后的表达式类型相同,且各常量表达式的值不允许相同。允许相同。语句语句 :可省略,或为单语句,或为复合语句。实际上可省略,或为单语句,或为复合语句。实际上是语句列表。是语句列表。default:关键字,可省略,也可出现在关键字,可省略,也可出现在switch语句体内的任语句体内的任何位置。何位置。4.2 用switch语句实现多分支选择结构2022-3-2513 Program Design in C Langu

12、agePagebreakbreak语句语句格式:格式: break;功能:功能:强迫终止程序的执行,即提前退出程序强迫终止程序的执行,即提前退出程序的执行。的执行。用法:用法:只能用在只能用在switchswitch语句和循环体中。语句和循环体中。 4.2 用switch语句实现多分支选择结构2022-3-2514 Program Design in C LanguagePageswitch语句语句执行过程:执行过程:执行:执行:若表达式若表达式 = 常量表达式,常量表达式, 则执行语句;则执行语句;若表达式若表达式 != 常量表达式,常量表达式, 则执行则执行default开始的(语句);开

13、始的(语句);若程序中无若程序中无default开始的语句,开始的语句, 则程序语句则程序语句switch相当于一个空程序(语句)。相当于一个空程序(语句)。 计算:计算:计算表达式的值。计算表达式的值。判断:判断:表达式的值与常量表达式的值是否相等。表达式的值与常量表达式的值是否相等。4.2 用switch语句实现多分支选择结构2022-3-2515 Program Design in C LanguagePage注意:注意: 表达式及常数表达式(由常数、符号常量组成的表达表达式及常数表达式(由常数、符号常量组成的表达式)必须为整型,故它们也可用字符表达式。式)必须为整型,故它们也可用字符表

14、达式。 case后的常数表达式的值不允许相同。后的常数表达式的值不允许相同。4.2 用switch语句实现多分支选择结构switch语句中若没有语句中若没有default分支,则当找不到与表分支,则当找不到与表达式相匹配的的常量表达式时,不执行任何操作。达式相匹配的的常量表达式时,不执行任何操作。例:x=3; switch ( x ) case 0 :printf(“True!”) case 1 : printf(“False); 该该switchswitch语句不执行任何操作语句不执行任何操作2022-3-2516 Program Design in C LanguagePage多个多个ca

15、se可以共同使用一个语句序列可以共同使用一个语句序列 4.2 用switch语句实现多分支选择结构例:switch(n) case 1 : case 3 : case 5 : case 7 : case 9 :printf(”奇数奇数 n”); break ; case 0 : case 2 : case 4 : case 6 : case 8 :printf(”偶数偶数 n”); break ; 该该switch语句中,当语句中,当n=1,3,5,7,9时,输出时,输出“奇数奇数”; 当当n=0,2,4,6,8时,输出时,输出“偶数偶数”;2022-3-2517 Program Design

16、 in C LanguagePage例:例: 输入一个输入一个0 02 2的数的数。main( ) int x; printf(请输入一个请输入一个02的整数的整数: ); scanf(%d, &x); switch ( x ) case 0 : printf(输入输入0。n); case 1 : printf(输入输入1。n); case 2 : printf(输入输入2。n); default : printf(输入错误输入错误!n ); 程序运行结果:程序运行结果:请输入一个请输入一个02的整数:的整数:1 输入输入1。输入输入2。输入错误输入错误!4.2 用switch语句实现

17、多分支选择结构2022-3-2518 Program Design in C LanguagePage例例: : 编程编程计算计算 y y 的值。的值。)2log()1ln(1)(253022xxxxSinxy)54()43()32()21()10(xxxxx4.2 用switch语句实现多分支选择结构2022-3-2519 Program Design in C LanguagePage#include math.hvoid main ( ) float x , y ; int m ; printf( 请输入请输入 05 之间的数之间的数%fn ); scanf( %f, &x )

18、; m = floor( x ); switch ( m ) case 0 : y = 0; break; case 1 : y = 3*x+5; break; case 2 : y = 2*sin( x )-1; break; case 3 : y = log( 1+x*x ); break; case 4 : y = log10( x*x-2*x )+5 ; break; default : printf (数据输入错误数据输入错误 ! n ); printf(y = %.2fn, y ); 4.2 用switch语句实现多分支选择结构程序程序 :2022-3-2520 Program D

19、esign in C LanguagePage例:任意输入两个数,和一个运算符(加、减乘、除),要求输出它们的运算结果。4.2 用switch语句实现多分支选择结构程序如下:程序如下:#include stdio.hvoid main ( ) float shu1, shu2, jieg; char yunsf; printf(”请输入运算符请输入运算符 + - * /:n”); yunsf = getchar ( ); printf(”请输入两个数请输入两个数 %f%fn”); scanf(%f%f, &shu1, &shu2 ); switch ( yunsf ) case

20、 + : jieg = shu1 + shu2 ; break; case - : jieg = shu1 - shu2 ; break; case * : jieg = shu1 * shu2 ; break; case / : jieg = shu1 / shu2 ; break; default : printf( 运算符输入错误运算符输入错误 !n ); printf(jieg = %.2f n, jieg ); 2022-3-2521 Program Design in C LanguagePage例例 :ex4-11.c至至ex4-13.c。4.2 用switch语句实现多分支选择

21、结构2022-3-2522 Program Design in C LanguagePage例:读下列程序,写出运行结果。main ( ) int a=1, b=1, c=1; a += b; b += c; c += a; printf(1)%dn, ab?a:b ); printf(2)%dn, ac?a-:c+); (a=b=c)? printf(an):printf(bn); printf(4)%d, %d, %dn, a, b, c ); 程序运行结果:程序运行结果:(1)2(1)2(2)3(2)3b(4)2, 2, 4(4)2, 2, 44.3 用条件表达式实现选择结构2022-3

22、-2523 Program Design in C LanguagePage例:例:读下列程序,写出运行结果。读下列程序,写出运行结果。 ab?a:cd?c:d 其中其中a=1,b=2,c=3,d=4.运行结果为:运行结果为:4. 该表达式等价于该表达式等价于ab?a:(cd?c:d)例:例:用条件运算符表达用条件运算符表达3个数个数a , b , c中的大数。中的大数。思路思路1:先求两个数:先求两个数b,c中的大数:中的大数:bc?b:c再求两个数再求两个数a,(b,c)中的大数:中的大数:a(bc?b:c)?a:(bc?b:c)思路思路2:ab?是,则让是,则让a与与c比较;否,则让比较

23、;否,则让b与与c比较比较 ab? (a c ? a : c) : ( b c ? b : c)4.3 用条件表达式实现选择结构2022-3-2524 Program Design in C LanguagePage例编程例编程:运输公司对用户计算运费,路程运输公司对用户计算运费,路程(S)越远,每公里运费越远,每公里运费越低。标准如下:越低。标准如下: S 250 km 没有折扣没有折扣250 S 500 km2折扣折扣500 S 1000 km5折扣折扣1000 S 2000 km8折扣折扣2000 S 3000 km10折扣折扣3000 S 15折扣折扣设每公里每吨货物的基本运费为设每公

24、里每吨货物的基本运费为p,货物重量为货物重量为w,距距离为离为s,折扣为折扣为d,则总的运费则总的运费f为:为:f=p*w*s*(l-d)2022-3-2525 Program Design in C LanguagePage分析分析:折扣的折扣的“变化点变化点”是是250的倍数,因此可令的倍数,因此可令c=S/250,表示表示250的倍数。当的倍数。当C1时,说明时,说明S 2 5 0 , 没 有 折 扣 ; 当没 有 折 扣 ; 当 1 C 2 时 , 说 明时 , 说 明250S500,折扣折扣d=2;当当2C4时,说明时,说明500S1000,折扣折扣d=5;当当4C8时,说明时,说明500S1000,折扣折扣d=8;当当8C12时,说时,说明明500S=3000) c=12; else c=s/250; switch (c) case 0:d=0;break; case 1:d=2;break;2022-3-2527 Program Design in C LanguagePage编程编程: /* continue */ case 2:case 3:d=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论