亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

c語言實現一個簡單日歷

2020-01-26 15:09:49
字體:
來源:轉載
供稿:網友

滿足三個需求:

1.輸入一個年份,輸出是在屏幕上顯示該年的日歷。假定輸入的年份在1940-2040年之間。
2.輸入年月,輸出該月的日歷。
3.輸入年月日,輸出距今天還有多少天,星期幾,是否是公歷節日。

最終完善版代碼:

復制代碼 代碼如下:

#include<stdio.h>
#include <string.h>
#include <time.h>
#include <math.h>
#include <windows.h>
int year , month , day ;
int day_of_month[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
//char wek[7]={'周日','周一','周二','周三','周四','周五','周六'};
int current_year,current_month,current_day;
/************************************通用關鍵函數**************************************************/
void cls_screen()
{
    printf("請按任意鍵返回!/n");
    getchar();
    getchar();
    system("cls");
}
void get_current_time()   //獲取當前時間
{
    time_t timep;
    struct tm *p;
    time(&timep);
    p = gmtime(&timep);
    current_year=1900+p->tm_year;
    current_month=1+p->tm_mon;
    current_day=p->tm_mday;
}
int judgement (int y)
{
    if (y % 400 == 0 || (y % 100 !=0 && y %4 ==0))
        return 1 ;
    else return 0 ;
}
int show_week (int year , int month , int day)
{
/*
公式:w=(y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1)%7
    */
    int w ,k;   //記錄周幾
    int year_last=year %100,c=year/100 , m = month;
    if (month==1 )
    {
        year_last-=1 ;
        m=13 ;
    }
    else if (month==2)
    {
        year_last-=1;
        m=14;
    }
    w = (year_last + year_last/4 + c/4 - 2*c +26*(m+1)/10+day-1); // abs  絕對值
    if (w<0)
    {
        k=(w%7+7)%7;
    }
    else k=w%7;
    return k ;
}
/************************************第一部分**************************************************/
void print_year (int year)
{
    int i , k ,x ,first_week;
    printf ("請輸入想要查詢的年月(格式如2012):");
    scanf ("%d",&year);
    printf("=======================%d年===========================/n",year);
    printf("/n");
    if (judgement(year))
    {
        day_of_month[1]=29;
    }
    else day_of_month[1]=28;
    for (i=1 ; i <13 ; i++)
    {
        first_week = show_week(year,i,1);
        printf("=====================%d月日歷如下========================/n",i);
        printf ("Sun/tMon/tTue/tWed/tThu/tFri/tSat/n");
        for (x=1;x<=first_week;x++)
        {
            printf("/t");
            if (x%7==0) printf ("/n");
        }
        for (k=1;k<=day_of_month[i-1];k++)
        {
            printf("%d/t",k);
            if (x%7==0) printf ("/n");
            x++;
        }
        printf("/n");
        printf("/n");
        printf("/n");
    }
}
/************************************第二部分**************************************************/
void print_year_month ()
{
    int k ,x ,first_week;
    printf ("請輸入想要查詢的年月(格式如2012 12):");
    do
    {
        scanf ("%d %d",&year,&month);
        if (month<1||month>12)
        {
            printf("您輸入的月份有誤哦~請輸入正確的月份/n");
            printf ("請輸入想要查詢的年月(格式如2012 12):");
        }
    }while(1>month||month>12);
    printf("=====================%d年%d月======================/n",year,month);
    if (judgement(year))
    {
        day_of_month[1]=29;
    }
    else day_of_month[1]=28;
    first_week = show_week(year,month,1);
    printf ("Sun/tMon/tTue/tWed/tThu/tFri/tSat/n");
    for (x=1;x<=first_week;x++)
    {
        printf("/t");
        if (x%7==0) printf ("/n");
    }
    for (k=1;k<=day_of_month[month-1];k++)
    {
        printf("%d/t",k);
        if (x%7==0) printf ("/n");
        x++;
    }
    printf("/n");
}
/************************************第三部分**************************************************/
int year_before_sumdays (int year,int month, int day)
{
    int days=0 ,i,judgement1;
    int temp_day=0 ,sum_days;       //
    //printf ("%d,%d/n",current_year,current_month);
    judgement1=judgement(year);
    /*===================比當前少=====================*/
    if (year < current_year )
    {
        for (i = year+1;i < current_year ;i++)     
        {
            if (judgement(i))
            {
                days=days+356;
            }
            else days+=355;
        }
        for (i = month+1;i<=12;i++)
        {
            days=days+day_of_month[i-1];
        }
        days = days + day_of_month[month-1]-day;           //指定日子距離當年結束還有多少天
        //printf("去年還有%d/n",days);
        for (i = 0;i < current_month-1;i++ )           
        {  
            if (judgement1)
            {
                day_of_month[1]=29;
            }
            temp_day = temp_day + day_of_month[i];
        }
        //當前日子是這一年的多少天
        temp_day = temp_day + current_day;
        //printf("今天是第%d天/n",temp_day);
        sum_days=temp_day + days ;
    }
    /*===================比當前多=====================*/
    if (year > current_year )
    {
        for (i =current_year+1;i < current_year ;i++)     
        {
            if (judgement(i))
            {
                days=days+356;
            }
            else days+=355;
        }
        for (i = current_month+1;i<=12;i++)
        {
            days=days+day_of_month[i-1];
        }
        days = days + day_of_month[month-1]-current_day;           //指定日子距離當年結束還有多少天
        //printf("去年還有%d/n",days);
        for (i = 0;i <month-1;i++ )           
        {  
            if (judgement1)
            {
                day_of_month[1]=29;
            }
            temp_day = temp_day + day_of_month[i];
        }
        //當前日子是這一年的多少天
        temp_day = temp_day + day;
        //printf("今天是第%d天/n",temp_day);
        sum_days=temp_day + days ;
    }
    /*===================比當前一樣=====================*/
    if (year == current_year )
    {
        if(month <current_month)
        {
            for (i=month+1;i<current_month;i++)
            {
                if (judgement1)
                {
                    day_of_month[1]=29;
                }
                days = days + day_of_month[i];
            }
            sum_days = days + current_day + day_of_month[month-1] - day ;
        }
        if (month>current_month)
        {
            for (i=current_month+1;i<month;i++)
            {
                if (judgement1)
                {
                    day_of_month[1]=29;
                }
                days = days + day_of_month[i];
            }
            sum_days = days + day + day_of_month[month-1] - current_day ;
            printf("%d/n",days);
        }
        if (month==current_month)
        {
            sum_days= abs(day-current_day);
        }
    }
    return sum_days ;
}
void print(int year,int month,int day)
{
    int week;
    printf ("請輸入想要查詢的年月(格式如2012 12 12 ):");
    do
    {
        scanf ("%d %d %d",&year,&month,&day);
        if (judgement(year))
        {
            day_of_month[1]=29;
        }
        printf("/n");
        if (day<=0 || day >day_of_month[month-1])
            printf ("%d月沒有%d,請重新輸入(格式如2012 12 12 ):",month,day);
    }while(day<=0 || day >day_of_month[month-1]);
    week=show_week (year,month ,day);
    printf("/n");
    switch(month)//判斷查找天是否陽歷節日先由月份判斷是否有節日的月份再由日判斷是否為節日
    {
    case 1:switch(day)
           {
    case 1:printf("元旦") ;break;
    default:printf("不是陽歷節日");
           }break;
    case 2:switch(day)
           {
    case 14:printf("情人節(Valentines Day)");break;
    default:printf("不是陽歷節日");
           }break;
    case 3:switch(day)
           {
             case 8:printf("婦女節¨(Women's Day)");break;
             case 12:printf("植樹節(Arbor Day)");break;
             default:printf("不是陽歷節日");
           }break;
    case 4:switch(day)
           {
             case 1:printf("愚人節(April Fools Day)");break;
             case 5:printf("清明節(Tomb-sweeping Day)");break;
             default:printf("不是陽歷節日");
           }break;
    case 5:switch(day)
           {
    case 1:printf("勞動節(Labor Day)");break;
    case 4:printf("中國青年節(Chinese Youth Day)");
    default:printf("不是陽歷節日");
           }break;
    case 6:switch(day)
           {
    case 1:printf("兒童節(Children's Day)");break;
    default:printf("不是陽歷節日");
           }break;
    case 8:switch(day)
           {
    case 1:printf("建軍節(the Army's Day)");break;
    default:printf("不是陽歷節日");
           }break;
    case 9:switch(day)
           {
    case 10:printf("教師節(Teacher's Day)");break;
    default:printf("不是陽歷節日");
           }break;
    case 10:switch(day)
            {
    case 1:printf("國慶節(National Day)");break;
    case 31:printf("萬圣節(Helloween Day)");break;
    default:printf("不是陽歷節日");
            }break;
    case 12:switch(day)
            {
    case 25 :printf("圣誕節(Christmas Day)");break;
    default:printf("不是陽歷節日");
            }break;
    }
    printf("/n");
    printf("%d年%d月%d號是:",year,month,day);
    switch(week)//判斷所查找天是星期幾
    {
    case 0:printf("Sunday");break;
    case 1:printf("Monday");break;
    case 2:printf("Tuesday");break;
    case 3:printf("Wednesday");;break;
    case 4:printf("Thursday");break;
    case 5:printf("Friday");break;
    case 6:printf("Saturday");break;
    }
    printf("/n");
    printf("距離今天有%d天/n",year_before_sumdays ( year, month, day));
    printf("/n");
}
/********************************************************************************************/
void main ()
{
    int choice,year,month,day,flag=1;
    char c , k;
    for(;1;)//顯示程序菜單,為永真,每次查找完回到程序菜單ì
    {
        printf("===================================菜單選項===================================/n");
        printf("請選擇:/n");
        printf("* * * * * * * *               1.查找某一年的年歷              * * * * * * * */n");
        printf("* * * * * * * *               2.查找某一月的月歷              * * * * * * * */n");
        printf("* * * * * * * *               3.查找某一天                    * * * * * * * */n");
        printf("* * * * * * * *               0.退出                          * * * * * * * */n");
        printf("==============================================================================/n");
        printf("請輸入您的選擇:   ");
        do
        {
            if (flag)
            {
            c=getche();
            printf("/n");
            printf("確定選擇%c嗎? (y/Y )或者(n/N):   ",c);
            }  
            if (flag )
            {
            k=getche();
        //  printf("/n");
            }
            if (k == 'y' || k == 'Y')
            {
                printf("/n");
                if (c=='/n')
                {
                    printf("/n");
                    printf("輸入有誤,請輸入數字/n");
                    printf("/n");
                    printf("請輸入您的選擇:   ");
                }
                else if (!isdigit(c))
                {
                    printf("/n");
                    printf("輸入有誤,請輸入數字/n");
                    printf("/n");
                    printf("請輸入您的選擇:   ");
                }
                else if (isdigit(c))
                {
                    choice = c-'0' ;
                    if (choice < 0 || choice > 3 )
                    {
                        printf("輸入有誤,請輸入0-3之間的數字/n");
                    }
                    else break ;
                }
            }
            else if (k=='n' || k=='N')
            {
                printf("/n");
                printf("你選擇了否,請重新輸入選項:   ");
                flag=1;
            }
             if ((k != 'y'&& k!='Y'&& k!= 'n'&& k!='N'))
            {
                 printf("/n");
                printf("請輸入y/n:   ");
                flag=0;
                if (flag == 0)
            {
            k=getche();
            printf("/n");
            //getchar();
            }
            }
        }while(1);
        if (choice==1)
        {
            print_year(year);
            cls_screen();
        }
        else if (choice==2)
        {
            print_year_month ();
            cls_screen();
        }
        else if (choice==3)
        {
            get_current_time();
            print(year,month,day);
            cls_screen();
        }
        else if (choice==0)
            break;
        else
        {
            printf ("您的輸入有誤,請重新輸入/n");
        }
    }
}

以上就是本文所述的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美综合另类中字| 尤物yw午夜国产精品视频| 久久99青青精品免费观看| 国产精品久久久久久久久久小说| 欧美电影免费观看网站| 黑人欧美xxxx| 亚洲第一偷拍网| 国产精品视频自在线| 亚洲最大成人在线| 色悠久久久久综合先锋影音下载| www.欧美精品| 国产一区红桃视频| 国产在线久久久| 国产精品视频在线观看| 亚洲福利影片在线| 午夜精品久久17c| 亚洲精品v天堂中文字幕| 国产成人精品最新| 国产一区二区三区网站| 久久久久国产精品免费网站| 美女999久久久精品视频| 亚洲综合国产精品| 日韩精品极品在线观看| 久久99国产精品久久久久久久久| 国产精品久久视频| 国产精品偷伦免费视频观看的| 色悠悠久久久久| 欧美大人香蕉在线| 这里只有精品视频在线| 精品国内产的精品视频在线观看| 亚洲影院色在线观看免费| 欧美精品在线第一页| 久久在线观看视频| 国产97在线视频| 国产69精品久久久久9999| 亚洲精品v欧美精品v日韩精品| 国产人妖伪娘一区91| 国产一区在线播放| 91免费精品国偷自产在线| 午夜精品国产精品大乳美女| 热re99久久精品国产66热| 色青青草原桃花久久综合| 欧美高清一级大片| 亚洲国产婷婷香蕉久久久久久| 久久久女女女女999久久| 亚洲a在线观看| 国产亚洲a∨片在线观看| 国产欧美日韩中文| 中文字幕日韩欧美在线视频| www.精品av.com| 成人中文字幕+乱码+中文字幕| 午夜精品久久久久久久99黑人| 欧美精品一区二区免费| 国产欧美日韩免费| 久久免费视频观看| 成人性生交大片免费观看嘿嘿视频| 亚洲一区中文字幕| 国产精品自产拍高潮在线观看| 91精品国产自产在线老师啪| 国产精品福利无圣光在线一区| 日韩av手机在线看| 欧美在线观看日本一区| 国产日韩欧美夫妻视频在线观看| 久久精品久久精品亚洲人| 奇米影视亚洲狠狠色| 欧美亚洲视频一区二区| 成人乱人伦精品视频在线观看| 精品国产欧美一区二区三区成人| 一区二区在线视频播放| 国产亚洲精品久久久优势| 日韩视频免费大全中文字幕| 亚洲精品电影在线观看| 永久免费毛片在线播放不卡| 中文亚洲视频在线| 国产在线久久久| 国产在线精品一区免费香蕉| 欧美在线www| 亚洲综合中文字幕在线观看| 欧洲成人在线观看| 色爱精品视频一区| 国产成人avxxxxx在线看| 国产精品久久97| 成年无码av片在线| 欧美一区二区视频97| 国产精品日韩久久久久| 国内精品久久久久影院 日本资源| 久久综合亚洲社区| 欧美激情视频在线免费观看 欧美视频免费一| 中文字幕不卡av| 日韩视频中文字幕| 国产精品自产拍在线观看中文| 久久精品国产清自在天天线| 91在线观看免费高清| 日韩人体视频一二区| 亚洲天堂精品在线| 国产精品免费一区| 国产精品久久久久久av福利软件| 久久精品视频在线| 欧美激情网站在线观看| 久久久久久久久久久av| 在线播放国产一区中文字幕剧情欧美| 久久久免费电影| 欧美三级欧美成人高清www| 日韩免费观看高清| 欧美激情一区二区三区久久久| 亚洲欧洲一区二区三区久久| 91爱视频在线| 欧美成人黄色小视频| 国产一区二区三区直播精品电影| 欧美日韩性视频| 欧美激情综合色综合啪啪五月| 久久久国产精品免费| 国产精品av在线| 欧美激情videos| 欧美激情免费看| 久久99视频免费| 激情成人在线视频| 欧美在线视频在线播放完整版免费观看| 欧美中在线观看| 国产精品成人国产乱一区| 国产在线一区二区三区| www.欧美精品一二三区| 色在人av网站天堂精品| 国产精品高清免费在线观看| 亚洲欧美精品suv| 欧美日韩裸体免费视频| 日韩电影免费观看在线观看| 国产精品视频永久免费播放| 国产精品久久久久91| 亚洲二区在线播放视频| 国产主播在线一区| 亚洲图片欧美午夜| 国产精品综合久久久| 日韩av综合中文字幕| 另类天堂视频在线观看| 亚洲少妇激情视频| 欧美激情精品久久久久久黑人| 国产一区二区三区在线观看网站| 欧美日韩不卡合集视频| 日韩中文有码在线视频| 久久久噜噜噜久久| 成人国内精品久久久久一区| 欧美大成色www永久网站婷| 欧美整片在线观看| 亚洲国产精品人人爽夜夜爽| 一个人看的www久久| 精品女厕一区二区三区| 久久69精品久久久久久国产越南| 亚洲国产另类 国产精品国产免费| 欧洲日本亚洲国产区| 日本精品一区二区三区在线播放视频| 欧美电影免费在线观看| 亚洲国产天堂网精品网站| 亚洲japanese制服美女| 精品电影在线观看| 亚洲精品之草原avav久久| 欧美视频13p| 91av在线播放| 国产一区二区黄| 国产精品入口免费视频一| 亚洲无限乱码一二三四麻| 久久精视频免费在线久久完整在线看| 日韩精品黄色网| 国产精品久久久精品|