万年历的c语言实现源程序
C 万年历及公历农历转换源代码1

scanf("%d.%d.%d",&gyear,&gmonth,&gday); if(gyear%4==0 && gyear%100!=0 || gyear%400==0) months[2]=29; else months[2]=28; /*以下是计算在该公历年的第几天*/
whatday=gPastday[gmonth]+gday; if((gyear%4==0 && gyear%100!=0 || gyear%400==0) && (gmonth>2)) whatday++; /*上如果是闰年和月份大于二则在该公历年的第几天数+1*/ /*计算该年春节在公历年的第几天*/
clrscr();
}
}
getch();
}
/*公历每月前面的天数*/ const int gPastday[13]={0,0,31,59,90,120,151,181,212,243,273,304,334};
months[13]={0,31,0,31,30,31,30,31,31,30,31,30,31};
{case 1:printf("
* 1 * "); break;
case 3:printf("
* 3 * "); break;
case 5:printf("
* 5 * "); break;
case 7:printf("
* 7 * "); break;
case 9:printf("
* 9 * ");break;
{
C语言程序设计 万年历程序

#include"stdio.h"int mon_day[]={31,28,31,30,31,30,31,31,30,31,30,31};int judge(int year,int month){if(month==1||month==3||month==5||month==7||month==8||month==10||month ==12)return(1);else if(month==2){if(year%4!=0||year%100==0&&year%400!=0)return(2);else return(3);}else return(4);}void show2(){int year,i,j,a,n,m,k;char ** p;char * week[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};char*month[]={"January","February","March","April","May","June","July","Augu st","September","October","November","December"};printf("please inter the year:");scanf("%d",&year);printf("\n");printf("the calendar of the year%d.",year);printf("\n");a=(year+(year-1)/4-(year-1)/100+(year-1)/400)%7;for(i=0;i<12;i++){n=judge(year,i+1);p=month+i;printf("%s\n",*p);printf("\n");for(j=0;j<7;j++){p=week+j;printf("%6s",*p);}printf("\n");for(k=0;k<a;k++)printf(" ");for(m=1;m<32;m++){printf("%6d",m);if((a+m)%7==0)printf("\n");if(n==1&&m==31) break;else if(n==2&&m==28) break;else if(n==3&&m==29) break;else if(n==4&&m==30) break;}a=(a+m)%7;/*计算出下个月的第一天是星期几*/printf("\n");printf("**************************************************");printf("\n");}}void show(){printf("******************************\n");printf("1.某年某月某日是星期几\n2.是否闰年\n3.某年某月的最大天数\n4.打印该月日历\n5.退出\n");printf("******************************\n");}int show1(int y,int m,int d){int i,R,sum=0;for(i=0;i<m-1;i++)sum=sum+mon_day[i];sum=sum+d;if((y%4 == 0 &&y%100 != 0)||(y%400 == 0)&&m>2)sum=sum+1;R=(5+(y+1)+(y-1)/4-(y-1)/100+(y-1)/400+sum)%7;if(R==0)R=7;return R;}int leap(int y){if((y%4 == 0 &&y%100 != 0)||(y%400 == 0))return 1;elsereturn 0;}int max_day(int y,int m){int X;if(leap(y)==1&&m==2)X=29 ;//printf("该年该月最大天数:29");elseX=mon_day[m-1];//printf("%d",mon_day[m-1]);return X;}void main(){int year,month,day,i;F:show();printf("请选择:");scanf("%d",&i);switch(i){case 1:printf("请输入年、月,日:");scanf("%d%d%d",&year,&month,&day);printf("%d-%d-%d是星期%d\n",year,month,day,show1(year,month,day));break;case 2:printf("请输入年份:");scanf("%d",&year);if(leap(year)==1)printf("该年是闰年.\n");elseprintf("该年不是闰年\n");break;case 3:printf("请输入年、月:");scanf("%d%d",&year,&month);printf("该月最大天数:%d",max_day(year,month)); printf("\n");break;case 4:show2();break;case 5:return 0;break;}goto F;}。
C语言万年历(源代码)

}
printf("\n\n");
};break;
default:printf("程序错误");break;
}
}
}
}
}
case 12:{
for(q=0;q<k;q++) printf(" ");
for(p=1;p<=31;p++,k++)
{
k=k%7;
if(k==0) printf("\n");
if(p<10) printf(" ");
j=1;
for(i=1;i<x;i++)
{
if((i%4==0 && i%100!=0)||i%400==0)
{
j++;
}
}
j+=365*(x-1);
k=j%7;
for(i=x;i<y;i++)
{
printf(" \t*公元%d年*\n",i);
#include "stdio.h"
main()
{
int x,y,i,j,k=0,p,q;
printf("请输入年份:");
scanf("%d%d",&x,&y);
if(x<=0 || y<=1 || x>=y)
{
printf("输入有误\n");
C语言实训--万年历源代码

C语言实训--万年历源代码# include#include#include#include#include# define YEAR 365int numday[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31}, {31,29,31,30,31,30,31,31,30,31,30,31}};int leap(int year);int calday(int y,int m);int counterdays(int year,int month,int day);int week(int year,int month,int day);int eachyeartotal(int year,int month,int day);int maxDay(int y,int month);void print(int y,int m,int w);void festival (int year,int month,int day);int IsLeap(int y);int guanli(int i);void rili(int year,int month);int rili1();void rili2();void rili3();void rili4();void rili5();void fan();void show(int year,int month,int date,int sec,int mini,int hour);int main(){int i;printf("***************************************\n"); printf("1.查询日历,输入年份:\n");printf("2.查询该月日历及对应星期,输入年份和月份:\n"); printf("3.查询星期几及节日,输入年月日:\n");printf("4.距您输入日期还有多少天,输入日期:\n"); printf("5.通过键盘上下控制不同年月日:\n");scanf("%d",&i);guanli(i);return 0;}int guanli(int i){switch(i){case 1:rili1();return main();case 2:rili2();return main();case 3:rili3();return main();case 4:rili4();return main();case 5:rili5();return main();}return 0;}int rili1(){int year;int n,i;printf("输入年份:");scanf("%d",&year);printf("the calendar of the year%d\n",year);printf("\n");printf("=============================\n"); for(i=1;i<13;i++){printf(" %d月份\n",i);rili(year,i);}n = leap(year);return 0;}void rili2(){int year,month,w;printf("输入年月:");scanf("%d%d",&year,&month);w=calday(year,month);print(year,month,w);}void rili3(){int year,month,day,number;printf("输入年月日:");scanf("%d%d%d",&year,&month,&day);festival(year,month,day);number= week(year,month,day);printf("星期%d",number);}void rili4(){int year,month,day;printf("输入年月日:");scanf("%d%d%d",&year,&month,&day); eachyeartotal( year,month,day);counterdays(year,month,day);}void rili5(){int year,month,date,sec,mini,hour;fan();show(year,month,date,sec,mini,hour);}int leap(int year){int n=(year%4==0 && year%100!=0 || year%100!=0); return n;}void rili(int year,int month){int i,day,first_day,flag,year1,year2;int temp = 6;flag =leap(year);year1=year/100;year2=year%100;if(year>2000){year1=year1-20;day = year1/4;day+=(YEAR+24)*year1+YEAR*year2+(year2-1)/4;if(year>2000)day++;switch(month){case 1:day; break;case 2:day+=31;break;case 3:day+=59+flag;break;case 4:day+=90+flag;break;case 5:day+=120+flag;break;case 6:day+=151+flag;break;case 7:day+=181+flag;break;case 8:day+=212+flag;break;case 9:day+=243+flag;break;case 10:day+=273+flag;break;case 11:day+=304+flag;break;case 12:day+=334+flag;break;}day+=temp;first_day=day%7;}else{year1 = 20-1-year;year2=100-year2-1;day+=(YEAR+24)*year1+YEAR*year2+year2/4; switch(month){case 12:day+=31;break;case 11:day+=61;break;case 10:day+=92;break;case 9:day+=122;break;case 8:day+=153;break;case 7:day+=184;break; case 6:day+=214;break; case 5:day+=245;break; case 4:day+=275;break; case 3:day+=306;break; case 2:day+=334+flag;break; case 1:day+=365+flag;break; }day-=temp;day = day%7;first_day=(7-day)%7;}switch(month){case 1:case 2:month=28+flag;break; case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:month=30;break; case 12:month =31;break;}for(i=1;i<4*first_day;i++) printf(" ");for(i=0;i<month;i++)< p="">{printf("%4d",i+1);if((first_day+i)%7==6)printf("\n");}printf("\n");printf("===============================\n");}///////////////////////////////////////////////////////////int counterdays(int year,int month,int day){int year1,days0,days1,month1,days,day1;time_t timep;struct tm*p;time(&timep);p=gmtime(&timep);year1=(1900+p->tm_year);month1=(1+p->tm_mon);day1=(p->tm_mday);days0=(year-1)*365 + (year-1)/4 - (year-1)/100 + (year-1)/400 +eachyeartotal (year,month,day);days1=(year1 - 1)*365+(year1-1)/4-(year1-1)/100 + (year1 - 1)/400 +eachyeartotal (year1,month1,day1);days=days0-days1;printf("\n今天距%d年%d月%d日还有%d天\n\n",year,month,day,days);return days;}int eachyeartotal(int year,int month,int day){int i,sum=0;for(i=1;i<month;i++)< p="">{sum+=maxDay(year,i);}sum+=day;return sum;}int IsLeap(int y){if(y%4==0 && y%100!=0 || y%400==0) return 1; else return 0;}int maxDay(int y,int month){int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};if(IsLeap(y))a[1]=29;return a[month-1];}///////////////////////////////////////void festival (int year,int month,int day){if (month==1 && day==1) printf (",这天是元旦");if (month==2 && day==14) printf (",这天是情人节"); if (month == 3)switch(day){case 8:printf (",这天是妇女节"); break;case 12:printf (",这天是植树节");}if (month==1 && day==1) printf (",这天是愚人节");if(month == 5)switch (day){case 1:printf(",这天是劳动节");break;case 4:printf(",这天是青年节");}if (month==6 && day==1) printf (",这天是儿童节");if (month==7 && day==1) printf (",这天是建党节");if (month==8 && day==1) printf (",这天是建军节");if (month==9 && day==10) printf (",这天是教师节");if (month==10 && day==1) printf (",这天是国庆节");printf("\n");}int week(int year,int month,int day){int number = (year-1)+(year-1)/4 - (year-1)/100+(year-1)/400+eachyeartotal(year,month,day);number = number%7;return number;}/////////////////////////////////////////////void print(int y,int m,int w){int i,l;printf("Calendar %d-%02d\n",y,m);printf("---------------------\n");printf("Su Mo Tu We Th Fr Sa \n");printf("---------------------\n");for (i=0;i<w;i++)< p=""> printf(" ");if (IsLeap(y))l=1;elsel=0;for (i=1;i<=numday[l][m-1];i++) {printf("%-3d",i);w++;if (w%7==0)printf("\n");}if (w%7) printf("\n");printf("---------------------\n"); }int calday(int y,int m){int d=0,w;while (y>1910){if (IsLeap(y)) d+=366;else d+=365;y--;}while (m>1){ --m;d+=numday[0][m-1];}w=(d+1)%7;return w;}//////////////////////////////////////////void show(int year,int month,int date,int sec,int mini,int hour) {const char month_str[][4]={"","Jan","Feb","Mar","Apl", "May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};const int month_day[]={0,31,28,31,30,31,30,31,31,30,31,30,31};int i,j,wdays,mdays,days;for(i=1,days=0;i<year;i++)< p="">{if(leap(i))days += 366;}else{days += 365;}}for(i=1;i<month;i++)< p="">{if(i==2 && leap(year)){days+=29;}else{days+=month_day[i];}}printf(" %s.%d.%d %d:%d:%d \n",month_str[month],date,year,hour,mini,sec);printf(" 一二三四五六日\n");wdays = days % 7;for( j = 0; j < wdays; j++){printf(" ");}if(month == 2 && leap(year)){mdays=29;}else{mdays= month_day[month];}for(i=1;i<=mdays;i++){if( i > 1 && days % 7 == 0 ){printf("\n");}printf("%4d",i);days=days+1; }printf("\n---------------------------\n\n\n");}{time_t rawtime;struct tm *info;int year,month,date,sec,mini,hour; char ch;time ( &rawtime );info = localtime ( &rawtime );year =info->tm_year + 1900; month =info->tm_mon + 1;date =info->tm_mday;hour =info->tm_hour;mini =info->tm_min;sec =info->tm_sec;while(1){show(year,month,date,sec,mini,hour); printf("↑......上一年\n\n");printf("↓......下一年\n\n");printf("←....前一个月\n\n");pr intf("→....后一个月\n\n");printf("Esc.......退出\n\n");ch=getch();switch(ch){case 27://Ecs exit(0);case -32://Navigatorch=getch();if(ch==77){//Rightyear+=(month==12)?1:0;month=month%12+1;}else if(ch==75){year-=(month==1)?1:0; month=(month-2+12)%12+1; }else if(ch==72)year--;else if(ch==80)year++;system("cls");}}</month;i++)<></year;i++)<></w;i++)<></month;i++)<></month;i++)<>。
c语言万年历

c语言万年历#include<stdio.h>main(){for(;;){int nian,yue,a,b,m,c,_m=28;long e;printf("请输入年份:");scanf("%d",&nian);e=nian;e=e-1;e=(e*365+e/4)%7;m=e;if((nian%4==0)||(nian%100==0)&&(nian%400!=0)) //求出nian是否为闰年//m++;printf("%d的日历:",nian);for(yue=1;yue<=12;yue++){if(yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12){c=0;printf("\n");printf(" %d月\n",yue);printf(" 日一二三四五六\n");for(b=1;b<=m;b++){c++;printf(" ");}for(a=1;a<=31;a++){c++;if(c%7-1==0&&c!=1)printf("\n");if(a<10)printf(" ");printf(" %d ",a);m++;if(m==7)m=0;}printf("\n");}else{if(yue==4||yue==6||yue==9||yue==11||yue==2){if(yue==2){c=0;printf("\n");printf(" %d月\n",yue);printf(" 日一二三四五六\n");for(b=1;b<=m;b++){c++;printf(" ");}for(a=1;a<=_m;a++){c++;if(c%7-1==0&&c!=1)printf("\n");if(a<10)printf(" ");printf(" %d ",a);m++;if(m==7)m=0;}printf("\n");}else{c=0;printf("\n");printf(" %d月\n",yue);printf(" 日一二三四五六\n");for(b=1;b<=m;b++){c++;printf(" ");}for(a=1;a<=30;a++){c++;if(c%7-1==0&&c!=1)printf("\n");if(a<10)printf(" ");printf(" %d ",a);m++;if(m==7)m=0;}printf("\n");} } }} } }。
万年历程序设计c语言代码

这是当时我做的一个小小的课题,希望对你有所帮助#include "stdio.h" /* Required for MS-DOS use */#define ENTER 0x1C0D /* Enter key */int year, month, day;static char *days[8] = {" ","Sunday ","Monday ","Tuesday ","Wednesday","Thursday ","Friday ","Saturday "}; struct TIMEDATE {int year; /* year 1980..2099 */int month; /* month 1=Jan 2=Feb, etc. */int day; /* day of month 0..31 */int hours; /* hour 0..23 */int minutes; /* minute 0..59 */int seconds; /* second 0..59 */int hsecs; /* 1/100ths of second 0..99 */char dateline[47]; /* date & time together */};static struct TIMEDATE today;main(){char cmonth[3];char cday[3];char cyear[5];double getdays();double daynumb, numbnow;int weekday, retcode, dayer, i;dayer = datetime(&today);clrscn();for (i=0;i<3;++i)cmonth[i]='\0';for (i=0;i<3;++i)cday[i]='\0';for (i=0;i<5;++i)cyear[i]='\0';putstr(5,8,14,"Enter date in MM DD YYYY format:");while (retcode != ENTER){retcode = bufinp(5,41,13,2,cmonth);if (retcode != ENTER) retcode = bufinp(5,44,13,2,cday);if (retcode != ENTER) retcode = bufinp(5,47,13,4,cyear);}year = atoi(&cyear);month = atoi(&cmonth);day = atoi(&cday);daynumb = getdays(year, month, day);numbnow = getdays(today.year, today.month, today.day); weekday = weekdays(daynumb);if (numbnow - daynumb == 0)printf("\n\n%02d-%02d-%d is",month, day, year);if (numbnow - daynumb > 0)printf("\n\n%02d-%02d-%d was",month, day, year);if (numbnow - daynumb < 0)printf("\n\n%02d-%02d-%d will be",month, day, year);printf(" a %s\n",days[weekday]);} /* end MAIN *//************************************************************* GETDAYS - From integer values of year (YYYY), month * * (MM) and day (DD) this subroutine returns a ** double float number which represents the * * number of days since Jan 1, 1980 (day 1). * * This routine is the opposite of GETDATE. * ************************************************************/double getdays(year, month, day)int year, month, day;{int y,m;double a,b,d, daynumb;double floor(),intg();/************************************ make correction for no year 0 ************************************/if (year < 0) y = year + 1;else y = year;/*********************************************************** Jan and Feb are months 13 and 14 in this calculation ***********************************************************/m = month;if (month < 3){m = m + 12;y = y - 1;}/**************************** calculate Julian days ****************************/d = floor(365.25 * y) + intg(30.6001 * (m + 1)) + day - 723244.0;/************************************************ use Julian calendar if before Oct 5, 1582 ************************************************/if (d < -145068.0) daynumb = d;/*************************************** otherwise use Gregorian calendar ***************************************/else{a = floor(y / 100.0);b = 2 - a + floor(a / 4.0);daynumb = d + b;}return(daynumb);} /* end GETDAYS *//********************************************************* GETDATE - This routine takes a double float number * * representing the number of days since Jan 1,* * 1980 (day 1) and returns the year month and * * day as pointer integers * * This routine is the opposite of GETDAYS * ********************************************************/getdate(numb)double numb;{double a,aa,b,c,d,e,z;double date;date = numb;z = intg(date + 2444239.0);if (date < -145078.0) a = z;else{aa = floor((z - 1867216.25) / 36524.25);a = z + 1 + aa - floor(aa/4.0);}b = a + 1524.0;c = intg((b - 122.1) / 365.25);d = intg(365.25 * c);e = intg((b - d) / 30.6001);day = b - d - intg(30.6001 * e);if (e > 13.5) month = e - 13.0;else month = e - 1.0;if (month > 2) year = c - 4716.0;else year = c - 4715.0;if (year < 1) --year;return;} /* end GETDATE *//********************************************************* WEEKDAYS - This routine takes a double float number * * representing the number of days since Jan 1,** 1980 (day 1) and returns the day of the week** where 1 = Sunday, 2 = Tuesday, etc. * ********************************************************/int weekdays(numb)double numb;{double dd;int day;dd = numb;while (dd > 28000.0) dd = dd - 28000.0;while (dd < 0) dd = dd + 28000.0;day = dd;day = ((day + 1) % 7) + 1;return(day);}/********************************************************* FRACT - This routine takes a double float number ** and returns the fractional part as a double ** float number * ********************************************************/double fract(numb)double numb;{int inumb;double fnumb;while (numb < -32767) numb += 32767;while (numb > 32767) numb -= 32767;inumb = numb;fnumb = inumb;return(numb-fnumb);} /* end FRACT *//********************************************************* FLOOR - This routine takes a double float number ** and returns the next smallest integer *********************************************************/double floor(numb)double numb;{double fract(), intg();double out;out = intg(numb);if (numb < 0 && fract(numb) != 0) out -= 1.0;return(out);} /* end FLOOR *//********************************************************* INTG - This routine takes a double float number ** and returns the integer part as a double ** float number * ********************************************************/double intg(numb)double numb;{double fract();return(numb - fract(numb));} /* end INTG */。
万年历的c语言实现源程序

万年历的C语言编程实现源程序:#include<stdio.h>#include<stdlib.h>int Isleapyear(int y)/*判断是否是闰年*/{if((y%4==0&&y%100!=0)||(y%400==0))return 1;elsereturn 0;}int Getdaysofmonth(int y,int m)/*确定某个月的天数*/{int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};if(Isleapyear(y))/*如果是闰年则2月份的天数改变为29*/ months[2]=29;return months[m];}int Gettotaldays(int y,int m)/*计算从1901年1月开始到给定年月的天数*/{intmonths[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};int days=0;int i,j;if((Isleapyear(y)))months[2]=29;for(i=1901;i<y;i++)/*从1901年1月开始计算,累加y年之前的天数*/{if(Isleapyear(i))days+=366;elsedays+=365;}for(j=1;j<m;j++)/*累加m月之后的天数*/days+=months[j];return days;}int Getfirstdayintable(int y,int m)/*计算给定年月的第一天在日历表中的位置*/{int d;d=Gettotaldays(y,m);d=d+3;/*1901年1月1日是星期二,在日历中星期二是第三个位置*/d=d%7;return d;}void Showdate(int y,int m)/*显示日历*/{int first;int d;int i,k;first=Getfirstdayintable(y,m);/*得到第一天在日历中的第一个位置*/d=Getdaysofmonth(y,m);/*得到这个月的天数*/k=0;printf("-------------------------------------\n");printf(" SUN MON TUE WEN THU FRI STA\n");for(i=1;i<first;i++)/*打印第一天之前的空格*/{printf(" ");k++;/*k用于确定日历中是否回车*/}for(i=1;i<=d;i++){printf("%5d",i);/*每个具体的日期占5个字符的宽度*/k++;if(k==7)/*每行打印7个日期数字后回车*/{printf("\n");k=0;}}printf("\n-------------------------------------\n"); }int main(){int y,m;printf("Input year:");scanf("%d",&y);printf("Input month:");scanf("%d",&m);Showdate(y,m);return 0;}欢迎您的下载,资料仅供参考!致力为企业和个人提供合同协议,策划案计划书,学习资料等等打造全网一站式需求。
万年历c语言源程序

#include <stdio.h>#include <windows.h>#include <wincon.h>#include<string.h>#include<stdlib.h>#include<conio.h>#include<time.h>#include<math.h>#define NULL 0CONSOLE_SCREEN_BUFFER_INFO csbiInfo; extern WINBASEAPI HWND WINAPI GetConsoleWindow(); time_t T;struct tm * now;int min,sec;int hour,nowyear,nowmonth,nowday;void ti2(){time ( &T );now = localtime ( &T );hour=now->tm_hour%12;min=now->tm_min-15;sec=now->tm_sec-15;}void ti(){time ( &T );now = localtime ( &T );hour=now->tm_hour;min=now->tm_min;sec=now->tm_sec;nowyear=now->tm_year+1900;nowmonth=now->tm_mon+1;nowday=now->tm_mday;}int yearbak=0;void clock_sz();int pd( int year);void huizs(int line_head_month);void hzdy(int year,int nowmonth_hz);void menu();void clear();int main(int argc, char* argv[]){int x=0;ti();clock_sz();hzdy(nowyear,nowmonth);menu();return 0;}void clear(){int i;HWND hwnd;HANDLE hOut;HDC hdc;HBRUSH hbr;COORD pos={1,4};hwnd=GetConsoleWindow();hdc = GetDC(hwnd);hOut = GetStdHandle(STD_OUTPUT_HANDLE);hbr= CreateSolidBrush(RGB(0,0,0));SelectObject(hdc,hbr);Rectangle(hdc,0,65,670,470);SetConsoleCursorPosition(hOut, pos);for(i=0;i<10;i++)printf(" \n ");SetConsoleCursorPosition(hOut, pos);Rectangle(hdc,0,65,670,470);ReleaseDC(hwnd, hdc);}void menu(){int year=0,xyear=0,x, xy=0,i ;struct re{int top;int left;int right;int bottom;}rt[13];HWND hwnd;HDC hdc,dc;HBRUSH hbr;COORD pos3_1 = {1, 4},pos3_2= {1, 1},pos = {1, 4},pos2_3 = {1, 6},pos2_4 = {1, 7};INPUT_RECORD mouseRec;DWORD state = 0, res=0;POINT pt;HPEN pn;HANDLE hOut, hIn;hwnd=GetConsoleWindow();//得到控制台窗口句柄hdc = GetDC(hwnd); //得到画图设备句柄dc = GetDC(hwnd);//画刷hbr= CreateSolidBrush(RGB(255,0,0));SelectObject(dc,hbr);for(rt[1].left=20,i=2;i<=12;i++) rt[i].left=rt[i-1].left+50;for(rt[1].right=50,i=2;i<=12;i++) rt[i].right=rt[i-1].right+50; //定位按钮for(i=0;i<=12;i++) rt[i].top=40;for(i=0;i<=12;i++) rt[i].bottom=60;hOut = GetStdHandle(STD_OUTPUT_HANDLE);hIn=GetStdHandle(STD_INPUT_HANDLE);pn=CreatePen(PS_SOLID,1,RGB(255,0,255));GetClientRect(hwnd, &rt);SelectObject(hdc, pn);SetBkMode(hdc,TRANSPARENT);MoveToEx(hdc,1,35,NULL);LineTo(hdc,620,35);LineTo(hdc,620,62);LineTo(hdc,1,62);LineTo(hdc,1,35);pn=CreatePen(PS_SOLID,2,RGB(255,255,0));SelectObject(hdc, pn);MoveToEx(hdc,5,75,NULL);LineTo(hdc,45,75);hbr= CreateSolidBrush(RGB(0,0,190));SelectObject(dc,hbr);for(i=1;i<=12;i++)Rectangle(dc,rt[i].left,rt[i].top,rt[i].right,rt[i].bottom);SetTextColor(hdc,RGB(0,255,255));TextOut(hdc,280,10,TEXT("万年历"),6);//输出文本SetTextColor(hdc,RGB(255,255,0));////设颜色TextOut(hdc,rt[1].left,rt[1].top,TEXT(" 1"),3);//输出文本TextOut(hdc,rt[1].left+=50,rt[1].top,TEXT(" 2"),3);//输出文本TextOut(hdc,rt[1].left+=50,rt[1].top,TEXT(" 3"),3);//输出文本TextOut(hdc,rt[1].left+=50,rt[1].top,TEXT(" 4"),3);//输出文本TextOut(hdc,rt[1].left+=50,rt[1].top,TEXT(" 5"),3);//输出文本TextOut(hdc,rt[1].left+=50,rt[1].top,TEXT(" 6"),3);//输出文本TextOut(hdc,rt[1].left+=50,rt[1].top,TEXT(" 7"),3);//输出文本TextOut(hdc,rt[1].left+=50,rt[1].top,TEXT(" 8"),3);//输出文本TextOut(hdc,rt[1].left+=50,rt[1].top,TEXT(" 9"),3);//输出文本TextOut(hdc,rt[1].left+=50,rt[1].top,TEXT(" 0"),3);//输出文本TextOut(hdc,rt[1].left+=50,rt[1].top,TEXT("确定"),4);//输出文本TextOut(hdc,rt[1].left+=50,rt[1].top,TEXT("清除"),4);//输出文本TextOut(hdc,40,350,TEXT("提示:双击窗口退出"),18);//输出文本SetConsoleCursorPosition(hOut, pos3_1);ShowWindow(hwnd,SW_SHOW);SetConsoleTextAttribute(hOut, 10);for(;;){SetConsoleTextAttribute(hOut, 10);ReadConsoleInput(hIn, &mouseRec, 1, &res);Sleep(100);if (mouseRec.EventType == MOUSE_EVENT){if (mouseRec.Event.MouseEvent.dwEventFlags == DOUBLE_CLICK) break;if (mouseRec.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED){GetCursorPos(&pt);ScreenToClient(hwnd,&pt);if(pt.x>20&& pt.x<50 &&pt.y>rt[1].top && pt.y<rt[1].bottom){if(xyear<4) printf("1");xyear++;if(xyear==1) year=1*1000;if(xyear==2) year=year+1*100;if(xyear==3) year=year+1*10;if(xyear==4){year=year+1;printf("\n你选择的年为%d",year);}continue;}else if(pt.x>rt[2].left && pt.x<rt[2].right &&pt.y>rt[2].top && pt.y<rt[2].bottom){if(xyear<4) printf("2");xyear++;if(xyear==1) year=2*1000;if(xyear==2) year=year+2*100;if(xyear==3) year=year+2*10;if(xyear==4){year=year+2;printf("\n你选择的年为%d",year);}continue;}else if(pt.x>rt[3].left && pt.x<rt[3].right &&pt.y>rt[3].top && pt.y<rt[3].bottom){if(xyear<4) printf("3");xyear++;if(xyear==1) year=3*1000;if(xyear==2) year=year+3*100;if(xyear==3) year=year+3*10;if(xyear==4){year=year+3;printf("\n你选择的年为%d",year);}continue;}else if(pt.x>rt[4].left && pt.x<rt[4].right &&pt.y>rt[4].top && pt.y<rt[4].bottom){if(xyear<4) printf("4");xyear++;if(xyear==1) year=4*1000;if(xyear==2) year=year+4*100;if(xyear==3) year=year+4*10;if(xyear==4){year=year+4;printf("\n你选择的年为%d",year);}continue;}else if(pt.x>rt[5].left && pt.x<rt[5].right &&pt.y>rt[5].top && pt.y<rt[5].bottom){if(xyear<4) printf("5");xyear++;if(xyear==1) year=5*1000;if(xyear==2) year=year+5*100;if(xyear==3) year=year+5*10;if(xyear==4){year=year+5;printf("\n你选择的年为%d",year);}continue;}else if(pt.x>rt[6].left && pt.x<rt[6].right &&pt.y>rt[6].top && pt.y<rt[6].bottom){if(xyear<4)printf("6");xyear++;if(xyear==1) year=6*1000;if(xyear==2) year=year+6*100;if(xyear==3) year=year+6*10;if(xyear==4){year=year+6;printf("\n你选择的年为%d",year);}continue;}else if(pt.x>rt[7].left && pt.x<rt[7].right &&pt.y>rt[7].top && pt.y<rt[7].bottom){if(xyear<4)printf("7");xyear++;if(xyear==1) year=7*1000;if(xyear==2) year=year+7*100;if(xyear==3) year=year+7*10;if(xyear==4){year=year+7;printf("\n你选择的年为%d",year);}continue;}else if(pt.x>rt[8].left && pt.x<rt[8].right &&pt.y>rt[8].top && pt.y<rt[8].bottom){if(xyear<4)printf("8");xyear++;if(xyear==1) year=8*1000;if(xyear==2) year=year+8*100;if(xyear==3) year=year+8*10;if(xyear==4){year=year+8;printf("\n你选择的年为%d",year);}continue;}else if(pt.x>rt[9].left && pt.x<rt[9].right &&pt.y>rt[9].top && pt.y<rt[9].bottom){if(xyear<4)printf("9");xyear++;if(xyear==1) year=9*1000;if(xyear==2) year=year+9*100;if(xyear==3) year=year+9*10;if(xyear==4){year=year+9;printf("\n你选择的年为%d",year);}continue;}else if(pt.x>rt[10].left && pt.x<rt[10].right &&pt.y>rt[10].top && pt.y<rt[10].bottom){if(xyear<4) printf("0");xyear++;if(xyear==1) year=0*1000;if(xyear==2) year=year+0*100;if(xyear==3) year=year+0*10;if(xyear==4){year=year+0;printf("\n你选择的年为%d",year);}continue;}else if(pt.x>rt[11].left && pt.x<rt[11].right &&pt.y>rt[11].top && pt.y<rt[10].bottom){if(xyear>=1&&year!=0){clear();yearbak=year;SetConsoleCursorPosition(hOut, pos3_2);printf("公元%d年",yearbak);SetConsoleCursorPosition(hOut, pos3_1);for(i=1;i<=6;i+=3)huizs(i);x=MessageBox(NULL,"是否显示后六个月?", "提示",MB_YESNO);if(x==6) {SetConsoleTextAttribute(hOut, 14);clear();for(i=7;i<=12;i+=3)huizs(i);}}else printf("输入不合法,请点击清除重新输入");continue;}else if(pt.x>rt[12].left && pt.x<rt[12].right &&pt.y>rt[12].top && pt.y<rt[12].bottom){xyear=0;year=0;clear();clock_sz();hzdy(nowyear,nowmonth);pn=CreatePen(PS_SOLID,2,RGB(255,255,0));SelectObject(hdc, pn);//选画笔MoveToEx(hdc,5,75,NULL);LineTo(hdc,45,75);SetConsoleCursorPosition(hOut, pos);continue;}};}}ReleaseDC(hwnd,hdc);}int pd( int year){int pr=0;if((year%100==0)&&(year%400==0))pr=1;else if(year%4==0&&year%100!=0)pr=1;else pr=0;return pr;}void huizs(int line_head_month){int i=0,j=0,k=0,month=0,n=0,daysum=0,jlw=0;int monthhead[13]={0},mlt[3]={1,1,1};int endline=0,test=0;int year=0;year=yearbak;for(i=1;i<year;i++){if(pd(i))daysum+=366;else daysum+=365;}j=daysum%7;monthhead[0]=j;for(month=1;month<=12;month++){if(pd(year)&&month==2) n=29;else if(pd(year)==0&&month==2) n=28;else if(month==4||month==6||month==9||month==11) n=30;else n=31;monthhead[month]=(monthhead[month-1]+n)%7;}while(test<=5){for(month=line_head_month;month<=(line_head_month+2);month++){if(month%3==1&&endline==0){printf("\t%d月\t\t\t%d月%d月\n",month,month+1,month+2);printf("一二三四五六日一二三四五六日一二三四五六日\n");}if(endline==0){for(k=0;k<monthhead[month-1];k++)printf(" ");j=monthhead[month-1];}if(endline==0) i=1;else i=mlt[month-1];for(;j<7;i++,j++){if(pd(year)&&month==2) n=29;else if(pd(year)==0&&month==2) n=28;else if(month==4||month==6||month==9||month==11) n=30;else n=31;if(i>n){for(k=0;k<7-j;k++)printf(" ");break;}printf("%-3.0d",i);}printf(" ");mlt[month-1]=i;if(month%3==0){printf("\n");endline=1;}j=0;}test++;}}void hzdy(int year,int nowmonth_hz){int i=0,j=0,k=0,month=0,n=0,daysum=0,jlw=0;int monthhead[13]={0},mlt[3]={1,1,1};int endline=0,test=0;for(i=1;i<year;i++){if(pd(i))daysum+=366;else daysum+=365;}j=daysum%7;monthhead[0]=j;for(month=1;month<=12;month++){if(pd(year)&&month==2) n=29;else if(pd(year)==0&&month==2) n=28;//平年else if(month==4||month==6||month==9||month==11) n=30;else n=31;monthhead[month]=(monthhead[month-1]+n)%7;}if(pd(year)&&nowmonth_hz==2) n=29;//闰年else if(pd(year)==0&&nowmonth_hz==2) n=28;//平年else if(nowmonth_hz==4||nowmonth_hz==6||nowmonth_hz==9||nowmonth_hz==11) n=30;//4,6,9,11月else n=31;printf("\n\n\n\n\n\n\n\n 当前时间:%d年%d月%d日%d时%d分\n\n",nowyear,nowmonth,nowday,hour,min);printf("\t一二三四五六日\n\t");for(k=0;k<monthhead[nowmonth_hz-1];k++)printf(" ");j=monthhead[nowmonth_hz-1];for(i=1;i<=n;i++,j++){if(j==7){printf("\n\t");j=0;}printf("%-3.0d",i);}printf("\n");}void clock_sz(){float a,b,c;float x=0,y=0,ex=100,ey=160,radian=0,oldx,oldy,radius=90;float mx=0,my=0,oldmx,oldmy,mradius=40;float hx=0,hy=0,oldhx,oldhy,hradius=20;intkd_r1,kd_r2,kd_radius=170,kd_radius1,old_kd_x,old_kd_y,kd_radian=0,k=0,q=0,oldk,oldq;HWND hwnd;HANDLE hOut;HDC hdc;COLORREF C1=RGB(0,0,0),C2=RGB(0,0,0);HBRUSH hbr,hbr1,hbr2;HPEN hpn,gpn,rpn,ppn2,ypn,bpn,kdpn,rkdpn,dotpn,blue,black,blkdpn,pkdpn,hpn2;hwnd=GetConsoleWindow();hdc = GetDC(hwnd);hOut = GetStdHandle(STD_OUTPUT_HANDLE);hbr= CreateSolidBrush(RGB(0,100,0));hbr1= CreateSolidBrush(C1);hbr2= CreateSolidBrush(RGB(0,0,150));hpn2=CreatePen(PS_SOLID,1,RGB(255,0,0));rpn=CreatePen(PS_SOLID,1,RGB(255,0,0));ppn2=CreatePen(PS_SOLID,3,RGB(255,255,0)); hpn=CreatePen(PS_SOLID,1,RGB(0,255,255)); blue=CreatePen(PS_SOLID,3,RGB(0,0,255)); bpn=CreatePen(PS_SOLID,1,RGB(255,255,255)); gpn=CreatePen(PS_SOLID,2,RGB(0,255,0)); pkdpn=CreatePen(PS_SOLID,3,RGB(0,255,255)); kdpn=CreatePen(PS_SOLID,1,RGB(255,255,0)); rkdpn=CreatePen(PS_SOLID,4,RGB(255,0,0)); blkdpn=CreatePen(PS_SOLID,6,RGB(0,0,0)); black=CreatePen(PS_SOLID,4,C1);ex=400;//时钟圆心位置ey=230;while(kd_radian<=360){if(kd_radian%5==0){if(kd_radian%90==0){kd_radius=130;SelectObject(hdc,rkdpn);}else{kd_radius=125;SelectObject(hdc,pkdpn);}}else{kd_radius=130;SelectObject(hdc, kdpn);kd_radius1=120;}y=kd_radius*sin(kd_radian/180.0*3.14);x=kd_radius*cos(kd_radian/180.0*3.14);MoveToEx(hdc,ex,ey,NULL);LineTo(hdc,ex+x,ey+y);y=kd_radius1*sin(kd_radian/180.0*3.14);x=kd_radius1*cos(kd_radian/180.0*3.14);old_kd_x=x;old_kd_y=y;SelectObject(hdc,blkdpn);MoveToEx(hdc,ex,ey,NULL);LineTo(hdc,ex+old_kd_x,ey+old_kd_y);kd_radian+=6;};SetTextColor(hdc,RGB(0,255,0));SetBkColor(hdc,RGB(0,0,0));TextOut(hdc,ex+kd_radius+8,ey-7,TEXT("3"),1);TextOut(hdc,ex-4,ey+kd_radius+3,TEXT("6"),1);TextOut(hdc,ex-kd_radius-15,ey-5,TEXT("9"),1);TextOut(hdc,ex-7,ey-kd_radius-18,TEXT("12"),2);radius=110;mradius=90;//分针半径hradius=70;//时针半径x=0,y=0;radian=0;SetTextColor(hdc,RGB(0,255,225));////设颜色SetBkColor(hdc,RGB(0,0,0));////设颜色ti2();a=sec*6/180.0*3.14;b=min*6/180.0*3.14;c=(hour*30.0-90.0+(min+15)/2.0)/180.0*3.14;SetTextColor(hdc,RGB(0,255,255));my=mradius*sin(b);mx=mradius*cos(b);SelectObject(hdc, gpn);MoveToEx(hdc,ex,ey,NULL);LineTo(hdc,ex+mx,ey+my);LineTo(hdc,ex+mx,ey+my);hy=hradius*sin(c);hx=hradius*cos(c);SelectObject(hdc, blue);MoveToEx(hdc,ex,ey,NULL);LineTo(hdc,ex+hx,ey+hy);ReleaseDC(hwnd, hdc);}。
(完整版)C语言万年历

说明部分
在TC或VC6.0中编译程序,编译成功后,通过命令行向编译生成的可执行文件(.exe)传递参数,在命令行中输入该执行文件的路径名称,然后再输入传入的参数,回车,就会显示出运行结果,效果如图1.1所示。
图1.1万年历运行界面
代码部分
#include <stdio.h>
main(int a,char **date)
}
if (day<0||day>month)
{
printf ("\n ERROR! the entered DAY is invalid\n");
exit (0);
}
week=(dy+dm+day-1+6)%7;
if(week<0)
week+=7;
if (day>0) /***判定查看类型***/
{
if (d==-1) year=year*10+(date[1][i]-'0');
if (d==0) month=month*10+(date[1][i]-'0');
if (d==1) day=day*10+(date[1][i]-'0');
i++;
}
if (month<1||month>12)/*若月份传入错误数字*/
else
d=(year-2000)/4-(year-2000)/100+(year-2000)/400;
dy=(year-2000)+d; /***该年1月1号到2000年1月1号的"星期差" ***/
万年历C语言代码

//ÍòÄêÀú#include <stdio.h>//±íÍ·void print_head(int x,int y){printf("\n\n************************************************************ ********************\n\n");printf ("\t\t\t\t%d %d\n\n",x,y);printf ("\t\t\t SUN MON TUE WED THU FRI SAT\n");printf ("\t\t\t");}//ÈÕÀúµÄÖмävoid print_month(int x,int y){int i;char space[7]={' '};for (i=1;i<=x;i++){printf ("%4c",space[i]);}for (i=1;i<=y;i++){if ((i+x)%7==1){printf ("\n\t\t\t%4d",i);}else{printf ("%4d",i);}}printf("\n\n************************************************************ ********************\n\n");}//¼ÆËãÖ¸¶¨ÄêÔµÄÌìÊýint days_of_month(int x,int y){int z;switch (y){case 1:case 3:case 5:case 7:case 8:case 10:case 12: z=31;break;case 4:case 6:case 9:case 11: z=30;break;case 2:{if ((x%4==0&&x%100!=0)||(x%400==0)){z=29;}else{z=28;}break;}}return z;} //¼ÆËãÖ¸¶¨ÄêÔÂ1ºÅÊÇÐÇÆÚ¼¸int leap(int x,int y){int z,i,moday;z=(x+(x-1)/4-(x-1)/100+(x-1)/400)%7;for (i=1;i<y;i++){moday=days_of_month(x,i); //ǯÌ×µ÷Óú¯Êýz=(z+moday)%7;}return z;}void main(){do{int days,year,month,firstday;char choose;do{printf ("\n\nÇëÊäÈëÐèÒª²éѯµÄÄê·Ý(0000~9999):\n\n");scanf ("%d",&year);if (year<0||year>9999){printf ("WANNING:ERROR,ÇëÖØÐÂÊäÈë!");}}while (year<0||year>9999);printf ("\n\n");do{printf ("ÇëÊäÈëÐèÒª²éѯµÄÔ·Ý(0~12)\n\n\n");scanf ("%d",&month);if (month<=0||month>12){printf ("WANNING:ERROR,ÇëÖØÐÂÊäÈë!");}} while (month<=0||month>12);printf ("\n\n");days=days_of_month(year,month); //µ÷Óú¯Êýfirstday=leap(year,month);print_head(year,month);print_month(firstday,days);choose=getchar();printf ("\n\n\n");printf("ÇëÎÊÊÇ·ñ¼ÌÐø£¿(y/n):\n\n");scanf("%c",&choose);if (choose=='n'||choose=='N'){break;}}while(1<2);}。
c程序万年历编写

C程序万年历编写#include<stdio.h>int main(){int choice;do{system("cls");printf("*********************************\n");printf("* 请选择你要的查询方式! *\n");printf("*1、输入一年的年份输出全年的日历*\n");printf("*2、输入年份、月份输出该月的日历*\n");printf("*3、输入月日,计算出该天是星期几*\n");printf("*0、Exit! *\n");printf("*********************************\n");scanf("%d",&choice);switch(choice){case 1:oneyear();system("pause");break;/*函数调用*/case 2:onemonth();system("pause");break;case 3:oneday();system("pause");break;case 0:break;}if(choice==0)break;}while(1);}/以mina()是主函数,分别对三个函数oneyear()、onemonth()、oneday()的调用/void oneyear(){int year,month, yearday,monthday,i,day,week;do{printf("请输入1980年以后的年份!\n");printf("输入你要查询的年份!\n");scanf("%d",&year);if(year<1980)printf("你输入的年份有误,请正确输入!\n");elsebreak;}while(1);for(i=1980,yearday=0; i<year; i++)/*计算所有年份的天数*/{yearday=yearday+365;if((i%4==0&&i%100!=0)||(i%400==0))/*判断闰年平年*/yearday++;}for(month=1; month<=12; month++){printf("\n%d月份\n",month);printf(" SUN MON TUE WED THU FRI SAT\n");switch(month){case 2:{if((year%4==0&&year%100!=0)||(year%400==0)) day=29;elseday=28;}break;case 4:case 6:case 9:case 11:day=30;break;default :day=31;}week=(yearday+1+1)%7;/*判断该年的一月一日是周几*/ yearday += day;for ( i = 0; i <week; ++i )printf(" ");for(monthday=1; monthday<=day; monthday++){if(week==7){printf("\n");week=0;}printf("%6d",monthday);if(monthday==day)printf("\n");week++;}}}void onemonth(){int month,day,monthday,year,yearday,totaday,i,n,week,sum;do{printf("输入1980年以后的年份!\n");printf("输入年份、月份:\n");scanf("%d,%d",&year,&month);if(year<1980)printf("你输入的有误,请重新输入!\n");elsebreak;}while(1);printf(" SUN MON TUE WED THU FRI SAT\n");yearday=0;for(i=1980; i<year; i++){yearday=yearday+365;if((i%4==0&&i%100!=0)||(i%400==0))}for(sum=0,n=1;n<month;n++){switch(n){case 2:if((year%4==0&&year%100!=0)||(year%400==0)) day=29;elseday=28;break;case 4:case 6:case 9:case 11:day=30;break;default :day=31;}sum=day+sum;}totaday=sum+yearday;week=(totaday+1+1)%7;for ( i = 0; i<week; ++i )printf(" ");switch(month){case 2:if((year%4==0&&year%100!=0)||(year%400==0))elseday=28;break;case 4:case 6:case 9:case 11:day=30;break;default :day=31;}for(monthday=1; monthday<=day; monthday++) {if(week==7){printf("\n");week=0;}printf("%6d",monthday);if(monthday==day)printf("\n");week++;}}void oneday(){int year,month,day,yearday,totaday,monthday,n,sum,i,week; do{printf("请输入1980年以后的年份!\n");printf("请输入要查询的年月日:\n");scanf("%d,%d,%d",&year,&month,&day);if(year<1980)printf("你输入的有误,请重新输入!\n");elsebreak;}while(1);yearday=0;for(i=1980;i<year;i++){yearday=365+yearday;if((i%4==0&&i%100!=0||i%400==0))yearday++;}for(sum=0,n=1;n<month;n++){switch(n){case 2:if((year%4==0&&year%100!=0)||(year%400==0)) monthday=29;elsemonthday=28;break;case 4:case 6:case 9:case 11:monthday=30;break;default :monthday=31;}sum=monthday+sum;}totaday=sum+yearday+day;week=(totaday+1)%7;switch(week){case 1:printf("该天是周一!\n");break;case 2:printf("该天是周二!\n");break;case 3:printf("该天是周三!\n");break; case 4:printf("该天是周四!\n");break; case 5:printf("该天是周五!\n");break; case 6:printf("该天是周六!\n");break; case 0:printf("该天是周日!\n");}}。
C语言万年历代码

else if(ch=='n'||ch=='N')
{ month+=1;
if(month>12) {month=1;year+=1;}
}
printf("\t\t********e退出 p上一月 n下一月********");
}
void first_set(int *year,int *month)
{ do{
printf ("please input the year(1~9999):");
if (choose=='y'||choose=='Y') main();
}
days_of_month(int x,int y)
{
int z;
switch (y)
{case 1:
case 3:
case 5:
case 7:
case 8:
printf ("please input the month(1~12):");
scanf ("%d",month);
if(*month<1||*month>12) printf ("WANNING:ERROR,please input again!\n");
printf ("\n\n********************************************************************************\n\n");
自己做的日历(C语言)
本帖最后由 kekeyu 于 2010-8-15 16:59 编辑
数字万年历简易C语言程序源代码

数字万年历简易C语言程序源代码#include"reg52.h"#define uchar unsigned char#define uint unsigned intsbit rs=P2^0; // lcd 控制端sbit en=P2^2; // lcd 控制端sbit all=P2^1; // lcd 控制端sbit s0=P1^5; //时间调节sbit s1=P1^6;sbit s2=P1^7;sbit voice=P2^7;int nt;sbit DQ=P2^6;sbit DS1302_CLK = P2^3; //实时时钟时钟线引脚sbit DS1302_IO = P2^4; //实时时钟数据线引脚sbit DS1302_RST = P2^5; //实时时钟复位线引脚sbit ACC0 = ACC^0;sbit ACC7 = ACC^7;unsigned char time;#define ads_y 0#define ads_mo 3#define ads_d 6#define ads_w 9#define ads_h 65#define ads_m 68#define ads_s 71#define DS1302_SECOND 0x80 //写入ds地址宏定义#define DS1302_MINUTE 0x82#define DS1302_HOUR 0x84#define DS1302_WEEK 0x8A#define DS1302_DAY0x86#define DS1302_MONTH 0x88#define DS1302_YEAR 0x8Cvoid delay1(unsigned int i) //ds 延时函数放在前边是为了让EP 两次存储之间延时可以调用{while(i--);}void init_ds() //ds 初始化函数{unsigned char x=0;DQ=1; //DQ复位delay1(8); //稍做延时DQ=0; //单片机将DQ拉低delay1(80); //精确延时大于480usDQ=1; //拉高总线delay1(10);x=DQ; //稍做延时后如果x=0则初始化成功x=1则初始化失败delay1(5);}unsigned char read_ds() ///ds 读一个字节{unsigned char i=0;unsigned char dat=0;for(i=8;i>0;i--){DQ=0; // 给脉冲信号dat>>=1;DQ=1; // 给脉冲信号if(DQ)dat|=0x80;delay1(5);}return(dat);}void write_ds(unsigned char dat) ///写一个字节{unsigned char i=0;for(i=8;i>0;i--){DQ=0;DQ=dat&0x01;delay1(5);DQ=1;dat>>=1;}delay1(5);}void get_nt() //获取温度{unsigned char a=0;unsigned char b=0;init_ds();write_ds(0xCC); // 跳过读序号列号的操作write_ds(0x44); // 启动温度转换delay1(10);init_ds();write_ds(0xCC); //跳过读序号列号的操作write_ds(0xBE); //读取温度寄存器等(共可读9个寄存器)前两个就是温度a=read_ds();b=read_ds();nt=0;nt=nt+b;nt=nt<<8;nt=nt+a;nt=nt*0.625; //此ds18b20 最低位为0.5 扩大十倍}void delay_1302(uint n) //按键长延时{while(n--);}void delay(uchar n) //lcd 延时子程序{uchar i,j;for(i=0;i<n;i++)< bdsfid="161" p=""></n;i++)<>for(j=0;j<10;j++);}void write_com(char com) //lcd comond in LCD控制字写入函数{en=0;P3=com;rs=0;delay(1);en=1;delay(2);en=0;delay(2);}void write_byte(char byte) //lcd data in LCD数据写入函数{en=0;P3=byte;rs=1;delay(1);en=1;delay(2);en=0;delay(2);}void init_lcd_com() //lcd init LCD初始化{all=0;write_com(0x38);write_com(0x0c);write_com(0x06);}void DS1302InputByte(unsigned char d) //实时时钟写入一字节(内部函数){unsigned char i;ACC = d;for(i=8; i>0; i--){DS1302_IO = ACC0; //相当于汇编中的RRCDS1302_CLK = 1;DS1302_CLK = 0;ACC = ACC >> 1;}}unsigned char DS1302OutputByte(void) //实时时钟读取一字节(内部函数){unsigned char i;for(i=8; i>0; i--){ACC = ACC >>1; //相当于汇编中的RRCACC7 = DS1302_IO;DS1302_CLK = 1;DS1302_CLK = 0;}return(ACC);}void Write1302(unsigned char ucAddr, unsigned char ucDa) //ucAddr: DS1302地址, ucData: 要写的数据DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302InputByte(ucAddr); // 地址,命令DS1302InputByte(ucDa); // 写1Byte数据DS1302_CLK = 1;DS1302_RST = 0;}unsigned char Read1302(unsigned char ucAddr) //读取DS1302某地址的数据{unsigned char ucData;DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302InputByte(ucAddr|0x01); // 地址,命令ucData = DS1302OutputByte(); // 读1Byte数据DS1302_CLK = 1;DS1302_RST = 0;return(ucData);}void DS1302_SetProtect(bit flag) //是否写保护{if(flag)Write1302(0x8E,0x10);elseWrite1302(0x8E,0x00);}void DS1302_SetTime(unsigned char Address, unsigned char V alue) // 关键函数向内写入时间{DS1302_SetProtect(0);Write1302(Address, ((V alue/10)<<4 | (V alue%10)));}void DS1302_GetTime(unsigned char xy) //关键函数向外读出时间{unsigned char ReadV alue;ReadV alue = Read1302(xy);time=((ReadV alue&0x70)>>4)*10+(ReadV alue&0x0F);}void display_nt(char ads,uchar t) //将读出时间显示char ge,shi;write_com(0x80+ads);shi=t%100/10;ge=t%10;write_byte(shi+'0');write_byte(ge+'0');}void display_nt2(char ads,uchar t) //将读出星期显示{ write_com(0x80+ads);write_byte(t+'0');}void get_dis() //获得时间并显示{DS1302_GetTime(DS1302_YEAR);display_nt(ads_y,time);DS1302_GetTime(DS1302_MONTH);display_nt(ads_mo,time);DS1302_GetTime(DS1302_DAY);display_nt(ads_d,time);DS1302_GetTime(DS1302_WEEK);display_nt2(ads_w,time);DS1302_GetTime(DS1302_HOUR);display_nt(ads_h,time);DS1302_GetTime(DS1302_MINUTE);display_nt(ads_m,time);DS1302_GetTime(DS1302_SECOND);display_nt(ads_s,time);}void set_time() //三按键设置时间{if(s0==0){write_com(0x0f); //开闪烁write_com(0x80+ads_m+1);while(s0==0);delay_1302(30000);while(s0==1){if(s1==0){DS1302_GetTime(DS1302_MINUTE); time++;DS1302_SetTime(DS1302_MINUTE,time); display_nt(ads_m,time);write_com(0x80+ads_m+1);delay_1302(30000);}if(s2==0){DS1302_GetTime(DS1302_MINUTE); time--;DS1302_SetTime(DS1302_MINUTE,time); display_nt(ads_m,time);write_com(0x80+ads_m+1);delay_1302(30000);}}write_com(0x80+ads_h+1);while(s0==0);delay_1302(30000);while(s0==1){if(s1==0){DS1302_GetTime(DS1302_HOUR); time++;DS1302_SetTime(DS1302_HOUR,time); display_nt(ads_h,time);write_com(0x80+ads_h+1);delay_1302(30000);}if(s2==0){DS1302_GetTime(DS1302_HOUR); time--;DS1302_SetTime(DS1302_HOUR,time); display_nt(ads_h,time);write_com(0x80+ads_h+1);delay_1302(30000);}}write_com(0x80+ads_w);while(s0==0);delay_1302(30000);while(s0==1){if(s1==0){DS1302_GetTime(DS1302_WEEK); time++;DS1302_SetTime(DS1302_WEEK,time); display_nt2(ads_w,time);write_com(0x80+ads_w);delay_1302(30000);}if(s2==0){DS1302_GetTime(DS1302_WEEK); time--;DS1302_SetTime(DS1302_WEEK,time); display_nt2(ads_w,time);write_com(0x80+ads_w);delay_1302(30000);}}write_com(0x80+ads_d+1);while(s0==0);delay_1302(30000);while(s0==1){if(s1==0){DS1302_GetTime(DS1302_DAY);time++;DS1302_SetTime(DS1302_DAY,time); display_nt(ads_d,time);write_com(0x80+ads_d+1);delay_1302(30000);}if(s2==0){DS1302_GetTime(DS1302_DAY);time--;DS1302_SetTime(DS1302_DAY,time);display_nt(ads_d,time);write_com(0x80+ads_d+1);delay_1302(30000);}}write_com(0x80+ads_mo+1);while(s0==0);delay_1302(30000);while(s0==1){if(s1==0){DS1302_GetTime(DS1302_MONTH); time++;DS1302_SetTime(DS1302_MONTH,time); display_nt(ads_mo,time);write_com(0x80+ads_mo+1);delay_1302(30000);}if(s2==0){DS1302_GetTime(DS1302_MONTH); time--;DS1302_SetTime(DS1302_MONTH,time); display_nt(ads_mo,time);write_com(0x80+ads_mo+1);delay_1302(30000);}}write_com(0x80+ads_y+1);while(s0==0);delay_1302(30000);while(s0==1){if(s1==0){DS1302_GetTime(DS1302_YEAR); time++;DS1302_SetTime(DS1302_YEAR,time); display_nt(ads_y,time);write_com(0x80+ads_y+1);delay_1302(30000);}if(s2==0){DS1302_GetTime(DS1302_YEAR); time--;DS1302_SetTime(DS1302_YEAR,time); display_nt(ads_y,time);write_com(0x80+ads_y+1);delay_1302(30000);}}write_com(0x0c);while(s0==0);delay_1302(30000);}}void init_lcd_dis() //显示初始化{write_com(0x80+2);write_byte('*');write_com(0x80+5);write_byte('*');write_com(0x80+8);write_byte('-');write_com(0x80+67);write_byte(':');write_com(0x80+70);write_byte(':');}void my() //右下角显示函数{char *pp;char i;code char p[]=" hou fei see a girl and say I LOVE YOU replay I LOVE YOU too ";pp=p;if(time<=60){write_com(0x80+74);for(i=0;i<=5;i++){write_byte(*(pp+time));pp++;}}}void display_nntt(int t) //当前温度显示{char ge,shi,bai;if(t<0){write_com(0x80+11);write_byte('-');t=-t;}else{write_com(0x80+11);write_byte('+');}bai=t/100;shi=t%100/10;ge=t%10;write_byte(bai+'0');write_byte(shi+'0');write_byte('.');write_byte(ge+'0');}void main(){init_lcd_com();init_lcd_dis();DS1302_SetTime(DS1302_SECOND,00); while(1){get_dis();set_time();get_nt();display_nntt(nt); my();}}。
万年历c语言程序,新手

万年历c程序#include <stdio.h>code unsigned char WeekTab[] = {//闰年月星期表(3 << 5) + 31,//1月(6 << 5) + 29,//2月(0 << 5) + 31,//3月(3 << 5) + 30,//4月(5 << 5) + 31,//5月(1 << 5) + 30,//6月(3 << 5) + 31,//7月(6 << 5) + 31,//8月(1 << 5) + 30,//9月(4 << 5) + 31,//10月(0 << 5) + 30,//11月(2 << 5) + 31 //12月};/*----------------------------------------------------------------------------------------2000年~2099年星期算法-----------------------------------------------------------------------------------------*/unsigned char WeekDay20(unsigned char y, unsigned char m, unsigned char d) {unsigned char week, day;day = WeekTab[m - 1];//月表week = day >> 5;//月星期数day &= 0x1f;//月天数if ((m < 3) && (y & 0x03)){//平年if (m == 2) day--;//平年月天数week++;//平年月表+1}y = y + (y >> 2);//年+年/4week = (week + y + d + 2) % 7;//(星期=年+年/4+月表+2日)%7return (week << 5) | day;//返回星期和月天数}/*----------------------------------------------------------------------------------------0000年~9999年星期算法-----------------------------------------------------------------------------------------*/unsigned char WeekDay(unsigned char c, unsigned char y, unsigned char m,unsigned char d){unsigned char week, day;c &= 0x03;//百年%4c = c | (c << 2);//百年%4*5day = WeekTab[m - 1];//月表week = day >> 5;//月星期数day &= 0x1f;//月天数if ((m < 3) && !((c == 0) | (y & ((y & 0x03) == 0)))){//平年if (m == 2) day--;//平年月天数week++;//平年月表+1}y = y + (y >> 2);//年+年/4week = (week + c + y + d + 2) % 7;//(星期=百年%4*5+年+年/4+月表+日+2)%7 return (week << 5) | day;//返回星期和月天数}unsigned char BcdToBin(unsigned char val){val = (val>> 4) * 10 + (val& 0x0f);//将BCD码转换为10进制数return val;//返回10进制数}void main(void){unsigned char c, y, m, d;unsigned char cx, yx, mx, dx;unsigned char WDay, Week, Day;/*---------------------------------------------------------0001年1月1日星期天---------------------------------------------------------*/c = 0x00;y = 0x01;m = 0x01;d = 0x01;cx = BcdToBin(c);//百年yx = BcdToBin(y);//年mx = BcdToBin(m);//月dx = BcdToBin(d);//日WDay = WeekDay(cx, yx, mx, dx);//取星期和月天数Week = WDay>> 5;//得到星期Day = WDay& 0x1f;//得到最大月天数/*---------------------------------------------------------1918年1月21日星期一---------------------------------------------------------*/c = 0x19;y = 0x18;m = 0x01;d = 0x21;cx = BcdToBin(c);//百年yx = BcdToBin(y);//年mx = BcdToBin(m);//月dx = BcdToBin(d);//日WDay = WeekDay(cx, yx, mx, dx);//取星期和月天数Week = WDay>> 5;//得到星期Day = WDay& 0x1f;//得到最大月天数/*--------------------------------------------------------- 9999年12月31日星期天---------------------------------------------------------*/c = 0x00;y = 0x01;m = 0x01;d = 0x01;cx = BcdToBin(c);//百年yx = BcdToBin(y);//年mx = BcdToBin(m);//月dx = BcdToBin(d);//日WDay = WeekDay(cx, yx, mx, dx);//取星期和月天数Week = WDay>> 5;//得到星期Day = WDay& 0x1f;//得到最大月天数/*--------------------------------------------------------- 2004年6月18日星期五---------------------------------------------------------*/c = 0x20;y = 0x04;m = 0x06;d = 0x18;cx = BcdToBin(c);//百年yx = BcdToBin(y);//年mx = BcdToBin(m);//月dx = BcdToBin(d);//日WDay = WeekDay20(yx, mx, dx);//取星期和月天数Week = WDay>> 5;//得到星期Day = WDay& 0x1f;//得到最大月天数/*--------------------------------------------------------- 2018年3月8日星期四---------------------------------------------------------*/c = 0x20;y = 0x18;m = 0x03;d = 0x08;cx = BcdToBin(c);//百年yx = BcdToBin(y);//年mx = BcdToBin(m);//月dx = BcdToBin(d);//日WDay = WeekDay20(yx, mx, dx);//取星期和月天数Week = WDay>> 5;//得到星期Day = WDay& 0x1f;//得到最大月天数while(1);。
C语言万年历程序

#include<stdio.h>#include<math.h>int fun(int a,int tianshu) //定义一个月份日期和星期几并显示的子函数{int i,k;{ for(i=0;i<a;i++) printf(""); //通过改变i和k的值改变循环次数和输出的日期for(i=a+1,k=1;i<tianshu+a;i++){ if(k<10) printf("%d ",k);else printf("%d ",k);k++;if(i%7==0) printf("\n");} //当i为7时,换行printf("\n");}a=(i-1)%7; //a为该月份结束时最后一个日期是星期几return a;}void shuchu(char a[8]) //定义一个显示月份和分割线的子函数{printf("----------------------------------------\n");printf("%s\n",&a[0]);printf("Sun Mon Tue Wed Thu Fri Sat\n");}void panduan(int dd,int yuefen,int ri,int year){int i,j=0,sum=0,k[]={31,29,31,30,31,30,31,31,30,31,30,31};int b;int a[]={31,28,31,30,31,30,31,31,30,31,30,31};if(year%4==0&&year%100!=0||year%400==0){for(i=1;i<yuefen;i++,j++)sum=sum+k[j];}else {for(i=1;i<yuefen;i++,j++)sum=sum+a[j];}sum=sum+ri;b=(sum+dd-1)%7;if(b==0) printf("\n%d年%d月%d日是星期日",year,yuefen,ri);if(b==1) printf("\n%d年%d月%d日是星期一",year,yuefen,ri);if(b==2) printf("\n%d年%d月%d日是星期二",year,yuefen,ri);if(b==3) printf("\n%d年%d月%d日是星期三",year,yuefen,ri);if(b==4) printf("\n%d年%d月%d日是星期四",year,yuefen,ri);if(b==5) printf("\n%d年%d月%d日是星期五",year,yuefen,ri);if(b==6) printf("\n%d年%d月%d日是星期六",year,yuefen,ri);}void main(){int year,month,i=0,j=0,k=1,a=0,m;int aa,bb,cc,dd;char n[]="Feb 2",b[]="Mar 3",c[]="Apr 4",d[]="May 5",e[]="Jun 6",f[7]="Jul 7",g[7]="Aug 8",h[7]="Sep 9",p[7]="Oct 10",q[7]="Nov 11",s[7]="Dec 12";printf("****************************************\n");printf("input the year:");scanf("%d",&year);shuruyue: printf("\ninput the month:");scanf("%d",&month);if(month>=13) goto error1;shururi:printf("\ninput the day:");scanf("%d",&aa);if(year%4==0&&year%100!=0||year%400==0){if(month==2&&aa>=30)goto error2 ;}else {if(month==2&&aa>=29)goto error2;}if(month==1&&aa>=32)goto error2 ;if(month==3&&aa>=32)goto error2 ;if(month==4&&aa>=31)goto error2 ;if(month==5&&aa>=32)goto error2 ;if(month==6&&aa>=31)goto error2 ;if(month==7&&aa>=32)goto error2 ;if(month==8&&aa>=32)goto error2 ;if(month==9&&aa>=31)goto error2 ;if(month==10&&aa>=32)goto error2 ;if(month==11&&aa>=31)goto error2 ;if(month==12&&aa>=32)goto error2 ;dd=(year+(year-1)/4-(year-1)/100+(year-1)/400)%7;panduan(dd,month,aa,year);printf("\n****************************************\n");printf("\nTHE CALENDER OF THE YEAR %d\n",year);printf("\n****************************************\n");printf("Jan 1\n");printf("Sun Mon Tue Wed Thu Fri Sat\n");dd=(year+(year-1)/4-(year-1)/100+(year-1)/400)%7; //判断该年的第一天是星期几a=fun(dd,32);shuchu(n);if(year%4==0&&year%100!=0||year%400==0) //判断该年是闰年还是平年a=fun(a,30);else a=fun(a,29);shuchu(b); //调用显示月份和分割线的函数a=fun(a,32); //调用显示月份全部排版的子函数shuchu(c);a=fun(a,31);shuchu(d);a=fun(a,32);shuchu(e);a=fun(a,31);shuchu(f);a=fun(a,32);shuchu(g);a=fun(a,32);shuchu(h);a=fun(a,31);shuchu(p);a=fun(a,32);shuchu(q);a=fun(a,31);shuchu(s);a=fun(a,32);goto jieshu;error1: printf("\nERROR INPUT MONTH.\n");printf("****************************************\n");printf("input the year:%d\n",year);goto shuruyue;error2: printf("\nERROR INPUT DAY.\n");printf("****************************************");printf("\ninput the year:%d\n",year);printf("\ninput the year:%d\n",month);goto shururi;jieshu:return 0;}。
万年历课程设计C语言源代码

#include<reg52.h>#include<intrins.h>#include<absacc.h>#include<math.h>#define uchar unsigned char#define uint unsigned int#define rst573 XBYTE[0X1000]#define y4 XBYTE[0X8000]#define y5 XBYTE[0Xa000]#define y6 XBYTE[0Xc000]#define y7 XBYTE[0Xe000]sbit scl1302=P1^7;sbit IO=P2^3;sbit rst1302=P1^3;sbit lcden=P1^2;sbit lcdwr=P2^1;sbit lcdrs=P2^0;sbit s5=P3^2;sbit s4=P3^3;sbit s6=P3^1;sbit s7=P3^0;uint t;sbit DQ=P1^4;float tt;uchar *riqi="20 - - "; uchar *xingqi="week "; uchar *shijian=" - - "; uchar *wedu="28.7C";uchar time[8],num;int nian,yue,ri,xq=1,shi,fen,miao; char count;void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=120;y>0;y--); }void delayus(uint t){for(;t>0;t--);}void init(){rst573;y4;rst573;P0=0x00;y6;rst573;P0=0xa0;y7;rst573;}/**************************1602***********************/void write_com(uchar com){lcdrs=0;lcdwr=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}void initlcd(){lcdwr=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);}void write_data(uchar date){lcdrs=1;lcdwr=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;}/***********************************************1302**************/ void writebyte(uchar add,date){uchar i;IO=0;rst1302=1;for(i=0;i<8;i++){scl1302=0;IO=add&0x01;scl1302=1;add>>=1;}for(i=0;i<8;i++){scl1302=0;IO=date&0x01;scl1302=1;date>>=1;}rst1302=0;}uchar readbyte(uchar add){uchar i,temp;scl1302=0;IO=0;rst1302=1;for(i=0;i<8;i++){scl1302=0;IO=add&0x01;scl1302=1;add>>=1;}for(i=0;i<8;i++){scl1302=1;temp>>=1;scl1302=0;if(IO)temp|=0x80;}return temp;}void set_1302(){writebyte(0x8e,0x00);writebyte(0x8c,nian);writebyte(0x8a,xq);writebyte(0x88,yue);writebyte(0x86,ri);writebyte(0x84,shi);writebyte(0x82,fen);writebyte(0x80,0x00);writebyte(0x8e,0x80);}void read_1302(uchar *p){p[0]=readbyte(0x81);writebyte(0x00,0x00);p[1]=readbyte(0x83);writebyte(0x00,0x00);p[2]=readbyte(0x85);writebyte(0x00,0x00);p[3]=readbyte(0x87);writebyte(0x00,0x00);p[4]=readbyte(0x89);writebyte(0x00,0x00);p[5]=readbyte(0x8b);writebyte(0x00,0x00);p[6]=readbyte(0x8d);writebyte(0x00,0x00);fen=p[1];shi=p[2];ri=p[3];yue=p[4];xq=p[5];nian=p[6];}/*************************************18b20******************/ void init_ds18b20() //18B20初始化{char presence=1;WR=0;while(presence){while(presence){DQ=1;_nop_();_nop_();DQ=0;delayus(50);DQ=1;delayus(6);presence=DQ;delayus(45); //延时500 uspresence=~DQ;}DQ=1; //拉高电平}/****************************************************************************** **/void writeonechar(unsigned char dat) //写一个字节{uchar i=0;for(i=8;i>0;i--){DQ=1;_nop_();_nop_();DQ=0;DQ=dat&0x01;delayus(6);DQ=1;dat>>=1;}DQ=1;}/****************************************************************************** ***/uchar readonechar(void) //读一个字节{uchar i=0;uchar dat=0;for(i=8;i>0;i--){DQ=1;_nop_();_nop_();dat>>=1;DQ=0;_nop_();_nop_();_nop_();_nop_();DQ=1;_nop_();_nop_();_nop_();_nop_();if(DQ)dat|=0x80;delayus(6);}return(dat);}/****************************************************************************** */uchar display_zh() //把子节转化为十进制{init_ds18b20();writeonechar(0xcc);writeonechar(0x44);init_ds18b20();_nop_();_nop_(); _nop_();_nop_();writeonechar(0xcc);writeonechar(0xbe);a=readonechar();b=readonechar();t=b;t<<=8;t=t|a;tt=t*0.0625;t=tt*10+0.5;return t;}void display1(){uchar i;write_com(0x80); //2011-11-11 23-14-59 week 1 28.7℃for(i=0;i<2;i++){write_data(riqi[i]);}write_com(0x84); //2011-11-11 23-14-59 week 1 28.7℃write_data(riqi[4]);write_com(0x87); //2011-11-11 23-14-59 week 1 28.7℃write_data(riqi[7]);write_com(0x8d);write_data('.');write_com(0x8f);write_data('C');write_com(0xc2);write_data(shijian[2]);write_com(0xc5);write_data(shijian[5]);write_com(0xc9);for(i=0;i<4;i++){write_data(xingqi[i]);}writebyte(0x80,0x00);write_com(0x82);write_data(nian/16+'0');write_data(nian%16+'0');write_com(0x85);write_data(yue/16+'0');write_data(yue%16+'0');write_com(0x88);write_data(ri/16+'0');write_data(ri%16+'0');display_zh();write_com(0x8b);write_data(t%1000/100+'0');write_data(t%100/10+'0');write_com(0x8e);write_data(t%10+'0');/********************************/write_com(0xc0);write_data(shi/16+'0');write_data(shi%16+'0');write_com(0xc3);write_data(fen/16+'0');write_data(fen%16+'0');write_com(0xc6);write_data(time[0]/16+'0');write_data(time[0]%16+'0');write_com(0xce);write_data(xq+'0');}void jian(){if(s4==0){writebyte(0x8e,0x00); writebyte(0x80,0x00);num=0;set_1302();}if(s7==0){while(!s7);num++;}switch(num){case 1:writebyte(0x8e,0x00);if(s6==0){while(!s6);fen++; writebyte(0x80,0x80);}if(fen==10)//10fen=16;if(fen==26)//20fen=32;if(fen==42)//30fen=48;if(fen==58)//40fen=64;if(fen==74)//50fen=80;if(fen==90)//60fen=0;if(s5==0){while(!s5);fen--;writebyte(0x80,0x80);}if(fen==-1)//10fen=89;if(fen==79)//20fen=73;if(fen==63)//30fen=57;if(fen==47)//40fen=41;if(fen==31)//50fen=25;if(fen==15)//50fen=9;writebyte(0x82,fen);write_com(0xc3);display1();break;case 2:writebyte(0x8e,0x00);if(s6==0){while(!s6); shi++;writebyte(0x80,0x80);} if(shi==10)//10shi=16;if(shi==26)//20shi=32;if(shi==36)//30shi=0;if(s5==0){while(!s5);shi--;writebyte(0x80,0x80);}if(shi==-1)//30shi=35;if(shi==31)//40shi=25;if(shi==15)//50shi=9;write_com(0xc0);writebyte(0x84,shi);display1();break;case 3:writebyte(0x8e,0x00);if(s6==0){while(!s6);ri++;writebyte(0x80,0x80);}if(ri==10)//10ri=16;if(ri==26)//20ri=32;if(ri==42)//30ri=48;if(ri==50)//60ri=0;if(s5==0){while(!s5);ri--;writebyte(0x80,0x80);}if(ri==-1)//10ri=49;if(ri==47)//40ri=41;if(ri==31)//50ri=25;if(ri==15)//50ri=9;write_com(0x88);writebyte(0x86,ri);display1();;break;case 4:writebyte(0x8e,0x00);if(s6==0){while(!s6);yue++;writebyte(0x80,0x80);}if(yue==10)//10yue=16;if(yue==19)//20yue=0;if(s5==0){while(!s5);yue--;writebyte(0x80,0x80);}if(yue==-1)//10yue=18;if(yue==16)//10yue=10;write_com(0x85);writebyte(0x88,yue);display1();;break;case 5:writebyte(0x8e,0x00);if(s6==0){while(!s6);nian++;writebyte(0x80,0x80);}if(nian==10)//10nian=16;if(nian==26)//20nian=32;if(nian==42)//30nian=48;if(nian==58)//40nian=64;if(nian==74)//50nian=80;if(nian==90)//60nian=96;if(nian==106)//70nian=112;if(nian==122)//80nian=128;if(nian==138)//90nian=144;if(nian==154)//60nian=0;if(s5==0){while(!s5);nian--;writebyte(0x80,0x80);}if(nian==-1)//10nian=153;if(nian==143)//90nian=137;if(nian==127)//80nian=121;if(nian==111)//70nian=105;if(nian==95)//60nian=89;if(nian==79)//50nian=73;if(nian==63)//40nian=57;if(nian==47)//30nian=41;if(nian==31)//20nian=25;if(nian==-15)//10nian=9;write_com(0x82);writebyte(0x8c,nian);display1();break;case 6:writebyte(0x8e,0x00);if(s6==0){while(!s6);xq++;writebyte(0x80,0x80);}if(xq==8)xq=1;if(xq==0)xq=7;if(s5==0){while(!s5); xq--;writebyte(0x80,0x80);}if(xq==-1)xq=7;write_com(0xce);writebyte(0x8a,xq);display1();break;case 7: writebyte(0x8e,0x00);writebyte(0x80,0x00);num=0;set_1302();break;}}void main(){init();initlcd();set_1302();while(1){ display1();jian();read_1302(time);}}。
C语言万年历

源代码:完美运行#include<stdio.h>#include<time.h>#include<stdlib.h>int judgeyear (int year){if(year%4==0&&year%100!=0||year%400==0)return 366;elsereturn 365;}int days_month (int month,int year){/*1,3,5,7,8,10,12每月31天*/if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) return 31;/*4,6,9,11每月为30天*/if(month==4||month==6||month==9||month==11)return 30;/*2月判断是28还是29天*/if(month==2&&judgeyear(year)==366)return 29;elsereturn 28;}//计算用户输入的年份和今年相隔多少天int distance_inputyear_nowyear(int inputyear,int nowyear){int day_distance=0;if(inputyear<nowyear){for(int i=inputyear;i<nowyear;i++){if(judgeyear(i)==366)day_distance+=366;elseday_distance+=365;}}else if(inputyear>nowyear){for(int i=nowyear;i<inputyear;i++){if(judgeyear(i)==366)day_distance+=366;elseday_distance+=365;}}elseday_distance=0;// printf("%d年的第一天和今年第一天相隔%d天\n",inputyear,day_distance);return day_distance;}//获取今年第一天是星期几void firstday_weekday_nowyear(){int weekday_nowyear_firstday;//今年第一天星期几time_t tval;struct tm *now;tval = time(NULL);now = localtime(&tval);if(now->tm_yday%7<now->tm_wday)weekday_nowyear_firstday=(now->tm_wday-(now->tm_yday%7));elseweekday_nowyear_firstday=((now->tm_wday+7)-(now->tm_yday%7));// printf("%d",now->tm_yday);//今年已经过了多少天// printf("%d",now->tm_wday);//今天是星期几printf("今年第一天是星期%d\n",weekday_nowyear_firstday);}//获取用户输入的年份的第一天是星期几int firstday_weekday_inputyear(int inputyear){int weekday_inputyear_firstday;//输入年份第一天星期几time_t tval;struct tm *now;tval = time(NULL);now = localtime(&tval);if(inputyear<now->tm_year+1900){if(distance_inputyear_nowyear(inputyear,now->tm_year+1900)%7<now->tm_wday)weekday_inputyear_firstday=(now->tm_wday-distance_inputyear_nowyear(inputyear,now->tm_ year+1900)%7);elseweekday_inputyear_firstday=(now->tm_wday+7)-distance_inputyear_nowyear(inputyear,now->t m_year+1900)%7;}elseweekday_inputyear_firstday=(now->tm_wday+distance_inputyear_nowyear(inputyear,now->tm_ year+1900)%7)%7;// printf("%d",now->tm_yday);//今年已经过了多少天// printf("%d",now->tm_wday);//今天是星期几// printf("%d年第一天是星期%d\n",inputyear,weekday_inputyear_firstday);return weekday_inputyear_firstday;}//计算用户输入年份的每个月份的第一天是星期几int weekday_firstday_inputyear_month(int inputyear,int month)//month>=1{int distance_day_month=0;int weekday_month=0;switch(month){case 1:return firstday_weekday_inputyear(inputyear);break;case 2:distance_day_month=31;weekday_month=(firstday_weekday_inputyear(inputyear)+distance_day_month%7)%7;break;case 3:distance_day_month=days_month(2,inputyear)+31;weekday_month=(firstday_weekday_inputyear(inputyear)+distance_day_month%7)%7;break;case 4:distance_day_month=days_month(2,inputyear)+62;weekday_month=(firstday_weekday_inputyear(inputyear)+distance_day_month%7)%7;break;case 5:distance_day_month=days_month(2,inputyear)+92;weekday_month=(firstday_weekday_inputyear(inputyear)+distance_day_month%7)%7;break;case 6:distance_day_month=days_month(2,inputyear)+123;weekday_month=(firstday_weekday_inputyear(inputyear)+distance_day_month%7)%7;break;case 7:distance_day_month=days_month(2,inputyear)+153;weekday_month=(firstday_weekday_inputyear(inputyear)+distance_day_month%7)%7;break;case 8:distance_day_month=days_month(2,inputyear)+184;weekday_month=(firstday_weekday_inputyear(inputyear)+distance_day_month%7)%7;break;case 9:distance_day_month=days_month(2,inputyear)+215;weekday_month=(firstday_weekday_inputyear(inputyear)+distance_day_month%7)%7;break;case 10:distance_day_month=days_month(2,inputyear)+245;weekday_month=(firstday_weekday_inputyear(inputyear)+distance_day_month%7)%7;break;case 11:distance_day_month=days_month(2,inputyear)+276;weekday_month=(firstday_weekday_inputyear(inputyear)+distance_day_month%7)%7;break;case 12:distance_day_month=days_month(2,inputyear)+306;weekday_month=(firstday_weekday_inputyear(inputyear)+distance_day_month%7)%7;break;}if(weekday_month==0)return 7;return weekday_month;}void print(int year,int month){int outputNo=0; //用作记录打印出来的数字个数printf(" Sun Mon Tue Wed Thu Fri Sat \n");switch(weekday_firstday_inputyear_month(year,month)){case 7:printf("");break;case 1:printf(" ");break;case 2:printf(" ");break;case 3:printf(" ");break;case 4:printf(" ");break;case 5:printf(" ");break;case 6:printf(" ");break;}for(int i=1;i<=days_month(month,year);i++){printf("%4d",i);outputNo++;if(i!=7&&outputNo%7==0)printf("\n");if(i<=7&&(i+weekday_firstday_inputyear_month(year,month))%7==0) {printf("\n");outputNo=0;}}}int main(){int year,month,isyear=0,noyear=0,a;time_t tval;struct tm *now;tval = time(NULL);now = localtime(&tval);printf(" ******************************\n");printf(" ** 欢迎使用万年历**\n");printf(" ******************************\n");printf(" ** 制作人:秦盛伟**\n");printf(" ******************************\n");printf("请输入年份:");scanf("%d",&year);printf("请输入月份:");scanf("%d",&month);print(year,month);//打印日历printf("\n");for(int i=0;i<10;i++){printf("\n*******************************************\n");printf("是否需要再次查询?\n");printf("请输入你的选择:(1:是/2:否)");scanf("%d",&a);printf("\n*******************************************\n");if(a==1){printf("请输入年份:");scanf("%d",&year);printf("请输入月份:");scanf("%d",&month);print(year,month);}elseexit(0);}getchar();}。
C语言-万年历

}
week=(year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400+d;//判断这个月的第一天是星期几
week=week%7;
printf("\n\n\t这是%d年的%d月的日历\n",year,month);
Today(year,month,day);
Tomonth(year,month);
printf("\n\t\t输 入 Y 或 者 y 键 继 续。。。");
for(;getch()=='y'||getch()=='Y';)
{
printf("\n\n 请 输 入 您 所 想 要 的 功 能:\n");
scanf("%d",&x);
switch(x)
{
case 1:
{
system("cls");
search();
printf("\n\t\t 按 Y 或 者 y 继 续 ...");
break;
}
case 2:
{
system("cls");
case 3:printf("\t%d 年%d 月%d 日 是 星 期: 三",year,month,day);break;
case 4:printf("\t%d 年%d 月%d 日 是 星 期: 四",year,month,day);break;
case 5:printf("\t%d 年%d 月%d 日 是 星 期: 五",year,month,day);break;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
k++;/*k 用于确定日历中是否回车*/ } for(i=1;i<=d;i++) {
printf("%5d",i);/*每个具体的日期占 5 个字符的宽度*/ k++; if(k==7)/*每行打印 7 个日期数字后回车*/ { printf("\n"); k=0; } } printf("\n-------------------------------------\n"); } int main(){ int y,m; printf("Input year:"); scanf("%d",&y); printf("Input month:"); scanf("%d",&m); Showdate(y d=d%7; return d; } void Showdate(int y,int m)/*显示日历*/ { int first; int d; int i,k; first=Getfirstdayintable(y,m);/*得到第一天在日历中的第一 个位置*/ d=Getdaysofmonth(y,m);/*得到这个月的天数*/ k=0; printf("-------------------------------------\n"); printf(" SUN MON TUE WEN THU FRI STA\n"); for(i=1;i<first;i++)/*打印第一天之前的空格*/ { printf(" ");
int days=0; int i,j; if((Isleapyear(y))) months[2]=29; for(i=1901;i<y;i++)/*从 1901 年 1 月开始计算, 累加 y 年之 前的天数*/ { if(Isleapyear(i)) days+=366; else days+=365; } for(j=1;j<m;j++)/*累加 m 月之后的天数*/ days+=months[j]; return days; } int Getfirstdayintable(int y,int m)/*计算给定年月的第一天在 日历表中的位置*/ { int d; d=Gettotaldays(y,m); d=d+3;/*1901 年 1 月 1 日是星期二,在日历中星期二是第三个位
万年历的 C 语言编程实现源程序: #include<stdio.h> #include<stdlib.h> int Isleapyear(int y)/*判断是否是闰年*/ { if((y%4==0&&y%100!=0)||(y%400==0)) return 1; else return 0; } int Getdaysofmonth(int y,int m)/*确定某个月的天数*/ { int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; if(Isleapyear(y))/*如果是闰年则 2 月份的天数改变为 29*/ months[2]=29; return months[m]; } int Gettotaldays(int y,int m)/*计算从 1901 年 1 月开始到给定年 月的天数*/ { int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};