2、(而1900不是闰年)#includevoidmain(){intyear;scanf("%d",&year);if(year%4==0&&year%100!=0
3、
4、year%400==0)printf("YES");elseprintf("NO");}P122-125参考代码分析//闰年子函数intf(intyear){if(year%4==0&&year%100!=0
5、
6、year%400==0)return1;elsereturn0;}细菌繁殖一种细菌繁殖是每天成倍增长。例如第一天
7、有10个,第二天就变成20个,第三天变成40个,第四天变成80个……。现在给出第一天的日期和细菌数目,求出到某一天时细菌的数目。输入:第一行一个整数n,表示测试数据的数目。其后n行每行有5个整数,整数之间用一个空格隔开。第一个数表示第一天的月份,第二个数表示第一天的日期,第三个数表示第一天细菌的数目,第四个数表示要求的那一天的月份,第五个数表示要求的那一天的日期。已知第一天和要求的一天在同一年并且该年不是闰年,要求的一天一定在第一天之后。解题思路:1.输入两个日期及第一天的细菌数;2.求两个日期相差的天
8、数,即它们中间间隔的天数m;3.用第一天的细菌数乘以2m得到x;4.输出x细菌繁殖#includevoidmain(){intdays[12]={31,28,31,30,31,30,31,31,30,31,30,31},n;scanf("%d",&n);for(inti=0;i9、=0;for(intk=month_1;k10、年哪月哪日星期几。输入:输入若干行,每行一个正整数(测试样例),输入以-1结束。输出:对每个测试样例,输出一行,该行包含对应日期和星期几。格式为“YYYY-MM-DDDayofWeek”问题解答此题为典型的日期处理程序,编程需要特别细心,日期处理的程序非常容易出错。基本思路:确定星期几:用给定的日期对7取模确定年;闰年366天,否则365天确定月;每个月长短不同确定日。日历问题#includeinttype(int);charweek[7][10]={"Saturday","Sunda
11、y","Monday","Tuesday","Wednesday","Thursday","Friday"};intyear[2]={365,366};intmonth[2][12]={31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31};inttype(intm)//闰年函数{if(m%4!=0
12、
13、(m%100==0&&m%400!=0))return0;elsereturn1;}日历问题voidmain(){
14、intdays,dayofweek;inti=0,j=0;while(scanf("%d",&days)&&days!=-1){dayofweek=days%7;for(i=2000;days>=year[type(i)];i++)//i为年份days-=year[type(i)];for(j=0;days>=month[type(i)][j];j++)//j+1为月份days-=month[type(i)][j];printf("%d-%