中易网

万年历 编程

答案:4  悬赏:20  
解决时间 2021-02-19 10:53
c语言或 汇编都可以 只要求显示年 月 日信息 可调整日期 有可以的我把分全加上 最好附原理图
最佳答案
#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("==============================================================|");
}
全部回答
#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; }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯