a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

C語言實現的一個萬年歷小程序

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

該程序簡單地輸入一個年份(1901年之后的年份),隨后程序輸出該年份十二個月的日歷。

#include<stdio.h>#define Mon   1#define Tues  2#define Wed   3#define Thur  4#define Fri   5#define Sat   6#define Sun   0#define January_days   31#define February_days   28#define March_days    31#define April_days    30#define May_days     31#define June_days     30#define July_days     31#define August_days    31#define September_days  30#define October_days   31#define November_days   30#define December_days   31#define first1month January_days#define first2month January_days+February_days#define first3month January_days+February_days+March_days#define first4month January_days+February_days+March_days+April_days#define first5month January_days+February_days+March_days+April_days+May_days#define first6month January_days+February_days+March_days+April_days+May_days+June_days#define first7month January_days+February_days+March_days+April_days+May_days+June_days /	         +July_days#define first8month January_days+February_days+March_days+April_days+May_days+June_days /	         +July_days+August_days#define first9month January_days+February_days+March_days+April_days+May_days+June_days /	         +July_days+August_days+September_days#define first10month January_days+February_days+March_days+April_days+May_days+June_days /	         +July_days+August_days+September_days+October_days#define first11month January_days+February_days+March_days+April_days+May_days+June_days /	         +July_days+August_days+September_days+October_days+November_daysint known_weekday = Tues;int known_year = 1901;int konwn_month = 1;int known_day = 1;int day_count(int month){		switch(month)	{		case 1: return 0;break;		case 2: return first1month;break;		case 3: return first2month;break;		case 4: return first3month;break;		case 5: return first4month;break;		case 6: return first5month;break;		case 7: return first6month;break;		case 8: return first7month;break;		case 9: return first8month;break;		case 10: return first9month;break;		case 11: return first10month;break;		case 12: return first11month;break;	}}/*char * month_name(int month){	switch(month)	{		case 1:			return "January";			break;		case 2:			return "February";			break;		case 3:			return "March";			break;		case 4:			return "April";			break;		case 5:			return "May";			break;		case 6:			return "June";			break;		case 7:			return "July";			break;		case 8:			return "August";			break;		case 9:			return "September";			break;		case 10:			return "October";			break;		case 11:			return "November";			break;		case 12:			return "December";			break;		default:			break;	}}*/char * month_name(int month){	switch(month)	{		case 1:			return "一月";			break;		case 2:			return "二月";			break;		case 3:			return "三月";			break;		case 4:			return "四月";			break;		case 5:			return "五月";			break;		case 6:			return "六月";			break;		case 7:			return "七月";			break;		case 8:			return "八月";			break;		case 9:			return "九月";			break;		case 10:			return "十月";			break;		case 11:			return "十一月";			break;		case 12:			return "十二月";			break;		default:			break;	}}/*按格式打印某年某月名稱*/void first_line_print(int month, int year){	//printf("%20s %d /n",month_name(month),year);	printf("%8d年 %s /n",year, month_name(month));}/*按格式打印星期名稱*/void week_print(){	//printf("%-6s%-6s%-6s%-6s%-6s%-6s%-6s/n","Sun.", "Mon.", "Tues.", "Wed.", "Thur.", "Fri.", "Sat.");	printf("%-3s%-3s%-3s%-3s%-3s%-3s%-3s/n","日", "一", "二", "三", "四", "五", "六");}/*計算該年該月份與已知日子之間的距離天數*/int date_distance_count(int month, int year){	int leap_year_count = 0;	int i;	int distance;	if (year > known_year)	{		for (i=known_year; i<year; i++)		{			if(((i%4 == 0) && (i%100 != 0) ) || (i%400 == 0))			{				leap_year_count++;					}		}		if (month > 2)		{			if(((year%4 == 0) && (year%100 != 0) ) || (year%400 == 0))			{				leap_year_count++;					}		}	}	else	if (year == known_year)	{		if (month > 2)		{			leap_year_count = 1;		}	}		distance = (year - known_year)*365 + leap_year_count + day_count(month);	return distance;	}/*確定該月份第一天是星期幾*/int makesure_firstday_weekday(int month, int year){	int date_distance = 0;	int weekday;	date_distance = date_distance_count(month, year);	weekday = (known_weekday + date_distance)%7;	return weekday;	}/*依次打印出該月份的日子*/void print_in_turn(int month, int firstday, int year){	int i = 1;	int weekday;	switch(firstday)	{		case Sun:			break;		case Mon:			printf("%-3s","");			break;		case Tues:			printf("%-6s","");			break;		case Wed:			printf("%-9s","");			break;		case Thur:			printf("%-12s","");			break;		case Fri:			printf("%-15s","");			break;		case Sat:			printf("%-18s","");			break;	}	switch(month)	{		case 1:		case 3:		case 5:		case 7:		case 8:		case 10:		case 12:		{			for(i=0; i<31; i++)			{				weekday = (firstday + i)%7;				printf("%-3d",i+1);								if(weekday == Sat)				{					printf("/n");				}								}			break;		}		case 2:		{			if(((year%4 == 0) && (year%100 != 0) ) || (year%400 == 0)) /*閏年*/			{				for(i=0; i<29; i++)				{					weekday = (firstday + i)%7;					printf("%-3d",i+1);										if(weekday == Sat)					{						printf("/n");					}									}				break;			}			else /*平年*/			{				for(i=0; i<28; i++)				{					weekday = (firstday + i)%7;					printf("%-3d",i+1);										if(weekday == Sat)					{						printf("/n");					}									}				break;			}				}		case 4:		case 6:		case 9:		case 11:		{			for(i=0; i<30; i++)			{				weekday = (firstday + i)%7;/*計算該天是星期幾*/				printf("%-3d",i+1);								if(weekday == Sat)				{					printf("/n");/*如果是星期六,則換行*/				}								}			break;		}				}}void date_print(int month, int year){	int firstday;	firstday = makesure_firstday_weekday(month, year);	print_in_turn(month, firstday, year);	printf("/n");}void main_month(int month, int year){	first_line_print(month, year);	week_print();	date_print(month, year);	printf("/n/n");}void main_calendar(int year){	int i;	for(i=1; i<=12; i++)	{		main_month(i, year);	}}int main(){	int year;	printf("請輸入年份:year = ");	scanf("%d",&year);	printf("/n");	while(year < 1902)	{		printf("請輸入大于1901的年份/n");		printf("請輸入年份:year = ");		scanf("%d",&year);		printf("/n");	}		main_calendar(year);		scanf(" ");	return 0;}

運行效果圖:

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

圖片精選

主站蜘蛛池模板: 福利精品在线观看 | 精品欧美一区二区在线观看 | 国产成人精品亚洲7777 | 亚洲成人免费视频 | 久久se精品一区精品二区 | 青青草av| 黄色av免费观看 | 久久国产精品一区 | 在线播放91 | 免费观看国产黄色 | 青青草久| 国产精品网址 | 81精品国产乱码久久久久久 | 一级毛片免费在线 | 欧美一区二区三区在线 | 精品一区亚洲 | 日韩视频免费在线观看 | 色综合网址 | 久久精品性| 欧美国产高清 | 精品久久网 | 亚洲一二三四在线 | 日日干日日操 | 国产一区二区三区在线免费观看 | 日韩欧美中文在线 | 日本精品一区 | 日本欧美久久久久 | 成人亚洲在线观看 | 日韩在线www | 宅宅久久 | 亚洲精品视频在线看 | 国产在线第一页 | 久久综合狠狠综合久久综合88 | 中文字幕亚洲一区 | 亚洲热在线视频 | 四虎成人网 | 亚洲专区在线播放 | 亚洲第一页中文字幕 | 亚洲乱码一区二区三区在线观看 | 久久伊人操 | 欧美成人高清视频 |