![第4章选择结构程序设计_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-5/7/2163715b-fa0c-4c9d-a3cc-35f8f39d7d8d/2163715b-fa0c-4c9d-a3cc-35f8f39d7d8d1.gif)
![第4章选择结构程序设计_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-5/7/2163715b-fa0c-4c9d-a3cc-35f8f39d7d8d/2163715b-fa0c-4c9d-a3cc-35f8f39d7d8d2.gif)
![第4章选择结构程序设计_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-5/7/2163715b-fa0c-4c9d-a3cc-35f8f39d7d8d/2163715b-fa0c-4c9d-a3cc-35f8f39d7d8d3.gif)
![第4章选择结构程序设计_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-5/7/2163715b-fa0c-4c9d-a3cc-35f8f39d7d8d/2163715b-fa0c-4c9d-a3cc-35f8f39d7d8d4.gif)
![第4章选择结构程序设计_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-5/7/2163715b-fa0c-4c9d-a3cc-35f8f39d7d8d/2163715b-fa0c-4c9d-a3cc-35f8f39d7d8d5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、厦门大学自动化系 4.1 选择结构和条件判断选择结构和条件判断 4.2 用用if语句实现选择结构语句实现选择结构 4.3关系运算符和关系表达式关系运算符和关系表达式 4.4 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式 4.5 条件运算符和条件表达式条件运算符和条件表达式 4.6 选择结构的嵌套选择结构的嵌套 4.7 用用switch语句实现多分支选择结构语句实现多分支选择结构 4.8选择结构程序综合举例选择结构程序综合举例 厦门大学自动化系 在现实生活在现实生活中中,需要进行判断和选择的,需要进行判断和选择的 情况是很多的情况是很多的 u如果你在家,我去拜访你如果你在家,我去拜访你 u如果考
2、试不及格,要补考如果考试不及格,要补考 u如果遇到红灯,要停车等待如果遇到红灯,要停车等待 u周末我们去郊游周末我们去郊游 u70岁以上的老年人,入公园免票岁以上的老年人,入公园免票 厦门大学自动化系 在现实生活在现实生活中中,需要进行判断和选择的,需要进行判断和选择的 情况是很多的情况是很多的 处理处理这些这些问题,关键在于进行条件判断问题,关键在于进行条件判断 由于程序处理问题的需要,在大多数程由于程序处理问题的需要,在大多数程 序中都会包含选择结构,需要在进行下序中都会包含选择结构,需要在进行下 一个操作之前先进行条件判断一个操作之前先进行条件判断 厦门大学自动化系 c语言有两种选择语句
3、语言有两种选择语句: (1)if语句语句,实现两个分支的选择结构,实现两个分支的选择结构 (2)switch语句语句,实现多分支的选择结构,实现多分支的选择结构 厦门大学自动化系 例例4.1 在例在例3.5的基础上对程序进行改进。的基础上对程序进行改进。 题目要求题目要求是是求求 方程的根。方程的根。 由键盘输入由键盘输入a,b,c。假设。假设a,b,c的值任意,的值任意, 并不保证并不保证 。需要在程序中进行。需要在程序中进行 判别,如果判别,如果 ,就计算并输出方,就计算并输出方 程的两个实根,程的两个实根,否则否则就输出就输出“方程无实根方程无实根” 的信息。的信息。 0 2 cbxax
4、 04 2 acb 04 2 acb 厦门大学自动化系 解题思路:解题思路: 输入输入a,b,c 计算计算disc disc0 计算计算x1,x2 输出无实根输出无实根 输出输出x1,x2 真真 假假 厦门大学自动化系 #include #include int main ( ) double a,b,c,disc,x1,x2,p,q; scanf(%lf%lf%lf, disc=b*b-4*a*c; 计算计算b2-4ac,disc的值变为的值变为-15 厦门大学自动化系 if (disc0) printf(“has not real rootsn”); else p=-b/(2.0*a);
5、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; -150为真为真 厦门大学自动化系 #include #include int main ( ) double a,b,c,disc,x1,x2,p,q; scanf(%lf%lf%lf, disc=b*b-4*a*c; 计算计算b2-4ac,disc的值变为的值变为8 厦门大学自动化系 if (disc0) printf(“has not real rootsn”); else p=-b/(2.0*a
6、); 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; 80为假为假 p的值变为的值变为-1 q的值变为的值变为0.71 x1的值变为的值变为-0.29 x2的值变为的值变为-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.2
7、fn x2=%7.2fn”,x1,x2); return 0; 选择结构选择结构,用用if语句实现语句实现的的 厦门大学自动化系 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.1 用用if语句处理选择结构举例语句处理选择结构举例 4.2.2 if语句的一般形式语句的一般形式 厦门大学自
8、动化系 例例4.2 输入两个实数,按代数值由小到输入两个实数,按代数值由小到 大的顺序输出这两个数。大的顺序输出这两个数。 厦门大学自动化系 解题思路:解题思路: u只需要做一次比较,然后进行一次交换即可只需要做一次比较,然后进行一次交换即可 u用用if语句实现条件判断语句实现条件判断 u关键是怎样实现两个变量值的互换关键是怎样实现两个变量值的互换 ab互换前互换前 ab互换后互换后 厦门大学自动化系 ab c 厦门大学自动化系 ab c 厦门大学自动化系 ab c 厦门大学自动化系 #include int main() float a,b,t; scanf(%f,%f, if(ab) t=
9、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, 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, 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,a,b,c); return 0;
11、如果如果 ab,将,将a和和b对换对换 a是是a、b中的小者中的小者 厦门大学自动化系 #include int main() float a,b,c,t; scanf(%f,%f,%f, 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,a,b,c); return 0; 如果如果 ac,将,将a和和c对换对换 a是是三者三者中的小者中的小者 厦门大学自动化系 #include int main() float a,b,c,t; scanf(%f,%f,%f,
12、 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,a,b,c); return 0; 如果如果 bc,将,将b和和c对换对换 b是是三者三者中的中的次次小者小者 厦门大学自动化系 if (表达式表达式) 语句语句1 else 语句语句2 关系表达式关系表达式 逻辑表达式逻辑表达式 数值表达式数值表达式 方括号内的部分为可选的方括号内的部分为可选的 厦门大学自动化系 if (表达式表达式) 语句语句1 else 语句语句2 简单的语句简单的语句 复合语句复合语句
13、 另一个另一个if语句语句等等 厦门大学自动化系 最常用的最常用的3种种if语句语句形式形式: 1. if (表达式表达式) 语句语句1 (没有没有else子句子句) 2. if (表达式表达式) 语句语句1 else 语句语句2 (有有else子句子句) 3. if(表达式)(表达式) 语句语句 else if(表达式)(表达式) 语句语句 else if(表达式)(表达式) 语句语句 else if(表达式)(表达式) 语句语句 else 语句语句m+1 (在在else部分又嵌套了多层的部分又嵌套了多层的if语句语句) 厦门大学自动化系 if(number 500) cost = 0.15
14、; 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 = 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)
15、整个整个if语句可写在多行上,也可写在一行上语句可写在多行上,也可写在一行上 但但都是一个整体,属于同一个语句都是一个整体,属于同一个语句 (2)“语句语句1”“语句语句m”是是if中的内嵌语句中的内嵌语句 内嵌语句也可以是一个内嵌语句也可以是一个if语句语句 (3)“语句语句1”“语句语句m”可以是简单的语句可以是简单的语句 ,也可以是复合语句,也可以是复合语句 厦门大学自动化系 4.3.1关系运算符及其优先次序关系运算符及其优先次序 4.3.2 关系表达式关系表达式 厦门大学自动化系 关系运算符关系运算符: 用来对两个数值进行比较用来对两个数值进行比较的的比较运算符比较运算符 语言提供种关
16、系运算符:语言提供种关系运算符: (小于小于) = (小于或等于小于或等于) (大于大于) = (大于或等于大于或等于) = (等于等于) != (不等于不等于) 优先级相同优先级相同 (高高) 优先级相同优先级相同 (低低) 厦门大学自动化系 关系关系、算术算术、赋值运算符赋值运算符的优先级的优先级 算术运算符算术运算符 (高高) 赋值运算符赋值运算符 (低低) 关系运算符关系运算符 厦门大学自动化系 ca+b 等效于等效于 c(a+b) ab=c 等效于等效于 (ab)=c a=bc 等效于等效于 a=(bc 等效于等效于 a=(bc) 厦门大学自动化系 关系表达式关系表达式 u用关系运算
17、符将两个数值或数值表达式连用关系运算符将两个数值或数值表达式连 接起来的式子接起来的式子 u关系表达式的值是一个逻辑值,即关系表达式的值是一个逻辑值,即“真真” 或或“假假” u在在c的逻辑运算中,以的逻辑运算中,以“”代表代表“真真” ,以,以“”代表代表“假假” 厦门大学自动化系 4.4.1 逻辑运算符及其优先次序逻辑运算符及其优先次序 4.4.2 逻辑表达式逻辑表达式 4.4.3 逻辑型变量逻辑型变量 厦门大学自动化系 3种逻辑运算符:种逻辑运算符: else max=b; max = (a b) ? a : b; 条件运算符条件运算符 厦门大学自动化系 有一种有一种if语句,当被判别的
18、表达式的值语句,当被判别的表达式的值 为为“真真”或或“假假” 时,都执行一个赋值时,都执行一个赋值 语句且向同一个变量赋值语句且向同一个变量赋值 如:如:if (ab) max=a; else max=b; max = (a b) ? a : b; 条件条件表达式表达式 厦门大学自动化系 条件表达式的一般形式为条件表达式的一般形式为 表达式表达式?表达式表达式: 表达式表达式 厦门大学自动化系 条件运算符的执行顺序:条件运算符的执行顺序: u求解表达式求解表达式1 u若为非若为非0(真)则求解表达式(真)则求解表达式2,此时表达,此时表达 式式2的值就作为整个条件表达式的值的值就作为整个条件
19、表达式的值 u若表达式若表达式1的值为的值为0(假),则求解表达式(假),则求解表达式 3,表达式,表达式3的值就是整个条件表达式的值的值就是整个条件表达式的值 厦门大学自动化系 条件运算符优先于赋值运算符条件运算符优先于赋值运算符 条件运算符的结合方向为条件运算符的结合方向为“自右至左自右至左” 以下为合法的使用方法:以下为合法的使用方法: uab ? (max=a):(max=b); uab ? printf(“%d”,a): printf(“%d”,b); 厦门大学自动化系 例例4.4 输入一个字符,判别它是否大写输入一个字符,判别它是否大写 字母,如果是,将它转换成小写字母;字母,如果
20、是,将它转换成小写字母; 如果不是,不转换。然后输出最后得到如果不是,不转换。然后输出最后得到 的字符。的字符。 厦门大学自动化系 解题思路:用条件表达式来处理,当字解题思路:用条件表达式来处理,当字 母是大写时,转换成小写字母,否则不母是大写时,转换成小写字母,否则不 转换转换 厦门大学自动化系 #include int main() char ch; scanf(%c, ch=(ch=a printf(%cn,ch); return 0; 厦门大学自动化系 在在if语句中又包含一个或多个语句中又包含一个或多个if语句称为语句称为 if语句的嵌套语句的嵌套 一般形式:一般形式: if( )
21、if( ) 语句语句1 else 语句语句2 else if( ) 语句语句3 else 语句语句4 内嵌内嵌if else总是与它上面最总是与它上面最 近的未配对的近的未配对的if配对配对 厦门大学自动化系 在在if语句中又包含一个或多个语句中又包含一个或多个if语句称为语句称为 if语句的嵌套语句的嵌套 if () if () 语句语句1 else语句语句2 内嵌内嵌if 限定了内嵌限定了内嵌if范围范围 厦门大学自动化系 例例4.5有一函数有一函数: 编一程序编一程序,输入一个输入一个x值值,要求输出相应要求输出相应 的的y值。值。 )0(1 )0(0 )0(1 x x x y 厦门大学
22、自动化系 解题思路:解题思路: u用用if语句检查语句检查x的值,根据的值,根据x的值决定赋予的值决定赋予y 的值的值 u由于由于y的可能值不是两个而是三个,因此不的可能值不是两个而是三个,因此不 可能只用一个简单的可能只用一个简单的(无内嵌无内嵌if)的的if语句来语句来 实现实现 厦门大学自动化系 解题思路:解题思路:方法方法1 (1) 先后用先后用3个独立的个独立的if语句处理:语句处理: 输入输入x 若若 x 0, 则则y = 1 输出输出x和和y scanf(%d, if(x0) y = 1; printf(x=%d,y=%dn,x,y); 厦门大学自动化系 解题思路:解题思路:方法
23、方法2 (2) 用一个嵌套的用一个嵌套的if语句处理:语句处理: 输入输入x 若若x 0, 则则y = -1 否则否则 若若 x = 0, 则则y = 0 否则否则 y = 1 输出输出x和和y scanf(%d, if(x0) y=-1; else if(x=0) y=0; else y=1; printf(x=%d,y=%dn,x,y); 厦门大学自动化系 解题思路:解题思路:方法方法2 (2) 用一个嵌套的用一个嵌套的if语句处理:语句处理: 输入输入x 若若x 0, 则则y = -1 否则否则 若若 x = 0, 则则y = 0 否则否则 y = 1 输出输出x和和y scanf(%d
24、, if(x=0) if (x0) y=1; else y=0; else y=-1; printf(x=%d,y=%dn,x,y); 提倡提倡内嵌内嵌if放在放在else中中 厦门大学自动化系 switch语句用来实现多分支选择结构语句用来实现多分支选择结构 u学生成绩分类学生成绩分类 85分以上为分以上为a等等 7084分为分为b等等 6069分为分为c等等 u人口统计分类人口统计分类 按年龄分为老、中、青、少、儿童按年龄分为老、中、青、少、儿童 厦门大学自动化系 switch语句 f1.开关语句开关语句 (switch) f与与if-else一样又称选择结构一样又称选择结构属于判断问题属
25、于判断问题 switch语句,用于多分支选择语句,用于多分支选择 一般格式一般格式 we1en为标号,常量及常量表达式,应具有唯一性为标号,常量及常量表达式,应具有唯一性 w实现实现“多选一多选一”:使用使用 break、goto、return语句跳出语句跳出switch体体 w允许嵌套使用允许嵌套使用switch语句语句 w多个多个case可执行同一语句可执行同一语句 y y en 表达式表达式 e1 e2 语句语句n+1 语句语句1 语句语句2 语句语句n y n n n switch(表达式表达式) case e1:语句语句1 case e2:语句语句2 . case en:语句语句n
26、default:语句语句n+1 y y en 表达式表达式 e1 e2 语句语句n+1 语句语句1 语句语句2 语句语句n y n n n 厦门大学自动化系 执行过程执行过程: : u先计算表达式的值。先计算表达式的值。 u顺次同顺次同case后的常量表达式的值比较后的常量表达式的值比较 若找到相等的若找到相等的常量表达式i,则执行该常量表则执行该常量表 达式冒号后的语句组达式冒号后的语句组i。在执行过程中,若遇到在执行过程中,若遇到 break语句则跳出语句则跳出switch 结构;否则依次执行结构;否则依次执行 其后的所有冒号后面的语句。其后的所有冒号后面的语句。 若找不到匹配的常量表达式
27、的值,则执行若找不到匹配的常量表达式的值,则执行 default后面的语句组直到结束。后面的语句组直到结束。 上一页 厦门大学自动化系 例例4.6 要求按照考试成绩的等级输出百要求按照考试成绩的等级输出百 分制分数段,分制分数段,a等为等为85分以上,分以上,b等为等为 7084分,分,c等为等为6069分分 ,d等为等为 60分以下分以下 。成绩的等级由键盘输入。成绩的等级由键盘输入。 厦门大学自动化系 解题思路:解题思路: u判断出判断出这是一个多分支选择问题这是一个多分支选择问题 u根据百分制分数将学生成绩分为根据百分制分数将学生成绩分为4个等级个等级 u如果用如果用if语句语句,至少要
28、用至少要用3层嵌套的层嵌套的if,进行,进行 3次检查判断次检查判断 u用用switch语句进行一次检查即可得到结果语句进行一次检查即可得到结果 厦门大学自动化系 #include int main() char grade; scanf(%c, 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
29、 error!n); return 0; 值为值为a 厦门大学自动化系 #include int main() char grade; scanf(%c, 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; 不能少不能少 厦门大学自动化系 #include
30、int main() char grade; scanf(%c, 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; 值为值为c 厦门大学自动化系 #include int main() char grade; scanf(%c, printf(your s
31、core:); 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; scanf(%c, printf(your score:); switch(grade) case a: printf(85100n);b
32、reak; case b: printf(7084n);break; case c: printf(6069n);break; case d: printf(60n);break; default: printf(enter data error!n); return 0; 此行位置有问题,此行位置有问题, 应如何修改?应如何修改? 厦门大学自动化系 switch语句的作用是根据表达式的值,语句的作用是根据表达式的值, 使流程跳转到不同的语句使流程跳转到不同的语句 switch语句的一般形式语句的一般形式: switch(表达式)(表达式) case 常量常量1 :语句:语句1 case 常量
33、常量2 :语句:语句2 case 常量常量n :语句:语句n default : 语句语句n+1 整数类型整数类型(包括字符型包括字符型) 厦门大学自动化系 switch语句的作用是根据表达式的值,语句的作用是根据表达式的值, 使流程跳转到不同的语句使流程跳转到不同的语句 switch语句的一般形式语句的一般形式: switch(表达式)(表达式) case 常量常量1 :语句:语句1 case 常量常量2 :语句:语句2 case 常量常量n :语句:语句n default : 语句语句n+1 不能相同不能相同 厦门大学自动化系 scanf(%c, printf(your score:);
34、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, printf(your score:); switch(grade) case a: printf(85100n);break; case b: printf(7084n);break; case c: printf(6069n)
35、;break; case d: printf(60n);break; default: printf(enter data error!n); 厦门大学自动化系 scanf(%c, printf(your score:); switch(grade) case a: case b: case c: printf(6069n);break; case d: printf(=90a, 8089b,60e) switch (grade/10) case 10: case 9: printf(“an”); break; case 8: printf(“bn”); break; case 7: prin
36、tf(“cn”); break; case 6: printf(“dn”); break; case 5: printf(“en”); break; default :printf(“fn”); 厦门大学自动化系 例例4.7 编写程序,用编写程序,用switch语句处理菜语句处理菜 单命令。单命令。 解题思路:在许多应用程序中,用菜单对解题思路:在许多应用程序中,用菜单对 流程进行控制,例如从键盘输入一个流程进行控制,例如从键盘输入一个a 或或a字符,就会执行字符,就会执行a操作,输入一个操作,输入一个 b或或b字符,就会执行字符,就会执行b操作,等等。操作,等等。 厦门大学自动化系 #inc
37、lude int main() void action1(int,int),action2(int,int); char ch; int a=15,b=23; ch=getchar(); switch(ch) case a: case a: action1(a,b);break; case b: case b: action2(a,b);break; default: putchar(a); return 0; 输入输入a或或a 调用调用action1函数,执行函数,执行a操作操作 void action1(int x,int y) printf(x+y=%dn,x+y); 厦门大学自动化系
38、#include int main() void action1(int,int),action2(int,int); char ch; int a=15,b=23; ch=getchar(); switch(ch) case a: case a: action1(a,b);break; case b: case b: action2(a,b);break; default: putchar(a); return 0; 输入输入b或或b 调用调用action2函数,执行函数,执行b操作操作 void action2(int x,int y) printf(x*y=%dn,x*y); 厦门大学自
39、动化系 #include int main() void action1(int,int),action2(int,int); char ch; int a=15,b=23; ch=getchar(); switch(ch) case a: case a: action1(a,b);break; case b: case b: action2(a,b);break; default: putchar(a); return 0; 输入其他字符输入其他字符 发出警告发出警告 厦门大学自动化系 这是一个非常简单的示意程序这是一个非常简单的示意程序 实际应用中,所指定的操作可能比较复杂:实际应用中,所
40、指定的操作可能比较复杂: ua:输入全班学生各门课的成绩:输入全班学生各门课的成绩 ub:计算并输出每个学生各门课的平均成绩:计算并输出每个学生各门课的平均成绩 uc:计算并输出各门课的全班平均成绩:计算并输出各门课的全班平均成绩 ud:对全班学生的平均成绩由高到低排序并输出:对全班学生的平均成绩由高到低排序并输出 可以按以上思路编写程序,把各可以按以上思路编写程序,把各action函数函数 设计成不同的功能以实现各要求设计成不同的功能以实现各要求 厦门大学自动化系 例例4.8 写一程序,判断某一年是否闰年。写一程序,判断某一年是否闰年。 解题思路:在前面已介绍过判别闰年的方解题思路:在前面已
41、介绍过判别闰年的方 法法 本例本例用不同的方法编写程序用不同的方法编写程序 厦门大学自动化系 用变量用变量leap代表是否闰年的信息。若闰代表是否闰年的信息。若闰 年,令年,令leap=1;非闰年,;非闰年,leap=0。最。最 后判断后判断leap是否为(真),若是,则是否为(真),若是,则 输出输出“闰年闰年”信息信息 参见教材参见教材图图4.13 厦门大学自动化系 #include int main() int year,leap; printf(enter year:); scanf(%d, if (year%4=0) if(year%100=0) if(year%400=0) lea
42、p=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 year:); scanf(%d, if (year%4=0) if(year%100=0) if(year%400=0) leap=1; els
43、e 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, if (year%4=0) if(year%100=0) if(year%400=0) leap=1; else leap=0; else leap=1; else
44、 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; printf(enter year:); scanf(%d, if (year%4=0) if(year%100=0)
45、 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 else leap=0; 厦门大学自动化系 例例4.9 求求 方程的解。方程的解。0 2 cbxax 解题思路:解题思路:处理以下各情况处理以下各情况 ,不是二次方程,不是二次方程 ,有两个相等实根,有两个相等实根 ,有两个不等实根。,有两个不等实根。 ,有两个
46、共轭复根。,有两个共轭复根。 应当以应当以p+qi和和p-qi的形式输出复根的形式输出复根 其中,其中,p=-b/2a,q=( )/2a 参见教材参见教材图图4.14 04 2 acb 04 2 acb 04 2 acb acb4 2 厦门大学自动化系 #include #include int main() double a,b,c,disc,x1,x2,realpart, imagpart; scanf(%lf,%lf,%lf, printf(the equation ); if(fabs(a)=1e-6) printf(is not a quadraticn); 实型不能用实型不能用if
47、 (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“ ,realpart,imagpart); prin
48、tf(%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
49、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折扣折扣 厦门大学
50、自动化系 解题思路:解题思路: u设每吨每千米货物的基本运费为设每吨每千米货物的基本运费为p,货物重,货物重 为为w,距离为,距离为s,折扣为,折扣为d u总运费总运费f的计算公式为的计算公式为f=pws(1-d) 厦门大学自动化系 折扣的变化规律折扣的变化规律(参见教材(参见教材图图4.15): u折扣的折扣的“变化点变化点”都是都是250的倍数的倍数 u在横轴上加一种坐标在横轴上加一种坐标c,c的值为的值为s/250 uc代表代表250的倍数的倍数 u当当c1时,表示时,表示s250,无折扣,无折扣 u1c2时,表示时,表示250s500,折扣,折扣d=2 u2c4时,时,d=5;4c8时,时,d=8; 8c12时,时,d=10;c12时,时,d=15 厦门大学自动化系 #include int main() int c,s; flo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度土地租赁合同(含税费计算)
- 二零二五年度国际物流保险合同规范
- 二零二五年远程派驻服务合同范例
- 2025-2030全球铝合金坯料行业调研及趋势分析报告
- 2025-2030全球四活塞全铝卡钳行业调研及趋势分析报告
- 二零二五年度外币借款合同跨境支付流程规范
- 跨境物流驾驶员合同范本
- 印刷行业销售居间合同样本
- 电子产品销售与售后维修合同
- 住宅建筑中的建筑风格与潮流发展考核试卷
- 2025年度高端商务车辆聘用司机劳动合同模板(专业版)4篇
- GB/T 45107-2024表土剥离及其再利用技术要求
- 2025长江航道工程局招聘101人历年高频重点提升(共500题)附带答案详解
- 2025年黑龙江哈尔滨市面向社会招聘社区工作者1598人历年高频重点提升(共500题)附带答案详解
- 执行总经理岗位职责
- 《妊娠期恶心呕吐及妊娠剧吐管理指南(2024年)》解读
- 《黑神话:悟空》跨文化传播策略与路径研究
- 《古希腊文明》课件
- 居家养老上门服务投标文件
- 长沙市公安局交通警察支队招聘普通雇员笔试真题2023
- 2025年高考语文作文满分范文6篇
评论
0/150
提交评论