您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“C語言怎么實(shí)現(xiàn)萬年歷程序”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“C語言怎么實(shí)現(xiàn)萬年歷程序”吧!
代碼如下:
#include <stdio.h> #include <stdlib.h> #include <time.h> #include<conio.h> typedef struct today { int day; int month; int year; } today; int day_cankao[2][13]={ {0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31} }; char *week[]= { "Sun","Mon","Tue","Wen","Thu","Fir","Sat" }; struct tm *todayuse;//struct tm定義c語言中time的結(jié)構(gòu)體 today today_current; int getweekday(today today_usenow) { // w = y + [y/4] + [ c/4 ] – 2c+ [13 * (m+1) / 5] + d – 1 //其中,c是年份的前兩位,y是年份的后兩位,m是月份,d是日期,這里需要注意的是,如果是1月和2月,c和y需要按照上一年來取值。 int w=0; int year=today_usenow.year; int month=today_usenow.month; if(today_usenow.month==1 || today_usenow.month==2) { month+=12; year--; } int y=year%100; int c=year/100; int m=month; w=y + y/4 + c/4 - 2*c+ 26* (m+1) / 10 + today_usenow.day -1; while(w<0) { w+=7; } return (w%7); } int is_leap(int year) { if( (year%4==0 && year%100!=0) || (year%400==0)) { return 1; } else return 0; } int getmonthdays(int year,int month) { return day_cankao[is_leap(year)][month]; } void print_calendar(today today_usenow) { printf("---------------------------\n"); printf("Sun Mon Tue Wen Thu Fir Sat\n"); int firstday=0; today today_usehere=today_usenow; today_usehere.day=1; int day=getweekday(today_usehere);//日期前 //int daysuseafter int days=getmonthdays(today_usenow.year,today_usenow.month);//月總數(shù) // 0 1 2 3 4 5 6 // 6 int daysbefore=0; if((today_usenow.month-1)==0) { //現(xiàn)在為1月,去年的十二月份 daysbefore=getmonthdays(today_usenow.year-1,12); // printf("%d is",daysbefore); } else { daysbefore=getmonthdays(today_usenow.year,today_usenow.month-1); } int daysbefoeit=daysbefore-day+1; printf(""); int count=1; if(day==0) { daysbefoeit-=7; for(int i=0;i<day+7;i++) { printf("%d ", daysbefoeit); daysbefoeit++; } printf("\n"); count=7; } else { for(int i=0;i<day;i++) { printf("%d ", daysbefoeit); daysbefoeit++; } count=day; } int m=1; for(int i=0;i<=6-day;i++) { if(m<10) { printf(" %d ",m); } else { printf("%d ",m); } m++; } printf("\n"); if(day==0) { count=14; } else { count=7; } int hang=0; while(m<=days) { if(m<10) { printf(" %d ",m); } else { printf("%d ",m); } hang++; if(hang==7) { printf("\n"); hang=0; } m++; } if(day==0) { count=days+7; } else { count=day+days; } int newmonth=1; for(int j=hang;j<7;j++) { if(newmonth<10) { printf(" %d ",newmonth); } else { printf("%d ",newmonth); } newmonth++; } printf("\n"); count=count+7-hang; for(int j=0;j< 42-count;j++) { if(newmonth<10) { printf(" %d ",newmonth); } else { printf("%d ",newmonth); } newmonth++; } } //int getmonth int main() { time_t timep; struct tm *p; time(&timep); p =localtime(&timep); //此函數(shù)獲得的tm結(jié)構(gòu)體的時(shí)間,是已經(jīng)進(jìn)行過時(shí)區(qū)轉(zhuǎn)化為本地時(shí)間 //p = gmtime(&timep); //把日期和時(shí)間轉(zhuǎn)換為格林威治(GMT)時(shí)間的函數(shù) /*printf("Year: %d\n", 1900+p->tm_year); printf("Month: %d\n", 1+p->tm_mon); printf("Day: %d\n", p->tm_mday); printf("Hour: %d\n", p->tm_hour); printf("Minute: %d\n", p->tm_min); printf("Second: %d\n", p->tm_sec); printf("Weekday: %d\n", p->tm_wday); printf("Days: %d\n", p->tm_yday); printf("Isdst: %d\n", p->tm_isdst); */ //printf("%d",day_cankao[0][12]); today_current.year=1900+p->tm_year; today_current.month=1+p->tm_mon; today_current.day= p->tm_mday; today use=today_current; int c1,c2; printf(" %d 年 %d 月 %d 日\n",today_current.year,today_current.month,today_current.day); print_calendar(today_current); while(1) { c1 = getch(); if(c1==27) { printf("您已經(jīng)退出系統(tǒng)"); break; } if(c1==110) { printf(" %d 年 %d 月 %d 日\n",today_current.year,today_current.month,today_current.day); //printf("%d \n",getweekday(today_current)); print_calendar(today_current); use=today_current; continue; } c2 = getch(); //printf( "%d %d",c1,c2); if(c1==224 && c2==72) { use.month+=1; if(use.month==13) { use.month=1; use.year+=1; } printf(" %d 年 %d 月 %d 日\n",use.year,use.month,use.day); //printf("%d \n",getweekday(today_current)); print_calendar(use); } if(c1==224 && c2==80) { use.month-=1; if(use.month==0) { use.month=12; use.year-=1; } printf(" %d 年 %d 月 %d 日\n",use.year,use.month,use.day); //printf("%d \n",getweekday(today_current)); print_calendar(use); } if(c1==224 && c2==75) { use.year-=1; printf(" %d 年 %d 月 %d 日\n",use.year,use.month,use.day); //printf("%d \n",getweekday(today_current)); print_calendar(use); } if(c1==224 && c2==77) { use.year+=1; printf(" %d 年 %d 月 %d 日\n",use.year,use.month,use.day); //printf("%d \n",getweekday(today_current)); print_calendar(use); } printf("\n"); printf("按上下按鈕,進(jìn)行月份變換\n"); printf("按左右按鈕,進(jìn)行年份變換\n"); printf("按ESC按鍵,退出系統(tǒng)\n"); printf("按N按鈕,查看當(dāng)前日期\n"); } //上 224 72 //下 224 80 //左 224 75 //右 224 77 //esc 27 // n 110 return 0; }
到此,相信大家對(duì)“C語言怎么實(shí)現(xiàn)萬年歷程序”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。