永发信息网

求一份C语言万年历代码

答案:2  悬赏:70  手机版
解决时间 2021-04-06 18:20
求一份C语言万年历代码
最佳答案
这个程序有一个功能是查询输入的一天是这一年的第几天

#include
#include
#include
char* month_str[]={"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
char* week[]={"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
int mon_day[]={31,28,31,30,31,30,31,31,30,31,30,31}; //初始化每个月的天数
int leap (int year)//判断闰年
{
if(year%4==0&&year%100!=0||year%400==0)
return 1;
else return 0;
}
int month_day(int year,int month) //判断这一个月有多少天
{
if(leap(year)&&month==2 )
return 29;
else
return(mon_day[month-1]); }
int firstday(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 printone(int a,int b) //打印出一个月的日历
{
printf(" --------------------------------------------------------------------------\n");
printf(" 日 一 二 三 四 五 六\n ");
int i,j=1,k=1;
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");
return 1;
}
int PrintAllYear(int year)
{
int a,b;
int j=1,n=1,k;
printf("\n\n **************%d年的挂历**************\n",year);
for(k=1;k<=12;k++)
{
j=1,n=1;
b=month_day(year,k);
a=firstday(year,k,1);
printf("\n\n %s\n",month_str[k-1],k);
printone(a,b);
}
return 1;
}
char *shux(int year) //计算是什么生肖的函数
{
static char *sx[]={"子鼠","丑牛","寅虎","卯兔" , "辰龙","巳蛇", "午马",
"未羊", "申猴","酉鸡","戌狗","戌狗", "亥猪"
};
return(sx[(year-1204)%12]);
}
int tianshu(int year,int month,int day) //计算某天是该年的第几天
{
int i,sum=0;
for(i=1;i
sum=sum+mon_day[i-1];
sum=sum+day;
if((year%4==0&&year%100!=0 ||year%400==0)&&month>2)
sum=sum+1;
printf( "\n输入的%d年%d月%d日是这一年的第%d天\n 你是否还要继续查询?(Y/N)?",year,month,day,sum);
return 1; }//****************************************************
int main()
{
int option,da;
char ch;
int year,month,day;
printf("\n **************************************************\n * Copyright @ 2005 孙辉 All rights reserved!");
printf(" *\n * *\n * 欢迎使用万年历系统,祝您心情愉快! *\n **************************************************\n");
//调用系统时间
time_t tval;
struct tm *now;
tval = time(NULL);
now = localtime(&tval);
printf("\n qq:214467962\n\n 现在时间: %4d年 %d月 %02d日 %d:%02d:%02d\n", now->tm_year+1900, now->tm_mon+1, now->tm_mday,now->tm_hour, now->tm_min, now->tm_sec);
//调用结束
int a,b;
b=month_day(now->tm_year+1900,now->tm_mon+1);
a=firstday (now->tm_year+1900,now->tm_mon+1,now->tm_mday);
printone(a,b); //打印出本月的日历
//******************************************************************
while(1)
{
printf("\n请选择你所需要的服务:\n");
printf("\n输入1:求某个日期对应是星期几");
printf("\n输入2:判断某年是否为闰年");
printf("\n输入3:输出某年的日历");
printf("\n输入4:判断你是什么属相");
printf("\n输入5:可计算出输入的日期是该年的第几天");
printf("\n输入6:结束程序\n");
scanf("%d",&option);
switch(option)
{
case 1:
while(1)
{
printf("\n请输入你所要查询的年,月,日(XXXX,XX,XX):");
scanf("%d,%d,%d,%c",&year,&month,&day);
da=firstday(year,month,day);
printf("\n%d-%d-%d is %s,你是否还要继续查询?(Y/N)",year,month,day,week[da]);
fflush(stdin);
scanf("%c",&ch);
if(ch=='N'||ch=='n')
break;
}
break;
case 2:
while(1)
{
printf("\n请输入你想要查询的年份(XXXX)");
scanf("%d",&year);
if(leap(year))
printf("\n%d 是闰年,你是否还要继续查询?(Y/N)",year);
else
printf("\n%d 不是闰年,你是否还要继续查询?(Y/N)?",year);
fflush(stdin);
scanf("%c",&ch);
if(ch=='N'||ch=='n')
break;
}
break;
case 3:
while(1)
{
printf("\n请输入你想打印的日历年份(XXXX)");
scanf("%d",&year);
PrintAllYear(year);
printf("\nD你是否还要继续打印日历(Y/N)?");
fflush(stdin);
scanf("%c",&ch);
if(ch=='N'||ch=='n')
break;
}
break;
case 4:
while(1)
{
printf("\n输入你的四位出生年:");
scanf("%d",&year);
printf("\n\n你的属相是:%s\n你是否还要继续查询?(Y/N)?",shux(year));
fflush(stdin);
scanf("%c",&ch);
if(ch=='N'||ch=='n')
break;
}
break;
case 5:
while(1)
{
printf("\n请输入你所要查询的年,月,日(XXXX,XX,XX):");
scanf("%d,%d,%d",&year,&month,&day);
tianshu(year,month,day);
fflush(stdin);
scanf("%c",&ch);
if(ch=='N'||ch=='n')
break;
}
break;case 6:
fflush(stdin);
printf("你真的确定你要退出该程序?(Y/N)");
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
printf("*********************************************************************\n");
printf(" 感谢您的使用\n 如果您对本程序有什么意见请随时与我们联系\n");
exit(0);
break;
default:
printf("\nError:抱歉现在还没又此项功能,请在1到6中选择\n\n\n\n\n\n");
break;
}
}
return 0;
}追问编译不通过
全部回答
不知道合不合要求
#include
#include
#include
#include
#include
#include
#include
#include
typedef enum _PCCOLOR
{
BLACK = 0,
BLUE = 1,
DARK_GREEN = 2,
LIGHT_BLUE = 3,
RED = 4,
PURPLE = 5,
ORANGE = 6,
GREY = 7,
DARKER_GREY = 8,
MEDIUM_BLUE = 9,
LIGHT_GREEN = 10,
TEAL = 11,
RED_ORANGE = 12,
LIGHT_PURPLE = 13,
YELLOW = 14,
WHITE = 15
}PCCOLOR;
char*week[8]={"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
int Month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int ceak;
int LM=0;
int i,i2,BIGTURN,turn;
int mainrun();
int setTextColor(unsigned char fColor)
{
HANDLE hd = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO csbInfo;
GetConsoleScreenBufferInfo(hd, &csbInfo);
return SetConsoleTextAttribute(hd, fColor | (csbInfo.wAttributes&~0x0F));
}
int aton(char*achar)
{
int Digit=0;
int num=strlen(achar);
int power=num;
for(int i=0;i if(!isdigit(achar[i]))
return INT_MAX;
for(int i=0;i {
if(i!=num-1)
{
Digit+=(achar[i]-48)*int(pow((double)10,(int)--power));
}
else if(i==num-1)
Digit+=achar[i]-48;
}
return Digit;
}
int checkData(int YY,int MM,int DD)
{
static int start=0;

Month[1]+=(YY%4)/4;
if(YY<0)return 0;
if(MM>12||MM<1)return 0;
if(DD<1||DD>Month[MM-1])return 0;
return 1;
}
int main(int argc,char*argv[])
{
return mainrun
}
int mainrun()
{
int menu;
int close,YY,MM,DD;
int AllDays=0;

while(close!=0)
{
system("cls");
printf("\t\t\t\t****Calendar****\n");
printf("\t\t\t\t1.Calculat Date\n");
printf("\t\t\t\t2.Show Month\n");
printf("\t\t\t\t3.Not Finished\n");
printf("\t\t\t\t4.Quit\n");
printf("\t\t\t\tType Option 1,2,3,4\n");
while(!isdigit(menu))
{
menu=getch();
}
menu-='0';
switch(menu)
{
case 1:
ceak=0;
while(ceak!=3)
{
system("cls");
printf("Type In Date Like:YYYY/MM/DD\n");
ceak=scanf("%d/%d/%d",&YY,&MM,&DD);
fflush(stdin);
if(ceak!=3)
continue;
if(!checkData(YY,MM,DD))ceak=0;
}
ceak=0;
system("cls");
AllDays+=YY*365+YY/4;
AllDays+=(MM*31)-7;
AllDays+=(YY%4==0&&YY%1000!=0)?1:0;
AllDays+=DD;
printf("The Date You Put Is %4d/%2d/%2d %s %d\n",YY,MM,DD,
week[((DD+2*MM+3*(MM+1)/5+YY+YY/4-YY/100+YY/400)%7)],
((DD+2*MM+3*(MM+1)/5+YY+YY/4-YY/100+YY/400)%7));
printf("Press Any Key To Return Main Menu");
AllDays=0;
getch();
continue;
case 2:
static int wek=0;
ceak=0;
turn=0;
while(ceak!=2)
{
system("cls");
printf("Type In The Month You Want To Check \nLike:YYYY/MM\n");
ceak=scanf("%d/%d",&YY,&MM);
fflush(stdin);
if(ceak!=2)
continue;
DD=1;
if(!checkData(YY,MM,DD))ceak=0;
}
system("cls");
Month[1]+=(YY%4)/4;
LM=(MM==1)?Month[11]:Month[MM-2];
printf("The Month You Want To Check Is %d/%d\n",YY,MM);
wek=(DD+2*MM+3*(MM+1)/5+YY+YY/4-YY/100+YY/400)%7+1;
printf("\n\n\n\tSunday Monday Tuesday Wednesday Thursday Friday Saturday\n\t");
setTextColor(7);
for(i=0;i printf("% d\t",LM-wek+i+1);
setTextColor(15);
for(i=1;i<=Month[MM-1];i++,turn++)
{
if(turn==7)
{
printf("\n\t");turn=0;BIGTURN++;
}
printf(" %d\t",i);
}
setTextColor(7);
for(i=BIGTURN;BIGTURN!=6;)
{
for(i2=1;BIGTURN<6;i2++,turn++)
{ if(turn==7)
{
printf("\n\t");turn=0;BIGTURN++;
}
if(BIGTURN==6)break;
printf(" %d\t",i2);
}
}
setTextColor(15);
printf("\n\n");
turn=0;
BIGTURN=0;
system("color 07");
printf("Press Any Key To Return Main Menu");
getch();
continue;
case 3:
system("cls");
printf("Press any key to return main menu");
getch();
continue;
case 4:
exit(0);
default:
continue;

}
}
return 0;
}追问编译就不通过追答用c++编译 或者改c99+ 或者说下用的啥系统啥ide或编译器追问c++不行
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
windows\system32\mnmsrvc.exe丢失怎么办
描写木耳的句子,木耳是什么写句子
单选题经测定,某RNA片段中有30个碱基,其中A
有什么动漫是喜剧?
男佛教与女天主教能不能结婚?
联想thinkpade570的f1怎么按
刺客信条启示录中的盗贼团伙怎么引开敌人?f
什么是存在主义者?
有什么可以给女朋友讲的暖心睡前小故事
教师面试分好低,我好难过啊
下面叙述与天气有关的是①某个地方距离地表较
单选题上海世博会的主题是“城市,让生活更美
室内墙体用什么材料好,·新房墙壁装修用什么
集装箱号是BMOU2301094*92(92)中,"92"和“(
把下面句子改成拟人句,把下列句子改成拟人句
推荐资讯
踏雪寻梅 西湖 断桥诗句
我的门牙坏了 有蛀牙 必须要做牙套吗
信用卡超过六天没还会算逾期吗?
f(x)=ln(x+1),对此函数求导,请把过程加上吧
求青崎有吾作品集百度云资源,谢谢!
烟台信息工程学校的烟信文化理念
小学报名父母离异不填写父亲名字可以吗
包子类的面食最早出自与哪个年代
单选题被康有为尊为变法改制的祖师,以此证明
ASUS是什么牌子的笔记本电脑
洛龙区洛阳六福珠宝(丹尼斯百货政和店)在什么
公司开业贺词发言稿,关于积极发言的名言
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?