资源预览内容
第1页 / 共40页
第2页 / 共40页
第3页 / 共40页
第4页 / 共40页
第5页 / 共40页
第6页 / 共40页
第7页 / 共40页
第8页 / 共40页
第9页 / 共40页
第10页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
,选择结构 的程序设计,第二次课,C语言程序的基本结构(p27) C开发环境(p361) 数据类型之整型(p41) 整型变量的说明与引用(p41) 基本整型数据的范围(p41) 整型数据的输出,printf函数(p76) 变量的初始化(p51) 算术运算符(p52) 运算符号的优先级与结合性(p53) %运算(p54),上次课回顾,上次课回顾,格式 scanf(格式说明,变量列表); 例:scanf(“%d”, /*格式说明中格式说明以外的字符要原样输入*/,整型数据的输入,整型数据的输入,=是赋值运算符(p56) 优先级低(仅高于逗号运算符) 例: x = a + b - c / 12 * 5; 将赋值号右侧的运算结果保存在变量x中。 如果a=6、b=1、c=8, 执行上句后x保存的值是?,赋值运算符,赋值运算符,顺序结构 语句 A 语句 B 语句 C ,流程图 N-S图,例: a = 5; b = 60; c = 101; d = xe; e = x41; printf(“a=%cb=%cc=%cd=%ce=%cn”);,程序语句的顺序结构,程序语句的顺序结构,1.关系运算的结果是逻辑值。 2.C语言将逻辑值做数值化处理 用数值 0 表示逻辑非, 用数值非零表示逻辑真, (数值1)。 如:关系表达式 75 的值是 1 关系表达式 57 的值是 0 3. 实型数勿直接用0去比较。,关系运算符, 大于 (10) = 大于等于(10) 小于 (10) = 小于等于(10) = 等于 (9) != 不等于 (9) (结合性 ),关系运算符,选择结构(分支结构) 二分支结构 if(表达式) 语句A else 语句B,if(s( p ) = = 0 ) printf( “okn”); else printf(“error.n”); break; ,程序语句的选择结构,程序选择结构 二分支结构,if语句格式 if ( 表达式 ) 语句1; else 语句2; if语句的执行流程,表达式的值为非零,表示条件成立。 if语句中进行条件判断的“表达式”,必须用括号“( )”括起来且不可省略。,程序选择结构 二分支结构,例:求 a 和 b 两数中较大的一个。 #include main( ) /* 求a和b的最大值 */ int a,b,max; printf(“Input a and b=“); scanf(“%d%d“, ,程序选择结构 二分支结构,例:求 a 和 b 两数中较大的一个。 #include main( ) /* 求a和b的最大值 */ int a,b,max; printf(“Input a and b=“); scanf(“%d%d“, ,程序选择结构 二分支结构,if语句格式中的表达式2可以省略。 if(表达式) 语句1;,程序选择结构 二分支结构,例:从键盘输入被除数a和除数b,求商。 main( ) int a,b; printf(“Enter two numbers: “); scanf(“%d%d“, ,将条件改为:b ?,if(b),当b不等于零时执行此句,,当b等于零时执行此句,,程序选择结构 二分支结构,if语句的嵌套 在if语句的“语句1”或“语句2”中又包含if语句。 例如程序:比较两个整数的大小 #include main( ) int x, y; printf (“Enter integer X and Y:“); scanf (“%d%d“, ,根据if语句的格式,此处应是一条语句。,程序选择结构 二分支结构,嵌套if语句的配对关系 例:if(ab) /* 1 */ if(ac) /* 2 */ if(ad) flag=1; /* 3 */ else flag=2; /* 4 */ else flag=3; /* 5 */ 问题:第四行和第五行的else语句和那一个if语句相匹配呢? 分析:匹配方案可以有很多种:(2-4,1-5)、 (3-4,2-5)、(1-4,2-5)、,程序选择结构 二分支结构,嵌套if语句匹配规则: 在嵌套的if-else语句中,else子句总是与上面的、离它最近的、且在同一复合语句中还没有配对的if子语配对。,if(ab) /* 1 */ if(ac) /* 2 */ if(ad) flag=1; /* 3 */ else flag=2; /* 4 */ else flag=3; /* 5 */,程序选择结构 二分支结构,书写程序时采用缩进格式,表示配对关系。 if( ab ) if( ac ) if( ad ) flag=1; else flag=2; else flag=3;,当 a 最大时,flag=1,当 d 最大时,flag=2,当 cab 时,flag=3,程序选择结构 二分支结构,注意:缩进格式不改变执行顺序。 if( a=b ) if( b=c ) printf(“a=b=cn“); else printf(”a!=bn”); 尽管书写格式如此,真实的正确的含义是: if( a=b ) if( b=c ) printf(“a=b=cn“); else printf(“a!=bn”);,程序选择结构 二分支结构,通过加 ,可以改变配对关系: if( a=b ) if( b=c ) printf(“a=b=cn“); else printf(”a!=bn”);,用 括起来的若干语句,叫做复合语句。,程序选择结构 二分支结构,例:已知银行整存整取存款月息利率分别为: 0.315% 期限一年 0.330% 期限二年 0.345% 期限三年 0.375% 期限五年 其他:0 要求输入存钱的本金和期限,求到期时利息与本金合计。银行到期利息计算公式: 利息本金月息利率12存款年限 程序中应当根据存款的年限确定利率,程序选择结构 二分支结构,#include main( ) int year; float money,rate,total; /* 本金,月利率,本利合计*/ printf(“Input money and year =?“); scanf(“%f%d“, ,程序选择结构 二分支结构,例:通过键盘输入字符,将输入的字符分为控制、数字、大写字母、小写字母和其他字符等五类。 ASCII码表中的前32个字符为控制字符, 0 9为数字, A Z为大写字母, a z为小写字母, 其它。,程序选择结构 二分支结构,#include main ( ) char c; printf (“Enter a character:“); c=getch( ); if(c=0 ,例C5_105,程序选择结构 二分支结构,if语句与条件运算的关系 例:求一个数字的绝对值,if( y0 )x=-y; else x=y;,(y0)?x=-y:x=y;,等价,等价,x=(y0)?-y:y;,程序选择结构 二分支结构,条件运算符的结合性 int a=1,b=2,c=3; c = a0 ? a/b : a0 ? a+b : a-b; printf(“c=%d”,c);,?,c = a0 ? a/b : a0 ? a+b : a-b ;,程序选择结构 二分支结构,多分支结构 switch(表达式) case 常量表达式1:语句A case 常量表达式2:语句B case 常量表达式n:语句N default: 语句N+1 ,程序选择结构 多分支结构,语句A,语句B,语句N,语句N+1,程序选择结构 多分支结构,表达式 1 2 n default 语 语 语 语 句 句 句 句 A B N N+1,程序选择结构 多分支结构,switch语句格式 switch (表达式) case 常量1: 语句序列1 case 常量2: 语句序列2 default: 语句序列n+1 ,程序选择结构 多分支结构,程序选择结构 多分支结构,switch语句格式 switch (表达式) case 常量1: 语句序列1 case 常量2: 语句序列2 default: 语句序列n+1 ,语句标号 的作用,可执行语句,程序选择结构 多分支结构,switch (number) case 1: statement 1; break; case 2: statement 2; break; case 3: statement 3; break; default: statement 4; statement 5;,当number的值为2时,程序选择结构 多分支结构,switch语句使用注意事项 1.switch语句与if语句不同,仅能判断一种关系:是否恒等。 2.switch语句中的“case 常量:“是语句标号。 3.switch语句中case子句的常量可以是整型常量、字符型常量、枚举型数据,或是整型常量表达式,不允许是变量。 4.在同一个switch中,case子句的常量不能相同;在嵌套的switch语句中,不同层次的switch之间,可有相同的常量。,程序选择结构 多分支结构,5.default子句可以省略。 6.case 和 default 子句只能在switch语句中使用,且 case和 default 只起标号作用,可出现在switch中的任何位置。 7.case 和 default 子句后面的语句序列允许由多个可执行语句组成,且不必用“ ”括起来,也可以为空语句。 8.switch 语句中的 break 语句不是必须。注意区别。,程序选择结构 多分支结构,例:计算存款本利。采用switch改写。 #include main( ) int year; float money,rate,total printf(“Input money and year =?“); scanf(“%f%d“, ,程序举例,例:输入年份year和月month,求该月天数。 如何判断闰年? 闰年:能够被 4 整除且不能被 100 整除的年份 或 能够被 400 整除的年份 例如:1996年是闰年 2000年是闰年 1900年是平年 判断闰年的C语言公式 year % 4 = 0 & year % 100 != 0 | year % 400 = 0 当year = 1996 时,结果为 1 当year = 1997 时,结果为 0 当year = 1900 时,结果为 0 当year = 2000 时,结果为 1,程序举例,main( ) int year, month, days; scanf(“%d%d“, ,1. 省略case子句之后的语句。 2. 注意break语句的作用。,程序举例,break语句对流程的影响 flag=-1; /* error marker */ switch (i) case 1: case 2: case 3: flag=0; /* no error */ break; case 4: flag=1; /* error #1 */ case 5: error(flag); /* error process */ break; default: flag
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号