中易网

跪求~~C语言程序设计 万年历系统设计

答案:2  悬赏:0  
解决时间 2021-02-28 03:42
1、模仿现实生活中的挂历
2、当前页以系统当前现实的月份为准,显示当前月的每一天(显示出日及对应的星期几)
3、当系统日期变更到下一月时,系统自动翻页到下一月
最佳答案
#include
#include

char* month_str[]={"January","February","March","April","May","June","July","August","September","October","November","December"};
char* week[]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};

int IsLeapYear(int year)
{
if((year%4==0&&year%100!=0)||(year%400==0))
return 1;
else
return 0;

}
int month_day(int year,int month)
{
int mon_day[]={31,28,31,30,31,30,31,31,30,31,30,31};
if(IsLeapYear(year)&&month==2)
return 29;
else
return(mon_day[month-1]);

}
int DaySearch(int year,int month,int day)
{
int c=0;
float s;
int m;
for(m=1;m c=c+month_day(year,m);
c=c+day;
s=year-1+(float)(year-1)/4+(float)(year-1)/100+(float)(year-1)/400-40+c;
return ((int)s%7);
}

int PrintAllYear(int year)
{
int temp;
int i,j;
printf("\n\n%d Calander\n",year);
for(i=1;i<=12;i++)
{
printf("\n\n%s(%d)\n",month_str[i-1],i);
printf("0 1 2 3 4 5 6 \n");
printf("S M T W T F S \n\n");
temp=DaySearch(year,i,1);
for(j=1;j<=month_day(year,i)+temp;j++)
{
if(j-temp<=0)
printf(" ");
else if(j-temp<10)
printf("%d ",j-temp);
else
printf("%d ",j-temp);

if(j%7==0)
printf("\n");
}
}
return 0;
}

int main()
{
int option,da;
char ch;
int year,month,day;
printf("Copyright @ 2005 TianQian All rights reserved!:):):)");
printf("\n\nWelcome to use the WanNianLi system!\n");

while(1)
{
printf("\nPlease select the service you need:\n");
printf("\n1 Search what day the day is");
printf("\n2 Search whether the year is leap year or not");
printf("\n3 Print the calander of the whole year");
printf("\n4 Exit\n");
scanf("%d",&option);

switch(option)
{
case 1:
while(1)
{
printf("\nPlease input the year,month and day(XXXX,XX,XX):");
scanf("%d,%d,%d,%c",&year,&month,&day);
da=DaySearch(year,month,day);
printf("\n%d-%d-%d is %s,do you want to continue?(Y/N)",year,month,day,week[da]);
fflush(stdin);
scanf("%c",&ch);
if(ch=='N'||ch=='n')
break;
}
break;
case 2:
while(1)
{
printf("\nPlease input the year which needs searched?(XXXX)");
scanf("%d",&year);
if(IsLeapYear(year))
printf("\n%d is Leap year,do you want to continue?(Y/N)",year);
else
printf("\n%d is not Leap year,do you want to continue(Y/N)?",year);
fflush(stdin);
scanf("%c",&ch);
if(ch=='N'||ch=='n')
break;
}
break;
case 3:
while(1)
{
printf("\nPlease input the year which needs printed(XXXX)");
scanf("%d",&year);
PrintAllYear(year);
printf("\nDo you want to continue to print(Y/N)?");
fflush(stdin);
scanf("%c",&ch);
if(ch=='N'||ch=='n')
break;
}
break;
case 4:
fflush(stdin);
printf("Are you sure?(Y/N)");
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
exit(0);
break;
default:
printf("\nError:Sorry,there is no this service now!\n");
break;
}

}

return 0;
}
全部回答
以下程序来源《c精粹(第2版)》 #include "stdio.h" #include "stdlib.h" long int f(int year,int month) { if(month<3) return year-1; else return year; } long int g(int month) { if(month<3) return month+13; else return month+1; } long int n(int year,int month,int day) { return 1461l*f(year,month)/4+153l*g(month)/5+day; } int w(int year,int month,int day) { return(int)((n(year,month,day)%7-621049l%7+7)%7); } int date[12][6][7]; int day_tbl[ ][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}}; main() {int sw,leap,i,j,k,wd,day; int year; char title[]="sun mon tue wed thu fri sat"; clrscr(); system("cls"); printf("please input the year whose calendar you want to know: "); scanf("%d%*c",&year); sw=w(year,1,1); leap=year%4==0&&year%100||year%400==0; for(i=0;i<12;i++) for(j=0;j<6;j++) for(k=0;k<7;k++) date[i][j][k]=0; for(i=0;i<12;i++) for(wd=0,day=1;day<=day_tbl[leap][i];day++) { date[i][wd][sw]=day; sw=++sw%7; if(sw==0) wd++; } printf("\n|==================the calendar of year %d =====================|\n|",year); for(i=0;i<6;i++) { for(wd=0,k=0;k<7;k++) wd+=date[i][5][k]+date[i+6][5][k]; wd=wd?6:5; printf("%2d %s %2d %s |\n|",i+1,title,i+7,title); for(j=0;j<wd;j++) { printf(" "); for(k=0;k<7;k++) if(date[i][j][k]) printf("%4d",date[i][j][k]); else printf(" "); printf(" "); for(k=0;k<7;k++) if(date[i+6][j][k]) printf("%4d",date[i+6][j][k]); else printf(" "); printf(" |\n|"); } } puts("=================================================================|"); puts("\n press any key to quit..."); getch(); }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有国有土地使用证自建的别墅,办理房产证需要
在国外读大学,不想读了,可以回国读么?不用
北京化工大学综合楼我想知道这个在什么地方
滨州农资市场在什么地方?
前世究竟是谁埋的我?
泰迪不胖爱咬自己是不是有虫
金丝熊是耗子吗?
申请项目 用英语怎么说
刚看一个电视剧,主角叫韦子辰,女猪脚叫王秀
这是什么虫子啊,捏死后有臭味
斗门有没有到茂名的汽车
明尔康眼镜我想知道这个在什么地方
有那么多的生命和爱情,在我的世界我只拥有你
郑州大学MBA复试都包括哪些内容?
莲塘村综治信访维稳工作站在哪里啊,我有事要
推荐资讯
六石第一百货地址在什么地方,想过去办事
达飞小额贷款,本金和利息都还了,滞纳金不还
奔跑的奔还念什么
团队合作失败的检讨书
南北方冬季气候
蝰蛇在网吧怎么使用驱动啊
濉溪县饮食服务股份有限公司地址在什么地方,
lol海克力斯可以得到哪些英雄和皮肤
急求半命题作文一篇《不变的是……》600字左
我为什么莫名其妙变成剩女了呢?
dxp分别有哪几个层次?
如果家庭成员中有一人信用度不好,户主还能在
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?