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

首頁 > 編程 > C > 正文

C語言如何實現萬年歷小程序

2020-02-24 14:31:24
字體:
來源:轉載
供稿:網友

學習C語言可以使我們實現很多小程序,比如2048小游戲、萬年歷小程序等,那么你知道C語言如何實現萬年歷小程序嗎?現在我們就跟著武林小編提供的內容一起學習吧。

該程序簡單地輸入一個年份(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;}

運行效果圖:

以上就是C語言如何實現萬年歷小程序的內容,是不是覺得很簡單呢?做C語言日期計算的朋友可以參考下。

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

圖片精選

主站蜘蛛池模板: 一二三区字幕免费观看av | 午夜网址 | 91福利在线导航 | 日韩电影免费 | 欧美在线观看在线观看 | 本道综合精品 | 国产精品8 | 久久久久久久久久久免费 | 成人日批视频 | 在线视频一二区 | 在线色国产| 激情欧美日韩一区二区 | 三级毛片在线 | 中文字幕精品一区 | 久久精品视频网站 | 欧美片网站 | 97国产精品人人爽人人做 | 欧日韩不卡在线视频 | 精品国产黄色 | 国产小视频免费观看 | 国产三区在线观看 | 涩涩视频在线看 | 久久精品免费电影 | 国产精品免费av | 日韩精品一区二区三区老鸭窝 | 成人区一区二区三区 | 亚洲永久免费 | 欧美日韩视频网站 | 国产精品久久久久aaaa九色 | 精品欧美国产 | 日韩在线播放欧美字幕 | 天堂精品一区二区三区 | 国产高清在线观看 | 黄色污污在线观看 | 久久久免费av | 国产精品久久久久久一级毛片 | 日韩免费福利视频 | 久久久久亚洲 | 毛片黄色| 免费黄色在线观看 | 亚洲二区视频 |