zoukankan      html  css  js  c++  java
  • 年份月数天数

    问题:

      编写程序,使之所给的年份和月份,按照万年历的算法获知该年该月的天数,并输出结果。要求程序能反复运行,直至键入的年份和月份分别为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("
    %d年%d月有%d天!
    ",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("
    %d的%d月有%d天
    
    ",year,month,days);
    66         }
    67     }while(!(year==2100&&month==12));
    68     return 0;
    69 }*/


      







  • 相关阅读:
    svn使用教程
    软件工程课程设计分组与选题名单
    解决自己的提问
    <构建之法>第十三章到十七章有感以及这个项目读后感
    <构建之法>第十一章、十二章有感
    关于C语言打印string类字符串的问题
    单链表
    8、判断三角形ABC中是否有点D
    7、完整版的strcpy函数
    6、旋转数组的最小数字
  • 原文地址:https://www.cnblogs.com/geziyu/p/8734908.html
Copyright © 2011-2022 走看看