版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C程序设计程序设计第第3章:顺序和选择结构程序设计章:顺序和选择结构程序设计2.04.20150321魏为民魏为民上上 海海 电电 力力 学学 院院计算机科学与技术学院计算机科学与技术学院一想到比我优秀的人都起的比我早,我起一想到比我优秀的人都起的比我早,我起来还有什么用呢?还是继续睡吧!来还有什么用呢?还是继续睡吧!if else(如果(如果爱)爱) We didnt know much about each other twenty years ago. We were guided by our intuition; you swept me off my feet. It was sn
2、owing when we got married at the Ahwanhnee. Years passed, kids came, good times, hard times, but never bad times. Our love and respect has endured and grown. Weve been through so much together and here we are right back where we started 20 years ago-older, wiser with wrinkles on our faces and hearts
3、. We now know many of lifes joys, sufferings, secrets and wonders and were still here together. My feet have never returned to the ground. 二十年前初相识,随心而遇惹人痴。乔布斯在结婚二十年前初相识,随心而遇惹人痴。乔布斯在结婚20周年纪念时写给妻子情书周年纪念时写给妻子情书3.1 选择结构和条件判断选择结构和条件判断3.2 用用if语句实现选择结构语句实现选择结构3.3关系运算符和关系表达式关系运算符和关系表达式3.4 逻辑运算符和逻辑表达式逻辑运算符和逻
4、辑表达式3.5 条件运算符和条件表达式条件运算符和条件表达式3.6 选择结构的嵌套选择结构的嵌套3.7 用用switch语句实现多分支选择结构语句实现多分支选择结构3.8选择结构程序综合举例选择结构程序综合举例在现实生活在现实生活中中,需要进行判断和选择的,需要进行判断和选择的情况是很多的情况是很多的u如果你在家,我去拜访你如果你在家,我去拜访你u如果考试不及格,要补考如果考试不及格,要补考u如果遇到红灯,要停车等待如果遇到红灯,要停车等待u周末我们去郊游周末我们去郊游u70岁以上的老年人,入公园免票岁以上的老年人,入公园免票在现实生活在现实生活中中,需要进行判断和选择的,需要进行判断和选择的
5、情况是很多的情况是很多的处理处理这些这些问题,关键在于进行条件判断问题,关键在于进行条件判断由于程序处理问题的需要,在大多数程由于程序处理问题的需要,在大多数程序中都会包含选择结构,需要在进行下序中都会包含选择结构,需要在进行下一个操作之前先进行条件判断一个操作之前先进行条件判断C语言有两种选择语句语言有两种选择语句:(1)if语句语句,实现两个分支的选择结构,实现两个分支的选择结构(2)switch语句语句,实现多分支的选择结构,实现多分支的选择结构 例例3.1 在例在例3.5的基础上对程序进行改进。的基础上对程序进行改进。题目要求题目要求是是求求 方程的根。方程的根。 由键盘输入由键盘输入
6、a,b,c。假设。假设a,b,c的值任意,的值任意,并不保证并不保证 。需要在程序中进行。需要在程序中进行判别,如果判别,如果 ,就计算并输出方,就计算并输出方程的两个实根,程的两个实根,否则否则就输出就输出“方程无实根方程无实根”的信息。的信息。 02cbxax042 acb042 acb解题思路:解题思路:输入输入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,
7、&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*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,&
8、amp;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+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
9、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;选择结构选择结构,用用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)
10、; return 0;复合语句复合语句3.2.1 用用if语句处理选择结构举例语句处理选择结构举例3.2.2 if语句的一般形式语句的一般形式 例例3.2 输入两个实数,按代数值由小到输入两个实数,按代数值由小到大的顺序输出这两个数。大的顺序输出这两个数。解题思路:解题思路:u只需要做一次比较,然后进行一次交换即可只需要做一次比较,然后进行一次交换即可u用用if语句实现条件判断语句实现条件判断u关键是怎样实现两个变量值的互换关键是怎样实现两个变量值的互换AB互换前互换前AB互换后互换后ABCABCABC#include int main() float a,b,t; scanf(%f,%f,&
11、amp;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语句实现的语句实现的 例例3.3 输入输入3个数个数a,b,c,要求按由小,要求按由小到大的顺序输出。到大的顺序输出。解题思路:可以先用伪代码写出算法:
12、解题思路:可以先用伪代码写出算法: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,a,b,
13、c); return 0;如果如果 ab,将,将a和和b对换对换a是是a、b中的小者中的小者#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,a,b,c); return 0;如果如果 ac,将,将a和和c对换对换a是是三者三者中的小者中的小者#include int main() float a,b,c,t; sca
14、nf(%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,a,b,c); return 0;如果如果 bc,将,将b和和c对换对换b是是三者三者中的中的次次小者小者 if (表达式表达式) 语句语句1 else 语句语句2 关系表达式关系表达式逻辑表达式逻辑表达式数值表达式数值表达式方括号内的部分为可选的方括号内的部分为可选的 if (表达式表达式) 语句语句1 else 语句语句2 简单的语句简单的
15、语句复合语句复合语句另一个另一个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;else if (numb
16、er 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)整个整个if语句可写在多行上,也可写在一行上语句可写在多行上,也可
17、写在一行上 但但都是一个整体,属于同一个语句都是一个整体,属于同一个语句(2)“语句语句1”“语句语句m”是是if中的内嵌语句中的内嵌语句 内嵌语句也可以是一个内嵌语句也可以是一个if语句语句(3)“语句语句1”“语句语句m”可以是简单的语句可以是简单的语句,也可以是复合语句,也可以是复合语句3.3.1关系运算符及其优先次序关系运算符及其优先次序3.3.2 关系表达式关系表达式关系运算符关系运算符:用来对两个数值进行比较用来对两个数值进行比较的的比较运算符比较运算符语言提供种关系运算符:语言提供种关系运算符: (小于小于) = (小于或等于小于或等于) (大于大于) = (大于或等于大于或等于
18、) = (等于等于) != (不等于不等于) 优先级相同优先级相同 (高高)优先级相同优先级相同 (低低)关系关系、算术算术、赋值运算符赋值运算符的优先级的优先级算术运算符算术运算符 (高高)赋值运算符赋值运算符 (低低)关系运算符关系运算符 ca+b 等效于等效于 c(a+b)ab=c 等效于等效于 (ab)=ca=bc 等效于等效于 a=(bc 等效于等效于 a=(bc)关系表达式关系表达式u用关系运算符将两个数值或数值表达式连用关系运算符将两个数值或数值表达式连接起来的式子接起来的式子u关系表达式的值是一个逻辑值,即关系表达式的值是一个逻辑值,即“真真”或或“假假”u在在C的逻辑运算中,
19、以的逻辑运算中,以“”代表代表“真真”,以,以“”代表代表“假假”3.3.1 逻辑运算符及其优先次序逻辑运算符及其优先次序3.3.2 逻辑表达式逻辑表达式3.3.3 逻辑型变量逻辑型变量3种逻辑运算符:种逻辑运算符:&(逻辑与逻辑与) |(逻辑或逻辑或) !(逻辑非逻辑非)&和和|是双目是双目(元元)运算符运算符!是一目是一目(元元)运算符运算符逻辑表达式逻辑表达式u用逻辑运算符将关系表达式或其他逻辑量连用逻辑运算符将关系表达式或其他逻辑量连接起来的式子接起来的式子判断判断年龄年龄在在13至至17岁岁之内?之内?age=13 & age=17判断判断年龄小于年龄小于12
20、或大于或大于65?age65ab! a! ba & ba | b 真真真真假假假假真真真真真真假假假假真真假假真真假假真真真真假假假假真真假假假假真真真真假假假假逻辑运算的真值表逻辑运算的真值表逻辑运算符的优先次序逻辑运算符的优先次序! & | (!为三者中最高为三者中最高)与其他运算符的优先次序与其他运算符的优先次序 ! (高)(高)算术运算符算术运算符关系运算符关系运算符 & 和和 |赋值运算符赋值运算符 (低)(低)逻辑表达式的值应该是逻辑量逻辑表达式的值应该是逻辑量“真真”或或“假假”编译系统在编译系统在表示表示逻辑运算逻辑运算结果结果时时u以数值以数值1代表代
21、表“真真”,以,以0代表代表“假假”但在但在判断判断一个量是否为一个量是否为“真真”时时u以以0代表代表“假假”,以非,以非0代表代表“真真”注意:注意:将一个非零的数值认作为将一个非零的数值认作为“真真”(1) 若若a=4,则,则!a的值为的值为0(2) 若若a=4,b=5,则,则a & b的值为的值为1(3) a和和b值分别为值分别为4和和5,则则a|b的值为的值为1(4) a和和b值分别为值分别为4和和5,则则!a|b的值为的值为1(5) 4 & 0 | 2的值为的值为1修改后的修改后的逻辑运算真值表逻辑运算真值表ab! a! ba & ba | b 非非0非非0
22、0011非非000101假假非非01001假假01100判别某一年是否闰年,判别某一年是否闰年,用用逻辑表达式表示逻辑表达式表示闰年的条件是符合下面二者之一:闰年的条件是符合下面二者之一:能被能被4整除,但不能被整除,但不能被100整除,如整除,如2008能被能被400整除,如整除,如2000u(year % 4 = 0 & year 100 !=0) | year % 400 = 0u如果表达式值为如果表达式值为1,则闰年;否则为非闰年,则闰年;否则为非闰年这是这是C99所增加的一种数据类型所增加的一种数据类型可以将关系运算和逻辑运算的结果存到可以将关系运算和逻辑运算的结果存到一个逻
23、辑型变量中,以便于分析和运算一个逻辑型变量中,以便于分析和运算有一种有一种if语句,当被判别的表达式的值语句,当被判别的表达式的值为为“真真”或或“假假” 时,都执行一个赋值时,都执行一个赋值语句且向同一个变量赋值语句且向同一个变量赋值如:如:if (ab) max=a; else max=b;max = (a b) ? a : b;条件运算符条件运算符有一种有一种if语句,当被判别的表达式的值语句,当被判别的表达式的值为为“真真”或或“假假” 时,都执行一个赋值时,都执行一个赋值语句且向同一个变量赋值语句且向同一个变量赋值如:如:if (ab) max=a; else max=b;max =
24、 (a b) ? a : b;条件条件表达式表达式条件表达式的一般形式为条件表达式的一般形式为表达式表达式?表达式表达式: 表达式表达式条件运算符的执行顺序:条件运算符的执行顺序:u求解表达式求解表达式1u若为非若为非0(真)则求解表达式(真)则求解表达式2,此时表达,此时表达式式2的值就作为整个条件表达式的值的值就作为整个条件表达式的值u若表达式若表达式1的值为的值为0(假),则求解表达式(假),则求解表达式3,表达式,表达式3的值就是整个条件表达式的值的值就是整个条件表达式的值条件运算符优先于赋值运算符条件运算符优先于赋值运算符条件运算符的结合方向为条件运算符的结合方向为“自右至左自右至左
25、”以下为合法的使用方法:以下为合法的使用方法:uab ? (max=a):(max=b);uab ? printf(“%d”,a): printf(“%d”,b); 例例3.4 输入一个字符,判别它是否大写输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到如果不是,不转换。然后输出最后得到的字符。的字符。解题思路:用条件表达式来处理,当字解题思路:用条件表达式来处理,当字母是大写时,转换成小写字母,否则不母是大写时,转换成小写字母,否则不转换转换#include int main() char ch; scanf(
26、%c,&ch); ch=(ch=A & ch=Z)?(ch+32):ch; printf(%cn,ch); return 0;在在if语句中又包含一个或多个语句中又包含一个或多个if语句称为语句称为if语句的嵌套语句的嵌套一般形式:一般形式:if( ) if( ) 语句语句1 else 语句语句2 else if( ) 语句语句3 else 语句语句4 内嵌内嵌ifelse总是与它上面最总是与它上面最近的未配对的近的未配对的if配对配对在在if语句中又包含一个或多个语句中又包含一个或多个if语句称为语句称为if语句的嵌套语句的嵌套if () if () 语句语句1 else语句
27、语句2内嵌内嵌if 限定了内嵌限定了内嵌if范围范围 例例3.5有一函数有一函数: 编一程序编一程序,输入一个输入一个x值值,要求输出相应要求输出相应的的y值。值。)0(1)0(0)0(1xxxy解题思路:解题思路:u用用if语句检查语句检查x的值,根据的值,根据x的值决定赋予的值决定赋予y的值的值u由于由于y的可能值不是两个而是三个,因此不的可能值不是两个而是三个,因此不可能只用一个简单的可能只用一个简单的(无内嵌无内嵌if)的的if语句来语句来实现实现解题思路:解题思路:方法方法1(1) 先后用先后用3个独立的个独立的if语句处理:语句处理:输入输入x若若 x 0, 则则y = 1输出输出
28、x和和yscanf(%d,&x);if(x0) y = 1;printf(x=%d,y=%dn,x,y);解题思路:解题思路:方法方法2(2) 用一个嵌套的用一个嵌套的if语句处理:语句处理:输入输入x若若x 0, 则则y = -1 否则否则 若若 x = 0, 则则y = 0 否则否则 y = 1输出输出x和和yscanf(%d,&x);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
29、= -1 否则否则 若若 x = 0, 则则y = 0 否则否则 y = 1输出输出x和和yscanf(%d,&x);if(x=0) if (x0) y=1; else y=0;else y=-1;printf(x=%d,y=%dn,x,y);提倡提倡内嵌内嵌if放在放在else中中2015.3.23switch语句用来实现多分支选择结构语句用来实现多分支选择结构u学生成绩分类学生成绩分类85分以上为分以上为A等等7084分为分为B等等6069分为分为C等等u人口统计分类人口统计分类 按年龄分为老、中、青、少、儿童按年龄分为老、中、青、少、儿童 例例3.6 要求按照考试成绩的等级输出百
30、要求按照考试成绩的等级输出百分制分数段,分制分数段,A等为等为85分以上,分以上,B等为等为7084分,分,C等为等为6069分分 ,D等为等为 60分以下分以下 。成绩的等级由键盘输入。成绩的等级由键盘输入。解题思路:解题思路:u判断出判断出这是一个多分支选择问题这是一个多分支选择问题u根据百分制分数将学生成绩分为根据百分制分数将学生成绩分为4个等级个等级u如果用如果用if语句语句,至少要用至少要用3层嵌套的层嵌套的if,进行,进行3次检查判断次检查判断u用用switch语句进行一次检查即可得到结果语句进行一次检查即可得到结果#include int main() char grade; s
31、canf(%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; 值为值为A#include int main() char grade; scanf(%c,&grade); printf(Your score:); sw
32、itch(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 int main() char grade; scanf(%c,&grade); printf(Your score:); switch(grade) case A: printf(85100n);break; c
33、ase 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,&grade); printf(Your score:); switch(grade) case A: printf(85100n);break; case B: printf(7084n);break; case C: printf(6
34、069n);break; case D: printf(60n);break; default: printf(enter data error!n); return 0; 值为值为F#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; defa
35、ult: printf(enter data error!n); return 0; 此行位置有问题,此行位置有问题,应如何修改?应如何修改?switch语句的作用是根据表达式的值,语句的作用是根据表达式的值,使流程跳转到不同的语句使流程跳转到不同的语句switch语句的一般形式语句的一般形式:switch(表达式)(表达式) case 常量常量1 :语句:语句1 case 常量常量2 :语句:语句2 case 常量常量n :语句:语句n default : 语句语句n+1整数类型整数类型(包括字符型包括字符型)switch语句的作用是根据表达式的值,语句的作用是根据表达式的值,使流程跳转到不
36、同的语句使流程跳转到不同的语句switch语句的一般形式语句的一般形式:switch(表达式)(表达式) case 常量常量1 :语句:语句1 case 常量常量2 :语句:语句2 case 常量常量n :语句:语句n default : 语句语句n+1不能相同不能相同 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)
37、;break; default: printf(enter data error!n); 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:); swi
38、tch(grade) case A: case B: case C: printf(6069n);break; case D: printf(60n);break; default: printf(enter data error!n); 例例3.7 编写程序,用编写程序,用switch语句处理菜语句处理菜单命令。单命令。解题思路:在许多应用程序中,用菜单对解题思路:在许多应用程序中,用菜单对流程进行控制,例如从键盘输入一个流程进行控制,例如从键盘输入一个A或或a字符,就会执行字符,就会执行A操作,输入一个操作,输入一个B或或b字符,就会执行字符,就会执行B操作,等等。操作,等等。#inclu
39、de 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);#include int ma
40、in() 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);#include int main() void
41、 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;输入其他字符输入其他字符发出警告发出警告这是一个非常简单的示意程序这是一个非常简单的示意程序实际应用中,所指定的操作可能比较复杂:实际应用中,所指定的操作可能比较复杂: uA:输入全班学生各门课的成绩:输入全班学生各门课的成绩
42、uB:计算并输出每个学生各门课的平均成绩:计算并输出每个学生各门课的平均成绩uC:计算并输出各门课的全班平均成绩:计算并输出各门课的全班平均成绩uD:对全班学生的平均成绩由高到低排序并输出:对全班学生的平均成绩由高到低排序并输出可以按以上思路编写程序,把各可以按以上思路编写程序,把各action函数函数设计成不同的功能以实现各要求设计成不同的功能以实现各要求例例3.8 写一程序,判断某一年是否闰年。写一程序,判断某一年是否闰年。解题思路:在前面已介绍过判别闰年的方解题思路:在前面已介绍过判别闰年的方法法本例本例用不同的方法编写程序用不同的方法编写程序用变量用变量leap代表是否闰年的信息。若闰
43、代表是否闰年的信息。若闰年,令年,令leap=1;非闰年,;非闰年,leap=0。最。最后判断后判断leap是否为(真),若是,则是否为(真),若是,则输出输出“闰年闰年”信息信息参见教材参见教材图图3.13#include int main()int year,leap; printf(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)
44、; 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,&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 pri
45、ntf(%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=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
46、(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,&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(
47、%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; 例例3.9 求求 方程的解。方程的解。02cbxax解题思路:解题思路:处理以下各情况处理以下各情况 ,不是二次方程,不是二次方程 ,有两个相等实根,有两个相等实根 ,有两个不等实根。,有两个不等实根。 ,有两个共轭复根。,有两个共轭复根。 应当以应当以p+qi和和p-qi的形式输出复根的形式输出复根 其中,其中,
48、p=-b/2a,q=( )/2a参见教材参见教材图图3.14042 acb042 acb042 acbacb42#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) printf(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( ha
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育机构教学管理体系优化方案
- 数据库应用实践课程设计
- 奶粉喷雾干燥课程设计
- 成人教育在线学习平台建设方案
- 级进模具课程设计
- 2024-2030年中国豆粕粉行业竞争状况与销售动态分析研究报告
- 2024-2030年中国电影制作行业运营动态及竞争格局分析研究报告
- 2024-2030年中国物流无人机行业发展现状与竞争格局分析研究报告
- 2024-2030年中国智慧金融行业经营效益及投资潜力预测研究报告
- 2024-2030年中国微波介质频率器件行业应用状况及前景动态预测报告
- 河道修防工高级技师技能操作试题
- 天津高考英语词汇3500
- 儿童社区获得性肺炎诊疗规范课件
- 语文-2023年全国高考新课标I卷试题评讲课件
- 重大电力安全隐患判定标准(试行)2022
- DB31 SW-Z 017-2021 上海市排水检测井图集
- 溶液浓度的表示方法及溶液的配制
- 市政道路破除恢复设计说明
- 机械工程师考试中级机械工程师考试题库
- 国家开放大学《监督学》形考任务(1-4)试题解析和答案
- 秦迷娜低盐低脂饮食
评论
0/150
提交评论