万年历 编程
答案:4 悬赏:20
解决时间 2021-02-19 10:53
- 提问者网友:你在我眼中是最帅
- 2021-02-19 00:12
c语言或 汇编都可以 只要求显示年 月 日信息 可调整日期 有可以的我把分全加上 最好附原理图
最佳答案
- 二级知识专家网友:浪女动了心
- 2021-02-19 01:18
#include
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[]="SUM MON TUE WED THU FRI SAT";
printf("Please input the year whose calendar you want to know:\n");
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
{
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("==============================================================|");
}
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[]="SUM MON TUE WED THU FRI SAT";
printf("Please input the year whose calendar you want to know:\n");
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
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("==============================================================|");
}
全部回答
- 1楼网友:白日梦制造商
- 2021-02-19 05:01
#include
void PrintMonthCalender(int startDay,int days);
int GetWeekDay(int year,int month);
int GetMonthDays(int year,int month);
main()
{
int month,year;
printf("input the year and month:");
scanf("%d-%d",&year,&month);
printf("\t\t\t%d-%d\n",year,month);
printf("Sun.\tMon.\tTue.\tWed.\tThu.\tFri.\tSat.\n");
PrintMonthCalender(GetWeekDay(year,month),GetMonthDays(year,month));
return 0;
}
void PrintMonthCalender(int startDay,int days)
{
int k=0,n=1;
while(k
- 2楼网友:迷人小乖乖
- 2021-02-19 03:35
#include
#include
#include
long year;
int month,day,error_input;
char s[100];
int monthdays[12]={31,28,31,30,31,30,31,31,30,31,30,31};
void inputdate(){
long n[3]={0,0,0},k=0,i,len;
error_input=-1;
printf("Please input the year[,month[,day]]:(Enter Q to quit)\n");
gets(s);
len=strlen(s);
printf("%d\n",strcmp(s,"Q"));
if(strcmp(s,"Q")==0) {error_input=0;return;}
if(!isdigit(s[0])||!isdigit(s[len-1]))
{error_input=1;return;}
for(i=0;i2) {error_input=1;return;}}
else n[k]=n[k]*10+s[i]-48;
}
year=n[0];
if(!(year%4)&&(year%100)||!(year%400))
monthdays[1]=29;
else
monthdays[1]=28;
if(n[1]>12) {error_input=1;return;}
if(n[2]>monthdays[n[1]-1]) {error_input=1;return;}
month=n[1];
day=n[2];
}
void printCala(){
int countyear,countday=0,weekflag,i,j,k,c;
int startmon,endmon,year1;
year1=year-1;
countyear=(year1-year1%4)/4-(year1-year1%100)/100+(year1-year1%400)/400;
weekflag=(countyear*366+(year-1-countyear)*365+1)%7-1;
if(month==0) {startmon=1;endmon=12;}
else {startmon=month;endmon=month;}
for(k=1;k0&&countday%7==0)
printf("\n");
printf("%3d ",i);
countday++;}
weekflag=(weekflag+monthdays[k-1])%7;
printf("\n___________________________\n");
}
}
int main()
{
inputdate();
while(error_input!=0)
{
if(error_input==1)
printf("Input ERROR! Please input again:\n");
else
printCala();
inputdate();
}
}
- 3楼网友:厭世為王
- 2021-02-19 02:32
//万年历程序 //wnl.c chinanetboy //test pass with dev-c++4.9.9.2. #include #include #include // all struct,array lists int lunar_info[]={0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2, 0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977, 0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970, 0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x0c950, 0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557, 0x06ca0,0x0b550,0x15355,0x04da0,0x0a5d0,0x14573,0x052d0,0x0a9a8,0x0e950,0x06aa0, 0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0, 0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b5a0,0x195a6, 0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570, 0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0, 0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5, 0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930, 0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530, 0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45, 0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0}; char gan[10][3] = {"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"}; char zhi[12][3] = {"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"}; char shu[12][3] = {"鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"}; char solar_term[24][5] = {"小寒","大寒","立春","雨水","惊蛰","春分", "清明","谷雨","立夏","小满","芒种","夏至", "小暑","大暑","立秋","处暑","白露","秋分", "寒露","霜降","立冬","小雪","大雪","冬至"}; char chinese_num[30][5] = {"初一","初二","初三","初四","初五","初六","初七", "初八","初九","初十","十一","十二","十三","十四", "十五","十六","十七","十八","十九","廿十","廿一", "廿二","廿三","廿四","廿五","廿六","廿七","廿八", "廿九","三十"}; char chinese_month[12][5] = {"一","二","三","四","五","六","七","八","九","十", "十一","十二"}; typedef struct{ int lunar_year; int lunar_month; int lunar_day; int lunar_mday; int leap_month; int leap_state; }lunar_info; typedef struct{ int chinese_era_year; int chinese_era_month; int chinese_era_day; }chinese_era; int s_year,s_month,s_day,week,l_year,l_month,l_day; int s_month_total_day; int l_month_total_day; int l_year_total_day; int l_leap_month; int l_leap_month_day; int space_num; int c_num; int i,j; char tmp_str[9]; chinese_era c_ear; lunar_info l_info; //funcation list int get_solar_total_day(int solar_year, int solar_month) { int total_day; int temp_num; total_day = 0; for (temp_num = 1900; temp_num < solar_year; temp_num++) { if ((((temp_num % 4) == 0) && ((temp_num % 100) != 0)) || (temp_num % 400 == 0)) { total_day += 366; } else { total_day += 365; } } for(temp_num = 1;temp_num < solar_month; temp_num++) { switch(temp_num) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: total_day += 31; break; case 2: if ((((solar_year % 4) == 0) && ((solar_year % 100) != 0)) || (solar_year % 400 == 0)) { total_day += 29; } else { total_day += 28; } break; case 4: case 6: case 9: case 11: total_day += 30; break; } } return total_day; }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |