资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,4,章 顺序结构、选择结构和,循环结构的程序设计,4.1,结构化程序设计方法,任何算法的算法步骤可用顺序、选择、循环三种基,本控制结构中的一种来描述,.,4.2,结构化程序的三种基本结构,(,见图示,),1.,顺序结构,处理,A,处理,B,(a),(b),处理,A,处理,B,2.,选择结构,(1),单分支选择结构,(2),双分支选择结构,expr,statement,非,0,=0,expr,statement1,statement2,非,0,=0,(3),多分支选择结构,expr1,statemnt1,非,0,=0,expr2,expr3,statemntn,statemnt3,statemnt2,非,0,非,0,=0,=0,3.,循环结构,(1),当循环结构,:,先判断控制循环的条件,条件成立则执行,一次循环体,直到条件不成立时结束循环,.,特点,:,如果条件不成立,则重复,操作一次也不做,.,表达式,循环体,假,真,(2),直到型循环结构,:,先执行要重复的循环体一次,然后判断控制,循环的条件,.,条件成立,则继续上述循环,直,到条件不成立时,结束循环,.,特点,:,重复操作至少执行一次,.,表达式,循环体,假,真,(3),次数型循环结构,4.3,顺序结构的程序设计,常见顺序执行语句,:,赋值语句、函数调用语句、表达式语句、复合语句,.,1,、赋值语句,格式,1:,变量,=,表达式,;,功能,:,计算表达式的值,然后赋给变量,.,格式,2:,变量 自反赋值运算符 表达式,;,功能,:,将变量和表达式进行指定的算术或位运算后,将值赋予变量,.,归纳,:,从语句的格式来看,赋值语句就是赋值表达式后跟一个分号,.,例,:,编程序计算半径为,10,的圆周长、圆面积、球表面积、球体积,.,#define PI 3.14159,void main(),float r=10.0,l,s,v_s,v;,l=2.0*PI*r;,s=PI*r*r;,v_s,=4*s;,v=4.0*PI*r*r*r/3.0;,2,、函数调用语句,函数,:,是实现编写好的一段程序,程序的加工对象称,为函数的参数,加工后的结果可以利用函数值返回,.,系统函数,:,是分类存放在扩展名为“,h”,的磁盘文,件中,称为,”,头函数,”,或,”,头文件,”.,如,:#include ,格式,:,函数名,(,参数,1,参数,2,);,功能,:,调用制定的系统函数或用户自编的函数,对圆括,号中给出的参数进行该函数约定的运算,运算结果可,作为函数的返回值,.,归纳,:,函数调用语句就是函数调用后跟一个分号,.,例,:,编程序,调用系统函数计算,9,的平方根、,-10,的绝对值、,sin(3),、,cos(3),的值,.,#include,void main(),sqrt(9.0);,fabs(-10.0);,sin(3.0);,cos(3.0);,程序中没有保存值所以计算没有价值,需用赋值语句,将调用后的函数值存放到变量中,.,例,:,修改如下,:,#include,void main(),float sqrt1,abs1,sin1,cos1;,sqrt1=sqrt(9.0);,abs1=fabs(-10.0);,sin1=sin(3.0);,cos1=cos(3.0);,3,、表达式语句,格式,:,表达式,;,功能,:,计算表达式的值,.,归纳,:,表达式语句就是表达式后跟一个分号,.,例,:,编程序判断某字符型变量中存放的是否为小写字母,.,void main(),int,yn1,yn2,yn3;,char ch1=A,ch2=b,ch3=2;,yn1=ch1=a,yn2=ch2=a,yn3=ch3=a,4,、复合语句,格式,:,语句,1;,语句,2;,语句,k;,功能,:,依次执行语句,1,、语句,2,、,语句,k.,注意,:,(1),复合语句中虽然有多条语句,但整体,看作一条语句,.,(2),复合语句中的语句若有数据定义语句,要,放在复合语句中其它语句的前面,.,例,:,编程序计算半径为,10,的圆周长、圆面积、球面面积、球体积,.,#define PI 3.14159,#define R 10.0,void main(),float,l,s,;,l=2.0*PI*R;,s=PI*R*R;,float,v_s,v,;,v_s,=4*s;,v=4.0*PI*R*R/3.0;,#include ,main( ),int,c;,char a;,c=65; a=B;,putchar(c,);,putchar(n,);,putchar(a,);,运行结果,:A,B,5,、字符输入,/,输出函数,向终端输出一个字符显示,(,正常显示,),格式,:,putchar,(,c,),c,是一个字符表达式,可以是,字符变量、常量、,控制字符、转义字符和整型变量,.,格式,:,getchar,( ),例,#include ,main(),int,c;,printf(Enter,a character:);,c=,getchar,();,printf(%c,-hex%xn,c,c);,运行结果,:,Enter a character:A,A-hex41,怎样从输入设备得到一个字符,(,键盘,),-,输入字符并输入换行,格式,:,getchar,( ),例,#include ,main(),int,c;,printf(Enter,a character:);,c=,getchar,();,printf(%c,-hex%xn,c,c);,运行结果,:,Enter a character:A,A-hex41,怎样从输入设备得到一个字符,(,键盘,),-,输入字符不用输入换行,printf,(,“,字符 格式控制,”,输出列表,),向终端按指定的格式,输出若干个任意类型的数据,.,(,putchar,只能输出一个字符,),(,1,)格式输出函数,-,printf,说明,:,格式控制包含两部分内容,:,修饰符,:,输出格式的控制,;,格式说明,:,将输出的数据转换为指定的数据格式,总是由“”字符开始的,.,%,修饰符,格式字符,例,:,int,a=3,b=4;,printf(,%d,%,dn,a,b,);,printf(,a,=%d , b=%,dn,a,b,);,输出结果,:,3 4,a=3, b=4,printf,(,max=,%d,min=,%5d,n,a,b,);,6,、格式输入,/,输出函数,d,i,十进制整数,x,X,十六进制整数,o,八进制无符号整数,u,无符号十进制整数,c,单个字符,s,字符串,e,E,指数形式实数,f,十进制实数,g,G,f,和,e,格式中宽度较短的一种格式,%,%,printf,格式字符,int,a=567;printf (,%,d,a,);,567,int,a=255;printf(,%x,a);,ff,int,a=65;printf(,%o,a);,101,int,a=567;printf(,%u,a);,567,char a=65;printf(,%c,a);,A,printf(,%s,ABC,);,ABC,float a=567.789;,printf(,%e,a,);,5.677890,e+002,float a=567.789;,printf(,%f,a,);,567.789000,float a=567.789;,printf(,%g,a,);,567.789,printf,(,%,);,%,例,:,main(),unsigned,int,u=65535;,printf(,u,=%,dn,u,);,输出结果,:,u=-1,11,11,11,11,11,11,11,11,65535,修饰符,功能,m,数据最小宽度,.,m,正常输出,;,n,则在左侧用空格补足,(,右对齐输出,);,若,mn,则在右侧用空格补足,(,左对齐输出,);,若,mn,则输出,n,个字,符,.,若,n,大于字符串长度,则输出整个字符串,.,# include ,stdio.h,main(),printf(%sn,happyman,);,printf(%10sn,happyman);,printf(%-10sn,happyman);,printf(%8.5sn,happyman);,printf(%-8.5sn,happyman);,运行结果,:,happyman,(,一般格式输出,),happyman,(,输出宽度,10,在左端补,2,个空格,),happyman,(,输出宽度,10,在右端补,2,个空格,),happy,(取左端,5,个字符,输出宽度,8,在左端补,3,个空格),happy,(取左端,5,个字符,输出宽度,8,在右端补,3,个空格),%f,格式,(1) %f,按系统默认的宽度输出,并输出,6,位小数,单精度数,7,位有效数字,双精度数,16,位有效数字,.,(2) %,m.nf,按给定宽度,m,输出,包括,n,位小数,.,若数据长度,m,则右对齐输出,.,(3) %-,m.nf,格式同上,.,但若数据长度,m,则左对齐输出,.,main(),float x=123456.123;,double y=1234567890.1234;,printf(%fn,x,);,printf(%25fn,x);,printf(%25.2fn,x);,printf(%.2fn,x);,printf(n,);,printf(%fn,y,);,printf(%25fn,y);,printf(%.2fn,y);,printf(%-25.2fn,y);,运行结果,:,123456.125000 (,一般输出格式,左对齐,),123456.125000 (,宽度,25,位,右对齐,),123456.12 (,宽度,25,位,两位小数,右对齐,),123456.12 (,宽度不限,.,两位小数,左对齐,),1234567890.123400 (,一般输出格式,左对齐,),1234567890123.123050 (,宽度,25,位,右对齐,),1234567890123.12 (,宽度不限,两位小数,左对齐,),1234657980123.12 (,宽度,25,位,两位小数,左对齐,),%e,格式,(1) %e,按规范的指数形式输出,即小数点前,1,位非零数字,小数点后,6,位小数,指数部分占,5,位,再加上小数点共,13,位,如,1.123456e+007.,(2) %,m.ne,按给定的宽度,m,输出,包括,n,位小数和,5,位指数,.,若数据长度,指定宽度,m,则按实际长度,.,输出,.,(3) %-,m.ne,按给定宽度,m,输出,包括,n,位小数隔和,5,位指数,若数据长度,指定宽度,m,则按实际长度输出,.,main(),float x;,double y;,x=123456.123;,y=1234567890123.123;,printf(%en,x,);,printf(%20en,x);,printf(%20.2en,x);,printf(%.2en,x);,printf(%-20.2en,x);,printf(n,);,printf(%en,y,);,printf(%20en,y);,printf(%20.2en,y);,printf(%.2en,y);,printf(%-20.2en,y);,运行结果,:,1.23456e+05 (,一般输出格式,左对齐,),1.23456e+05 (,输出宽度,20,位,右对齐,),1.2e+05 (,输出宽度,20,位,右对齐,),1.2e+05 (,输出宽度不限,含两位小数,左对齐,),1.2e+05 (,输出宽度,20,位,两位小数,左对齐,),1.234567e+12 (,一般输出格式,左对齐,),1.234567e+12 (,输出宽度,20,位,右对齐,),1.2e+12 (,输出宽度,20,位,右对齐,),1.2e+12 (,输出宽度不限,含两位小数,左对齐,),1.2e+12 (,输出宽度,20,位,两位小数,右对齐,),%g,格式,# include ,stdio.h,main(),float x;,double y;,x=123456.123;,y=1234567890123.132;,printf(%f,%,e%gn,x,x,x,);,printf(%f,%e,%gn,y,y,y,);,运行结果,:,123456.125000 ,1.23456e+05,132456,1234567890123.123050 ,1.23457e+12,1.23457e+12,例,:,int,a=1234;,float f=123.456;,static char c=,Hello,world,!,;,printf(,%8d,%-8dn,a,a);,printf(,%10.2f,%-10.1fn,f,f);,printf(,%10.5s,%-10.3sn,c,c);,运行结果,:,1234,1234,123.46,123.5,Hello,Hel,-,例,int,a=1234;,float f=123.456;,printf(,%08dn,a);,printf(,%010.2fn,f);,printf(,%0+8dn,a);,printf(,0+10.2fn,f);,0 、+,例,int,a=123;,printf(,%o,%#o,%X,%#Xn,a,a,a,a,);,#,例,long a=65536;,printf(,%d,%8ldn,a, a);,l,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00,00,/*00001234*/,/*0000123.46*/,/*000+1234*/,/*000+123.46*/,/*173,0173,7B,0X7B*/,/*0,65536*/,(2),格式输入函数,-,scanf,scanf,(,字符 格式控制,地址列表,),按,指定的格式将数据输入到相应的地址单元中。,说明,:,地址列表,使用取地址运算符,&,可以使用格式字符,:,d,o,x,u,c,s,f,e,例,:,scanf(,%d,&,a,);,输入:10,则,a=10,例,:,scanf(,%x,&,a,);,输入:11,则,a=17,输入流数据分隔,根据格式字符的含义从输入流中取得数据,当输入流中,数据类型与格式字符要求不符时,就认为这一数据项结束,.,main(),int,a ;,char b;,float c;,printf(input,a b c: ),scanf(%d,%,c%f,&a,&b,&c,);,printf(a,=%,d,b,=%,c,c,=%,f,a,b,c,);,一次执行结果为,:,input a b c:,1234r1234.567,a=1234,b=,r,c,=1234.567000,(2),根据格式项中指定的域宽分隔出数据项,.,main(),int,a ;,flaot,b,c,;,scanf(%2d%3f%4f,printf(a,=%,d,b,=%,f,c,=%,f,a,b,c,);,一次运行情况如下,:,12345678987654321,a=12 ,b=345.000000,c=6789.000000,(3),用分隔符,.,空格、跳格符(,t,)、换行符(,n,),都是语言认定的数据分隔符,.,main(),int,a;,float,b,c,;,scanf(%d%f%f,&a,&b,&c,);,printf(a,=%,d,b,=%,f,c,=%,f,a,b,c,);,一次运行情况如下,:,12 345 6789 87654321,a=12 ,b=345.000000,c=6789.000000,main(),int,a;,float,如果输入为,:,12345678765.43,如果输入为,:,12345678765.43b,c;,scanf(%d,%f,%f,&a,&b,&c,);,printf(a,=&,d,b,=%,f,c,=%,fn,a,b,c,);,一次运行的情况如下:,12345,678,976.38,a=12345,b=678.0000000,c=976.380000,抑制字符,.,它的作用是在按格式说明读入数据后不送,给任何变量,即“虚读”,.,例如,:,scanf(%3d% *4d%f,如果输入为,:,12345678765.43,则,123,送给,I,4567,不送给任何变量,8765.43,送给,f.,在利用,已有的一批数据时,若有一、两个数据不需要,可以用此,法“跳过”这些无用数据,.,修饰符,l,修饰符,功能,h,m,*,对于,d,o,x,是,short,int,地址,对于,d,o,x,是,long,int,地址,对于,e,f,是,double,地址,指定数据输入的宽度,.,空读,不赋给任何变量(跳过指定的宽度),例,:scanf(“%4d%2d%2d”,输入 19991015,则1999,yy, 10 mm, 15 ,dd,例,:,scanf(“%3d%*4d%f”,输入 12345678765.43,则123,k, 8765.43f,例,:,scanf(“%2d,%*3d,%2d”,输入 12,345,67,则12,a, 67b,例,:scanf(“%3c%2c”,输入,abcde,则,ac1, d c2,输入注意事项,输入结束,(,空格,跳格,换行,),地址列表应是变量地址而不是变量名,;,格式控制中有其他字符,在对应位置原样输入,;,格式字符和转义字符都是有效字符输入,.,例,:,scanf(“%d%o%x”,&a,&b,&c,);,printf(“a,=%d,b=%d,c=%dn”,a,b,c);,输入 123 123 123,输出,a=123,b=83,c=291,例,:,scanf(“%d:%d:%d”,&h,&m,&s,);,输入 12:30:45,则12 ,h, 30 m, 45 s,例,:,scanf(“%d,%d”,&a,&b,),输入 3,4,则3,a, 4 b,例,scanf(“a,=%d,b=%d,c=%d”,输入,a=12,b=24,c=36 ,例,:,从键盘输入大写字母,用小写字母输出,.,#include ,stdio.h,main(), char c1,c2;,c1=,getchar,();,printf(%c,%dn,c1,c1);,c2=c1+32;,printf(%c,%dn,c2,c2);,输入,:A,输出,:A,65,a ,97,例,:,输入一个字符,输出该字符对应的八进制数和十六进制数,.,main(),char,ch,;,scanf(“%c”,&ch,);,printf(“ch_0=%,on”,ch,);,printf(“ch_X,=%,xn”,ch,);,例,:,输入一个字符,输出该字符对应的八进制数和十六进制数,.,void main(),char,ch,;,scanf(“%c”,&ch,);,printf(“ch_0=%,on”,ch,);,printf(“ch_X,=%,xn”,ch,);,例,:,编程序,输入半径,求对应周长、圆面积、球表面积、球体积,.,#define PI 3.14159,void main(),float r,l,s1,s2,v;,scanf(“%f”.&r,);,l=2*PI*r;,s1=PI*r*r;,s2=4*PI*r*r;,v=4.0*PI*r*r*r/3.0;,printf(“r,=%,fn”,r,);,printf(“l,=%f s1=%fn”,l,s1);,printf(“s2=%f v=%fn”,s2,v);,#include ,#include ,main(), float a,b,c,disc,x1,x2,p,q;,scanf(a,=%f,b=%f,c=%f,disc=b*b-4*a*c;,p=-b/(2*a); q=sqrt(disc)/(2*a);,x1=p+q; x2=p-q;,printf(nnx1=%5.2fnx2=%5.2fn,x1,x2);,输入,:a=1,b=3,c=2,输出,:x1=-1.00,x2=-2.00,例题,:,输入三角形边长,求面积,.,/*ch4_12.c*/,#include ,#include ,main(), float a,b,c,s,area;,scanf(%f,%f,%f,&a,&b,&c,);,s=1.0/2*(a+b+c);,area=,sqrt,(s,*(s-a)*(s-b)*(s-c);,printf(a,=%7.2f, b=%7.2f, c=%7.2f, s=%7.2fn,a,b,c,s);,printf(area,=%7.2fn,area);,输入,:3,4,6,输出,:a= 3.00, b= 4.00, c= 6.00 s= 6.50,area= 5.33,文件包含,变量定义,数据输入,数据输出,例,:,输入非,0,的三位整数,依次输出该数的正,(,负,),号和百位、十位、个位数字,.,#include,main(),char c1,c2,c3,c4;,int,x;,scanf(“%d”,&x,);,c4=(x0?+:-);,x=,abs(x,);,c3=x%10+48;,x=x/10;,c2=x%10+48;,c1=x/10+48;,printf(“%cn%cn%cn%cn”,c4,c1,c2,c3);,顺序结构程序一般分三个步骤,:,(1),输入原始数据,(,某些程序省略该步骤,);,(2),对原始数据进行计算加工,获得某些中间结果数据和最终结果数据,(,这些操作可能分若干具体步骤,并且是顺序结构的,),(3),输出结果,(,有的还需输出原始数据,以便校对程序正确性,),4.4,选择型程序设计,if,语句,(,条件选择语句,),if,语句的三种形式,形式一,:格式:,if (expression),statement,执行过程:,expr,statement,非,0,=0,例,:,if (xy),printf(“%d”,x,);,expr,statement1,statement2,非,0,=0,形式二,:,格式,:,if (expression),statement1,else,statement2,执行过程,:,例,:,if (xy) max=x;,else max=y;,例,:,简单的,if,语句举例,.,输入一个字符,是字母则输出,”Yes!”,否则无输出,.,main(),char c;,scanf(“%c”,&c,);,if(c,=,a&c,=,A&c,=Z),printf(“YES!n,”);,例,:,嵌套的,if,语句举例,.,输入一个整数,若大于,5,且小于,10,的,则输出,”5x5),if(x,10),printf(“5x5)&(x10),printf(“5x1000) index=0.4;,else if (salary800) index=0.3;,else if (salary600) index=0.2;,else if (salary400) index=0.1;,else index=0;,例,:,简单的,if-else,语句举例,.,输入一个字符,是字母,则输出,”Yes!”,否则,输出,”NO!”.,main(),char c;,scanf(“%c”,&c,);,if(c,=,a&c,=,A&c,=Z),printf(“YES!n,”);,else,printf(“NO!n,”);,如,:,if(a,=b&x=y),printf(“a,=b,x=y”);,if(3),printf(“OK,”);,if(a,),printf(“%d”,a,);,说明,:,if,后面的表达式类型任意,语句可以是复合语句,if(x), if(x!=0),if(!x),if(x=0),例,:,考虑下面程序的输出结果,#include ,main(),int,x,y;,scanf(“%d,%d”,&x,&y,);,if(xy),x=y; y=x;,else,x+; y+;,printf(“%d,%dn”,x,y,);,Compile Error!,#include ,main(),int,x,y;,printf(Enter,an integer:);,scanf(%d,&x,);,y=x;,if(yabsolute value:%dn,x,y);,例,:,求一个数的绝对值,.,运行,:Enter an integer: -12,integer: -12-absolute value:12,#include ,main(),int,a,b;,printf(Enter,integer a:);,scanf(%d,&a,);,printf(Enter,integer b:);,scanf(%d,&b,);,if(a=b),printf(a,=bn);,else,printf(a,!=bn);,例,:,输入两个数并判断两数相等否,.,运行,:Enter integer a:12,Enter integer b:12,a=b,运行,:Enter integer a:12,Enter integer b:9,a!=b,#include ,main(), char c;,printf(Enter,a character:);,c=,getchar,();,if(c=0&c=A&c=a&c=z),printf(The,character is a lower lettern);,else,printf(The,character is other charactern);,例,:,判断输入字符种类,.,运行,:,Enter a character:,The character is a control character,运行,:,Enter a character:8,The character is a digit,运行,:,Enter a character: D,The character is a capital letter,运行,:,Enter a character: h,The character is a lower letter,运行,:,Enter a character:F1,The character is other character,if,语句嵌套,:,一般形式,:,if (expr1),if (expr2) statement1,else statement2,else,if(expr3) statement3,else statement4,内嵌,if,内嵌,if,if (expr1),if (expr2),statement1,else,statement2,内嵌,if,if (expr1),if (expr2),statement1,else,statement3,内嵌,if,if (expr1),statement1,else,if(expr3),statement3,else,statement4,内嵌,if,例,:,输入两数并判断其大小关系,.,#include ,main(),int,x,y;,printf(Enter,integer x,y:);,scanf(%d,%d,&x,&y,);,if(x!=y),if(xy),printf(X,Yn);,else,printf(X,Yn);,else,printf(X,=Yn);,运行,:Enter integer x,y:12,23,XY,Enter integer x,y:12,12,X=Y,if else,配对原则,:,缺省 时,else,总是和,它上面离它最近的未配对的,if,配对,.,if(),if(),if(),else.,else.,else.,例,: if (a=b),if(b=c),printf(“a,=b=c”);,else,printf(“a,!=b”);,修改,: if (a=b), if(b=c),printf(“a,=b=c”);,else,printf(“a,!=b”);,实现,if else,正确配对方法,:,加 ,例,:,考虑下面程序输出结果,.,main(),int,x=100,a=10,b=20;,int,v1=5,v2=0;,if(a60n”);,break;,.,例,:,switch(score,), case 5:,printf(“Very,good!”);,case 4:,printf(“Good,!”);,case 3:,printf(“Pass,!”);,case 2:,printf(“Fail,!”);,default :,printf(“data,error!”);,运行结果,:,score,为5时,输出,:,Very good! Good! Pass! Fail! data error!,例,void main(),int,x=1,y=0,a=0,b=0;,switch(x), case 1:,switch(y), case 0: a+; break;,case 1: b+; break;,case 2: a+;b+; break;,case 3: a+;b+;,printf(“na,=%d,b=%d”,a,b);,运行结果,:a=2,b=1,#include ,main(),int,c;,printf(Enter,m or n or h or other:);,c=,getchar,();,switch(c), case m:,printf(nGood,morning!n);break;,case n:,printf(nGood,night!n); break;,case h:,printf(nHello!n,); break;,default :,printf(n?n,); break;,例,:,根据输入字母输出字符串,.,四、选择程序设计举例,例,:,输入一个整数,如果不等于,0,则输出,”TRUE”;,否则输出,”FALSE”.,main(),int,x;,scanf(“%d”,&x,);,if(x,!=0),printf(“TRUEn,”);,else,printf(“FALSEn,”);,例,:,输入一个加法或减法的运算符,如果是加法运算符,则继续输入,3,个实数并求出它们之和,;,如果不是加法运算符,则继续输入,2,个实数并求它们之差,.,main(),float x1,x2,x3;,char c;,scanf(“%c”,&c,);,if(c,=+),scanf(“%f,%f,%f”,printf(“%f+%f+%f,=%fn”,x1,x2,x3,x1+x2+x3);,else,scanf(“%f,%f”,printf(“%f-%f,=%fn”,x1,x2,x1-x2);,例,:,输入一个带符号的短整型数,输出该数的位数,.,main(),int,x,m,;,scanf(“%d”,&x,);,if(x,0)x=-x;,if(x,10)m=1;,else,if(x,100) m=2;,else,if(x,1000) m=3;,else,if(x,10000) m=4;,else m=5;,printf(“m,=%,dn”,m,);,例,:,输入一个日期,(,含年、月、日,),输出该日期是该年度中,的第几天,.,main(),int,y,m,d,days,flat,=1;,printf(“input,year,month,day,:”);,scanf(“%d,%d,%d”,&y,&m,&d,);,switch(m,),case 1:days=0;break;,case 2:days=31;break;,case 3:days=31+28;break;,case 4:days=31+28+31;break;,case 5:days=31+28+31+30;break;,case 6:days=31+28+31+30+31;break;,case 7:days=31+28+31+30+31+30;break;,case 8:days=31+28+31+30+31+30+31;break;,case 9:days=31+28+31+30+31+30+31+31;break;,case 10:days=31+28+31+30+31+30+31+31+30;break;,case 11:days=31+28+31+30+31+30+31+31+30+31;break;,case 12:days=31+28+31+30+31+30+31+31+30+31+30;break;,default:printf(“input,error of month!,n”);flag,=0;,if(d,2)&(y%4=0)&(y%100!=0)
展开阅读全文