Urgent! ~ ~ ~ ~ The program requirements for writing and printing perpetual calendars in C or c++ are as follows
/*****************************************************************
* Author: wacs5
* Date? :20 10 1 1 10(yymmdd)
* E-mail? :wacs5@ 126.com
* Function: Write and print the perpetual calendar in C.
*Targe? :/question/ 195084859.html
* Compiler: TC2.0, Gcc passed (if it is VC++, remove #include? & ltconio.h & gt)
* * In addition, the getch () function can be replaced by a system ("pause") statement.
*****************************************************************/
# Contains? & lttime.h & gt
# Contains? & ltmath.h & gt
# Contains? & ltstdio.h & gt
# Contains? & ltconio.h & gt
int? DaysInMonth[ 13]={0,3 1,28,3 1,30,3 1,30,3 1,30,3 1,30,3 1 };
int? DaysInYear[ 13]={0,3 1,59,90, 120, 15 18 1,2 12,243,273,304,334,365 };
Charles? MonthInfo[ 13][4]={ "","January", "February", "March", "April", "May", "June", "July", "August", "September" and "October".
Charles? WeekInfoEng[8][4]={"Sun "," Mon "," Tue "," Wed "," Thu "," Fri "," Sat " };
Charles? Weekly Fochs [8] [3] = {"Tian", "One", "Two", "Three", "Four", "Five" and "Six"};
int? Master ()
{
int? Year, month and day;
int? flag = 1; /* Whether to output to a file, 1 is output, 0 is no output */
Dragon? date 1;
int? IsLoopYear(int? Year);
int? CheckDay(int? Year, int? Month, int? Day);
Dragon? Date2Long(int? Year, int? Month, int? Day);
int? Zhou (long? Day);
int? PrintNow(int? Flag);
int? MonthCalendar(int? Year, int? Month, int? Flag);
int? YearCalendar(int? Year, int? Flag);
int? PrintNumMask(int? Year, char? Ch, file? * FP);
print now(flag); /* output the monthly calendar of the current month, and output the time. Flag= 1 means output to file */?
printf(" year = ");
Scanf("%d ",& year);
YearCalendar (year, flag); ? /* output 20 10 calendar, flag= 1 means output to file */
getch();
}
/* Judging leap years */
int? IsLoopYear(int? Year)
{
Return? Year %400==0? ||? (year% 100? & amp& amp? Year% 4 = = 0);
}
/* Check the legality of the date */
int? CheckDay(int? Year, int? Month, int? Day)
{
int? IsLoopYear(int? Year);
/* The date is greater than zero, the month is 1- 12, and the date is 1 the maximum number of days to the month. Pay attention to the leap month in February */
What if? (year & gt=0? & amp& amp? Month & gt0? & amp& amp? Month & lt= 12? & amp& amp? Day>0? & amp& amp? \
day & lt=(? DaysInMonth[month]+(month = = 2 & amp; & ampIsLoopYear(year))? ))
Return? 1;
other
Return? 0;
}
/* Returns the number of days in a year from the day of the month to 65438+10,0000 (abstract time)) */
Dragon? Date2Long(int? Year, int? Month, int? Day)
{
Dragon? Day;
Days = year * 365 l+ year /4 years/100+ year /400? +? (year & gt0); ? /* Year 65438+1the number of days on October 0, where 0 is a leap year */
days+= DaysInYear[month- 1]+? (Month & gt2 & amp& ampIsLoopYear(year))? +? Day; /* Add month and day */
Return? Day;
}
/* Calculate the week */
int? Zhou (long? Day)
{
Return? (Days+5)% 7; ?
}
/* output the current time, output the calendar of the current month */
int? PrintNow(int? Flag)?
{
time_t? Now;
struct? tm? * TM _ 1; ?
int? Zhou (long? Day);
int? CheckDay(int? Year, int? Month, int? Day);
Dragon? Date2Long(int? Year, int? Month, int? Day);
int? MonthCalendar(int? Year, int? Month, int? Flag);
Time (&now);
tm_ 1=localtime。 Now);
month calendar(TM _ 1->; tm_year+ 1900,TM _ 1->; tm_mon+ 1,flag);
Printf ("Today is: %02d %02d, week %s\n", tm _1-> tm_year+ 1900,TM _ 1->; tm_mon+ 1,TM _ 1->; tm_mday,WeekInfoChs[TM _ 1-& gt; TM _ wday]);
Printf ("Current time is %02d minutes %02d seconds \n", tm _1-> tm_hour,TM _ 1->; tm_min,TM _ 1->; TM _ sec);
Return? 1;
}
/* Output monthly calendar */
int? MonthCalendar(int? Year, int? Month, int? When flag)/*flag= 1
{
int? I, k, day, week;
Dragon? Day;
Charles? File name [80];
int? Zhou (long? Day);
int? CheckDay(int? Year, int? Month, int? Day);
Dragon? Date2Long(int? Year, int? Month, int? Day);
Documents? * fp
What if? (flag)
{
Sprintf (file name, "%04d_%02d.txt", year, month);
Fp=fopen (file name, "w");
What if? (fp==NULL)
{
printf("File? Open? Mistakes? Are you online? Function: MonthCalendar\nPress? Really? Keys? Where to? Exit: ");
getch();
Exit (-1);
}?
}
Day =1;
What if? (! CheckDay (year, month, day))
{
Printf ("format: %d-%d- 1(YYYY-MM-DD)? Is it? Invalid? Are you online? Function: MonthCalendar\n ",year, month);
Return? 0;
}
Days=Date2Long (year, month, day);
Week = week (day);
k =(4 * 7-9)/2;
For what? (I = 0; I & ltk;; i++)
File name [i]='?' ;
File name [k] =' \ 0';
Printf ("monthcalendar: \ n% s% d-%s \ n", file name, year, month info[ month]);
What if? (flag)
fprintf(fp," %s%d - %s\n ",filename,year,month info[month]);
For what? (I = 0; I<7; i++)
{
printf("%s?" ,WeekInfoEng[I]);
What if? (flag)
fprintf(fp," %s?" ,WeekInfoEng[I]);
}
printf(" \ n "); ?
What if? (flag)
fprintf(fp," \ n ");
For what? (I = 0; I< week; i++)
{
printf(" ");
What if? (flag)
fprintf(fp," ");
}
For what? (I = days; I< = daysinmonth [month]+(month = = 2) * (is loop year (year)); i++)? /* In February of leap year, add one */
{
printf("%3d?" , I);
What if? (flag)
fprintf(fp," %3d?" , I);
What if? ((I+ Weeks) %7==0)
{
printf(" \ n ");
What if? (flag);
fprintf(fp," \ n ");
}?
}
printf(" \ n ");
What if? (flag)
{
fprintf(fp," \ n ");
fclose(FP);
}
Return? 1;
}
/* Output Yearbook */
int? YearCalendar(int? Year, int? Flag)
{
int? month _ col = 2; ? /* How many calendar months per line */
int? space _ col = 4; ? /* Number of spaces in the two-month calendar */
int? month _ row =(int)ceil( 12.0/month _ col);
int? Line, end_day[ 13], keepgoing [13] = {1};
int? I, j, k, month, day [13], week [13];
Dragon? Days [13];
Charles? Space [3] [80];
int? Zhou (long? Day);
int? CheckDay(int? Year, int? Month, int? Day);
Dragon? Date2Long(int? Year, int? Month, int? Day);
int? PrintNumMask(int? Year, char? Ch, file? * FP);
Documents? * fp
What if? (flag)
{
Charles? File name [80];
Sprintf (file name, "%04d.txt", year);
Fp=fopen (file name, "w");
What if? (fp==NULL)
{
printf("File? Open? Mistakes? Are you online? Function: Calendar \ nPress? Really? Keys? Where to? Exit: ");
getch();
Exit (-1);
}?
}
For what? (Month =1; Month & lt= 12; Month++)
{
Day [month] =1;
What if? (! CheckDay (year, month, day [month])
{
Printf ("format: %d-%d- 1(YYYY-MM-DD)? Is it? Invalid? Are you online? Function: YearCalendar\n ",year, month);
Return? 0;
}
Days[month]=Date2Long (year, month, day [month]);
Week [month] = week (day [month]);
keep going[month]= 1;
}
k =(7 * 4-3)/2;
For what? (I = 0; I & ltk;; I++)/* Spaces before the month sign */
Space [0][i]='?' ;
space[0][I]= ' \ 0 '; ?
For what? (I = 0; I<7 * 4-3-k; i++)? /* Spaces after the month sign */
space[ 1][i]= '?' ;
space[ 1][I]= ' \ 0 ';
For what? (I = 0; I < space _ column; i++)? /* Spacing between two columns */
Space [2][i]='?' ;
space[2][I]= ' \ 0 ';
PrintNumMask(year,' * ',stdout);
PrintNumMask(year,' * ',FP);
Month =1;
For what? (I = 0; I & ltmonth _ rowi++)
{
For what? (j = 0; J< month _ column; j++)? /* Abbreviation of output month */
{
printf("%s%s%s ",space[0],MonthInfo[month+j],space[ 1]); /* leading space, month abbreviation, followed by leading space */
What if? (flag)
fprintf(fp," %s%s%s ",space[0],MonthInfo[month+j],space[ 1]);
What if? (j & ltMonth_col- 1)/* Spaces between columns of the month */
{
Printf("%s ",space [2]);
What if? (flag)
fprintf(fp," %s ",space[2]);
}?
}
printf(" \ n "); /* Line feed */
What if? (flag)
fprintf(fp," \ n "); ?
For what? (j = 0; J< month _ column; j++)?
{
For what? (k = 0; k & lt7; k++)? /* week abbreviation */
{
printf("%s?" ,WeekInfoEng[k]);
What if? (flag)
fprintf(fp," %s?" ,WeekInfoEng[k]);
}
What if? (j & ltMonth_col- 1)/* Spaces between columns of the month */
{
Printf("%s ",space [2]);
What if? (flag)
fprintf(fp," %s ",space[2]);
}?
}
printf(" \ n "); /* Line feed */
What if? (flag)
fprintf(fp," \ n "); ?
For what? (j = 0; J< month _ column; j++)? /* Horizontal line */
{
For what? (k = 0; k & lt7; k++)? /* Horizontal line */
{
printf(" _ _ _ _ _ _ _ ",WeekInfoEng[k]);
What if? (flag)
fprintf(fp," _ _ _ _ _ _ _ ",WeekInfoEng[k]);
}
What if? (j & ltMonth_col- 1)/* Spaces between columns of the month */
{
Printf("%s ",space [2]);
What if? (flag)
fprintf(fp," %s ",space[2]);
}?
}
printf(" \ n "); /* Line feed */
What if? (flag)
fprintf(fp," \ n "); ?
For what? (j = 0; J< month _ column; J++)/* First line */
{
For what? (k = 0; K< week [month+j]; k++)? /*No. 1 Ventilation before */
{
printf(" ");
What if? (flag)
fprintf(fp," ");
}
For what? (k = 1; k & lt=7; k++)?
{
printf("%3d?" ,k);
What if? (flag)
fprintf(fp," %3d?" ,k);
What if? ((k+ week [month +j])%7==0)
{
end _ day[month+j]= k+ 1;
Printf("%s ",space [2]);
What if? (flag)
fprintf(fp," %s ",space[2]);
Break;
}
}
}
printf(" \ n "); /* Line feed */
What if? (flag)
fprintf(fp," \ n "); ?
For what? (line = 0; line & lt5; line++)
{
For what? (j = 0; J< month _ column; j++)
{
What if? (keepgoing[month+j]==0)/* Fill a blank line */
For what? (k = 0; k & lt7; k++)
{
printf(" ");
What if? (flag)
fprintf(fp," ");
}
other
{
For what? (k = end _ day[month+j]; k & lt= DaysInMonth[month+j]+(month = = 2)*(is loopyear(year)); k++)
{
printf("%3d?" ,k);
What if? (flag)
fprintf(fp," %3d?" ,k);
What if? ((k+ week [month +j])%7==0)
{
end _ day[month+j]= k+ 1;
Break;
}
}
What if? (k & gt= DaysInMonth[month+j]+(month = = 2)*(is loopyear(year)))
keep going[month+j]= 0; ?
What if? (k & gtdays inmonth[month+j]+(month = = 2)*(is loopyear(year)))? /* Fill in the blanks */?
{
For what? (; k & lt 100; k++)
{
printf(" ");
What if? (flag)
fprintf(fp," ");
What if? ((k+ week [month +j])%7==0)
Break;
}
}
}
What if? (j & ltMonth_col- 1)/* Spaces between columns of the month */
{
Printf("%s ",space [2]);
What if? (flag)
fprintf(fp," %s ",space[2]);
}
}?
printf(" \ n "); ? /* Line feed */
What if? (flag)
fprintf(fp," \ n "); ?
/* Whether all the months in each line have been output */
k = 0;
For what? (j = 0; J< month _ column; j++)
k+= keep going[month+j];
What if? (k==0)
Break;
}
Month? +=? Month _ column;
printf(" \ n "); /* Line feed */
What if? (flag)
fprintf(fp," \ n "); ?
}
What if? (flag)
fclose(FP);
Return? 1;
}
/* Digital analog output */
int? PrintNumMask(int? Year, char? Ch, file? *fp)
{
/*5*5 digital modulus */
int? mask[ 10][5]={? {3 1, 17, 17, 17,3 1},{? 1,? 1,? 1,? 1,? 1},\
{3 1, 1? ,3 1, 16,3 1},{3 1,? 1,3 1,? 1,3 1},\
{ 17, 17,3 1,? 1,? 1},{3 1, 16,3 1,? 1,3 1},\
{3 1, 16,3 1, 17,3 1},{3 1,? 1,? 1,? 1,? 1},\
{3 1, 17,3 1, 17,3 1},{3 1, 17,3 1,? 1,3 1}};
int? digit[ 16]= { 0 };
Charles? space= '?' ;
int? I,j,k,n;
n = 0;
When (year)
{
Digit[n++]= year%10;
year/= 10;
}
For what? (I = 0; I<5; I++)/* Line */
{
For what? (k = 0; k & ltn; k++)? /* The first line of the word */
{
For what? (j = 0; j & lt5; j++)? /* column */
{
What if? (? mask[digit[n- 1-k]][i]? & amp? ( 1 & lt; & lt(4-j))? )
fprintf(fp," %c ",ch);
other
Fprintf(fp, "%c", space);
}
Fprintf(fp, "%c", space);
}
fprintf(fp," \ n ");
}
Return? 1;
}
Output result:
Monthly calendar of the current month and calendar of 20 10.