c语言简单万年历程序设计
c语言万年历程序

#include <stdio.h>#include <stdlib.h>#include <ctype.h>int leap (int year) ;//判断是否为闰年int days_month (int month,int year) ;//判断这个月的天数int menu_select();/*void f(){int day,month,year,sum,leap,S;printf("\n请输入年月日\n");scanf("%d%d%d",&year,&month,&day);switch(month){case 1:sum=0;break;case 2:sum=31;break;case 3:sum=59;break;case 4:sum=90;break;case 5:sum=120;break;case 6:sum=151;break;case 7:sum=181;break;case 8:sum=212;break;case 9:sum=243;break;case 10:sum=273;break;case 11:sum=304;break;case 12:sum=334;break;default:printf("data error");break;}sum=sum+day;if(year%400==0||(year%4==0&&year%100!=0))leap=1;else leap=0;if(leap==1&&month>2)sum++;S=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+sum)%7; //X表示年份,C是该年份元旦开始到这一日的天数//S/7的系数就是星期数//01printf("%d",S);switch(S){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");break;}}*/int Leap(int year){ int leap;if(year%400==0||(year%4==0&&year%100!=0))leap=1;else leap=0;return leap;}int SU(int sum,int year){int S;S=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+sum)%7;return S;}int Sum(int year,int month,int day=1){int sum,leap;switch(month){case 1:sum=0;break;case 2:sum=31;break;case 3:sum=59;break;case 4:sum=90;break;case 5:sum=120;break;case 6:sum=151;break;case 7:sum=181;break;case 8:sum=212;break;case 9:sum=243;break;case 10:sum=273;break;case 11:sum=304;break;case 12:sum=334;break;default:printf("data error");break;}sum=sum+day;leap=Leap(year);if(leap==1&&month>2)sum++;return sum;}void Print(int S){switch(S){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");break;}}void Fun1(){int day,month,year,sum,S;printf("\n请输入年月日\n");scanf("%d%d%d",&year,&month,&day);sum=Sum(year,month,day);S=SU(sum,year);Print(S);}void Fun2(){int i,j=1,k=1,a,b,month,year,sum;printf("\n 输入年月:\n");scanf("%d%d",&year,&month);b=days_month(month,year);sum=Sum(year,month);a=SU(sum,year);printf("*************************************\n");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++;}}}printf("\n*************************************\n");printf("\n");}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;}void main(){for(;;){switch(menu_select()){case 1:printf("输入年月日计算该月第一天是星期几\n");Fun1();break;case 2:printf("打印任意日历\n");Fun2();break;case 3:printf("谢谢使用!\n");exit(0);}}}int menu_select(){ system("cls");char s;int cn;printf("1. 输入年月日计算该月第一天是星期几\n");printf("2. 打印任意日历\n");printf("3.谢谢使用! \n");printf("input 1-3:");do {s=getchar();cn=(int)s-48;}while(cn<0||cn>6);return cn;}。
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语言代码

这是当时我做的一个小小的课题,希望对你有所帮助#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语言程序 万年历编程

{if (a%400==0)
ya=1;
}
else ya=1;
}
else ya=0;
}
if (ya==1||b==2)
c=28;
else c=29;
switch (b)
{
case 1:case 3:case 5:case 7:case 8:case 12:c=31;break;
case 2:x=29;break;
case 4: case 6: case 9: case 10: case 11:x=30;break;
}
wa=week(y,a,1);
if (wa=="星期日") j=0;
else if (wa=="星期一") j=1;
else if (wa=="星期二") j=2;
#include<math.h>
#include<stdio.h>
//求某个日期对应的星期
char w[][7]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
int i,j,m,d,y;
char week(int a,int b,int c) //定义星期函数
else if (wa=="星期三") j=3;
else if (wa=="星期四") j=4;
else if (wa=="星期五") j=5;
(完整版)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语言编写万年历

{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
else goto loop2;
loop1: for(i=1901;i<year;i++)
{
if(i%400==0||(i%4==0&&i%100!=0))
n++;
}
days=(year-1901-n)*365+n*366;
case 11:sum=304;break;
case 12:sum=334;break;
default:printf("一年内只能有12个月!请重新输入!\n");goto redo;
case 3:printf("\t 五月 %d\t\t 六月 %d\n",year,year);break;
case 4:printf("\t 七月 %d\t\t 八月 %d\n",year,year);break;
goto redo;
}
if(month==6&&(day>=31||day<=0))
{
printf("输入有误!6月只能有30天!\n");
goto redo;
}
if(month==7&&(day>=32||day<=0))
{
printf("输入有误!7月只能有31天!\n");
C语言编写万年历

C语言编写万年历【要求】:1.程序运行后,首先在屏幕上显示主菜单:2.查询某年某月某日是星期几3.查询某年是否是闰年4.打印某年的全年日历5.退出2.在主菜单中输入1后,显示:“请输入年月日(XXXX,XX,XX)”运行后输出:XXXX年XX月XX日是星期X,是否继续查询(Y/N)?如果输入Y,则重新显示“请输入年月日(XXXX,XX,XX)”,否则回到主菜单。
3.在主菜单中输入2后,显示:“请输入要查哪一年?(XXXX)”运行后输出:XXXX年是(否)是闰年,是否继续查询(Y/N)?如果输入Y,则重新显示,“请输入要查哪一年?(XXXX)”,否则回到主菜单。
4.在主菜单中输入3后,显示:“请输入要打印的年份(XXXX)”运行后输出XXXX年的日历,格式为:XXXXX(月数.奇) X(月数.)0 1 2 3 4 5 6 0 1 2 3 4 5 6 S M T W T F S S M T W T F S x x x x x x x x x x xx x x xx xx xx xx x x x xx xx xx xx xx xx xx xx xx xx xx x x x xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx 运行完后显示:“是否继续打印(Y/N)?”如果输入Y,则重新显示,“请输入要打印的年份(XXXX)”,否则回到主菜单。
5.在主菜单中输入4后,显示:“是否要真的退出(Y/N)?”如果输入Y,结束程序运行,否则重新显示主菜单。
代码来自东篱下,Turbo C&C++3.0编译调试通过,已经验证输出结果正确:#include <stdio.h>#include <stdlib.h>#include <conio.h>#define X " Sun Mon Tue Wed Thu Fri Sat"void menu(){system("cls");printf("\nTHIS IS THE MENU OF THE PROGRAM !");printf("\nYOU CAN CHOOSE THE NUMBER FOR THE FUNCTIOM:"); printf("\n\n");printf("1 Find the day by year-month-date.\n");printf("2 Find the year you input if the leap year.\n");printf("3 Print the calendar of the year you input.\n");printf("4 Exit.\n\n");printf("Input your choice:");}/*函数定义,将在主函数中调用*/int getday(int year,int month,int date){int flag,s,i;int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};int cont=0;flag=isleap(year);if(flag==1)/*修改二月份天数*/a[2]++;for(i=1;i<month;i++){cont=cont+a[i];}cont=cont+date;s=year+1+(year-1)/4+(year-1)/100+(year-1)/400+cont; return s%7;/*利用公式求星期几*/}int isleap(int year){if(year%4==0&&year%100||year%400==0)return 1;elsereturn 0;}/*判定闰年*/void print(int n){int i;for(i=0;i<n;i++) printf(" ");}/*打印空格,排版使用*/int day(int year){int a,b;if(year<=2000){a=2000-year;b=6-(a+a/4-a/100+a/400)%7;return b;}else{a=year-2000;b=(a+1+(a-1)/4-(a-1)/100+(a-1)/400)%7+6;return b%7;}}/*打印日历函数*/void printcalendar(int year){int i,j,k,m,n,f1,f2,d;int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};printf("\nThe calendar of the year %d.\n\n",year);d=day(year);if(isleap(year)==1)a[2]++;for(i=1;i<=12;i+=2){m=0; n=0; f1=0; f2=0;switch(i){case 1:printf(" Januray 1 ");break;case 3:printf(" March 3 ");break;case 5:printf(" May 5 ");break;case 7:printf(" July 7 "); break;case 9:printf(" September 9 ");break;case 11:printf(" Nevember 11 ");break;}print(21); /*打印空格,隔开奇偶月份名*/switch(i+1){case 2:printf(" February 2 "); break;case 4:printf(" April 4 "); break;case 6:printf(" June 6 "); break;case 8:printf(" August 8 "); break;case 10:printf(" October 10 "); break;case 12:printf(" December 12"); break;}printf("\n");printf(X); /*宏调用,打印星期字符串*/print(6);/*打印空格,隔开奇偶月份数据*/printf(X);printf("\n");for(j=0;j<6;j++){if(j==0){print(d*4); /*每个日期数采用个空格的宽度,即4字节。
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语言课程设计计算机科学与技术专业****班学号:******姓名:******目录序言 (1)说明 (2)流程图 (3)源代码 (4)小结 (5)序言1. 经过上一个学期对《C程序设计》的学习,同学们都认为真正的学到了有用知识,可能有一些人学的不够理想,但无论如何,这些知识都为我们的下一步学习打下了坚实的基础。
做这么一个课程设计,一方面是为了检查我们一个学期来我们学习的成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。
本程序是一个万年历程序,可以输出公元一年一月以后任意月份的天数及每一天是星期几,只要在运行程序时按照要求输入年份再输入和月份,程序就会把这一月份的日历显示在屏幕上,使人一目了然。
该程序能与目前天文学研究中所采用的各种日历程序所能计算的范围相一致。
2 . 课程设计题目:万年历要求:输入年份和月份,自动输出该月的日历,清楚的显示每一天是星期几。
指导老师:翟海霞说明一.算法分析说明:1. 总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为355。
然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。
2. 输出月份第一天为星期几的算法:使总天数除以7取余加2得几既为星期几,若是7,则为星期日。
3. 算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。
二.要用到的函数和语句1.<stdio.h>,<conio.h>,<math.h> /*头文件*/2.main() /*主函数*/3.printf(),4.scanf()5.textbackground(),textcolor() /*定义背景和字体颜色*/6.if 语句7.for 语句8.printstar() /*调用函数*/9.int day_year() /*定义函数*/10.goto /*循环语句*/流程图1.图一输入的年份判断从定义年到输入的年份中每个年份是否为闰年是否每年为366天每年为365天返回该年的天数2.图二输入的年月判断输入年是否为定义年是否总天数S=1 总天数S为定义年到输入年的总天数把S加上该年一月到输入月份的天数,再加1判断输入的月份是否为闰年中的月份是否该月是否大于二月是否把S加上该年一月到输入月份的天数把S再加上该把S加上该年年一月到输入一月到输入月的月份的天数份的天数再加1总天数为S判断S的最后一天为星期几从这一天起依次输出输入月份的天数直到该月底为止源代码#include<conio.h>#include<stdio.h>#include <math.h>main(){long s=1;int a[14]={0,0,31,28,31,30,31,30,31,31,30,31,30,31}; int y,m,p,i,j,k,n,leap;int day_year(int y);textbackground(RED);textcolor(YELLOW);clrscr();printf("please input the year:");scanf("%d",&y);printf("\n");printf("please input the month:");scanf("%d",&m);printf("\n");textbackground(3);clrscr();printf("\tYear:%d Month:%d\n",y,m);printf("\n");if(y==1)s=1;for(i=1;i<y;i++)s=s+day_year(y-1);if(y%4==0&&y%100!=0||y%400==0)leap=1;else leap=0;for(i=0;i<=m;i++)s=s+a[i];if(leap==1&&m>2)s=s+1;else s=s+0;p=s%7+3;printf(" Sun Mon Tue Wed Thu Fri Sat\n"); printstar();if(p<=7)n=4*(p-1);else n=4*(p-8);for(j=1;j<=n;j++)printf(" ");if(leap==1&&m==2)a[3]=a[3]+1;else a[3]=a[3]+0;for(j=1;j<=a[m+1];j++){printf("%4d",j);if((j+n/4)%7==0)printf("\n");}printf("\n");printstar();printstar();s=1;printf("do you want contintue(y/n)");scanf("%c",&q);for(;;){int k;k=bioskey(0);if(k==0x316e) break;if(k==0x1579) goto loop;}}printstar(){printf("******************************\n"); }int day_year(int y){if(y%4==0&&y%100!=0||y%400==0)return(366);else return(365);}小结经历了这次课程设计的设计和制作的整个过程,我才发现我知识的贫乏和知识面的狭窄,原本以为不就是一个小小的课程设计,小case,很容易就可以搞定,可是到了后来实际的操作的时候可是花费了我九牛二虎之力,不说其他的,只说时间上面,我在宿舍里面熬了三个通宵,更不用说白天的时间了。
C语言万年历程序设计

. .a 目录第1章需求分析 (2)第2章概要设计 (2)第3章详细设计 (7)第四章运行结果及分析 (14)1.登陆界面 (14)2.显示某年全年日历 (15)3.显示某月日历 (16)第5章课程设计心得 (18)参考文献 (19)第1章需求分析(1)程序运行时,首先给出四个菜单选项和输入提示:图1-1(2)用户可以通过主菜单选择不同选项。
输入1,通过输入年份可显示一年每个月份的日历;输入2,通过输入年份和月份(中间以空格分开)可显示该月的日历;若输入3,通过输入年份月份和日期(中间以空格分开)可显示该日的星期;输入0,则退出查询系统。
第2章概要设计. .a 1.菜单选择界面可通过下面所示函数时现;主要思路:通过while语句与swich…case以及if条件语句实现菜单的循环功能和不同选项的功能实现。
闰年与平年的判断:代码如下:void main(){int year,month,day,a,b;while(1){printf("\n\n\n\n");printf(" **********************************************************\n\n"); printf(" * *\n");printf(" 欢迎进入万年历查询系统\n");printf(" * * \n\n");printf(" **********************************************************\n\n\n"); printf(" 1 年历2 月历3 日历4 退出\n");printf(" 请输入您的选择<1~4>,按回车键确定: ");scanf("%d",&b);switch(b){case 1:printf("\n请输入您要查的年份: ");scanf("%d",&year);a=x3(year,1,1);if(a==0){printf("错误!请您重新输入。
C语言实现简单万年历

C语⾔实现简单万年历本⽂实例为⼤家分享了C语⾔实现简单万年历的具体代码,供⼤家参考,具体内容如下1234567 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56#include <stdio.h>#include<stdlib.h>int year, month;int run[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };int ping[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };char week[7][10] = { "SUN","MON","TUE","WED","THU","FRI","SAT"}; bool IsLeap(int year){if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) //判断闰年 {return true;}else{return false;}}void PrintStar(){printf("\t\t\t万年历\t\t\t\n");printf("****************************************************\n");for(int i = 0; i < 7; i++){printf("%s\t", week[i]);}printf("\n");}int DaySum(int year, int month){int sum = 0;for(int i = 1990; i < year; i++){if(IsLeap(i)){sum += 366;}else{sum += 365;}}for(int i = 0; i < month - 1; i++){if(IsLeap(year)){sum += run[i];}else{sum += ping[i];}}return sum;}57585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104void PrintCal(int sum, int year, int month){int nRes, nTmp;nRes = sum % 7+1;//前⾯空⼏格nTmp = 7 - nRes;//从第⼏格开始打印 for (int i = 0; i < nRes; i++) { printf("\t");}if (IsLeap(year)){for (int i = 1; i < run[month - 1]+1; i++){ printf("%d\t", i); if (nTmp == i || (i - nTmp) % 7 == 0) { printf("\n");}} printf("\n"); } else{for (int i = 1; i < ping[month - 1]+1; i++){ printf("%d\t", i); if (nTmp == i || (i - nTmp) % 7 == 0) { printf("\n");}}printf("\n"); } }int main(void){while (1){scanf_s("%d %d", &year, &month); PrintStar(); PrintCal(DaySum(year, month), year, month); printf("****************************************************\n"); }return 0;}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
C语言万年历设计报告

千里之行,始于足下。
C语言万年历设计报告以下是一个关于C语言万年历设计报告的例子,共计约:设计报告:C语言万年历1. 引言万年历是一种用来显示特定年份日历的工具。
本设计报告将介绍一个使用C语言编写的万年历程序,它可以接受用户输入的年份,并显示该年份的日历。
2. 设计目标本程序的主要设计目标是实现以下功能:- 接受用户输入的年份。
- 检查年份的有效性。
- 显示该年份的万年历。
3. 设计思路万年历程序的设计思路如下:- 首先,接受用户输入的年份。
这可以通过使用C语言的scanf函数等方法来实现。
- 然后,检查年份的有效性。
年份必须大于0且小于或等于当前年份。
这可以通过使用C语言的条件语句来实现。
- 接下来,确定年份的第一天是星期几。
这可以通过查找该年份第一天距离已知星期几(比如星期一)的天数来实现。
- 然后,确定该年份每个月的天数。
根据已知的规则(比如闰年规则),计算每个月的天数。
- 最后,根据以上信息,显示该年份的日历。
可以使用C语言的循环语句和格式化输出函数来实现。
第1页/共2页锲而不舍,金石可镂。
4. 主要函数本程序将包含以下主要函数:- int isLeapYear(int year):判断给定年份是否是闰年。
根据已知的闰年规则进行计算,并返回一个布尔值。
- int getFirstDayOfWeek(int year):确定给定年份的第一天是星期几。
根据该年份的第一天距离已知星期几的天数进行计算,并返回一个整数(代表星期几)。
- void printCalendar(int year):根据给定年份的信息,打印该年份的日历。
5. 测试和调试在开发过程中,可以使用一些测试和调试方法来确保程序的正确性和稳定性。
比如:- 输入测试:使用各种不同类型的数据(正常、边界和异常)进行测试,确保程序在各种情况下都能正常工作。
- 边界测试:测试该程序处理边界条件的能力,比如闰年、非闰年、最小年份、最大年份等。
c语言课程设计报告模板万年历

C语言课程设计报告模板-万年历
引言
万年历是一个非常实用的工具,能够帮助人们快速查找任意日期的详细信息。
本报告将介绍我们设计的C语言万年历程序的实现及其功能。
设计目标
我们的设计目标是开发一个简单易用的C语言万年历程序,该程序应具备以下功能: - 显示指定年份的整年日历信息 - 显示指定年份指定月份的月历信息 - 显示指定日期的详细信息,如星期几、所在月份等 - 具备用户友好的交互界面
设计思路
我们的设计思路如下: 1. 获取用户输入的年份、月份和日期信息。
2. 判断用户输入的年份是否为闰年。
3. 根据用户输入的年份计算出该年份的1月1日是星期几。
4. 根据用户选择的功能,分别显示整年日历、月历或详细日期信息。
实现步骤
我们按照以下步骤实现了C语言万年历程序:
步骤一:获取用户输入
首先,我们使用scanf()函数获取用户输入的年份、月份和日期信息。
```c int year, month, day; printf(。
C语言程序设计,万年历

C语言程序设计*万年历HPU chang目录:1.设计任务书1.1题目与要求1.2本系统涉及的知识点2.功能设计:2.1算法设计2.2 部分模块流程图3.程序代码设计3.1输入模块3.2输出模块4.程序设计总结:5.致谢;6.参考文献:7.附:程序1设计任务书:1.1题目与要求本人计划编写一个万年历系统,用来查询任意一天的星期、任意年月的月历、任意年年历。
具体要求如下:(1)当输入数字“1”时,显示“请输入年月日(XXXX,XX,XX)”运行后输出:XXXX 年XX月XX日是星期X,是否继续查询(Y/N)?如果输入Y,则重新显示“请输入年月日(XXXX,XX,XX)”,否则回到主菜单.(2)在主菜单中输入2后,显示:“请输入要打印的月份(XXXX)”运行后输出X月的日历,格式为:XXXX年XX月S M T W T F SX X X X X X XX X X X X X XX X X X X X XX X X X X X XX X运行完成后显示:“是否继续打印(Y/N)?” 如果输入Y,则重新显示“请输入要打印的月份(XXXX年XX月)”,否则回到主菜单。
(3)在主菜单中输入3后,显示:“请输入要打印的年份(XXXX)”运行后输出XXXX年的日历,XXXXX(月数)S M T W T F SX X X X X X XX X X X X X XX X X X X X XX X X X X X Xx x……S M T W T F SX X X X XX X X X X X XX X X X X X XX X X X X X XX X X X X运行完成后显示:“是否继续打印(Y/N)?” 如果输入Y,则重新显示“请输入要打印的年份(XXXX)”,否则回到主菜单。
(4)在主菜单中输入4后,显示:“是否要真的退出(Y/N)?” 如果输入Y,结束程序运行,否则重新显示主菜单。
1.2本系统涉及的知识点本系统涉及的知识点有: for语句、do-while语句、switch语句、break语句、if-else 语句、还有sizeof、return 、default、char、printf 、scanf 等,包含了课本上的很多知识。
c语言课程设计简易万年历

/**湖北师范学院信息工程1203班朱文峰**简易万年历* 1、输入年份,判断是否为闰年*2、输入年月日,判断改日为星期几*3、输入年份,打出12个月历,输入月份,打出该月的日历* 4、要求用多个函数实现*/#include<stdio.h>#include<stdlib.h>#include<windows.h>//每月的天数,闰年二月要加1int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};//判断是否位闰年int isLeapYear(int year){if(year%4 == 0 && year%100 != 0 || year%400 == 0)return 1;elsereturn 0;}//判断某天为星期几int whichWeekday(int year, int month, int day){int weekday;//公式中要把1月和2月换成是上一年的13月和14月if (month == 1 || month == 2){month += 12;year -= 1;}//公式weekday=(day+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7;return weekday+1;}//打印某年某月的月历void yearMonth(int year, int month){int i,j=0;int weekday;//计算这个月第一天是星期几weekday = whichWeekday(year, month, 1);printf("\n%d年%d月\n",year,month);printf("------------------------------------------------\n");printf("星期一星期二星期三星期四星期五星期六星期天\n");if(isLeapYear(year) && month == 2)days[1] = days[1] + 1;printf("");for(i = 1; i < weekday; i ++)printf(" ");for(i = 0; i < 8 - weekday; i ++){printf("%6d", i+1);printf(" ");}printf("\n");for(i = 9-weekday; i <= days[month-1]; i ++,j++){if(j == 7){j = 0;printf("\n");}printf("%6d ", i);}printf("\n------------------------------------------------\n");}//输入年份,打出12个月历,输入月份,打出该月的日历void monthDay(int year){int i;char c;int month;for(i = 0; i < 12; i ++)yearMonth(year,i+1);printf("\n\n");printf("是否查看日历(y/n):");getchar();scanf("%c",&c);if(c == 'y'){printf("请输入月份:");scanf("%d", &month);yearMonth(year,month);}elseexit(0);}//主菜单void menu(){printf("-----------------------------------------------\n");printf(" ");printf("c语言课程设计-万年历\n\n");printf("***********************************************\n\n");printf("1、输入年份,判断是否为闰年\n");printf("2、输入年月日,判断该日为星期几\n");printf("3、输入年份,打出12个月历,输入月份,打出该月的日历\n\n");printf("***********************************************\n\n");}//判断是否继续void isContinue(){char c;printf("是否继续(y/n):");getchar();scanf("%c", &c);if(c == 'y')return;else{printf("");exit(0);}}//主函数void main(){int num;int year;int month;int day;int weekday;while(1){system("CLS");//清屏menu();printf("请输入对应操作:");scanf("%d", &num);switch(num){case 1:{printf("请输入年份:");scanf("%d", &year);if(isLeapYear(year))printf("%d年是闰年\n",year);elseprintf("%d年不是闰年\n");isContinue();break;}case 2:{printf("请输入年月日,以空格隔开:");scanf("%d%d%d", &year,&month,&day);weekday = whichWeekday(year, month, day);printf("这天是星期%d\n",weekday);isContinue();break;}case 3:{printf("请输入年份:");scanf("%d", &year);monthDay(year);isContinue();break;}default:{printf("您的输入有误");Sleep(1000);//延时一秒钟break;}}}}。
万年历C程序设计报告

C语言课程设计报告一、设计目标设计一个C语言程序(万年历系统),具体要求:模仿生活中的挂历设计一个C语言程序,由键盘输入一个日期(年月日)对其进行如下处理:主要功能:1、调用计算机的系统日期。
2、输出本年中该月份的日历,并能查看该月份前后月份的日历。
3、通过函数输出输入日期是星期几。
4、通过函数判断输出输入日期是否为特殊节日。
二、总体设计1、程序设计组成框图2、程序流程图三、详细设计 ( 流程图见附录 )1、功能函数f ( )——本函数由设计函数的功能:调用系统当前日期。
函数的入口:从main()按顺序进入该函数。
函数调用关系:被主函数调用。
在文中无返回值的空值void函数。
函数的出口:在主函数中按顺序执行后自动跳出,继续执行主函数。
2、功能函数f1( )——本函数由设计函数的功能:显示一个月的天数及对应星期。
函数的入口:从main()的switch()开关结构中进入,即choice的值为1时进入该函数。
函数调用关系:被主函数调用。
由switch()开关结构中进入,并在文中无返回值的空值void函数。
函数的出口:当程序执行提示语“printf("1-查看上一月\n 2-查看下一月\n 3-返回上一级\n");”的时候,对用户的操作进行提示,如果用户选择了按“1或2”键,则用户选择了继续该函数,如果用户选择了按“3”键,将结束该函数,返回主函数main(),继续执行主函数。
3、功能函数f2()——本函数由设计函数的功能: 输入一个日期,输出它并输出对应的星期。
函数的入口:程序从main()的开关1结构中进入,即按2时,开始进入该函数,进入函数后,按提示输入所查询的日期。
函数调用关系:被主函数调用。
由开关2结构中进入,并在文中无返回值的空值void函数。
函数的出口:当输出排序结果用printf()标准输出到屏幕上,然后结束该函数,而执行主函数main()中“goto”跳出开关2函数,继续执行其他功能。
C语言程序设计报告―“万年历”

C语言程序设计报告―“万年历”一、程序实现的功能“万年历”,也叫做历法及历历,是一种用于计算日期及节假日的日历,它可以帮助我们计算一些特定的日期及其所属的节日。
本程序通过C语言实现了一款传统的“万年历”的功能,它可以根据用户输入的年份和月份,打印出当月的日历表格,以及当月的公历及节假日。
二、程序的功能结构及总体设计本程序的功能结构如下:(1)输入年份及月份,计算出当月有多少天;(2)根据此判断出当月的第一天是星期几;(3)将前面算出的信息用表格形式打印出来;(4)计算当月的节假日及其所属的日期;(5)将节假日打印到表格中,形成一张完整的月历表。
程序的总体设计,主要由两部分组成:(1)调用函数实现实际的打印功能;(2)实现主函数的调用以控制程序的流程。
1. 程序结构:程序的核心是对日历表的生成,其结构如下:主函数:负责主函数的调用,以控制程序的流程。
日历表生成函数:调用该函数以生成日历表;在调用该函数之前,首先运行“getfirstday”函数,以计算当月的第一天是星期几;然后调用“dayOut”函数,将当月的日期和节日打印出来。
“getfirstday”函数:该函数用来计算某年某月的第一天是星期几,实现的核心思想是以1900年为基准,计算出某年某月离1900年相差多少天,然后根据求出的和1900年的差值,计算出当月的第一天是星期几;此外,还进行了考虑闰年等特殊情况的特别处理,以进一步检查结果。
2. algorithm:(1) 从键盘输入年份及月份,将年份及月份保存在相应的变量中;(2) 调用“getfirstday”函数,计算出当月的第一天是星期几;(3) 调用日历表生成函数,生成当月的日历表;(4) 输出生成的日历表,完成程序的运行。
四、程序的测试为了验证本程序的可行性,我进行了严格的测试,并与电子版的日历比较,测试结果表明,本程序的结果完全一致,能够满足正确的要求,用户可以使用该程序进行相应的日历计算。
c语言基础代码编写的简单的万年历程序

#include<stdio.h>void print(int x,int y); //打印程序x表示这个月的总天数y表示这个月的1号的星期int month_day(int x,int y); //计算该月的天数x表示年份y表示月份int run(int y); //判断闰年y表示年份int month_cha(int x,int y); //每月一号的星期x表示年份y表示月份int year_cha(int x); //每年的一月一号的星期x表示年份void main(){int year,month,day,cha;char key='y';while(key=='y'){printf("请输入年月:");scanf("%d%d",&year,&month);day=month_day(year,month);cha=month_cha(year,month);print(day,cha);printf("是否继续输入(y/n):");scanf("%c",&key);scanf("%c",&key);}}void print(int x,int y){int i,j;printf("Sun Mon Tue Wed Thu Fri Sat\n");for(i=0;i<y;i++) //打印空缺部分printf("\t");for(j=1;j<=x;j++,i++){printf("%d\t",j);if(i%7==6){printf("\n");}}printf("\n");}int run(int y){int r;if(y%4!=0)r=0;else if((y%100==0)&&(y%400)!=0)r=0;elser=1;return r;}int month_day(int x,int y){int day;switch(y){case 1: day=31; break;case 2: day=28+run(x); break;case 3: day=31; break;case 4: day=30; break;case 5: day=31; break;case 6: day=30; break;case 7: day=31; break;case 8: day=31; break;case 9: day=30; break;case 10: day=31; break;case 11: day=30; break;case 12: day=31; break;}return day;}int month_cha(int x,int y){int day;switch(y){case 1: day=0; break;case 2: day=3; break;case 3: day=3+run(x); break;case 4: day=6+run(x); break;case 5: day=1+run(x); break;case 6: day=4+run(x); break;case 7: day=6+run(x); break;case 8: day=2+run(x); break;case 9: day=5+run(x); break;case 10: day=0+run(x); break;case 11: day=3+run(x); break;case 12: day=5+run(x); break;}day+=year_cha(x);if(day<0){day=7-(-day)%7;}if(day>6){day=day%7;}return day;}int year_cha(int x){int i,day=0;if(x>2012)for(i=2012;i<x;i++){day+=run(i);day++;}else if(x<2012)for(i=x;i<2012;i++){day=day-run(i);day--;}else day=0;printf("day=%d\n",day);return day;}}。
用C语言实现万年历

//任务五:万年历程序#include<stdio.h>#include<stdlib.h>#include<string.h>void DataTrans(char *chDate,int *nY ear,int *nMonth,int *nDay);int IsLeapY ear(int nY ear);int GetWeekOfFirstday(int nY ear);int GetWeek(int nY ear,int nMonth,int nDay,int nWeekOfFirstday);void PrintCalendar(int nWeek,int nDay,int nMonthDays,char *chDate);int nDaysY ear[]={31,28,31,30,31,30,31,31,30,31,30,31};int nDaysLeapY ear[]={31,29,31,30,31,30,31,31,30,31,30,31};main(int argc,char *argv[]){char chDate[11];//输入查询日期int nY ear=0,nMonth=0,nDay=0;////查询日期对应的年、月、日int nWeekOfFirstday;//查询年的1月1日是周几int nDaysOfMonth;//查询当月总天数int nWeek;//查询日是周几if(argc>1){strcpy(chDate,argv[1]);}else{printf("Please enter the date(YYYY/MM/DD or YYYY.MM.DD or YYYY/MM or YYYY.MM):\n");gets(chDate);}DataTrans(chDate,&nY ear,&nMonth,&nDay);if(nY ear<=0||nMonth<1||nMonth>12){printf("Input error!\n");exit(0);}if(IsLeapY ear(nY ear)){nDaysOfMonth=nDaysLeapYear[nMonth-1];}else{nDaysOfMonth=nDaysY ear[nMonth-1];}nWeekOfFirstday=GetWeekOfFirstday(nY ear);if(strlen(chDate)==10){nWeek=GetWeek(nY ear,nMonth,nDay,nWeekOfFirstday);if(nDay<1||nDay>nDaysOfMonth){printf("Input error!\n");exit(0);}}if(strlen(chDate)==7){nWeek=GetWeek(nY ear,nMonth,1,nWeekOfFirstday);}PrintCalendar(nWeek,nDay,nDaysOfMonth,chDate);}void DataTrans(char *chDate,int *nY ear,int *nMonth,int *nDay)//将字符串表示的日期变换为整数分别表示的年、月、日{*nY ear=(chDate[0]-'0')*1000+(chDate[1]-'0')*100+(chDate[2]-'0')*10+(chDate[3]-'0');*nMonth=(chDate[5]-'0')*10+(chDate[6]-'0');*nDay=(chDate[8]-'0')*10+(chDate[9]-'0');}int IsLeapY ear(int nY ear)//判断给定的年份是否是闰年{if(((nY ear%4==0)&&(nY ear%100!=0))||(nY ear%400==0))return 1;elsereturn 0;}int GetWeekOfFirstday(int nY ear)//查询年nY ear1月1日是周几{int i,m,n,temp;if(nY ear==2000){return 6;}else if(nY ear>2000){i=nY ear-2000;if(i==1){temp=(366+1-2)%7;if(temp==0)return (temp+7);elsereturn temp;}else{m=(i-1)/4;n=(i-1)%4;temp=(366+(365*3+366)*m+365*n+1-2)%7;if(temp==0)return (temp+7);elsereturn temp;}}else{i=2000-nY ear;m=i/4;n=i%4;temp=((365*3+366)*m+365*n+2)%7;if(temp==0)return 1;elsereturn (8-temp);}}int GetWeek(int nY ear,int nMonth,int nDay,int nWeekOfFirstday)//查询日是周几{int sum;int i,j;sum=nDay;if(IsLeapY ear(nY ear)){for(i=0;i<(nMonth-1);i++){sum+=nDaysLeapY ear[i];}sum=(sum-1)%7;sum+=nWeekOfFirstday;if(sum>7)return (sum-7);elsereturn sum;}else{for(i=0;i<(nMonth-1);i++){sum+=nDaysY ear[i];}sum=(sum-1)%7;sum+=nWeekOfFirstday;if(sum>7)return (sum-7);elsereturn sum;}}void PrintCalendar(int nWeek,int nDay,int nMonthDays,char *chDate)//根据查询日、星期几打印日历{int i,j;if(strlen(chDate)==7){printf("The calendar of this month as following:\n");printf("*********************************\n");printf("SUN MON TUE WEN THE FRI STA\n");if(nWeek==7){for(i=1;i<=nMonthDays;i++){printf("%2d ",i);if(i%7==0)printf("\n");}if(i!=28)printf("\n");}else{for(j=0;j<5*nWeek;j++){printf(" ");}for(i=1;i<=nMonthDays;i++){printf("%2d ",i);if((i-(7-nWeek))%7==0)printf("\n");}if((nMonthDays-(8-nWeek))%7!=6)printf("\n");}printf("*********************************\n");printf("OK!\n");}if(strlen(chDate)==10){printf("This day (");printf("%s",chDate);printf(") is ");switch(nWeek){case 1:printf("MONDAY(1)\n");break;case 2:printf("THESDAY(2)\n");break;case 3:printf("WEDNESDAY(3)\n");break;case 4:printf("THURDAY(4)\n");break;case 5:printf("FRIDA Y(5)\n");break;case 6:printf("SA TURDAY(6)\n");break;case 7:printf("SUNAY(7)\n");break;default:printf("error!\n");exit(0);}printf("OK!\n");}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
•
day_1=jisuan(year,month);
•
display(day_1,month);
•
break;
•
}
•
case 3:
•
{
•
printf("输入你想查询的年代?\n");
•
scanf("%d",&year);
•
if(year%4==0&&year%100!=0||year%100==0&&year%400==0)
判断是否为闰年 • days[1]+=1;//闰年2月份多加一天 • for(i=0;i<month-1;i++) • zong_day+=days[i]; • temp=year+(year-1)/4+(year-1)/400-(year-1)/100+zong_day;//蔡勒
公式的改版。 • week=temp%7; • return week; •}
•
display(day_1,month++);//输出每个月的月历
•
}
•
break;
•
}
•
case 2:
•
{
•
printf("输入你想查询的年代?\n");
•
scanf("%d",&year);
•
printf("输入你想知道的月份?\n");
万年历系统 代码及注释
• scanf("%d",&month);
•
scanf("%d",&setting);
•
control(setting);
万年历系统 代码及注释
•} • int jisuan(int year,int month) •{ • int zong_day=0,temp,week,i; • if(year%4==0&&year%100!=0||year%100==0&&year%400==0)//
control()
jisuan() display()
万年历系统 代码及注释
#include <stdio.h>
• int jisuan(int year,int month);
• int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
• void display(int day,int month)
}
•
}
•
main()//主函数
•
{
•
int setting;
•
printf("您需要做什么操作?\n");
•
printf("1、打印年历\n");
•
printf("2、打印月历\n");
•
printf("3、判断是否为闰年\n");
•
printf("4、判断该日为星期几\n");
•
printf("请按数字选择(1-4)?\n");
万年历系统 代码及注释
•{
• int year,month=1,day_1,i,m;
• switch(set)
•{
•
case 1:
•
{
•
printf("输入你想查询的年代?\n");
•
scanf("%d",&year);
•
for(i=1;i<=12;i++)
•
{
•
day_1=jisuan(year,month);//表示该年该月1号是星期几。
•{
• int i;
• printf(" %d月 \n",month);
• printf("日 一 二 三 四 五 六 \n");
• for(i=0;i<day;i++)
• printf(" ");//表示该月还没有开始。
• for(i=1;i<=days[month-1];i++,day++)
•
{if(i<=9)
万年历系统 程序运行示例截图
万年历系统 程序运行示例截图
万年历系统 程序运行示例截图
万年历系统 设计总结
这个系统是我们小组成员用近2天时间设计出来的作 品。组长冯馨锐负责主函数和CONTROL()函数,侯佳俊 负责计算函数,金晨昊负责较为复杂的display().
由于水平有限,没有用到最新学的指针和链表,只是 用了函数嵌套调用和数组等知识,并且没有返回主菜单的 功能。我们把万年历的基本功能做出来了,在编程中我们 参考了计算万年历的蔡勒公式并做了改进,希望老师批评 指正。
•
printf("本年是闰年!!!!\n");
•
else printf("该年不是闰年\n");•break;• Nhomakorabea}
•
case 4:
•
{
•
printf("输入你想查询的年代?\n");
•
scanf("%d",&year);
•
printf("输入你想知道的月份?\n");
•
scanf("%d",&month);
•
printf(" ");//使个位数的月号能够与两位数的月号列对齐。
• printf("%d ",i);
• if(day%7==6)//到了星期6换行。
•
{
printf("\n"); }
•}
• printf("\n********************\n");
•}
• void control(int set)
C语言万年历系统 项目答辩
答辩人:冯馨锐 金晨昊 候佳俊 答辩日:2013.9.18
万年历系统 概念设计介绍
我们小组设计的万年历有如下功能 1、输入年份,判断是否为闰年 2、输入年月日,判断该日为星期几 3、输入年份,打出12个月历 4、输入月份,打出该月的日历
万年历系统 程序设计框架
main()
万年历系统 代码及注释
• printf("输入你想知道的日子?\n");
•
scanf("%d",&m);
•
day_1=jisuan(year,month);
•
printf("该日为星期%d\n",(day_1+m)%7-1);//星期0即为星期天。
•
break;
•
}
•
default:break;
•