选择结构程序设计教学PPT

上传人:工**** 文档编号:571283068 上传时间:2024-08-09 格式:PPT 页数:90 大小:1.22MB
返回 下载 相关 举报
选择结构程序设计教学PPT_第1页
第1页 / 共90页
选择结构程序设计教学PPT_第2页
第2页 / 共90页
选择结构程序设计教学PPT_第3页
第3页 / 共90页
选择结构程序设计教学PPT_第4页
第4页 / 共90页
选择结构程序设计教学PPT_第5页
第5页 / 共90页
点击查看更多>>
资源描述

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

1、第第4章章 选择结构程序设计选择结构程序设计4.1 选择结构和条件判断选择结构和条件判断4.2 用用if语句实现选择结构语句实现选择结构4.3关系运算符和关系表达式关系运算符和关系表达式4.4 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式4.5 条件运算符和条件表达式条件运算符和条件表达式4.6 选择结构的嵌套选择结构的嵌套4.7 用用switch语句实现多分支选择结构语句实现多分支选择结构4.8选择结构程序综合举例选择结构程序综合举例4.1 选择结构和条件判断选择结构和条件判断在现实生活在现实生活中中,需要进行判断和选择的,需要进行判断和选择的情况是很多的情况是很多的u如果你在家,我去拜访你

2、如果你在家,我去拜访你u如果考试不及格,要补考如果考试不及格,要补考u如果遇到红灯,要停车等待如果遇到红灯,要停车等待u周末我们去郊游周末我们去郊游u70岁以上的老年人,入公园免票岁以上的老年人,入公园免票4.1 选择结构和条件判断选择结构和条件判断在现实生活在现实生活中中,需要进行判断和选择的,需要进行判断和选择的情况是很多的情况是很多的处理处理这些这些问题,关键在于进行条件判断问题,关键在于进行条件判断由于程序处理问题的需要,在大多数程由于程序处理问题的需要,在大多数程序中都会包含选择结构,需要在进行下序中都会包含选择结构,需要在进行下一个操作之前先进行条件判断一个操作之前先进行条件判断4

3、.1 选择结构和条件判断选择结构和条件判断C语言有两种选择语句语言有两种选择语句:(1)if语句语句,实现两个分支的选择结构,实现两个分支的选择结构(2)switch语句语句,实现多分支的选择结构,实现多分支的选择结构4.1 选择结构和条件判断选择结构和条件判断 例例4.1 在例在例3.5的基础上对程序进行改进。的基础上对程序进行改进。题目要求题目要求是是求求 方程的根。方程的根。 由键盘输入由键盘输入a,b,c。假设。假设a,b,c的值任意,的值任意,并不保证并不保证 。需要在程序中进行。需要在程序中进行判别,如果判别,如果 ,就计算并输出方,就计算并输出方程的两个实根,程的两个实根,否则否

4、则就输出就输出“方程无实根方程无实根”的信息。的信息。 解题思路:解题思路:输入输入a,b,c计算计算discdisc0计算计算x1,x2输出无实根输出无实根输出输出x1,x2假假真真#include #include int main ( ) double a,b,c,disc,x1,x2,p,q; scanf(%lf%lf%lf,&a,&b,&c); disc=b*b-4*a*c;计算计算b2-4ac,disc的值变为的值变为-15 if (disc0) printf(“has not real rootsn”); else p=-b/(2.0*a); q=sqrt(disc)/(2.0*

5、a); x1=p+q; x2=p-q; printf(“real roots:nx1=%7.2fn x2=%7.2fn”,x1,x2); return 0;-150为真为真#include #include int main ( ) double a,b,c,disc,x1,x2,p,q; scanf(%lf%lf%lf,&a,&b,&c); disc=b*b-4*a*c;计算计算b2-4ac,disc的值变为的值变为8 if (disc0) printf(“has not real rootsn”); else p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p

6、+q; x2=p-q; printf(“real roots:nx1=%7.2fn x2=%7.2fn”,x1,x2); return 0;80为假为假p的值变为的值变为-1q的值变为的值变为0.71x1的值变为的值变为-0.29x2的值变为的值变为-1.71 if (disc0) printf(“has not real rootsn”); else p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(“real roots:nx1=%7.2fn x2=%7.2fn”,x1,x2); return 0;选择结构选择结构,用用i

7、f语句实现语句实现的的 if (disc0) printf(“has not real rootsn”); else p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(“real roots:nx1=%7.2fn x2=%7.2fn”,x1,x2); return 0;复合语句复合语句4.2 用用if语句实现选择结构语句实现选择结构4.2.1 用用if语句处理选择结构举例语句处理选择结构举例4.2.2 if语句的一般形式语句的一般形式4.2.1 用用if语句处理选择结构举例语句处理选择结构举例 例例4.2 输入两个实数,按代数

8、值由小到输入两个实数,按代数值由小到大的顺序输出这两个数。大的顺序输出这两个数。解题思路:解题思路:u只需要做一次比较,然后进行一次交换即可只需要做一次比较,然后进行一次交换即可u用用if语句实现条件判断语句实现条件判断u关键是怎样实现两个变量值的互换关键是怎样实现两个变量值的互换AB互换前互换前AB互换后互换后4.2.1 用用if语句处理选择结构举例语句处理选择结构举例ABC4.2.1 用用if语句处理选择结构举例语句处理选择结构举例ABC4.2.1 用用if语句处理选择结构举例语句处理选择结构举例ABC 4.2.1 用用if语句处理选择结构举例语句处理选择结构举例#include int

9、main() float a,b,t; scanf(%f,%f,&a,&b); if(ab) t=a; a=b; b=t; printf(%5.2f,%5.2fn,a,b); return 0;将将a和和b的值互换的值互换如果如果ab#include int main() float a,b,t; scanf(%f,%f,&a,&b); if(ab) t=a; a=b; b=t; printf(%5.2f,%5.2fn,a,b); return 0;选择结构,用选择结构,用if语句实现的语句实现的 例例4.3 输入输入3个数个数a,b,c,要求按由小,要求按由小到大的顺序输出。到大的顺序输出。

10、解题思路:可以先用伪代码写出算法:解题思路:可以先用伪代码写出算法:uif ab,a和和b对换对换 (a是是a、b中的小者)中的小者)uif ac,a和和c对换对换 (a是三者中最小者)是三者中最小者)uif bc,b和和c对换对换 (b是三者中次小者是三者中次小者)u顺序输出顺序输出a,b,c#include int main() float a,b,c,t; scanf(%f,%f,%f,&a,&b,&c); if(ab) t=a; a=b; b=t; if(ac) t=a; a=c; c=t; if(bc) t=b; b=c; c=t; printf(%5.2f,%5.2f,%5.2fn

11、,a,b,c); return 0;4.2.2 if语句的一般形式语句的一般形式 if (表达式表达式) 语句语句1 else 语句语句2 关系表达式关系表达式逻辑表达式逻辑表达式数值表达式数值表达式方括号内的部分为可选的方括号内的部分为可选的4.2.2 if语句的一般形式语句的一般形式 if (表达式表达式) 语句语句1 else 语句语句2 简单的语句简单的语句复合语句复合语句另一个另一个if语句语句等等最常用的最常用的3种种if语句语句形式形式:1. if (表达式表达式) 语句语句1 (没有没有else子句子句)2. if (表达式表达式) 语句语句1 else 语句语句2 (有有el

12、se子句子句)3. if(表达式)(表达式) 语句语句 else if(表达式)(表达式) 语句语句 else if(表达式)(表达式) 语句语句 else if(表达式)(表达式) 语句语句 else 语句语句m+1 (在在else部分又嵌套了多层的部分又嵌套了多层的if语句语句)if(number 500) cost = 0.15;else if (number 300) cost = 0.10;else if (number 100) cost = 0.075;else if (number 50) cost = 0.05;else cost=0;if (number 500) cost

13、 = 0.15;else if (number 300) cost = 0.10; else if (number 100) cost = 0.075; else if (number 50) cost = 0.05; else cost = 0;等价于等价于分号不能丢分号不能丢说明:说明:(1)整个整个if语句可写在多行上,也可写在一行上语句可写在多行上,也可写在一行上 但但都是一个整体,属于同一个语句都是一个整体,属于同一个语句(2)“语句语句1”“语句语句m”是是if中的内嵌语句中的内嵌语句 内嵌语句也可以是一个内嵌语句也可以是一个if语句语句(3)“语句语句1”“语句语句m”可以是简单

14、的语句,也可以是简单的语句,也可以是复合语句可以是复合语句4.3关系运算符和关系表达式关系运算符和关系表达式4.3.1关系运算符及其优先次序关系运算符及其优先次序4.3.2 关系表达式关系表达式4.3.1关系运算符及其优先次序关系运算符及其优先次序关系运算符关系运算符:用来对两个数值进行比较用来对两个数值进行比较的的比较运算符比较运算符语言提供种关系运算符:语言提供种关系运算符: (小于小于) = (小于或等于小于或等于) (大于大于) = (大于或等于大于或等于) = (等于等于) != (不等于不等于) 优先级相同优先级相同 (高高)优先级相同优先级相同 (低低)4.3.1关系运算符及其优

15、先次序关系运算符及其优先次序关系关系、算术算术、赋值运算符赋值运算符的优先级的优先级算术运算符算术运算符 (高高)赋值运算符赋值运算符 (低低)关系运算符关系运算符 4.3.1关系运算符及其优先次序关系运算符及其优先次序ca+b 等效于等效于 c(a+b)ab=c 等效于等效于 (ab)=ca=bc 等效于等效于 a=(bc 等效于等效于 a=(bc)4.3.2 关系表达式关系表达式关系表达式关系表达式u用关系运算符将两个数值或数值表达式连接起来的用关系运算符将两个数值或数值表达式连接起来的式子式子例:例:ab,a+bb+c,(a=3)(b=5),a3的值为的值为“真真”,表达式的值为,表达式

16、的值为1 654的表达式的值为?的表达式的值为?4.4 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式4.4.1 逻辑运算符及其优先次序逻辑运算符及其优先次序4.4.2 逻辑表达式逻辑表达式4.4.3 逻辑型变量逻辑型变量4.4.1 逻辑运算符及其优先次序逻辑运算符及其优先次序3种逻辑运算符:种逻辑运算符: &(逻辑与逻辑与) 双目运算符双目运算符 |(逻辑或逻辑或) 双目运算符双目运算符 !(逻辑非逻辑非) 单目运算符单目运算符a&b 只有当只有当a,b都为真,都为真,a&b才为真才为真 a|b 只要只要a,b之一为真,则之一为真,则a|b就为真就为真 !a 若若a为真,则为真,则b为假为假4

17、.4.1 逻辑运算符及其优先次序逻辑运算符及其优先次序逻辑运算符的优先次序逻辑运算符的优先次序! & | (!为三者中最高为三者中最高)与其他运算符的优先次序与其他运算符的优先次序 ! (高)(高)算术运算符算术运算符关系运算符关系运算符 & 和和 |赋值运算符赋值运算符 (低)(低)4.4.1 逻辑运算符及其优先次序逻辑运算符及其优先次序判断判断年龄年龄在在13至至17岁岁之内?之内?age=13 & age=17判断判断年龄小于年龄小于12或大于或大于65?age654.4.2 逻辑表达式逻辑表达式逻辑表达式:逻辑表达式:用逻辑运算符将关系表达式或其他用逻辑运算符将关系表达式或其他逻辑量连

18、接起来的式子逻辑量连接起来的式子逻辑表达式的值应该是逻辑量逻辑表达式的值应该是逻辑量“真真”或或“假假”编译系统在编译系统在表示表示逻辑运算逻辑运算结果结果时时u以数值以数值1代表代表“真真”,以,以0代表代表“假假”但在但在判断判断一个量是否为一个量是否为“真真”时时u以以0代表代表“假假”,以非,以非0代表代表“真真”例:设例:设a=4,b=5!a的值为的值为0 a&b的值为的值为1a|b的值为的值为1 !a|b的值为的值为14&0|2的值为的值为1例:例:53&84-!0 自左向右运算自左向右运算 1&01&0逻辑值为逻辑值为0 0838353逻辑值为逻辑值为1 1表达式值为表达式值为0

19、 04.4.2 4.4.2 逻辑表达式逻辑表达式逻辑表达式逻辑表达式在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。(1)a&b&c (1)a&b&c 只有只有a a为真时,才需要判断为真时,才需要判断b b的值,只有的值,只有a a和和b b都为真时,都为真时, 才需要判断才需要判断c c的值。的值。(2)a|b|c (2)a|b|c 只要只要a a为真,就不必判断为真,就不必判断b b和和c c的值,只有的值,只有a a为假,才为假,才 判断判断b b。a a和和b b都为假才判断都为假才判断c c例例: :(m=a(m=ab

20、)&(nb)&(n=cd)=cd)当当a=1,b=2,c=3,d=4,ma=1,b=2,c=3,d=4,m和和n n的原值为的原值为1 1时,由于时,由于“abab”的值的值为为0 0,因此,因此m=0m=0,而,而“n=cdn=cd”不被执行,因此不被执行,因此n n的值不是的值不是0 0而而仍保持原值仍保持原值1 1。4.4.2 4.4.2 逻辑表达式逻辑表达式逻辑表达式逻辑表达式4.4.2 逻辑表达式逻辑表达式判别某一年是否闰年,判别某一年是否闰年,用用逻辑表达式表示逻辑表达式表示闰年的条件是符合下面二者之一:闰年的条件是符合下面二者之一:能被能被4整除,但不能被整除,但不能被100整除

21、,如整除,如2008能被能被400整除,如整除,如2000u(year % 4 = 0 & year 100 !=0) | year % 400 = 0u如果表达式值为如果表达式值为1,则闰年;否则为非闰年,则闰年;否则为非闰年4.4.3 逻辑型变量逻辑型变量这是这是C99所增加的一种数据类型所增加的一种数据类型可以将关系运算和逻辑运算的结果存到可以将关系运算和逻辑运算的结果存到一个逻辑型变量中,以便于分析和运算一个逻辑型变量中,以便于分析和运算4.5 条件运算符和条件表达式条件运算符和条件表达式有一种有一种if语句,当被判别的表达式的值语句,当被判别的表达式的值为为“真真”或或“假假” 时,

22、都执行一个赋值时,都执行一个赋值语句且向同一个变量赋值语句且向同一个变量赋值如:如:if (ab) max=a; else max=b;max = (a b) ? a : b;条件运算符条件运算符4.5 条件运算符和条件表达式条件运算符和条件表达式有一种有一种if语句,当被判别的表达式的值语句,当被判别的表达式的值为为“真真”或或“假假” 时,都执行一个赋值时,都执行一个赋值语句且向同一个变量赋值语句且向同一个变量赋值如:如:if (ab) max=a; else max=b;max = (a b) ? a : b;条件条件表达式表达式4.5 条件运算符和条件表达式条件运算符和条件表达式条件表

23、达式的一般形式为条件表达式的一般形式为表达式表达式?表达式表达式: 表达式表达式条件运算符的执行顺序:条件运算符的执行顺序:u求解表达式求解表达式1u若为非若为非0(真)则求解表达式(真)则求解表达式2,此时表达式,此时表达式2的值的值就作为整个条件表达式的值就作为整个条件表达式的值u若表达式若表达式1的值为的值为0(假),则求解表达式(假),则求解表达式3,表达,表达式式3的值就是整个条件表达式的值的值就是整个条件表达式的值4.5 条件运算符和条件表达式条件运算符和条件表达式条件运算符优先于赋值运算符条件运算符优先于赋值运算符条件运算符的结合方向为条件运算符的结合方向为“自右至左自右至左”以

24、下为合法的使用方法:以下为合法的使用方法:uab ? (max=a):(max=b);uab ? printf(“%d”,a): printf(“%d”,b);4.5 条件运算符和条件表达式条件运算符和条件表达式 例例4.4 输入一个字符,判别它是否大写字母,输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。转换。然后输出最后得到的字符。 解题思路:用条件表达式来处理,当字母是大解题思路:用条件表达式来处理,当字母是大写时,转换成小写字母,否则不转换写时,转换成小写字母,否则不转换4.5 条件运算符和

25、条件表达式条件运算符和条件表达式#include int main() char ch; scanf(%c,&ch); ch=(ch=A & ch=Z)?(ch+32):ch; printf(%cn,ch); return 0;4.6 选择结构的嵌套选择结构的嵌套在在if语句中又包含一个或多个语句中又包含一个或多个if语句称为语句称为if语句的嵌套语句的嵌套一般形式:一般形式:if( ) if( ) 语句语句1 else 语句语句2 else if( ) 语句语句3 else 语句语句4 内嵌内嵌ifelse总是与它上面最总是与它上面最近的未配对的近的未配对的if配对配对4.6 选择结构的嵌套

26、选择结构的嵌套在在if语句中又包含一个或多个语句中又包含一个或多个if语句称为语句称为if语句的嵌套语句的嵌套if () if () 语句语句1 else语句语句2内嵌内嵌if 限定了内嵌限定了内嵌if范围范围4.6 选择结构的嵌套选择结构的嵌套 例例4.5有一函数有一函数: 编一程序编一程序,输入一个输入一个x值值,要求输出相应要求输出相应的的y值。值。4.6 选择结构的嵌套选择结构的嵌套解题思路:解题思路:u用用if语句检查语句检查x的值,根据的值,根据x的值决定赋予的值决定赋予y的值的值u由于由于y的可能值不是两个而是三个,因此不的可能值不是两个而是三个,因此不可能只用一个简单的可能只用

27、一个简单的(无内嵌无内嵌if)的的if语句来语句来实现实现4.6 选择结构的嵌套选择结构的嵌套解题思路:解题思路:方法方法1(1) 先后用先后用3个独立的个独立的if语句处理:语句处理:输入输入x若若 x 0, 则则y = 1输出输出x和和yscanf(%d,&x);if(x0) y = 1;printf(x=%d,y=%dn,x,y);4.6 选择结构的嵌套选择结构的嵌套解题思路:解题思路:方法方法2(2) 用一个嵌套的用一个嵌套的if语句处理:语句处理:输入输入x若若x 0, 则则y = -1 否则否则 若若 x = 0, 则则y = 0 否则否则 y = 1输出输出x和和y上例中的程序段

28、有四个,请判断哪个是正确的?上例中的程序段有四个,请判断哪个是正确的?程序程序1: 程序程序2: if(x=0) y=-1; if(x0) y=1; else else y=0; if(x=0) y=0; else y=-1; else y=1;程序程序3: 程序程序4: y=-1; y=0; if(x!=0) if(x=0) if(x0) y=1; if(x0) y=1; else y=0; else y=-1;4.6 4.6 选择结构的嵌套选择结构的嵌套选择结构的嵌套选择结构的嵌套4.7 用用switch语句实现多分支选择结构语句实现多分支选择结构switch语句用来实现多分支选择结构语句

29、用来实现多分支选择结构u学生成绩分类学生成绩分类85分以上为分以上为A等等7084分为分为B等等6069分为分为C等等u人口统计分类人口统计分类 按年龄分为老、中、青、少、儿童按年龄分为老、中、青、少、儿童4.7 用用switch语句实现多分支选择结构语句实现多分支选择结构 例例4.6 要求按照考试成绩的等级输出百要求按照考试成绩的等级输出百分制分数段,分制分数段,A等为等为85分以上,分以上,B等为等为7084分,分,C等为等为6069分分 ,D等为等为 60分以下分以下 。成绩的等级由键盘输入。成绩的等级由键盘输入。4.7 用用switch语句实现多分支选择结构语句实现多分支选择结构解题思

30、路:解题思路:u判断出判断出这是一个多分支选择问题这是一个多分支选择问题u根据百分制分数将学生成绩分为根据百分制分数将学生成绩分为4个等级个等级u如果用如果用if语句语句,至少要用至少要用3层嵌套的层嵌套的if,进行,进行3次检查判断次检查判断u用用switch语句进行一次检查即可得到结果语句进行一次检查即可得到结果#include int main() char grade; scanf(%c,&grade); printf(Your score:); switch(grade) case A: printf(85100n);break; case B: printf(7084n);brea

31、k; case C: printf(6069n);break; case D: printf(60n);break; default: printf(enter data error!n); return 0; 值为值为A#include int main() char grade; scanf(%c,&grade); printf(Your score:); switch(grade) case A: printf(85100n);break; case B: printf(7084n);break; case C: printf(6069n);break; case D: printf(6

32、0n);break; default: printf(enter data error!n); return 0; 不能少不能少#include int main() char grade; scanf(%c,&grade); printf(Your score:); switch(grade) case A: printf(85100n);break; case B: printf(7084n);break; case C: printf(6069n);break; case D: printf(60n);break; default: printf(enter data error!n);

33、 return 0; 值为值为C#include int main() char grade; scanf(%c,&grade); printf(Your score:); switch(grade) case A: printf(85100n);break; case B: printf(7084n);break; case C: printf(6069n);break; case D: printf(60n);break; default: printf(enter data error!n); return 0; 值为值为F#include int main() char grade;

34、scanf(%c,&grade); printf(Your score:); switch(grade) case A: printf(85100n);break; case B: printf(7084n);break; case C: printf(6069n);break; case D: printf(60n);break; default: printf(enter data error!n); return 0; 此行位置有问题,此行位置有问题,应如何修改?应如何修改?switch语句的作用是根据表达式的值,语句的作用是根据表达式的值,使流程跳转到不同的语句使流程跳转到不同的语句s

35、witch语句的一般形式语句的一般形式:switch(表达式)(表达式) case 常量常量1 :语句:语句1 case 常量常量2 :语句:语句2 case 常量常量n :语句:语句n default : 语句语句n+1整数类型整数类型(包括字符型包括字符型)switch语句的作用是根据表达式的值,语句的作用是根据表达式的值,使流程跳转到不同的语句使流程跳转到不同的语句switch语句的一般形式语句的一般形式:switch(表达式)(表达式) case 常量常量1 :语句:语句1 case 常量常量2 :语句:语句2 case 常量常量n :语句:语句n default : 语句语句n+1不

36、能相同不能相同 scanf(%c,&grade); printf(Your score:); switch(grade) case A: printf(85100n);break; case B: printf(7084n);break; case C: printf(6069n);break; case D: printf(60n);break; default: printf(enter data error!n); scanf(%c,&grade); printf(Your score:); switch(grade) case A: printf(85100n);break; case

37、 B: printf(7084n);break; case C: printf(6069n);break; case D: printf(60n);break; default: printf(enter data error!n); scanf(%c,&grade); printf(Your score:); switch(grade) case A: case B: case C: printf(6069n);break; case D: printf(60n);break; default: printf(enter data error!n); 4.8选择结构程序综合举例选择结构程序综

38、合举例例例4.8 写一程序,判断某一年是否闰年。写一程序,判断某一年是否闰年。解题思路:在前面已介绍过判别闰年的方解题思路:在前面已介绍过判别闰年的方法法本例本例用不同的方法编写程序用不同的方法编写程序4.8选择结构程序综合举例选择结构程序综合举例用变量用变量leap代表是否闰年的信息。若闰代表是否闰年的信息。若闰年,令年,令leap=1;非闰年,;非闰年,leap=0。最。最后判断后判断leap是否为(真),若是,则是否为(真),若是,则输出输出“闰年闰年”信息信息4.8选择结构程序综合举例选择结构程序综合举例N-S图图#include int main()int year,leap; pr

39、intf(enter year:); scanf(%d,&year); if (year%4=0) if(year%100=0) if(year%400=0) leap=1; else leap=0; else leap=1; else leap=0; if (leap) printf(%d is ,year); else printf(%d is not ,year); printf(a leap year.n); return 0;标志变量标志变量与与if (leap!=0)含义相同含义相同#include int main()int year,leap; printf(enter yea

40、r:); scanf(%d,&year); if (year%4=0) if(year%100=0) if(year%400=0) leap=1; else leap=0; else leap=1; else leap=0; if (leap) printf(%d is ,year); else printf(%d is not ,year); printf(a leap year.n); return 0;采取锯齿形式采取锯齿形式#include int main()int year,leap; printf(enter year:); scanf(%d,&year); if (year%4

41、=0) if(year%100=0) if(year%400=0) leap=1; else leap=0; else leap=1; else leap=0; if (leap) printf(%d is ,year); else printf(%d is not ,year); printf(a leap year.n); return 0;if(year%4!=0) leap=0;else if (year%100!=0) leap=1;else if(year%400!=0) leap=0;else leap=1;#include int main()int year,leap; pr

42、intf(enter year:); scanf(%d,&year); if (year%4=0) if(year%100=0) if(year%400=0) leap=1; else leap=0; else leap=1; else leap=0; if (leap) printf(%d is ,year); else printf(%d is not ,year); printf(a leap year.n); return 0;if(year%4=0 & year%100!=0) | (year%400=0) leap=1;else leap=0; 例例4.9 求求 方程的解。方程的解

43、。解题思路:解题思路:处理以下各情况处理以下各情况 ,不是二次方程,不是二次方程 ,有两个相等实根,有两个相等实根 ,有两个不等实根。,有两个不等实根。 ,有两个共轭复根。,有两个共轭复根。 应当以应当以p+qi和和p-qi的形式输出复根的形式输出复根 其中,其中,p=-b/2a,q=( )/2aN-S图图#include #include int main() double a,b,c,disc,x1,x2,realpart, imagpart; scanf(%lf,%lf,%lf,&a,&b,&c); printf(The equation ); if(fabs(a)=1e-6) prin

44、tf(is not a quadraticn);实型不能用实型不能用if (a=0) else disc=b*b-4*a*c; if(fabs(disc)1e-6) x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); printf(has distinct real roots:%8.4f and %8.4fn,x1,x2); else realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf( has complex roots:n); printf(%8.4f+%8.4fin“ ,realpa

45、rt,imagpart); printf(%8.4f-%8.4fin, realpart,imagpart); return 0; realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf( has complex roots:n); printf(%8.4f+%8.4fin“ ,realpart,imagpart); printf(%8.4f-%8.4fin, realpart,imagpart); return 0; realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf( has com

46、plex roots:n); printf(%8.4f+%8.4fin“ ,realpart,imagpart); printf(%8.4f-%8.4fin, realpart,imagpart); return 0; 例例4.10 运输公司对用户计算运输费用。路运输公司对用户计算运输费用。路程程(s km)越远,每吨)越远,每吨千米运费越低。千米运费越低。标准如下:标准如下: s 250 没有折扣没有折扣 250s 500 2折扣折扣 500s 1000 5折扣折扣 1000s 2000 8折扣折扣 2000s 3000 10折扣折扣 3000s 15折扣折扣解题思路:解题思路:u设每吨每千

47、米货物的基本运费为设每吨每千米货物的基本运费为p,货物重,货物重为为w,距离为,距离为s,折扣为,折扣为du总运费总运费f的计算公式为的计算公式为f=pws(1-d)折扣的变化规律折扣的变化规律(参见教材(参见教材图图4.15):u折扣的折扣的“变化点变化点”都是都是250的倍数的倍数u在横轴上加一种坐标在横轴上加一种坐标c,c的值为的值为s/250uc代表代表250的倍数的倍数u当当c1时,表示时,表示s250,无折扣,无折扣u1c2时,表示时,表示250s500,折扣,折扣d=2u2c4时,时,d=5;4c8时,时,d=8; 8c12时,时,d=10;c12时,时,d=15#include

48、 int main() int c,s; float p,w,d,f; printf(please enter price,weight,discount:); scanf(%f,%f,%d,&p,&w,&s); if(s=3000) c=12; else c=s/250; 输入单价、重量、距离输入单价、重量、距离 switch(c) case 0: d=0; break; case 1: d=2; break; case 2: case 3: d=5; break; case 4: case 5: case 6: case 7: d=8; break; case 8: case 9: case 10: case 11: d=10; break; case 12: d=15; break; f = p * w * s * (1 - d / 100); printf(“freight=%10.2fn”,f); return 0;作业作业作业作业5,8,9,10,11

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

最新文档


当前位置:首页 > 大杂烩/其它

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