Red de conocimiento informático - Conocimiento del nombre de dominio - ¡Urgente! ~~~~ Utilice C o C++ para escribir un programa para imprimir el calendario perpetuo. Los requisitos son los siguientes:

¡Urgente! ~~~~ Utilice C o C++ para escribir un programa para imprimir el calendario perpetuo. Los requisitos son los siguientes:

Se han implementado funciones básicas:

/****************************** * *********************************** *¿Autor?: wacs5 *FECHA: 20101110 (AAAAMMDD) *Correo electrónico : wacs5@126.com *¿Función?: Usar C para escribir e imprimir el calendario perpetuo *Targe:/question/195084859.html *¿Compilador?: TC2.0, Gcc pasó (si es VC, elimine #include?lt; conio.hgt; ) **Además, la función getch() puede ser reemplazada por la declaración system("pause") **********************. ********* *************************************/

#include?lt;time.hgt ;

#include?lt;math.hgt;

#include?lt;stdio.hgt;

#include?lt;conio.hgt;

int?DaysInMonth[13]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

int? DíasEnAño[13]={0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365};

char?MonthInfo[13][4]= {"","ene","feb","mar","abr","may","jun","jul","ago","sep" ,"Oct","Nov","Dic "};

char?WeekInfoEng[8][4]={"Dom", "Lunes", "Martes", "Miércoles", "Jueves" ", "Viernes", "Sábado"};

char?WeekInfoChs[8][3]={"天","一","二","三","四","五","六"};

int?main()

{ int?año, mes, día; int?flag=1;?/*Si se debe enviar al archivo, 1 significa salida, 0 significa sin salida*/ long ?date1; int?IsLoopYear(int?year); int?CheckDay(int?year, int?month, int?day2Long(int?year, int?mes, int?día); int?semana(largo?día); int?printnow(int?indicador); int?mescalendario(int?año, int?mes, int?indicador); año, int?flag); int?PrintNumMask(int? año, char?ch, FILE?*fp);?/*Generar el calendario del mes actual y generar la hora, flag=1 significa enviar al archivo*/? printf("año="); scanf("d" ,amp;año);AñoCalenda

r(año, bandera);?/*Generar el calendario 2010, flag=1 significa enviar al archivo*/ getch();

}

/*Juzgar el año bisiesto* /

int?IsLoopYear(int?año)

{ return?año400==0?||?(año100?amp;amp;?año4==0);

}

/*Comprueba la legalidad de la fecha*/

int?CheckDay(int?año, int?mes, int?día)

{ int?IsLoopYear(int?year); /*El año, mes y día son mayores que cero, el mes es del 1 al 12, la fecha es del 1 al mayor número de días del mes, preste atención al mes bisiesto de febrero*/ if?(yeargt;=0?amp; amp;?monthgt;0?amp;amp;?monthlt;=12?amp;amp;?daygt;0?amp;amp;?\ daylt;=(?DaysInMonth[mes] (mes==2amp;amp;IsLoopYear (año))?)?) return?1; else return?0;

}

/* Devuelve año, mes, día hasta el 0 de enero de 0000 (tiempo abstracto)*/

long?Date2Long(int?year, int?month, int?day)

{ long?days=year*365l año/4 -año/100 año/400?(yeargt; 0 /*El número de días experimentados el 0 de enero del año, el año 0 es un año bisiesto*/ días =); DaysInYear[month-1] ?(monthgt; 2amp; amp; IsLoopYear (year))? ?day;?/*Agregar el mes y el número de días*/ return?days;

}

/*Calcular el día de la semana*/

int?Week(long?days)

{ return?(days 5)7;?

} /*Muestra la hora actual y el calendario del mes actual*/

int?PrintNow(int?flag)?

{ time_t?now; tm_1;? int?Semana(long?día); int?CheckDay(int?año, int?mes, int?día); int? año, int? mes, int? bandera); hora (amp; ahora); tm_1-gt; hora local (amp; ahora); "Hoy es: 4d año 02d mes 02d día, semana s\n", tm_1-gt; tm_year 1900, tm_1-gt; tm_wday]); La hora actual es: 02d hora 02d minuto 02d segundo\n", tm_1-gt; tm

_hora, tm_1-gt; tm_min, tm_1-gt; tm_sec); retorno?1;

}

/*Salida del calendario mensual*/

int? MonthCalendar (int?año, int?mes, int?flag)?/*Cuando bandera=1, escribe archivo*/

{ int?i, k, día, semana; nombre de archivo [80]; int?Semana(long?día); int?CheckDay(int?año, int?mes, int?día); * fp; si?(bandera) { sprintf(nombre de archivo, "04d_02d.txt", año, mes) {

printf("¿Archivo?Abrir?Error?en?Función:CalendarioMes\nPresione?cualquier?tecla?para?salir:");

getch();

salir(- 1 ); }? } día=1; if?(!CheckDay(año, mes, día)) { printf("Formato: d-d-1(AAAA-MM-DD)?is?inválido?en?Función: MonthCalendar\ n ", año, mes); return?0; } días=Fecha2Largo(año, mes, día); semana=Semana(días); k=(4*7-9)/2; para?(i=0; ilt ; k; i ) nombre de archivo[i]='?'; nombre de archivo[k]='\0'; printf("CalendarioMes:\nsd--s\n", nombre de archivo, año, Información del mes); ? (bandera) fprintf(fp, "sd--s\n", nombre de archivo, año, MonthInfo[mes]); i ]); si?(bandera) fprintf(fp, "s?", WeekInfoEng[i] } printf("\n");? si?(bandera) fprintf(fp, "\n"); ? (i=0;ilt;semana;i) { printf(""); si?(bandera) fprintf(fp,"" } para?(i=día;ilt;=DíasEnMes] (mes= = 2)*(IsLoopYear(year)); i )?/*En febrero de un año bisiesto, agregue uno*/ { printf("3d?", i); if?(flag) fprintf(fp, "3d? ", i); si?((i semana)7==0) {

printf("\n");

si?(bandera);

fprintf(fp, "\n");

} printf("\n"); si?(bandera) { fprintf(fp, "\n"); fclose(fp } retorno?1; /*Calendario anual de salida*/

int?YearCalendar(int?year, int?flag)

{ int?month_col=2;?/*Cuántos meses por fila*/ int ?space_col=4;?/*Número de espacios en dos calendarios*/ int?month_row=(int)ceil(12.0/month_col); int?line, end_day[13], keepgoing[13]={1}; ? i, j, k, mes, día[13], semana[13]; días largos[13]; char?espacio[3][80]; ? año, int?mes, int?día); long?Date2Long(int?año, int?mes, int?day); fp ; if?(bandera) { char?filename[80]; sprintf(filename, "04d.txt", año); fp=fopen(filename, "w"); if?(fp==NULL) {

printf("¿Archivo? ¿Abrir? ¿Error? En? Función: AñoCalendario\nPresione? ¿cualquier? tecla? para? salir: ");

getch();

salir(-1); }? } para?(mes=1;meslt;=12;mes) { día[mes]=1; si?(!CheckDay(año,mes,día[mes])) {< / p>

printf("Formato: d-d-1(AAAA-MM-DD)?is?invaild?in?Función: YearCalendar\n", año, mes);

return?0 } días[mes]=Fecha2Long(año, mes, día[mes]); semana[mes]=Semana(días[mes]); 2 ; for?(i=0;ilt;k;i)?/*espacio antes de la marca del mes*/ space[0][i]='?'; space[0][i]='\0';? for ?(i=0;ilt;7*4-3-k;i)?/*espacio después de la marca del mes*/ space[1][i]='?'; 0 '; for?(i=0;ilt;space_col;i)?/*Espacio entre dos columnas*/ space[2][i]='?'; PrintNumMask(año,'*',stdout); PrintNumMask(año,'*',mes=1;

ilt;month_row;i) { for?(j=0;jlt;month_col;j)?/*Ingrese la abreviatura del mes*/ {

printf("sss", space[0], MonthInfo[ mes j], espacio[1]);?/*Espacio inicial, abreviatura del mes, espacio final*/

if?(bandera)

fprintf(fp, "sss " , espacio[0], MonthInfo[mes j], espacio[1]);

if?(jlt;month_col-1)?/*Espacio entre columna de mes y columna*/

{

printf("s", espacio[2]);

si?(bandera)

fprintf(fp, "s" , espacio[2]);

} } printf("\n");?/*Nueva línea*/ if?(flag) fprintf(fp,"\n");? 0; jlt; mes_col; j )? {

para?(k=0; klt; 7; k )/*Abreviatura de semana*/

{

printf("s?", WeekInfoEng[k]);

si?(bandera)

fprintf(fp, "s?", WeekInfoEng[k]); /p>

}

if?(jlt;month_col-1)?/*Espacio entre columna de mes y columna*/

{

printf ("s", espacio[2]);

si?(bandera)

fprintf(fp, "s", espacio[2]);

} } printf("\n");?/*Nueva línea*/ if?(flag) fprintf(fp,"\n");? para?(j=0;jlt;month_col;j)? línea*/ {

for?(k=0;klt;7;k)/*Línea horizontal*/

{

printf( "____" , WeekInfoEng[k]);

if?(bandera)

fprintf(fp, "____", WeekInfoEng[k]);

}

if?(jlt;month_col-1)?/*Espacio entre columna de mes y columna*/

{

printf("s" , espacio[2] );

si?(bandera)

fprintf(fp, "s", espacio[2]);

} } printf ("\n" );?/*Salto de línea*/ if?(flag) fprintf(fp,"\n");? for?(j=0;jlt;month_col;j)/*Primera línea*/ {

for?(k=0;klt;semana[mes j];k)?/*Venta en corto antes del n.º 1*/

{

printf ("") ;

si?(bandera)

fprintf(fp, "");

}

para?( k=1; klt;=7;k )?

{

printf("3d?",k);

si?(bandera)

fimprimir

f(fp,"3d?",k);

if?((k semana[mes j])7==0)

{ end_day[mes j]=k 1; printf("s", espacio[2]); si?(bandera) fprintf(fp, "s", espacio[2]); } } printf("\n");?/*salto de línea*/ if?(bandera) fprintf(fp,"\n");?(line=0;linelt;5;line) {

for?(j=0;jlt;month_col;j)

{

if?(keepgoing[month j]==0)?/*Rellena un línea en blanco */ for?(k=0;klt;7;k) { printf(""); if?(bandera) fprintf(fp, "");

{ for?(k=end_day[mes j];klt;=DaysInMonth[mes j] (mes==2)*(IsLoopYear(año));k) { printf("3d?",k); if? (bandera) fprintf(fp, "3d?", k); if?((k semana[mes j])7==0) {

end_day[mes j]=k 1;

p>

romper; } } if?(kgt;=DaysInMonth[mes j] (mes==2)*(IsLoopYear(año))) seguir[mes j]=0;?( kgt;DaysInMonth[ mes j] (mes==2)*(IsLoopYear(año)))?/*Rellene espacios*/? { for?(;klt;100;k) {

printf ("");

si?(bandera)

fprintf(fp, "");

si?((k semana[mes j]) 7==0)

break; } }

}

if?(jlt;month_col-1)?/*Espacio entre columnas de mes*/< / p>

{ printf("s", espacio[2]); si?(bandera) fprintf(fp, "s", espacio[2]);

}

printf("\n");?/*Salto de línea*/

if?(bandera)

fprintf(fp," \n ");?

/*¿Se han generado todos los meses de cada fila?*/

k=0;

for?(j= 0; jlt; mes_col; j )

k =continuar[mes j];

si?(k==0)

descanso; =? mes_col; printf("\n");?/*Salto de línea*/ if?(bandera) fprintf(fp, "\n");? } if?(bandera) fclose(fp);

}

>

/*Salida analógica digital*/

int?PrintNumMask(int?year, char?ch, FILE?*fp)

{ /*5*5 analógica digital */ int?máscara[10][5]={?{31,17,17,17,31},{?1,?1,?1,?1,?1},\{31,1?, 31, 16, 31}, {31, 1, 31, 1, 31}, \{17, 17, 31, 1, 1}, {31, 16, 31, 1, 31}, \{31, 16, 31, 17, 31}, {31,?1,?1,?1,?1}, \{31, 17, 31, 17, 31}, {31, 17, 31,?1, 31}}; int?digit[16]={0}; char?space='?'; int?i,j,k,n; mientras(año) { dígito[n]=año10; } for?(i=0;ilt;5;i)?/*fila*/ { for?(k=0;klt;n;k)?/*la i-ésima fila de la palabra*/ {

for?(j=0;jlt;5;j)?/*columna*/

{

si?(?mask[digit[n -1- k]][i]?amp;?(1lt;lt;(4-j))?)

fprintf(fp, "c", ch);

else

fprintf(fp, "c", espacio);

}

fprintf(fp, "c", espacio); n"); } return?1;

}

Resultados de salida:

Calendario mensual para el mes actual y calendario anual para 2010