`
javaboy2006
  • 浏览: 186306 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

c万年历

阅读更多
一段以前写的老代码。
#include<stdio.h>												//万年历查询  2006-5-15
#include<stdlib.h>
#include <conio.h>

void PrintSpace(int SpaceNum)									//控制输出空格函数
{
for(int i=0;i<SpaceNum;i++)
	printf(" ");
}

void main()
{
int year;
int day[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int week;
int TempWeek;
char MonthName[12][10]={"January","February","March","April","May","June","July","August","September","October","November","December"};
char InputChar;

do
{
	printf("\n    ------------------------- \n");				//主界面
	printf("   |\t\t\t     |\n");
	printf("   |       My Calendar       |\n");
	printf("   |        2006-5-15        |\n");
	printf("   |\t\t\t     |\n");
	printf("    ------------------------- \n\n");

	do{															//循环接受输入
		printf(" Please enter a year:(format xxxx)");
		scanf("%d",&year);

		if(year>=0)
			{	
				TempWeek=year-1+(year-1)/4-(year-1)/100+(year-1)/400+1;
				break;
			}
		else
			printf(" Enter year error,please enter again!(year>=0)\n\n");	
	}
	while(1);

	system("cls");												//清屏

	printf("\n  ------------------------- \n");
	printf(" |\t\t\t   |\n");
	printf(" |       My Calendar       |\n");
	printf(" |        2006-5-15        |\n");
	printf(" |\t\t\t   |\n");
	printf("  ------------------------- \n");

	if((year%4==0&&year%100!=0)||(year%4==0&&year%400==0))		//如果输入为闰年则二月为29天
		day[1]++;

	printf("\n  Calendar of the year %d\n\n",year);

	for(int MonthCount=0;MonthCount<12;MonthCount++)			//大循环输出十二个月日历
	{
		if(MonthCount==0)										//确定当月第一天星期数
			week=TempWeek%7;
		else if(MonthCount==1)
			week=(TempWeek+day[0])%7;
		else if(MonthCount==2)
			week=(TempWeek+day[0]+day[1])%7;
		else if(MonthCount==3)
			week=(TempWeek+day[0]+day[1]+day[2])%7;
		else if(MonthCount==4)
			week=(TempWeek+day[0]+day[1]+day[2]+day[3])%7;
		else if(MonthCount==5)
			week=(TempWeek+day[0]+day[1]+day[2]+day[3]+day[4])%7;
		else if(MonthCount==6)
			week=(TempWeek+day[0]+day[1]+day[2]+day[3]+day[4]+day[5])%7;
		else if(MonthCount==7)
			week=(TempWeek+day[0]+day[1]+day[2]+day[3]+day[4]+day[5]+day[6])%7;
		else if(MonthCount==8)
			week=(TempWeek+day[0]+day[1]+day[2]+day[3]+day[4]+day[5]+day[6]+day[7])%7;
		else if(MonthCount==9)
			week=(TempWeek+day[0]+day[1]+day[2]+day[3]+day[4]+day[5]+day[6]+day[7]+day[8])%7;
		else if(MonthCount==10)
			week=(TempWeek+day[0]+day[1]+day[2]+day[3]+day[4]+day[5]+day[6]+day[7]+day[8]+day[9])%7;
		else
			week=(TempWeek+day[0]+day[1]+day[2]+day[3]+day[4]+day[5]+day[6]+day[7]+day[8]+day[9]+day[10])%7;

		printf("\t  %s %d\n",MonthName[MonthCount],MonthCount+1);
		printf(" Mon Tue Wed Thu Fri Sat Sun\n");
		printf("=============================\n");

		if(week==1)												//根据当月第一天星期数调用输出空格函数控制输出空格数
			PrintSpace(2);
		else if(week==2)
			PrintSpace(6);
		else if(week==3)
			PrintSpace(10);
		else if(week==4)
			PrintSpace(14);	
		else if(week==5)
			PrintSpace(18);
		else if(week==6)
			PrintSpace(22);
		else
			{
				PrintSpace(26);
				week=7;
			}

		for(int i=1,int count=week;i<=day[MonthCount];i++)		//输出当月日历,计数器当月第一天星期数初始化
			{
				if(count>7)								        //计数器为7时控制换行并重新归1
					{
						printf("\n");
						printf("  ");
						count=1;
					}
				if(i<10)
					printf("%d   ",i);					        //天数为1位数时输出3个空格
				else
					printf("%d  ",i);					        //天数为2位数时输出2个空格

				count++;
			}

		printf("\n\n");
	}

	day[1]=28;													//将本次输出年历的二月重新归为28天为下次年历输出做准备

	printf(" Continue print other year?(y/n)");					//询问用户继续或退出程序
	InputChar=getch();

	system("cls");

	if(InputChar=='n'||InputChar=='N')
		{
			printf("\n   ------------------------- \n");
			printf("  |\t\t\t    |\n");
			printf("  |       My Calendar       |\n");
			printf("  |        2006-5-15        |\n");
			printf("  |\t\t\t    |\n");
			printf("   ------------------------- \n\n");

			printf("     Program exit,bye bye!\n\n");
			exit(1);
		}
}while(1);

}
分享到:
评论

相关推荐

    单片机c语言万年历程序 LCD显示

    单片机c语言万年历程序 LCD显示 #define uint unsigned int #define uchar unsigned char sbit DS1302_CLK = P3^6; //实时时钟时钟线引脚 sbit DS1302_IO = P3^7; //实时时钟数据线引脚 sbit DS1302_RST = P1^4...

    c语言万年历源码(完整源码)

    c语言万年历源码(完整源码)c语言万年历源码(完整源码)c语言万年历源码(完整源码)c语言万年历源码(完整源码)c语言万年历源码(完整源码)c语言万年历源码(完整源码)c语言万年历源码(完整源码)c语言万年历...

    C语言万年历系统简单版

    ### C语言万年历系统简单版 #### 一、项目概述 本项目是一个基于C语言编写的简单万年历程序,旨在帮助用户查询特定日期是星期几,以及展示指定月份或整年的日历视图。该程序对于C语言初学者来说具有较高的学习价值...

    C语言万年历

    ### C语言万年历知识点解析 #### 一、程序功能概述 本程序为一个基于C语言编写的万年历程序,其主要功能是根据用户输入的年份来显示该年的两个半年的日历视图。具体而言,用户输入年份后,程序会计算并输出当年上...

    c语言万年历源码.zip

    c语言万年历源码.zip

    C语言 万年历

    《C语言实现万年历详解》 在编程领域,实现一个万年历是常见的练习,它可以帮助我们理解和应用日期计算、循环控制等基础知识。本文将详细介绍如何使用C语言编写一个万年历程序,以实现输入年份和月份后打印对应月份...

    c语言 万年历

    用c语言编写的万年历小程序 可以输入年月查询月历

    C语言 万年历 阴历阳历

    C语言实现的万年历课程设计,希望可以与大家共同学习

    C语言万年历,农历,节日,星期

    《C语言实现万年历:农历、节日与星期算法详解》 在计算机编程领域,C语言因其高效、灵活和广泛的应用而备受青睐。本项目利用C语言开发了一款功能丰富的万年历程序,涵盖了农历、星期计算以及节日显示等多个方面。...

    c语言万年历课程设计

    C语言万年历课程设计 本课程设计的主要目的是设计一个使用C语言编写的万年历系统,实现查看月日历和年日历的功能。下面是该课程设计的详细知识点解释: 一、函数设计 1. `menu()` 函数:该函数用于显示菜单选项,...

    c语言万年历程序

    根据给定的C语言万年历程序的代码和描述,我们可以从中提炼出多个重要的IT知识点,尤其是关于日期计算、逻辑处理以及用户交互方面的知识。以下是对这些知识点的详细解析: ### 1. 闰年判断与日历年份的天数计算 在...

    之前 c语言万年历 文章里面所实际用到的 日历文本 以及原始的 日历数据压缩包

    这里提到的“c语言万年历”是一个使用C语言编写的程序,可以显示从公元1年到公元9999年的日期信息,涵盖了所谓的“万年”的时间范围。这个程序依赖于特定的日历数据来计算和展示日期。 首先,我们来讨论“wnl.csv”...

    c语言万年历源代码

    综上所述,这段C语言万年历源代码展示了如何结合C语言的基础语法和一些高级技术来开发一个简单的图形界面应用程序。通过学习这段代码,可以深入了解C语言在实际项目中的应用方式,特别是如何利用标准库和自定义函数...

    C语言万年历程序代码

    【C语言万年历程序代码】是一个在Visual C++(简称VC)环境下开发的应用程序,其主要目的是实现一个功能完善的万年历。这个程序能够帮助用户查询任何年份、月份及日期的相关信息,同时提供了友好的用户界面,使得...

    c语言万年历系统(纯c界面)

    总的来说,"c语言万年历系统(纯c界面)"是一个综合性的项目,涵盖了C语言的基础语法、数据结构、文件操作和算法应用等多个方面,对于学习和提升C语言编程技能非常有帮助。通过分析和实现这样一个系统,开发者不仅...

    C语言万年历查询系统

    ### C语言万年历查询系统知识点解析 #### 一、系统概述 万年历查询系统是基于C语言开发的一款小型应用程序,旨在为用户提供便捷的日历查询功能。此系统具有较高的实用性和灵活性,能够满足用户对特定日期或月份的...

    c语言万年历

    不错的c语言万年历例子,初学者可以研究下。

    c语言万年历源码.rar

    【标题】:“C语言万年历源码” 这个标题表明我们正在讨论的是一个用C语言编写的万年历程序的源代码。C语言是一种基础且强大的编程语言,它以其高效、简洁和灵活性著称,是许多系统级和嵌入式开发的首选语言。...

Global site tag (gtag.js) - Google Analytics