飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 9901|回复: 16

[C/C++] 万年历。。。

    [复制链接]
  • TA的每日心情
    无聊
    2024-1-15 22:57
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2010-12-4 20:01:02 | 显示全部楼层 |阅读模式
    本帖最后由 zaas 于 2010-12-6 21:09 编辑
    1. #include <stdio.h>
    2. int leap(int year);
    3. int check(int year,int month,int day);
    4. int getweek(int year,int month);
    5. int showmonth(int year,int month);
    6. void print(int year,int month,int day,int weekday);
    7. void main()
    8. {
    9.     int year,month,day,weekday;
    10.     char key;
    11.     while(1)
    12.     {   
    13.         printf("Please input Year-Month-Day(eg: 2012-12-31):");
    14.         scanf("%d-%d-%d",&year,&month,&day);
    15.         getchar();
    16.         if (!check(year,month,day))
    17.         {
    18.             weekday=getweek(year,month);
    19.             print(year,month,day,weekday);
    20.         }
    21.         else
    22.         {
    23.             printf("Wrong input!\n");
    24.         }
    25.         printf("Continue?[Y]or[N]");
    26.         scanf("%c",&key);
    27.         getchar();
    28.         if (key!='y'&& key !='Y')
    29.         {
    30.             break;
    31.         }
    32.     }
    33. }
    34. int leap(int year)
    35. {
    36.     return(!((year%4)&&(year%100))||!(year%400));
    37. }
    38. int check(int year,int month,int day)
    39. {
    40.     int i,mark=0;
    41.     if (year<1901||year>3000 || month<1 || month>12 || day<1 || day>31 )
    42.     {
    43.         mark=1;
    44.     }
    45.     if (month==4||month==6||month==9||month==11)
    46.     {
    47.         if (day>30)
    48.         {
    49.             mark=1;
    50.         }
    51.     }
    52.     else if(month==2)
    53.     {
    54.         i= (leap(year))?29:28;
    55.         if (day>i)
    56.         {
    57.                 mark=1;
    58.         }
    59.     }
    60.     return (mark);
    61. }
    62. void print(int year,int month,int day,int weekday)
    63. {
    64.     int i,k,dayofmonth;
    65.     dayofmonth=showmonth(year,month);
    66.     printf("my calender [code by zaas]\n\n");
    67.     printf("date:%4d-%2d\n\n",year,month);
    68.     printf("SUN\tMON\tTUE\tWED\tTHU\tFRI\tSAT\n");
    69.     printf("-----------------------------------------------------\n");
    70.     for (i=0;i<weekday;i++)
    71.     {
    72.         printf("\t");
    73.     }
    74.     for (i=1;i<=dayofmonth;i++)
    75.     {
    76.         k=weekday+i-1;
    77.         if (i==day)
    78.         {
    79.             printf("[%2d]\t",i);
    80.         }
    81.         else
    82.         {
    83.             printf("%3d\t",i);
    84.         }
    85.         if (k%7==6)
    86.         {
    87.          printf("\n-----------------------------------------------------\n");
    88.         }
    89.     }
    90.     printf("\n-----------------------------------------------------\n\n");
    91. }
    92. int showmonth(int year,int month)
    93. {
    94.     int m=31;
    95.     if(month==4||month==6||month==9||month==11)
    96.     {
    97.         m=30;
    98.     }
    99.     else if(month==2)
    100.     {
    101.               m=(leap(year))?29:28;
    102.     }
    103.     return(m);
    104. }
    105. int getweek(int year,int month)
    106. {
    107.     int i,totalday=0;  
    108.     for (i=1900;i<year;i++)
    109.     {
    110.         totalday+=(leap(i))? 366:365;
    111.     totalday=totalday%7;
    112.     }
    113.     for(i=1;i<month;i++)
    114.     {
    115.         totalday+=showmonth(year,i);
    116.     }
    117.         return((totalday)%7);
    118. }
    复制代码

    评分

    参与人数 1威望 +80 飘云币 +400 收起 理由
    兔小样 + 80 + 400 您的贴子很精彩,希望能再次分享!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    郁闷
    2017-1-19 11:18
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2010-12-4 21:50:36 | 显示全部楼层
    int leap(int year)

    {

        return ((year%4&&year%100)||year%400)
    }
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2019-3-12 17:25
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2010-12-4 21:51:31 | 显示全部楼层
    过来顶z大的文章
    PYG19周年生日快乐!
  • TA的每日心情
    郁闷
    2017-1-19 11:18
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2010-12-4 22:08:17 | 显示全部楼层
    过来顶z大的文章
    whypro 发表于 2010-12-4 21:51



        你在顶Z大一个跟头/:017
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2024-1-15 22:57
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2010-12-4 23:01:31 | 显示全部楼层
    int leap(int year)

    {

        return ((year%4&&year%100)||year%400)
    }
    komany 发表于 2010-12-4 21:50



        嗯,确实。改了。
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2019-3-12 17:25
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2010-12-5 07:38:12 | 显示全部楼层
    本帖最后由 whypro 于 2010-12-5 07:39 编辑

    回复 4# komany


        ??k大你真是太纠结了!
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2024-1-15 22:57
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2010-12-5 12:11:08 | 显示全部楼层
    回复  komany


        ??k大你真是太纠结了!
    whypro 发表于 2010-12-5 07:38



        why大真是起的比鸡早,睡的比小姐晚。
    模范啊!!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-1-15 22:35
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2010-12-6 12:21:12 | 显示全部楼层
    瞅瞅z大怎么实现的
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-1-15 22:35
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2010-12-6 12:22:38 | 显示全部楼层
    额,阅读权限不够,没天理啊!呜呜......
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-5-29 13:11
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2010-12-6 22:51:29 | 显示全部楼层
    我也来膜拜一下~!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表