码迷,mamicode.com
首页 > 其他好文 > 详细

年份月数天数

时间:2018-04-07 22:43:31      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:cas   printf   nbsp   print   结果   main   col   while   问题   

问题:

  编写程序,使之所给的年份和月份,按照万年历的算法获知该年该月的天数,并输出结果。要求程序能反复运行,直至键入的年份和月份分别为2100年和12月为止。

分析:

  程序要求输入年份月份,输出该月的天数,应主要考虑闰年,闰年的2月有29天,非闰年的2月只有28天。按通常历法,每四年有一个闰年,那么每400年就有100个闰年,但这种算法有误差积累,年数多了就不准。所谓万年历是指使用一万年都能保持准确的历法,根据万年历的算法,每400年只能有97个闰年,不妨假设程序中的年份取1701年至2100年。可规定:在这400年中,凡能被4整除而不能被100整除的年份(有100-4=96),加上能被400整除的年份(1个,即2000年),均为闰年,其余都是非闰年。

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int years,months,days;
 5     printf("请输入年份和相应的月份:");
 6     scanf("%d,%d",&years,&months);
 7     switch(months)
 8     {
 9         case 1:
10         case 3:
11         case 5:
12         case 7:
13         case 8:
14         case 10:
15         case 12:
16             days=31;
17             break;
18         case 4:
19         case 6:
20         case 9:
21         case 11:
22             days=30;
23             break;
24         case 2:
25             if((years%4==0&&years%100!=0)||(years%400==0))
26                 days=29;
27             else 
28                 days=28;
29     }
30     printf("\n%d年%d月有%d天!\n",years,months,days);
31 }
32 
33 /*#include<stdio.h>
34 int main(){
35     int year,month,days;
36     do{
37         do{
38             printf("请输入您想查询的年份和月份:");
39             scanf("%d %d",&year,&month);
40         }while(!((year>=1701&&year<=2100)&&(month>=1&&month<=12)));
41         if(!(year==2100&&month==12)){
42             switch(month)
43             {
44                 case 1:
45                 case 3:
46                 case 5:
47                 case 7:
48                 case 8:
49                 case 10:
50                 case 12:
51                     days=31;
52                     break;
53                 case 4:
54                 case 6:
55                 case 9:
56                 case 11:
57                     days=30;
58                     break;
59                 case 2:
60                     if(year%4==0&&year%100!=0||year%400==0)//判断是否为闰年
61                         days=29;
62                     else
63                         days=28; 
64             }
65             printf("\n%d的%d月有%d天\n\n",year,month,days);
66         }
67     }while(!(year==2100&&month==12));
68     return 0;
69 }*/

 


  







年份月数天数

标签:cas   printf   nbsp   print   结果   main   col   while   问题   

原文地址:https://www.cnblogs.com/geziyu/p/8734908.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!