编写万年历系统

用C语言编写万年历系统

必须在TC2.0才可以使用
/*加载头文件*/
#include <stdio.h>
#include <bios.h>
#include <dos.h>
#include <conio.h>
/*定义常量*/
/*左移键*/
#define LEFT 0x4b00
/*右移键*/
#define RIGHT 0x4d00
/*下移键*/
#define DOWN 0x5000
/*上移键*/
#define UP 0x4800
/*向上翻页移键*/
#define PAGEUP 0x4900
/*向下翻页移键*/
#define PAGEDOWN 0x5100
/*小写字母q*/
#define QLOWER 0x1071
/*大写字母Q*/
#define QUPPER 0x1051
/*空格键*/
#define SPACE 0x3920
/*Escape键*/
#define ESC 0x011b
/*定义全局变量*/
struct date sysTime;
int currentYear;
int currentMonth;
int currentDay;
int n_currentMon;
int n_lastMon;
/*-----------自定义函数-------------------------*/
void checkDate();
int isLeapyear(int year);
int getWeek(int year,int month,int day);
void printSpace(int n);
void printSeparator();
void printUsage();
void printWeek();
void printWeek2(int week);
void showCalendar(int year,int month,int day);
void getKeyValue();
/*--------------------------------------------*/
/*检查日期有效性函数*/
void checkDate()
{
/*如果给定的日期中年份部分为负数或者0*/
if(currentYear<=0)
{
gotoxy(1,27);
printf("The year should be a positive number !\n");
gotoxy(1,28);
printf("Press any key to continue......");
getchar();
getchar();
/*以当前系统时间重新赋值*/
currentYear=sysTime.da_year;
currentMonth=sysTime.da_mon;
currentDay=sysTime.da_day ;
}
/*如果给定的日期中月份部分为负数,为0或者大于12*/
if(currentMonth>12||currentMonth<1)
{
gotoxy(1,27);
printf("The month should be a number between 1 and 12 !\n");
gotoxy(1,28);
printf("Press any key to continue......");
getchar();
getchar();
/*以当前系统时间重新赋值*/
currentYear=sysTime.da_year;
currentMonth=sysTime.da_mon;
currentDay=sysTime.da_day ;
}
/*如果给定的日期中天数部分为负数,为0或者大于31*/
if(currentDay>31||currentDay<1)
{
gotoxy(1,27);
printf("The day should be a number between 1 and 31 !\n");
gotoxy(1,28);
printf("Press any key to continue......");
getchar();
getchar();
/*以当前系统时间重新赋值*/
currentYear=sysTime.da_year;
currentMonth=sysTime.da_mon;
currentDay=sysTime.da_day ;
}
}
/*判断是否是闰年函数*/
int isLeapyear(int year)
{
/*闰年的判断:(1)year被4整除,并且year不被100整除
或(2)year被4整除,并且year被400整除*/
if(year%4==0&&year%100||year%400==0)
return 1 ;
else
return 0 ;
}
/*根据给定日期计算星期函数*/
int getWeek(int year,int month,int day)
{
int leapFlag;
int week;
int i ;
/*该数组用于保存每个月的天数*/
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int count=0 ;
/*判断给定年份是否是闰年*/
leapFlag=isLeapyear(year);
/*如果是闰年则2月份的日期应该29天*/
if(leapFlag==1)
a[2]++;
/*计算从给定年份的1月1日到给定月份的1号之间的天数*/
for(i=1;i<month;i++)
{
count+=a[i];
}
/*计算从给定年份的1月1日到给定日期之间的天数*/
count+=day;
/*计算星期*/
week=(year+1+(year-1)/4+(year-1)/100+(year-1)/400+count)%7 ;
return week ;
}
/*输出指定个数个空格函数*/
void printSpace(int n)
{
int i ;
for(i=0;i<n;i++)
printf(" ");
}
/*输出分隔线函数*/
void printSeparator()
{
int i ;
for(i=0;i<38;i++)
{
printf("=");
}
printf("\n");
}
/*输出使用方法函数*/
void printUsage()
{
gotoxy(45,3);
/*设定字体颜色*/
textcolor(YELLOW);
/*送格式化输出至屏幕*/
cprintf("-----------Usage-----------");
gotoxy(45,5);
textcolor(YELLOW);
cprintf("YEAR");
gotoxy(50,5);
printf(" Up key( ) to increase;\n");
gotoxy(50,7);
printf(" Down key( ) to decrease.\n");
gotoxy(45,9);
textcolor(YELLOW);
cprintf("MONTH:");
gotoxy(50,9);
printf(" Right key( ) to increase;\n");
gotoxy(50,11);
printf(" Left key( ) to decrease.\n");
gotoxy(45,13);
textcolor(YELLOW);
cprintf("DAY");
gotoxy(50,13);
printf(" PageDown key to increase;\n");
gotoxy(50,15);
printf(" PageUp key to decrease.\n" );
gotoxy(45,17);
textcolor(YELLOW);
cprintf("QUERY");
gotoxy(50,17);
printf(" Q/q key\n");
textcolor(YELLOW);
gotoxy(45,19);
cprintf("RESET");
gotoxy(50,19);
printf(" SPACE key.\n");
gotoxy(45,21);
textcolor(YELLOW);
cprintf("EXIT");
gotoxy(50,21);
printf(" Esc key\n");
gotoxy(59,5);
/*设置寄存器,表示在指定位置输出一次指定的字符*/
_CX=01;
_AH=0xa;
/*指定输出字符为向上的箭头*/
_AL=24;
/*产生一次中断,输出向上的箭头*/
geninterrupt(0x10);
gotoxy(61,7);
_CX=01;
_AH=0xa;
/*指定输出字符为向下的箭头*/
_AL=25;
geninterrupt(0x10);
gotoxy(62,9);
_CX=01;
_AH=0xa;
_AL=26;
/*指定输出字符为向右的箭头*/
geninterrupt(0x10);
gotoxy(61,11);
_CX=01;
_AH=0xa;
/*指定输出字符为向左的箭头*/
_AL=27;
geninterrupt(0x10);
/*还原字体颜色*/
textcolor(7);
}
/*根据系统日期输出星期函数*/
void printWeek()
{
int day ;
/*根据系统日期获得星期*/
day=getWeek(currentYear,currentMonth,currentDay);
textcolor(11);
/*输出星期,0表示星期天,1表示星期一......6表示星期六*/
if(day==0)
cprintf("%d-%d-%d,Sunday!",currentYear,currentMonth,currentDay);
if(day==1)
cprintf("%d-%d-%d,Monday!",currentYear,currentMonth,currentDay);
if(day==2)
cprintf("%d-%d-%d,Tuesday!",currentYear,currentMonth,currentDay);
if(day==3)
cprintf("%d-%d-%d,Wednesday!",currentYear,currentMonth,currentDay);
if(day==4)
cprintf("%d-%d-%d,Thursday!",currentYear,currentMonth,currentDay);
if(day==5)
cprintf("%d-%d-%d,Friday!",currentYear,currentMonth,currentDay);
if(day==6)
cprintf("%d-%d-%d,Saturday!",currentYear,currentMonth,currentDay);
textcolor(7);
}
/*输出指定星期函数*/
void printWeek2(int week)
{
if(week==0)
cprintf(",Sunday");
if(week==1)
cprintf(",Monday");
if(week==2)
cprintf(",Tuesday");
if(week==3)
cprintf(",Wendesday");
if(week==4)
cprintf(",Thursday");
if(week==5)
cprintf(",Friday");
if(week==6)
cprintf(",Staturday");
}
/*显示日历函数*/
void showCalendar(int year,int month,int day)
{
int i;
int j;
/*输出的日期*/
int outDay;
int leapFlag;
/*本月第一个星期中,在上月的天数*/
int dayLastMon;
int week;
/*该数组用于保存每个月的天数*/
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
outDay=0;
dayLastMon=0;
week=0;
/*判断给定年份是否是闰年*/
leapFlag=isLeapyear(year);
/*如果是闰年则2月应该是29天*/
if(leapFlag==1)
{
a[2]++;
}
/*如果给定的日期中,天数大于该月的最大天数*/
if(day>a[month])
{
printf("The number of this month's day is %d at most !\n",a[month]);
printf("Press any key to continue......\n");
getchar();
getchar();
/*以当前系统时间重新赋值*/
year=sysTime.da_year;
month=sysTime.da_mon;
day=sysTime.da_day ;
currentYear=sysTime.da_year;
currentMonth=sysTime.da_mon;
currentDay=sysTime.da_day ;
}
/*当前月的天数*/
n_currentMon=a[month];
/*上一月的天数*/
n_lastMon=a[month-1];
/*根据给定日期,获取给定月份1号的星期*/
week=dayLastMon=getWeek(year,month,1);
/*清除文本模式窗口*/
clrscr();
printf("\nThe calendar of %d",year);
textcolor(10);
/*显示给定年份是否是闰年*/
if(leapFlag==1)
cprintf(" [leap year]",year);
if(leapFlag==0)
cprintf(" [not leap year]",year);
printf("\n");
textcolor(7);
printSeparator();
textcolor(YELLOW);
/*输出月份提示,1-12分别表示1月到12月*/
switch(month)
{
case 1 :
cprintf(" January 1 ");
break ;
case 2 :
cprintf(" February 2 ");
break ;
case 3 :
cprintf(" March 3 ");
break ;
case 4 :
cprintf(" April 4 ");
break ;
case 5 :
cprintf(" May 5 ");
break ;
case 6 :
cprintf(" June 6 ");
break ;
case 7 :
cprintf(" July 7 ");
break ;
case 8 :
cprintf(" August 8 ");
break ;
case 9 :
cprintf(" September 9 ");
break ;
case 10 :
cprintf(" October 10 ");
break ;
case 11 :
cprintf(" Nevember 11 ");
break ;
case 12 :
cprintf(" December 12");
break ;
}
textcolor(7);
printf("\n\n");
textcolor(13);
cprintf(" Sun Mon Tue Wed Thu Fri Sat");
textcolor(7);
printf("\n\n");
/*因为一个月中最多跨度6个星期,所以循环从0到5*/
for(i=0;i<6;i++)
{
/*如果是该月的第一个星期*/
if(i==0)
{
/*第一个星期中还要7-dayLastMon天本月,有dayLastMon天在上个月,
所以输出dayLastMon*4个空格符,每个日期在日历中占用4个空格*/
printSpace(dayLastMon*4);
/*剩余在本月的第一个星期中的天数为7-dayLastMon*/
for(j=0;j<7-dayLastMon;j++)
{
/*到达day的前一天时,输出++outDay*/
if(outDay==day-1)
{
/*用黄色字体突出显示*/
textcolor(YELLOW);
cprintf(" [%d]",++outDay);
textcolor(7);
}
/*到达day当天时,并且不是星期天*/
else if(outDay==day && week!=0)
{
printf("%3d",++outDay);
}
/*到达day当天时,并且是星期天*/
else
{
printf("%4d",++outDay);
}
/*计算当天的星期,如果前一天是星期六(6),则当天是星期天(0),
其他情况则直接星期加1*/
week=(week<6)?week+1:0;
}
printf("\n\n");
}
/*如果不是该月的第一个星期*/
else
{
/*则输出该星期中的7天*/
for(j=0;j<7;j++)
{
/*输出的天数小于该月的最大天数*/
if(outDay<a[month])
{
/*到达day的前一天时,输出++outDay*/
if(outDay==day-1)
{
/*输出一位数字*/
if(outDay<9)
{
textcolor(YELLOW);
cprintf(" [%d]",++outDay);
textcolor(7);
}
/*输出两位数字*/
else
{
textcolor(YELLOW);
cprintf(" [%2d]",++outDay);
textcolor(7);
}
}
/*到达day当天时,并且不是星期天*/
else if(outDay==day && week!=0)
{
printf("%3d",++outDay);
}
/*到达day当天时,并且是星期天*/
else
{
printf("%4d",++outDay);
}
}
/*计算当天星期*/
week=(week<6)?week+1:0;
}
printf("\n\n");
if(outDay==a[month])break ;
}
}
/*输出分隔线*/
printSeparator();
/*输出当前选择的日期和星期*/
printf("The day you choose is:\n\n");
printWeek();
gotoxy(1,22);
textcolor(10);
cprintf("--------------------\n");
textcolor(7);
/*输出系统日期和星期*/
printf("\nToday is: %d-%d-%d",sysTime.da_year,sysTime.da_mon,sysTime.da_day);
printWeek2(getWeek(sysTime.da_year,sysTime.da_mon,sysTime.da_day));
printf("\n\n");
/*显示按键操作*/
printUsage();
gotoxy(1,25);
}
/*通过键盘调整日期函数*/
void getKeyValue()
{
int key ;
char ch;
/*默认显示当前系统日期和星期*/
currentYear=sysTime.da_year;
currentMonth=sysTime.da_mon;
currentDay=sysTime.da_day ;
showCalendar(currentYear,currentMonth,currentDay);
while(1)
{
/*获取键值,根据键值调整日历输出*/
key=bioskey(0);
/*右移键,增加月份*/
if(key==RIGHT)
{
/*月份值在1-12之间,则直接加1*/
if(currentMonth<12 && currentMonth>=1)
{
currentMonth++;
}
/*如果月份为12,则加1后进位,即年份加1,月份变为1*/
else
{
currentYear++;
currentMonth=1 ;
}
}
/*左移键,减少月份*/
if(key==LEFT)
{
/*月份值在1-12之间,则直接减1*/
if(currentMonth<=12 && currentMonth>1)
{
currentMonth--;
}
/*如果月份为1,则减1后,到上一年,月份变为12*/
else
{
currentYear--;
currentMonth=12 ;
}
}
/*上移键,增加年份*/
if(key==UP)
{
currentYear++;
}
/*下移键,减少年份*/
if(key==DOWN)
{
currentYear--;
}
/*上移键,减少天数*/
if(key==PAGEUP)
{
/*当前日不是该月的第一天,则天数直接减1*/
if(currentDay!=1)
{
currentDay--;
}
/*当前日是该月的第一天,并且是该年的第一个月(即1月1日),
则天数减1后,变为上一年的最后一个月的最后一天(即12月31日)*/
else if(currentDay==1 && currentMonth==1)
{
currentYear--;
currentMonth=12 ;
currentDay=31 ;
}
/*当前日是该年中某一个月的最后一天,则天数减1后,
变为上个月的最后一天*/
else
{
currentMonth--;
currentDay=n_lastMon ;
}
}
/*下移键,增加天数*/
if(key==PAGEDOWN)
{
/*当前日不是该月的最后一天,则天数直接加1*/
if(n_currentMon!=currentDay)
{
currentDay++;
}
/*当前日是该年的最后一天(即12月31日),则天数加1后,
变为下一年的第一个月的第一天(即1月1日)*/
else if(n_currentMon==currentDay && currentMonth==12)
{
currentYear++;
currentMonth=1 ;
currentDay=1 ;
}
/*当前日是该年中某一个月的最后一天,则天数加1后,
变为下个月的第一天*/
else
{
currentMonth++;
currentDay=1 ;
}
}
/*Q或者q键,表示查询指定日期的星期*/
if(key==QLOWER||key==QUPPER)
{
{
printf("Input date(eg,%d-%d-%d):",sysTime.da_year,sysTime.da_mon,sysTime.da_day);
scanf("%d-%d-%d",¤tYear,¤tMonth,¤tDay);
checkDate();
}
}
/*空格键,重置到系统日期*/
if(key==SPACE)
{
currentYear=sysTime.da_year;
currentMonth=sysTime.da_mon;
currentDay=sysTime.da_day ;
}
/*Escpe键退出系统*/
if(key==ESC)
{
printf("Do you really want to quit?(Y/N)");
ch=getchar();
if(ch=='y'||ch=='Y')
break ;
}
showCalendar(currentYear,currentMonth,currentDay);
}
}
/*主函数*/
void main()
{
/*清除文本模式窗口*/
clrscr();
/*设置屏幕显示方式*/
_AL=03;
_AH=0;
geninterrupt(0x10);
getdate(&sysTime);
getKeyValue();
}

万年历怎么用c#编写

先在Visual C#界面下把日记本的样式设计出来。需要两个万年历控件,一个用来显示、添加、编辑日记内容的“丰富的文本框”(richtextbox控件),还有一个用来添加和修改日记的按钮(button控件)。richtextbox控件和button控件都能很容易地在工具箱中找到,不用多说添加上去就可以了,关键在于万年历,我们不必自己去编写一个万年历,微软已经为我们写好了。要做的就是把它拿出来按照正确的方法使用。首先我来说说如何调用这个万年历。它是Microsoft公司VS.NET产品附送的一个控件。我们在VS.NET窗口下点击“项目”下拉菜单,然后选择“添加/引用”就会弹出一个用于引用控件的窗体,此窗体包含三个标签,即“.Net”、“COM”、“项目”。我们要用的日历控件就包含在其中的“COM”里面。点击它,然后在硬盘一阵狂响之后,会发现多出了好多控件。找到控件Microsoft Calendar Control 9.0。
选中这个控件,点击右边的选择按钮,控件的名称会出现在下边“选定的组件”窗口中,这时候选择下边的“确定”按钮,选定的控件便添加到你所创建的项目当中了。你可以在你的“工具箱”当中找到一个名字叫做MonthCalendar的控件和一个叫做DateTimePicker的控件,这两个控件便是我们刚才引用来的。在这里我们要用到的是第一个MonthCalendar,选择MonthCalendar控件并在窗体上划出它的轮廓。看,一个万年历便展示在我们面前了。
但是只我们能看还不行,为了能察看或者修改以前的日记还需要让程序知道我们在这个控件选择的日期是哪一天,这样才能告诉数据库,我们要调用哪一天的日记。为了方便暂时用richtextbox做显示当前日期的容器。
现在来研究一下如何让richtextbox显示MounthCalendar所选择的日期。双击MounthCalendar控件,会跳转到代码界面,并且得到一个系统为我们自动创建的事件。这个事件就是日期选择事件,是MounthCalendar控件的默认事件。
private void monthCalendar_DateChanged(object sender,
System.Windows.Forms.DateRangeEventArgs e)
{
file://事件被触发后所执行的代码
}
利用这个事件我们便可以让程序知道,用户何时重新选择了一个日期。但是如果想要让程序知道用户所选择的日期是哪一天并且让程序将这一天的日期显示在richtextbox上,我们还有一个问题,那就是如何读取用户所选择的日期,这就要用到下面这个属性
monthCalendar.SelectionRange.Start.ToShortDateString() 。
这个属性的值便是用户所选择的日期。现在事件定义了,属性也找到了,下边让我们来看一下如何把日期显示在richtextbox容器内。
添加这段代码到事件中
richTextBox.Text=monthCalendar.SelectionRange.Start.ToShortDateString();
运行一下。当选择了一个日期后,这个日期便会显示在richtextbox内了。

用C语言怎么编写万年历

哈哈,我编的第一个正经的程序就是这个程序了!
我自己编出来的,超爽啊!
#include <stdio.h>
int leap (int year)
{if(year%4==0&&year%100!=0||year%400==0)
return 1;
else return 0;
}
int days_month (int month,int year)
{
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
return 31;
if(month==4||month==6||month==9||month==11)
return 30;
if(month==2&&leap(year)==1) return 29;
else return 28;
}
int firstday(int month,int year)
{int w;
w=(1+2*month+3*(month+1)/5+year+year/4+year/400-year/100)%7+1;
return w;
}
main()
{int i,j=1,k=1,a,b,month,year;
printf("\n input month and year:\n");
scanf("%d%d",&month,&year);
b=days_month(month,year);
a=firstday (month,year);
printf(" Sun Mon Tue Wed Thu Fri Sat \n");
if(a==7)
{for(i=1;i<=b;i++)
{printf("%4d",i);
if(i%7==0)
{printf("\n");
}
}
}
if(a!=7)
{while (j<=4*a)
{printf(" ");
j++;
}
for(i=1;i<=b;i++)
{printf("%4d",i);
if(i==7*k-a)
{printf("\n");
k++;
}
}
}
getch();

用C语言编写一个万年历系统

#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_days
 
int 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;
}

最好最全最准的万年历,什么万年历软件最精准最好用

提起最好最全最准的万年历,大家都知道,有人问什么万年历软件最精准最好用,另外,还有人想问八字怎么排,别说翻万年历最好是,你知道这是怎么回事?其实哪个万年历最准,下面就一起来看看什么万年历软件最精准最好用,希望能够帮助到大家!

最好最全最准的万年历

1、最全最准的万年历:什么万年历软件最用

推荐“万年历”APP哦

这个软件的好用真的都不用我多说,要自己亲身使用就能明白~~~

万年历APP

主功能所有手机自带日历APP的功能它都有,可恨的是自用的日历APP连农历都查不到,朋友一过生日的时候,真的很麻烦,放在手机里面简直浪费了我的内存(呜呜呜呜)目前哪一种万年历。

“万年历”APP,除了这些基本日常的功能之外,还有这查看日历相关的农阴历查询、每日宜忌事项、节气等,活生生一本老黄历书了~最准确的老黄历看日子。

(因此,我把他推荐给了我的老爸,替代纸质黄历书了)

附加功能

有每日一言、每日壁纸更新、看天气、看新闻、八字测算等等功能,每一个功能不能详细介绍到(此处省略两千字)

靠你们去慢慢发现、慢慢挖掘,APP的功能也在不断的进行更新中…

万年历

2、最全最准的万年历:八字怎么排,别说翻万年历是

想排八字不想翻万年历的话,可以用八字排盘软件,或直接使用网站上的在线排盘系统呀,只要输入出生信息,不用二秒钟八字一下就出来了,快速又准确。

3、最全最准的万年历:哪个万年历最准

4、最全最准的万年历:万年历挂那好

你好,朋友最准确万年历。

健身爱好者为您解答

这个算什么问题

你认为挂在哪里好看就挂在哪儿呗

祝您生活愉快

如不足,请追问,满意请采纳,谢谢

5、最全最准的万年历:哪个万年历最准确

小泥人画业生产的万年历质量很好

6、最全最准的万年历:哪款万年历择日?

您好!最准确的万年历老黄历。

正所谓“法不传六耳,道不轻传”,真正的择日都是言传身教,网上能搜到的内容大多只是只言片语,择日需要系统学习,不然很容易犯煞,比如:四离四绝日,黄嘴朱雀日。有些日子要破,有些则是万万用不得。

万年历只能作为参考,真正的择日要拜师。

7、最全最准的万年历:万年历APP在哪合适?哪个使用起来比较好

现在的APP一般的话都是在手机自带的应用商店里面的农历七月的黄道吉日是哪天。

8、推荐一款万年历,不要在线的,能查以前的,能对应年号的

,JU入宅看万年历还是黄历。

中华大吧最准确的老黄历看日子2021年。

9、最全最准的万年历:最实用最准万年历

给你推荐一个app,芝麻万年历

哪个万年历最准

功能很实用,上面的黄历日期都很准确

10、最全最准的万年历:万年历哪种

以上就是与什么万年历软件最精准最好用相关内容,是关于什么万年历软件最精准最好用的分享。看完最好最全最准的万年历后,希望这对大家有所帮助!

最全的万年历,哪个万年历最好用?

提起最全的万年历,大家都知道,有人问哪个万年历最好用?另外,还有人想问万年历软件哪个好用?你知道这是怎么回事?其实数码万年历电子挂钟表挂客厅哪好,下面就一起来看看哪个万年历最好用?希望能够帮助到大家!

最全的万年历

1、最全的万年历:哪个万年历用?

芝麻万年历,画面简洁,使用方便,关键是信息非常齐全,每日宜忌事项,历史上的,甚至还可以看天气。用户之后,还能对重要日程进行设置,比如重要的生日、纪念日的提醒,并且能关联到ios或者android的日程中心。最准的万年历。

可以说是非常好用啦!

2、最全的万年历:万年历软件哪个好用?

要说功能实用性,中华万年历,查询日期,天气,老黄历,居然还有星座,哈哈,新版的软件,还可以看新闻资讯,定制个人阅读口味。最准确的万年历老黄历。

3、最全的万年历:数码万年历电子挂钟表挂客厅哪好

建议客厅的话还是挂钟表比较好,如果有条件可以放一个落地的、更为最准确的老黄历看日子。

4、最全的万年历:最全用的万年历

5、最全的万年历:找个万年历之类的文件,有黄道吉日之类的,谢谢

那就买本万年历吧,或相书什么的。

6、最全的万年历:推荐一款万年历,不要在线的,能查以前的,能对应年号的

,JU2021年9月入宅最旺日子。

中华大吧

7、最全的万年历:是什么日子?求解,是万年历

清明节,农历三月初八

8、最全的万年历:万年历买哪个版本的比较权威?

都差不多。但是目前的万年历都有不足之处:

1,数九、数伏、都没有标明,使很多人迷蒙。

2,内容太多,比如“忌讳”什么,“宜”什么,这些。

主要优势:

随着科技的发展,现代的万年历能同时显示公历、农历和干支历等多套历法,更能包含黄历相关吉凶宜忌、节假日、提醒等多种功能信息;而其载体更包括历书出版物、电子产品、电脑软件和手机应用等非常丰富,极为方便人们查询使用。万年只是一种象征,表示时间跨度大。

9、最全的万年历:万年历APP在哪合适?哪个使用起来比较好

现在的APP一般的话都是在手机自带的应用商店里面的算命万年历书。

10、最全的万年历:中华万年历和历哪个好

中华万年历好,我用过。

数码万年历电子挂钟表挂客厅哪好

11、最全的万年历:全功能万年历是什么?

多功能万年历是一款基于Android手机、适用于华人群体使用的日历软件,支持简体中文。多功能万年历基本功能为日历、农历、节日、记事本,闹钟提示等。

多功能万年历支持目前所有的Android的手机屏幕(QVGA、HVGA、WVGA等)。主要测试屏幕为,。多功能万年历无需网络连接,合中国国情,经过严格的耗电量测试。多功能万年历主要由日历模块、农历模块、节日模块、记事本模块,闹钟模块组成。中华万年历。

多功能万年历是一款基于Android手机、适用于华人群体使用的日历软件,支持简体中文。

多功能万年历基本功能为日历、农历、节日、记事本,闹钟提示等。多功能万年历支持目前所有的Android的手机屏幕(QVGA、HVGA、WVGA等)。

主要测试屏幕为,。。多功能万年历无需网络连接,合中国国情,经过严格的耗电量测试。多功能万年历主要由日历模块、农历模块、节日模块、记事本模块,闹钟模块组成。老黄历万年历黄道吉日 手机版。

以上就是与哪个万年历最好用?相关内容,是关于哪个万年历最好用?的分享。看完最全的万年历后,希望这对大家有所帮助!

展开全文