第4章 选择结构_第1页
第4章 选择结构_第2页
第4章 选择结构_第3页
第4章 选择结构_第4页
第4章 选择结构_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

1、 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 第第4章章 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 4.1 例例4-1 4-1 从键盘输入一个整数,输出该整数的绝对值。从键盘输入一个整数,输出该整数的绝对值。算法:算法:(1) 输入输入x,scanf(“%d”, &x)。(2) 判断判断x的正负性,求绝对值的正负性,求绝对值|x|。 如果如果x是非负数是非负数(x=0) ,则,则x的绝对值等于的绝对值等于x; 否则否则( x0 )x的绝对值等于的绝对值等于-x。(3)输出绝对值,输出绝对值,printf函数。函数。这种判断性结构用这种判断性结构用ifelse语

2、句。语句。 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 #include void main( ) int x,y; printf(“请输入一个整数:请输入一个整数: ”);); scanf(“%d”,&x); if (x=0) y=x; else y=-x; printf(“%d 的绝对值为:的绝对值为: %dn”, x,y); 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 4.1.21. 1. 关系运算符关系运算符双目运算符,运算结果为逻辑值双目运算符,运算结果为逻辑值( (真和假真和假) )。逻辑值逻辑值“真真”:运算结果系统用:运算结果系统用1表示表示,

3、, 参与运算参与运算时用时用非非0值表示;逻辑值值表示;逻辑值“假假”:用:用0表示。表示。 小于小于 = 大于大于 = = 大于或等于大于或等于 = = = = 等于等于 != != 不等于不等于 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 2. 优先级优先级 、=、=b a=b / /* * 判断判断a a是否大于等于是否大于等于b b * */ /注:注:数值表达式数值表达式一般是算术表达式,也可以是关系表达式、逻一般是算术表达式,也可以是关系表达式、逻辑表达式、赋值表达式、字符表达式等。辑表达式、赋值表达式、字符表达式等。 安 庆 师 范 学 院 计 算 机 与 信 息 学

4、 院 4.1.3 ifif语句分:语句分: 单分支单分支ifif语句语句 双分支双分支ifif语句语句 多分支多分支ifif语句语句 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 单分支单分支ifif语句的基本形式为:语句的基本形式为: if (if (表达式表达式) ) 语句;语句;语义:首先判断表达式的值是否为真语义:首先判断表达式的值是否为真( (非非0) ,若表达式的值为真,则执行,若表达式的值为真,则执行其后语句;其后语句; 否则不执行该语句。无论否则不执行该语句。无论是否执行该语句,接着都执行是否执行该语句,接着都执行ifif语句语句后面语句。后面语句。1. 表达式表达式

5、语句语句非非00 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 #include void main() int x , y; printf(“请输入一个整数请输入一个整数: ”);); scanf(“%d”,&x); y=x; if (x0) y=-x; printf(“%d 的绝对值为的绝对值为: %dn”,x,y); 【例例4-24-2】用单分支实现输出整数的绝对值用单分支实现输出整数的绝对值算法描述:算法描述:(1)(1)输入整数输入整数x x(2)(2)默认绝对值默认绝对值y=xy=x(3)(3)如果如果x0 x0,则绝对值为,则绝对值为y=-xy=-x(4)(4)

6、输出绝对值输出绝对值y y练习:输入一个数,如果该数大于等于练习:输入一个数,如果该数大于等于0 0,则输出它的平方根;当它小于,则输出它的平方根;当它小于0 0,则输出该数。则输出该数。练习:输入一个数,如果该数为练习:输入一个数,如果该数为3 3的倍数,则输出的倍数,则输出YesYes;否则输出;否则输出NoNo。 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 2 . 双分支双分支ifif语句是语句是ifif语句基本形式,语句基本形式,结构为:结构为: 语义:当表达式的值为真,则执行语义:当表达式的值为真,则执行语句语句1 1,否则执行语句,否则执行语句2 2。然后执行。然后执行

7、ifif语句后面的语句。语句后面的语句。单分支单分支ifif语句相当于双分支语句相当于双分支ifif语句语句缺省缺省elseelse子句。子句。非非0表达式表达式语句语句1语句语句20 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 #include void main( ) float a,b,max; printf(Please enter two numbers:); scanf(%f%f,&a,&b); if(ab) max=a; else max=b; printf(The bigger number is %fn,max); 【例例4-34-3】从键盘输入两

8、个数,输出其中较大数从键盘输入两个数,输出其中较大数算法:算法:1.1.定义实型变量定义实型变量a,b,max;a,b,max;2.2.输入输入a a和和b;b;3.3.求较大数求较大数max(max(当当a a大于大于b b时,较大数时,较大数max=amax=a,否,否则则max=b)max=b)4.4.输出输出maxmax思考:改用单分支,如何实现?思考:改用单分支,如何实现?练习练习 4-3 从键盘输入百分制成绩,若及格输出从键盘输入百分制成绩,若及格输出pass,若不及格,若不及格显示显示fail。 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 (1) if语句中语句中表达

9、式表达式可以是任意类型,只要值非可以是任意类型,只要值非0,即为,即为“真真”;值为值为0,即为,即为“假假”。 注意:赋值运算符注意:赋值运算符“=”与相等运算符与相等运算符“= =”区别区别(2)在在if语句中,条件表达式必须用语句中,条件表达式必须用括号括号括起来;在每一个子句之括起来;在每一个子句之后必须加后必须加分号分号,else子句是子句是if语句一部分,和语句一部分,和if配对。例如:配对。例如: if (ab) max=a; else max=b;(3)在在if语句中,所有子句应为语句中,所有子句应为单个语句单个语句,一组语句须用花括号,一组语句须用花括号“ ”括起来组成一个复

10、合语句。括起来组成一个复合语句。 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 4.1.4 1、条件运算符、条件运算符 ? :三目运算符,优先级(三目运算符,优先级(13级)低于关系运算符和算级)低于关系运算符和算术运算符,高于赋值运算符,结合性是术运算符,高于赋值运算符,结合性是自右至左。自右至左。 2、条件表达式、条件表达式表达式表达式1 ? 表达式表达式2 :表达式表达式3求值规则为先计算表达式求值规则为先计算表达式1的值,若为真,则以表的值,若为真,则以表达式达式2的值作为整个条件表达式的值的值作为整个条件表达式的值(不计算表达式不计算表达式3),否则以表达式否则以表达式3的

11、值作为整个条件表达式的值的值作为整个条件表达式的值(不计算不计算表达式表达式2) 。y=x0?1:y=x0?1:x0?-1:0 x0?-1:0 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 #include void main( )int a, b; scanf(“%d,%d”,&a,&b); printf(“%d”,(-a=b+)? -a: b+); printf(“,%d,%dn”,a,b); 例:条件表达式的短路现象例:条件表达式的短路现象运行时输入运行时输入5 5,44运行时输入运行时输入5 5,55 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 求

12、较大数的条件表达式是求较大数的条件表达式是 max=(ab)?a:b;其功能等价其功能等价于以下于以下if语句:语句: if (ab) max=a; else max=b;练习:请使用条件表达式来实现整数的绝对值练习:请使用条件表达式来实现整数的绝对值 y=|x|y=x0 ? -x : x3 3、由条件表达式组成的选择结构、由条件表达式组成的选择结构 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 #include void main( ) float x,y;printf(Please input x:);scanf(%f,&x);y=x0?2/x:3-x;printf(y=

13、%fn,y);【例例4-4】利用条件运算符计算分段函数的值利用条件运算符计算分段函数的值3020 xxyxx思考:上例如果改用思考:上例如果改用ifif语句,怎么实现?语句,怎么实现? 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 4.2 分析分析 输入一个字符用输入一个字符用getchar()函数函数 根据根据ASCII码值码值来判别字符类别,有来判别字符类别,有5种,故用种,故用多分支多分支if语句语句实现逐一比较判断。实现逐一比较判断。 条件表达式条件表达式 c是数字字符是数字字符 由两个关系表达式构由两个关系表达式构成,即成,即c=48(0) 并且并且 c=57(9),此时要

14、用逻,此时要用逻辑运算符辑运算符& 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 #include void main()char c; printf(Input a character;); c=getchar(); if(c= 0 &c= A &c= a &c= z ) printf(This is a small lettern); else printf(This is an other charactern); 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 1. 逻辑运算符逻辑运算符( (作用于逻辑值,结果也为逻辑值作用于逻辑值,结

15、果也为逻辑值) ) ! ! 逻辑非逻辑非 单目、右结合、优先级最高单目、右结合、优先级最高(2)(2); & & 逻辑与逻辑与 双目、左结合、优先级较低双目、左结合、优先级较低(11)(11); | | 逻辑或逻辑或 双目、左结合、优先级最低双目、左结合、优先级最低(12)(12)。 其中,其中,&和和|运算符的优先级低于关系运算符。运算符的优先级低于关系运算符。设设a a、b b均为逻辑值,运算结果:均为逻辑值,运算结果:!a 当a为真,结果为假;当a为假时,结果为真a&b 当且仅当a、b都为真时,结果为真a|b 当且仅当a、b都为假时,结果为假4.2.2 4

16、.2.2 逻辑运算符逻辑运算符 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 ab!aa&ba|b真真( (非非0)0)真真( (非非0)0)假假(0)(0)真真(1)(1)真真(1)(1)真真( (非非0)0)假假(0)(0)假假(0)(0)假假(0)(0)真真(1)(1)假假(0)(0)真真( (非非0)0)真真(1)(1)假假(0)(0)真真(1)(1)假假(0)(0)假假(0)(0)真真(1)(1)假假(0)(0)假假(0)(0)非真即假非真即假 同真才真同真才真 同假才假同假才假 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 2.2.逻辑表达式逻辑表达式用

17、逻辑运算符将表达式连接起来的式子。用逻辑运算符将表达式连接起来的式子。 ! ! 表达式表达式 表达式表达式 &(|) &(|) 表达式表达式数学表达式数学表达式 axbaxb判断判断x x是否在区间是否在区间 a,ba,b 上,上,在在C C语言中用语言中用 表示表示x x不在区间不在区间 a,ba,b 的表达式:的表达式:xbxb 思考:思考:C C语言表达式语言表达式 axb axb 能表示能表示x x在区间在区间(a,b)(a,b)上吗上吗? ?举例:数学举例:数学 x(2,10),x(2,10),当当x x为任意数时为任意数时 2x10 2x10 均均1 1。 安 庆

18、师 范 学 院 计 算 机 与 信 息 学 院 分析下面程序运行结果分析下面程序运行结果 #include void main() int a=123,b=456,x; char c=a; x=(a|b) & (cb); printf(a=%d,b=%dn,a,b); printf(x=%dn,x); 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 (1) 设设a为一合法表达式,有如下规律:为一合法表达式,有如下规律: “0&a ”其结果为其结果为0,不计算,不计算a的值的值 ; “1|a” 其结果为其结果为1,不计算,不计算a的值。的值。(2)当有多个逻辑运算符时,把

19、高优先级的表达式作为一个整当有多个逻辑运算符时,把高优先级的表达式作为一个整体,只要能确定逻辑表达式的值就不再计算剩下部分。例如:体,只要能确定逻辑表达式的值就不再计算剩下部分。例如:若有定义若有定义int x,y,z; x=y=z=0;对于对于 x+&y+ | z+; 结果结果x=1,y=0,z=1表达式为表达式为0对于对于 +x| +y&+z; 结果结果x=1,y=0,z=0表达式为表达式为1逻辑运算符的逻辑运算符的“短路短路”现象现象 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 4.2.3 if语句语句if(表达式表达式1) 语句语句1; else if (表

20、达式表达式2) 语句语句2; else if (表达式表达式3) 语句语句3; else if (表达式表达式n) 语句语句n; else 语句语句n+1; 语义:语义:依次判断表达式的值,当某个表达式为真时,则执行对依次判断表达式的值,当某个表达式为真时,则执行对应语句。然后跳到整个应语句。然后跳到整个if语句之外继续执行。如果所有表达式均语句之外继续执行。如果所有表达式均为假,则执行语句为假,则执行语句n+1 。 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 【例例4-7】计算计算#include void main( )f

21、loat x,y;printf(Please input x:);scanf(%f,&x);if(x=-10)y=2*x;else if(x=0)y=2+x;else if(x=10)y=x-2;elsey=x/10;printf(y=%fn,y);10 x10 x00 x10-10 x 10/222xxxxy002(1)/(2)02(1)(2)0 xxyxxxxxxx 或且 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 将一个百分制成绩转化成将一个百分制成绩转化成5个等级:个等级:90分以上为分以上为A,8089分为分为B,7079分为分为C,6069分为分为D,60分以下

22、为分以下为E。例如输入例如输入75,则显示,则显示C。4.3 分析分析 : 先判断输入数据是否在合理范围先判断输入数据是否在合理范围(0(0100)100)内内 若在范围内再考察输入的是大于或等于若在范围内再考察输入的是大于或等于9090的就显示的就显示A A,否则,否则再判断若大于或等于再判断若大于或等于8080的显示的显示B B,否则再判断若大于或等于,否则再判断若大于或等于7070的显示的显示C C,否则若大于或等于,否则若大于或等于6060的显示的显示D D,否则显示,否则显示E E。 本程序是一本程序是一6 6分支结构,可采用多分支的分支结构,可采用多分支的ififelseelse语

23、句语句。 对于多分支,对于多分支,C C语言中还有语言中还有switchswitch语句。语句。 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 #include void main() int a; printf(input the score: ); scanf(%d,&a); if (a100) printf(data errorn); else if (a=90) printf(An); else if (a=80) printf(Bn); else if (a=70) printf(Cn); else if (a=60) printf(Dn); else printf

24、(En); 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 【例例4-11】用用switchcase语句来实现语句来实现分析分析: case分支只能使用常量分支只能使用常量 首先将首先将分数段分数段和等级字母的对应关系转化为某个和等级字母的对应关系转化为某个常量常量和等级字母的对应关系。和等级字母的对应关系。 取该数的十位数作为判断依据,即取该数的十位数作为判断依据,即a/10。 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 #include void main() int a; printf(input the score: ); scanf(%d,&a); if(

25、a100) printf(data errorn); else switch(a/10) case 10: case 9: printf(An); break; case 8: printf(Bn); break; case 7: printf(Cn); break; case 6: printf(Dn); break; default: printf(En); 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 switch语句可用于解决多分支选择问题语句可用于解决多分支选择问题1、一般形式、一般形式 switch(开关表达式开关表达式) case 常量常量1: 语句语句1; case

26、常量常量2: 语句语句2; case 常量常量n: 语句语句n; default : 语句语句n+1; 4.3.2 执行过程:首先计算表执行过程:首先计算表达式的值,并逐个与其达式的值,并逐个与其后的常量表达式值相比后的常量表达式值相比较。当表达式的值与某较。当表达式的值与某个常量表达式的值相等个常量表达式的值相等时,即执行其后的语句,时,即执行其后的语句,然后不再进行判断,然后不再进行判断,继继续执行下面所有续执行下面所有casecase后后的语句。如表达式的值的语句。如表达式的值与所有与所有casecase后的常量表后的常量表达式均不相同时,则执达式均不相同时,则执行行defaultdef

27、ault后的语句。后的语句。 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 输入一个十进制数,输出所对应的英文星期单词,若所输入一个十进制数,输出所对应的英文星期单词,若所输入的数小于输入的数小于1或大与或大与7,则输出,则输出“Error”#include void main() int a;printf(input a integer: ); scanf(%d,&a); switch (a) case 1: printf(Mondayn);case 2: printf(Tuesdayn);case 3: printf(Wednesdayn); case 4: printf

28、(Thursdayn);case 5: printf(Fridayn);case 6: printf(Saturdayn);case 7: printf(Sundayn);default : printf(Errorn); 【分析分析】在在switchswitch语句中,语句中,“casecase常量表达式:常量表达式:”只起语句标号的作只起语句标号的作用,在这里并不进行条件判断。当用,在这里并不进行条件判断。当执行执行switchswitch语句后,程序会根据语句后,程序会根据casecase后面表达式的值找到匹配的入后面表达式的值找到匹配的入口标号,并从此处开始一直执行下口标号,并从此处开

29、始一直执行下去,不再进行判断。去,不再进行判断。 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 2、switch语句构成多分支语句构成多分支 break;结束;结束switch语句语句 switch(开关表达式开关表达式) case 常量常量1: 语句语句1; break; case 常量常量2: 语句语句2; break; case 常量常量n: 语句语句n; break; default : 语句语句n+1; break; 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 #include void main()int a; printf(input a integer:

30、); scanf(%d,&a); switch(a) case 1: printf(Mondayn); break; case 2: printf(Tuesdayn); break; case 3: printf(Wednesdayn); break; case 4: printf(Thursdayn); break; case 5: printf(Fridayn); break; case 6: printf(Saturdayn); break; case 7: printf(Sundayn); break; default: printf(Errorn); 修修改例改例4-94-9

31、的程序,的程序,在每一个在每一个casecase语句之后增加语句之后增加breakbreak语句,语句, 使每一个使每一个casecase执行之后均可执行之后均可跳出跳出switchswitch语语句,从而避免句,从而避免输出不需要的输出不需要的结果。结果。 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 switch语句使用语句使用 (1) switch后后“开关表达式开关表达式”允许为任何类型,但允许为任何类型,但一般为整型一般为整型。(2) 在每一个在每一个case后后各常量表达式的各常量表达式的值不能相同值不能相同,否则会出错。,否则会出错。(3) 在在case后后,允许有多个

32、语句,允许有多个语句,可以不用可以不用 括起来。括起来。(4) case和和default子句出现顺序可以变动,有子句出现顺序可以变动,有break语句时不会语句时不会影响程序执行结果。影响程序执行结果。default子句也可以没有。子句也可以没有。(5) 多个多个case可以共用一组可以共用一组执行语句。例如:执行语句。例如: case A: case B: case C:printf(60n);break; (6) break(中断中断)语句放在语句放在switch某语句组之后,跳出某语句组之后,跳出(该层该层) switch语句。语句。(7)switch语句遇语句遇break或右大括号或

33、右大括号结束。结束。 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 #include void main() int x=1,y=0,a=1,b=0; switch(x) case 1: switch(y) case 0: a+; case 1: b+; break; case 2: a+; b+; break; printf(a=%d,b=%dn,a,b); 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 4.3.3 当当if语句中的语句体又是语句中的语句体又是if语句时,就叫语句时,就叫if语句的嵌套。语句的嵌套。C语言语言对对if嵌套的层数没有限制。在双分支嵌套的层数没

34、有限制。在双分支if语句中语句语句中语句1和语句和语句2均嵌套均嵌套的形式为:的形式为: if (表达式表达式) if (表达式表达式) 语句语句11; else 语句语句12; else if (表达式表达式) 语句语句21; else 语句语句22; 有时可能只有语句有时可能只有语句1或语句或语句2嵌套,也可能有多层嵌套嵌套,也可能有多层嵌套(各层可能单各层可能单分支或双分支分支或双分支),因此有很多种情况。,因此有很多种情况。 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 嵌套嵌套if语句避免出错要点语句避免出错要点按按ififelseelse配对原则设计嵌套。配对原则设计嵌套

35、。(使(使每个每个else与其前面与其前面最近的尚未配对的最近的尚未配对的if匹配匹配。)。)当内层当内层ifif语句是单分支时,尽可能嵌套在外层语句是单分支时,尽可能嵌套在外层elseelse子句子句中;如果一定要嵌套在内层中;如果一定要嵌套在内层ifif子句中,必须要加花括号。子句中,必须要加花括号。按正确的缩进格式书写程序。按正确的缩进格式书写程序。if (表达式表达式) if (表达式表达式) 语句语句1;else 语句语句2; 注意:注意: else 与第二个与第二个if配对,要让其与第一个配对,要让其与第一个if配对,则应写成配对,则应写成 if(表达式表达式) if(表达式表达式

36、) 语句语句1; else 语句语句2; 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 #include void main() int x,y ; scanf(” %d ” ,&x) ; if(x0?1: (x0?-1:0) 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 综合应用实例综合应用实例【例例4-134-13】输入一个十进制正整数,判断该数是否同时是输入一个十进制正整数,判断该数是否同时是3 3和和7 7的的倍数,若是输出倍数,若是输出Yes!Yes!,否则输出,否则输出“No!No!”【分析分析】3 3和和7 7互为素数,只需考察这个数对互为素数,只需考

37、察这个数对2121取余数结果是否为取余数结果是否为0 0。#include void main() int a; printf(Enter an integer: ); scanf(%d,&a); if(a%21=0) printf(Yes!n); else printf(No!n); 奇数奇数 a%2=1(a%2)a%2=1(a%2)偶数偶数 a%2=0a%2=0 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 #include stdio.hvoid main ( )int a, b, c, t ; printf (please input the three number

38、: ); scanf (%d,%d,%d, &a, &b, &c); if (ab) t=a; a=b; b=t; /* a和和b的值交换的值交换 */ if (ac) t=a; a=c; c=t; /* a和和c的值交换的值交换*/ if (b= %d =%dn, a, b, c);【例例4-144-14】输入输入3 3个数,按从大到小的顺序输出。个数,按从大到小的顺序输出。 【分析分析】设设3 3个数分别是个数分别是a a、b b和和c c,将其从大到小排序,将其从大到小排序(1 1)将三个数中最大的放在)将三个数中最大的放在a a中中a a和和b b比较,若比较,

39、若a a小于小于b b,就交换,就交换a a和和b b的值的值, ,否则不用交换。否则不用交换。a a和和c c比较,若比较,若a a小于小于c c,就交换,就交换a a和和c c的值的值, ,否则不用交换否则不用交换。(2 2)将次大的存放在)将次大的存放在b b中中由于由于a a中是最大数,只须比较中是最大数,只须比较b b和和c c,将大的放在,将大的放在b b中,小的放中,小的放在在c c中中确定确定a a最大最大 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 输入输入2012年的一个月份,输出这个月的天年的一个月份,输出这个月的天数。数。(2012年为闰年年为闰年)【分析分

40、析】根据输入的月份判断,当月份为根据输入的月份判断,当月份为1 1、3 3、5 5、7 7、8 8、1010、1212时,天数为时,天数为3131,当月份为,当月份为4 4、6 6、9 9、1111时,天数为时,天数为3030,20122012年是年是闰闰年,所以,当月份为年,所以,当月份为2 2时,天数为时,天数为2929。 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 #include void main()int month,days; printf(input the month number: ); scanf(%d,&month); switch(month) c

41、ase 1: case 3: case 5: case 7: case 8: case 10: case 12:days=31;break; case 4: case 6: case 9: case 11:days=30;break; case 2:days=29;break; default:days=-1; if(days=-1) printf(input error! ); else printf(2012years %d month has %d daysn, month, days); 改用改用ifif语句如何实现?语句如何实现?#include void main()int mon

42、th,days; printf(input the month number: ); scanf(%d,&month); if (month=1| month=3 | month= 5 | month= 7 | month= 8 | month= 10 | month= 12 ) days=31; else if( month= 4 | month= 6 | month= 9| month= 11)days=30; else if (month=2) days=29; else days=-1; if(days=-1) printf(input error! ); else print

43、f(2012years %d month has %d daysn, month, days); 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 【分析分析】根据根据3个系数的不同情况,方程的根有如下个系数的不同情况,方程的根有如下几种情况。几种情况。(1) a=0,bx+c=0,不是一元二次方程;不是一元二次方程;(2) a0,按一元二次方程求根,按一元二次方程求根 b2-4ac=0,有两个相等的实根,有两个相等的实根x; b2-4ac0,有两个不等实根,有两个不等实根,x1和和x2; b2-4ac0,没有实数解。,没有实数解。 安 庆 师 范 学 院 计 算 机 与 信 息 学 院

44、 #include #include void main() float a,b,c,x1,x2,disc; printf(“nInput a,b,c:”); scanf(“%f %f %f”,&a,&b,&c); if (fabs(a)1e-6) printf(“The equation is not a quadratic”);else disc=b*b-4*a*c; if (fabs(disc)0) x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); printf(“The equation has distinct

45、 real roots:%8.4f,%8.4f”, x1,x2); else printf(“The equation has not real rootsn”); 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 从键盘输入一个正整数作为年份,编程从键盘输入一个正整数作为年份,编程判断该年是不是闰年。若是则输出判断该年是不是闰年。若是则输出“YESYES”,否则输出,否则输出“NONO”。【分析分析】闰年的条件:闰年的条件: 能被能被4 4整除,但不能被整除,但不能被100100整除的年份整除的年份( (例如例如20082008年年) )是闰年;是闰年; 能被能被400400整除的年份

46、整除的年份( (例如例如20002000年年) )也是闰年。也是闰年。( (而而19001900年不是闰年年不是闰年) ) 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 #include void main( )void main( ) int year; printf(input a year:); scanf(%d,&year); if (year%4=0 & year%100!=0 | year%400=0) printf(YESn); elseprintf(NOn); 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 编程实现简单的计算器功能,要求用户编

47、程实现简单的计算器功能,要求用户按如下格式输入算式:按如下格式输入算式: 操作数操作数1 1 运算符运算符 操作数操作数2 2分析分析: 考虑运算符有考虑运算符有+、-、*、/、%等五种,可以采用等五种,可以采用switch语句。语句。 若是若是/和和%的操作,则需先判断除数的合法性的操作,则需先判断除数的合法性(非非0)。 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 #include void main()int a,b; char c;printf(“请输入算式:请输入算式:”); scanf(%d%c%d,&a,&c,&b); switch(c) case +: printf(“%d+%d=%dn”,a,b,a+b); break; case -: printf( %d-%d=%dn“,a,b,a-b); break; case *: printf(“%d*%d=%dn“,a,b,a*b); break; case /: if(b!=0) printf(“%d/%d=%dn“

温馨提示

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

评论

0/150

提交评论