China Naming Network - Baby naming - Urgent! ~ ~ ~ ~ The program requirements for writing and printing perpetual calendars in C or c++ are as follows

Urgent! ~ ~ ~ ~ The program requirements for writing and printing perpetual calendars in C or c++ are as follows

The basic functions have been realized:

/*****************************************************************

* 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.