第04章--选择结构程序设计.ppt

上传人:gsy****95 文档编号:85138655 上传时间:2023-04-10 格式:PPT 页数:30 大小:1.07MB
返回 下载 相关 举报
第04章--选择结构程序设计.ppt_第1页
第1页 / 共30页
第04章--选择结构程序设计.ppt_第2页
第2页 / 共30页
点击查看更多>>
资源描述

《第04章--选择结构程序设计.ppt》由会员分享,可在线阅读,更多相关《第04章--选择结构程序设计.ppt(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、C程序设计程序设计选择程序设计选择程序设计讲授人:许莉email:tel:13889876920office:图书馆826选择结构的程序设计选择结构的程序设计 1.if1.if语句语句语句语句 简单简单简单简单ifififif语句形式语句形式语句形式语句形式 if (if (if (if (表达式表达式表达式表达式)语句语句语句语句;l l 格式格式格式格式:l l 执行流程:执行流程:执行流程:执行流程:语句语句语句语句表达式表达式表达式表达式T例如:下面的程序段是输入两个整数,输出其中的大数。例如:下面的程序段是输入两个整数,输出其中的大数。例如:下面的程序段是输入两个整数,输出其中的大数

2、。例如:下面的程序段是输入两个整数,输出其中的大数。intint a,b,max;a,b,max;printfprintf(input two numbers:);(input two numbers:);scanfscanf(%(%d%dd%d,&a,&b);,&a,&b);max=a;max=a;if(max b)if(max b)if(a b)printfprintf(max=%(max=%dndn,a);,a);else else printfprintf(max=%(max=%dndn,b);,b);if if语句语句语句语句 if_else_ifif_else_ifif_else_

3、ifif_else_if形式形式形式形式 if(if(if(if(表达式表达式表达式表达式1)1)1)1)语句语句语句语句1;1;1;1;else if(else if(else if(else if(表达式表达式表达式表达式2)2)2)2)语句语句语句语句2;2;2;2;else if(else if(else if(else if(表达式表达式表达式表达式3)3)3)3)语句语句语句语句3;3;3;3;else if(else if(else if(else if(表达式表达式表达式表达式n)n)n)n)语句语句语句语句n;n;n;n;else else else else 语句语句语句语

4、句n+1;n+1;n+1;n+1;l l 格式格式格式格式:l l 执行流程:执行流程:执行流程:执行流程:表达式表达式表达式表达式1 1 1 1F表达式表达式表达式表达式2 2 2 2表达式表达式表达式表达式3 3 3 3FTFTTF表达式表达式表达式表达式n n n n语句语句语句语句n n n n语句语句语句语句n+1n+1n+1n+1T语句语句语句语句3 3 3 3语句语句语句语句2 2 2 2语句语句语句语句1 1 1 1例如:下面的程序段是判断输入字符的种类。例如:下面的程序段是判断输入字符的种类。例如:下面的程序段是判断输入字符的种类。例如:下面的程序段是判断输入字符的种类。ch

5、ar c;char c;printfprintf(Enter a character:);(Enter a character:);c=c=getchargetchar();();if if(c 0 x20)(c=0&c=0&c=A&c=A&c=a&c=a&c 0 if x 0 printfprintf(“x (“x 0”);0”);例例例例:if(x 0)if(x 0)printfprintf(“x (“x 0”);0”);if(a=5)if(a=5)语句;语句;语句;语句;/表达式的值永远为非表达式的值永远为非表达式的值永远为非表达式的值永远为非0 0,所以其后的语句总是要执行的所以其后的

6、语句总是要执行的所以其后的语句总是要执行的所以其后的语句总是要执行的 if(b)if(b)语句;语句;语句;语句;/等价于等价于等价于等价于if(b!=0)if(b!=0)语句;语句;语句;语句;例例例例:if(a b)if(a b)a+;a+;b+;b+;else else a=0;a=0;b=1;b=1;例例例例:if(a b)if(a b)a+;a+;b+;b+;else else a=0;a=0;b=1;b=1;例例例例:#include#include void main()void main()intint x=0;x=0;if(if(x=0 x=0)printfprintf(“x

7、=0n”);(“x=0n”);else else printfprintf(“x!=(“x!=0n”);0n”);例例例例:#include#include void main()void main()intint x=0;x=0;if(if(x=0 x=0)printfprintf(“x=0n”);(“x=0n”);else else printfprintf(“x!=(“x!=0n”);0n”);运行结运行结运行结运行结果:果:果:果:x=0 x=0运行结运行结运行结运行结果:果:果:果:x!=0 x!=0ifififif语句嵌套语句嵌套语句嵌套语句嵌套:l l 一般形式:一般形式:一般形

8、式:一般形式:if(expr1)if(expr1)if(expr2)statement1if(expr2)statement1 else statement2 else statement2elseelse if(expr3)statement3if(expr3)statement3 else statement4 else statement4内嵌内嵌内嵌内嵌if if内嵌内嵌内嵌内嵌if ifif(expr1)if(expr1)if(expr2)if(expr2)statement1 statement1 else else statement2 statement2内嵌内嵌内嵌内嵌if

9、ifif(expr1)if(expr1)if(expr2)if(expr2)statement1 statement1elseelse statement3 statement3 内嵌内嵌内嵌内嵌if ifif(expr1)if(expr1)statement1 statement1elseelse if(expr3)if(expr3)statement3 statement3 else else statement4 statement4内嵌内嵌内嵌内嵌if if例例例例 输入两数并判断其大小关系输入两数并判断其大小关系输入两数并判断其大小关系输入两数并判断其大小关系#include#inc

10、lude void main()void main()intint x,y;x,y;printfprintf(Enter integer x,y:);(Enter integer x,y:);scanfscanf(%d,%d,&x,&y);(%d,%d,&x,&y);if(x!=y)if(x!=y)if(x y)if(x y)printfprintf(X Yn);(X Yn);else else printfprintf(X Yn);(X Yn);else else printfprintf(X=Yn);(X=Yn);运行结果:运行结果:运行结果:运行结果:Enter integer x,y:

11、12,23Enter integer x,y:12,23 XY XY XY Enter integer x,y:12,12 Enter integer x,y:12,12 X=Y X=Y if ()if ()if ()else else else 语言规定,在缺省语言规定,在缺省语言规定,在缺省语言规定,在缺省 时,时,时,时,elseelseelseelse总是和它上总是和它上总是和它上总是和它上面离它最近的未配对的面离它最近的未配对的面离它最近的未配对的面离它最近的未配对的ifififif配对配对配对配对 例例例例:#include#include void main()void main

12、()intint a=1,b=-1;a=1,b=-1;if (a 0)if (a 0)if (b 0)if (b 0)a+;a+;elseelse a-;a-;printfprintf(a=%(a=%dndn););例例例例:#include#include void main()void main()intint a=1,b=-1;a=1,b=-1;if (a 0)if (a 0)if (b 0)if (b 0)a+;a+;elseelse a-;a-;printfprintf(a=%(a=%dndn););运行结运行结运行结运行结果:果:果:果:a=0a=0运行结运行结运行结运行结果:果:

13、果:果:a=1a=1l if_elseif_else 配对原则配对原则例:例:例:例:if(a=b)if(a=b)if(b=c)if(b=c)printf(“aprintf(“a=b=c”);=b=c”);else else printf(“aprintf(“a!=b”);!=b”);修改:修改:修改:修改:if(a=b)if(a=b)if(b=c)if(b=c)printf(“aprintf(“a=b=c”);=b=c”);else else printf(“aprintf(“a!=b”);!=b”);实现实现实现实现if else if else 正确配对方法:加正确配对方法:加正确配对方

14、法:加正确配对方法:加 例:考虑下面程序输出结果例:考虑下面程序输出结果例:考虑下面程序输出结果例:考虑下面程序输出结果:void main()void main()intint x=100,a=10,b=20;x=100,a=10,b=20;intint v1=5,v2=0;v1=5,v2=0;if(a b)if(a=90:case score=90:printfprintf(A);break;(A);break;case score=80&score=80&score=70&score=70&score=60&score=60&score 70:printfprintf(“E);break

15、;(“E);break;default:default:printfprintf(“F);break;(“F);break;case case 后面包含变量后面包含变量后面包含变量后面包含变量使用使用switchswitch语句注意事项语句注意事项 (5)case(5)case(5)case(5)case后面的后面的后面的后面的“常量表达式常量表达式常量表达式常量表达式”仅起语句标号作用,并仅起语句标号作用,并仅起语句标号作用,并仅起语句标号作用,并不进行条件判断。系统一旦找到入口标号,就从此标号开始不进行条件判断。系统一旦找到入口标号,就从此标号开始不进行条件判断。系统一旦找到入口标号,就从

16、此标号开始不进行条件判断。系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,所以必须加上执行,不再进行标号判断,所以必须加上执行,不再进行标号判断,所以必须加上执行,不再进行标号判断,所以必须加上breakbreakbreakbreak语句,以便结语句,以便结语句,以便结语句,以便结束束束束switchswitchswitchswitch语句。语句。语句。语句。#include#include void main()void main()char char chch;chch=getchgetch();();switch(switch(chch)case Y:case Y:print

17、fprintf(Yesn);break;(Yesn);break;case N:case N:printfprintf(Non);break;(Non);break;case A:case A:printfprintf(Alln);break;(Alln);break;default :default :printfprintf(Yes,NoYes,No or Alln);or Alln);运行结果:运行结果:运行结果:运行结果:NoNo/假设输入为:假设输入为:假设输入为:假设输入为:N N#include#include void main()void main()char char ch

18、ch;chch=getchgetch();();switch(switch(chch)case Y:case Y:printfprintf(Yesn);break;(Yesn);break;case N:case N:printfprintf(Non);(Non);case A:case A:printfprintf(Alln);break;(Alln);break;default :default :printfprintf(Yes,NoYes,No or Alln);or Alln);/假设输入为:假设输入为:假设输入为:假设输入为:N N运行结果:运行结果:运行结果:运行结果:NoNo

19、ALL ALL使用使用switchswitch语句注意事项语句注意事项 (6)(6)(6)(6)多个多个多个多个casecasecasecase子句,可共用同一语句(组)。子句,可共用同一语句(组)。子句,可共用同一语句(组)。子句,可共用同一语句(组)。例:当例:当例:当例:当a a a a的值是的值是的值是的值是1 1 1 1、2 2 2 2、3 3 3 3时,将时,将时,将时,将b b b b的值加的值加的值加的值加2 2 2 2,当,当,当,当a a a a的值是的值是的值是的值是4 4 4 4、5 5 5 5、6 6 6 6时,将时,将时,将时,将b b b b的值减的值减的值减的值

20、减2 2 2 2。intint a,b=4;a,b=4;scanfscanf(%d,&a);(%d,&a);switch(a)switch(a)case 1:case 1:case 2:case 2:case 3:b+=2;break;case 3:b+=2;break;case 4:case 4:case 5:case 5:case 6:b-=2;break;case 6:b-=2;break;default:b*=2;break;default:b*=2;break;printfprintf(b=%(b=%dndn,b);,b);(7)(7)(7)(7)casecase子句和子句和defa

21、ultdefault子句如果都带有子句如果都带有breakbreak子句,那子句,那么它们之间顺序的变化不会影响么它们之间顺序的变化不会影响switchswitch语句的功能。语句的功能。#include#include void main()void main()char char chch;chch=getchgetch();();switch(switch(chch)case Y:case Y:printfprintf(Yesn);(Yesn);break;break;case N:case N:printfprintf(Non);(Non);break;break;case A:cas

22、e A:printfprintf(Alln);(Alln);break;break;default:default:printfprintf(Yes,NoYes,No or or Alln);Alln);break;break;#include#include void main()void main()char char chch;chch=getchgetch();();switch(switch(chch)case Y:case Y:printfprintf(Yesn);(Yesn);break;break;default:default:printfprintf(Yes,NoYes,N

23、o or Alln);or Alln);break;break;case N:case N:printfprintf(Non);(Non);break;break;case A:case A:printfprintf(Alln);(Alln);break;break;使用使用switchswitch语句注意事项语句注意事项#include#include void main()void main()char char chch;chch=getchgetch();();switch(switch(chch)case Y:case Y:printfprintf(Yesn);(Yesn);brea

24、k;break;case N:case N:printfprintf(Non);(Non);break;break;case A:case A:printfprintf(Alln);(Alln);break;break;default:default:printfprintf(Yes,NoYes,No or or Alln);Alln);#include#include void main()void main()char char chch;chch=getchgetch();();switch(switch(chch)case Y:case Y:printfprintf(Yesn);(Ye

25、sn);break;break;default:default:printfprintf(Yes,NoYes,No or Alln);or Alln);case N:case N:printfprintf(Non);(Non);break;break;case A:case A:printfprintf(Alln);(Alln);break;break;/假设输入为:假设输入为:假设输入为:假设输入为:B B运行结果:运行结果:运行结果:运行结果:Yes,NoYes,No or All or All运行结果:运行结果:运行结果:运行结果:Yes,NoYes,No or All or AllNo

26、No/假设输入为:假设输入为:假设输入为:假设输入为:B B使用使用switchswitch语句注意事项语句注意事项 (9)switch(9)switch(9)switch(9)switch语句可以嵌套。语句可以嵌套。语句可以嵌套。语句可以嵌套。void main()void main()intint x=1,y=0,a=0,b=0;x=1,y=0,a=0,b=0;switch(x)switch(x)case 1:case 1:switch(y)switch(y)case 0:a+;break;case 0:a+;break;case 1:b+;break;case 1:b+;break;ca

27、se 2:a+;b+;break;case 2:a+;b+;break;case 3:a+;b+;case 3:a+;b+;printfprintf(nana=%d,b=%d,a,b);=%d,b=%d,a,b);运行结果:运行结果:运行结果:运行结果:a=2a=2,b=1b=1 使用使用switchswitch语句注意事项语句注意事项选择结构程序设计举例选择结构程序设计举例 【例例例例】已知某公司员工的保底薪水为已知某公司员工的保底薪水为500500,某月所接工程,某月所接工程的利润的利润profitprofit(整数)与利润提成的关系如下所示(计量(整数)与利润提成的关系如下所示(计量单位

28、:元)。计算员工的当月薪水。单位:元)。计算员工的当月薪水。工程利润profit提成比率profit1000没有提成没有提成1000profit2000提成提成10%2000profit5000提成提成15%5000profit10000提成提成20%10000profit提成提成25%程序应该这样来设计:程序应该这样来设计:程序应该这样来设计:程序应该这样来设计:首先要定义一个变量用来存放员工所接工程的利润;首先要定义一个变量用来存放员工所接工程的利润;首先要定义一个变量用来存放员工所接工程的利润;首先要定义一个变量用来存放员工所接工程的利润;其次提示用户输入员工所接工程的利润,并调用其次提

29、示用户输入员工所接工程的利润,并调用其次提示用户输入员工所接工程的利润,并调用其次提示用户输入员工所接工程的利润,并调用scanfscanfscanfscanf函数接受用户输函数接受用户输函数接受用户输函数接受用户输入员工所接工程的利润;入员工所接工程的利润;入员工所接工程的利润;入员工所接工程的利润;然后根据上表的规则,计算该员工当月的提成比率。然后根据上表的规则,计算该员工当月的提成比率。然后根据上表的规则,计算该员工当月的提成比率。然后根据上表的规则,计算该员工当月的提成比率。最后计算该员工当月的薪水(保底薪水最后计算该员工当月的薪水(保底薪水最后计算该员工当月的薪水(保底薪水最后计算该

30、员工当月的薪水(保底薪水+所接工程的利润所接工程的利润所接工程的利润所接工程的利润*提成比率),提成比率),提成比率),提成比率),并输出结果。并输出结果。并输出结果。并输出结果。#include#include void main()void main()long profit;long profit;/所接工程的利润所接工程的利润所接工程的利润所接工程的利润 float ratio;float ratio;/提成比率提成比率提成比率提成比率 float salary=500;float salary=500;/薪水,初始值为保底薪水薪水,初始值为保底薪水薪水,初始值为保底薪水薪水,初始值为

31、保底薪水500500 printfprintf(Input profit:);(Input profit:);/提示输入所接工程的利润提示输入所接工程的利润提示输入所接工程的利润提示输入所接工程的利润 scanfscanf(%ld,&profit);(%ld,&profit);/输入所接工程的利润输入所接工程的利润输入所接工程的利润输入所接工程的利润 /计算提成比率计算提成比率计算提成比率计算提成比率 if if(profit=1000)(profit=1000)ratio=0;ratio=0;else ifelse if(profit=2000)(profit=2000)ratio=(flo

32、at)0.10;ratio=(float)0.10;else ifelse if(profit=5000)(profit=5000)ratio=(float)0.15;ratio=(float)0.15;else ifelse if(profit=10000)(profit=10000)ratio=(float)0.20;ratio=(float)0.20;elseelse ratio=(float)0.25;ratio=(float)0.25;salary+=profit*ratio;salary+=profit*ratio;/计算当月薪水计算当月薪水计算当月薪水计算当月薪水 printfp

33、rintf(salary=%.2fn,salary);(salary=%.2fn,salary);/输出结果输出结果输出结果输出结果 运行结果:运行结果:运行结果:运行结果:Input profit:4000Input profit:4000 salary=1100.00salary=1100.00方法一:使方法一:使方法一:使方法一:使用用用用if_elseif_elseif_elseif_else if if if if语句语句语句语句#include#include void main()void main()long profit;long profit;/所接工程的利润所接工程的利润

34、所接工程的利润所接工程的利润 float ratio;float ratio;/提成比率提成比率提成比率提成比率 float salary=500;float salary=500;/薪水,初始值为保底薪水薪水,初始值为保底薪水薪水,初始值为保底薪水薪水,初始值为保底薪水500500 printfprintf(Input profit:);(Input profit:);/提示输入所接工程的利润提示输入所接工程的利润提示输入所接工程的利润提示输入所接工程的利润 scanfscanf(%ld,&profit);(%ld,&profit);/输入所接工程的利润输入所接工程的利润输入所接工程的利润输

35、入所接工程的利润 /计算提成比率计算提成比率计算提成比率计算提成比率 if if(profit=1000)(profit=1000)ratio=0;ratio=0;if if(1000 profit&profit=2000)(1000 profit&profit=2000)ratio=ratio=(float)(float)0.10;0.10;if if(2000 profit&profit=5000)(2000 profit&profit=5000)ratio=ratio=(float)(float)0.15;0.15;if if(5000 profit&profit=10000)(5000

36、 profit&profit=10000)ratio=ratio=(float)(float)0.20;0.20;if if(10000 profit)(10000 profit)ratio=ratio=(float)(float)0.25;0.25;salary+=profit*ratio;salary+=profit*ratio;/计算当月薪水计算当月薪水计算当月薪水计算当月薪水 printfprintf(salary=%.2fn,salary);(salary=%.2fn,salary);/输出结果输出结果输出结果输出结果 运行结果:运行结果:运行结果:运行结果:Input profit

37、:4000Input profit:4000 salary=1100.00salary=1100.00方法二:使方法二:使方法二:使方法二:使用用用用ifififif语句语句语句语句0.10.10.10.1默认为默认为默认为默认为doubledoubledoubledouble型,型,型,型,不进行强制类型转不进行强制类型转不进行强制类型转不进行强制类型转换将产生警告信息!换将产生警告信息!换将产生警告信息!换将产生警告信息!方法三:使方法三:使方法三:使方法三:使用用用用switchswitchswitchswitch语句语句语句语句算法设计要点:算法设计要点:算法设计要点:算法设计要点:为

38、使用为使用为使用为使用switchswitch语句,必须将利润语句,必须将利润语句,必须将利润语句,必须将利润profitprofit与提成的关系转换成某些整与提成的关系转换成某些整与提成的关系转换成某些整与提成的关系转换成某些整数与提成的关系。分析本题可知,提成的变化点都是数与提成的关系。分析本题可知,提成的变化点都是数与提成的关系。分析本题可知,提成的变化点都是数与提成的关系。分析本题可知,提成的变化点都是10001000的整数倍的整数倍的整数倍的整数倍(10001000、20002000、50005000、),如果将利润),如果将利润),如果将利润),如果将利润profitprofit整

39、除整除整除整除10001000,则当:,则当:,则当:,则当:profit 1000 profit 1000 对应对应对应对应0 0、1 1 1000 1000 profit 2000 profit 2000 对应对应对应对应1 1、2 2 2000 2000 profit 5000 profit 5000 对应对应对应对应2 2、3 3、4 4、5 5 5000 5000 profit 10000 profit 10000 对应对应对应对应5 5、6 6、7 7、8 8、9 9、1010 10000 10000 profit profit 对应对应对应对应1010、1111、1212、为解决

40、相邻两个区间的重叠问题,最简单的方法就是:利润为解决相邻两个区间的重叠问题,最简单的方法就是:利润为解决相邻两个区间的重叠问题,最简单的方法就是:利润为解决相邻两个区间的重叠问题,最简单的方法就是:利润profitprofit先减先减先减先减1 1(最小增量),然后再整除(最小增量),然后再整除(最小增量),然后再整除(最小增量),然后再整除10001000即可:即可:即可:即可:profit 1000 profit 1000 对应对应对应对应0 0 1000 1000 profit 2000 profit 2000 对应对应对应对应1 1 2000 2000 profit 5000 prof

41、it 5000 对应对应对应对应2 2、3 3、4 4 5000 5000 profit 10000 profit 10000 对应对应对应对应5 5、6 6、7 7、8 8、9 9 10000 10000 profit profit 对应对应对应对应1010、1111、1212、#include#include void main()void main()long profit;long profit;/所接工程的利润所接工程的利润所接工程的利润所接工程的利润 intint grade;grade;float ratio;float ratio;/提成比率提成比率提成比率提成比率 float

42、 salary=500;float salary=500;/薪水,初始值为保底薪水薪水,初始值为保底薪水薪水,初始值为保底薪水薪水,初始值为保底薪水500500 printfprintf(Input profit:);(Input profit:);/提示输入所接工程的利润提示输入所接工程的利润提示输入所接工程的利润提示输入所接工程的利润 scanfscanf(%ld,&profit);(%ld,&profit);/输入所接工程的利润输入所接工程的利润输入所接工程的利润输入所接工程的利润方法三:使方法三:使方法三:使方法三:使用用用用switchswitchswitchswitch语句语句语句

43、语句 /将利润将利润将利润将利润-1-1、再整除、再整除、再整除、再整除10001000,转化成,转化成,转化成,转化成switchswitch语句中的语句中的语句中的语句中的casecase标号标号标号标号 grade=(profit-1)/1000;grade=(profit-1)/1000;switchswitch(grade)(grade)/计算提成比率计算提成比率计算提成比率计算提成比率 casecase 0:ratio=0;break;0:ratio=0;break;/profit1000/profit1000 casecase 1:ratio=(float)0.10;break;

44、1:ratio=(float)0.10;break;/1000/1000profit2000profit2000 casecase 2:2:casecase 3:3:case case 4:ratio=(float)0.15;break;4:ratio=(float)0.15;break;/2000/2000profit5000profit5000 casecase 5:5:case case 6:6:casecase 7:7:casecase 8:8:casecase 9:ratio=(float)0.20;break;9:ratio=(float)0.20;break;/5000/5000

45、profit10000profit10000 defaultdefault:ratio=(float)0.25;:ratio=(float)0.25;/10000/10000profitprofit salary+=profit*ratio;salary+=profit*ratio;/计算当月薪水计算当月薪水计算当月薪水计算当月薪水 printfprintf(salary=%.2fn,salary);(salary=%.2fn,salary);/输出结果输出结果输出结果输出结果 运行结果:运行结果:运行结果:运行结果:Input profit:4000Input profit:4000 sal

46、ary=1100.00salary=1100.00 【例例例例】写一程序,从键盘上输入写一程序,从键盘上输入写一程序,从键盘上输入写一程序,从键盘上输入1 1 1 1年份年份年份年份yearyearyearyear(4 4 4 4位十进制位十进制位十进制位十进制数),判断其是否闰年。闰年的条件是:能被数),判断其是否闰年。闰年的条件是:能被数),判断其是否闰年。闰年的条件是:能被数),判断其是否闰年。闰年的条件是:能被4 4 4 4整除、但不整除、但不整除、但不整除、但不能被能被能被能被100100100100整除,或者能被整除,或者能被整除,或者能被整除,或者能被400400400400整除

47、。整除。整除。整除。程序应该这样来设计:程序应该这样来设计:程序应该这样来设计:程序应该这样来设计:如果能被整除,则余数为,即如果的值等于,如果能被整除,则余数为,即如果的值等于,如果能被整除,则余数为,即如果的值等于,如果能被整除,则余数为,即如果的值等于,则表示能被整除!则表示能被整除!则表示能被整除!则表示能被整除!首先将是否闰年的标志首先将是否闰年的标志首先将是否闰年的标志首先将是否闰年的标志leapleapleapleap预置为预置为预置为预置为0 0 0 0(非闰年),这样仅当(非闰年),这样仅当(非闰年),这样仅当(非闰年),这样仅当yearyearyearyear为闰年时,将为

48、闰年时,将为闰年时,将为闰年时,将leapleapleapleap置为置为置为置为1 1 1 1即可。这种处理两种状态值的方即可。这种处理两种状态值的方即可。这种处理两种状态值的方即可。这种处理两种状态值的方法,对优化算法和提高程序可读性非常有效,请读者仔细体法,对优化算法和提高程序可读性非常有效,请读者仔细体法,对优化算法和提高程序可读性非常有效,请读者仔细体法,对优化算法和提高程序可读性非常有效,请读者仔细体会。会。会。会。#include#include void main()void main()intint year,leap=0;year,leap=0;/leap=0/leap=0

49、:预置为非闰年:预置为非闰年:预置为非闰年:预置为非闰年 printfprintf(Please input the year:);(Please input the year:);/提示输入年份提示输入年份提示输入年份提示输入年份 scanfscanf(“%d”,&year);(“%d”,&year);/输入年份输入年份输入年份输入年份 if(year%4=0)if(year%4=0)/如果被如果被如果被如果被4 4整除整除整除整除 if(year%100!=0)if(year%100!=0)/如果不被如果不被如果不被如果不被100100整除整除整除整除 leap=1;leap=1;/置为闰

50、年置为闰年置为闰年置为闰年 if(year%400=0)if(year%400=0)/如果被如果被如果被如果被400400整除整除整除整除 leap=1;leap=1;/置为闰年置为闰年置为闰年置为闰年 /输出结果输出结果输出结果输出结果 if(leap)if(leap)/如果是闰年如果是闰年如果是闰年如果是闰年(leap=1)(leap=1)printfprintf(%d is a leap year.n,year);(%d is a leap year.n,year);else else printfprintf(%d is not a leap year.n,year);(%d is n

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁