¡Urgente! ~ ~ ~ ~Los requisitos del programa para escribir e imprimir un calendario perpetuo en C o c son los siguientes
/************************************ ** ******************************
*Autor: wacs5
*¿Fecha? :20101110(aammdd)
*¿Correo electrónico? : wacs5@126.com
*Función: Escribir e imprimir calendario perpetuo en c.
*¿Objetivo? :/question/195084859.html
*Compilador: TC2.0, Gcc aprobado (si es VC, elimine #include? ltconio.h gt)
* *Además, getch La función () se puede reemplazar por una declaración del sistema ("pausa").
********************************************* *** **********************/
¿#Incluir? lttime.h gt
#¿Contiene? ltmath.h gt
#¿Contiene? ltstdio.h gt
#¿Contiene? ltconio.h gt
int? DíasEnMes[13]={0, 31, 28, 31, 30, 31, 30, 31, 30, 31, 30, 31};
int? DíasEnAño[13]={0, 31, 59, 90, 120, 15181, 212, 243, 273, 304, 334, 365};
Carácter? MonthInfo[13][4]={ " ", "enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto" ","septiembre"," Octubre","Noviembre","Diciembre"};
Ciel? WeekInfoEng[8][4]={"Dom","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"};
Char? WeekInfoChs[8][3]={"天","一","二","三","四","五","六"};
int? principal()
{
int? Año, mes, día;
int? flag = 1; /*Si enviar al archivo, 1 significa salida, 0 significa sin salida*/
Dragon? fecha 1;
int? IsLoopYear(int? año);
int? CheckDay(int? año, int? mes, int? día);
Dragón? Date2Long(int? año, int? mes, int? día);
int? Semana (¿duración? días);
int? PrintNow(int? bandera);
int? MonthCalendar(int? año, int? mes, int? bandera);
int? AñoCalendario(int? año, int? bandera);
int? PrintNumMask(int? año, char? ch, file? * FP);
imprimir ahora(flag);/*Generar el calendario del mes actual y la hora.
flag=1 significa salida al archivo */?
printf(" año = ");
scanf("d ", amp año);
AñoCalendario(año, bandera);? /*Muestra el almanaque de 2010, flag=1 significa enviar al archivo*/
getch();
}
/*Juzga el año bisiesto*/< /p >
int? IsLoopYear(int? año)
{
¿Regresar? Año 400==0? ||?(Año 100? amp amp? Año 4 = = 0);
}
/*Comprueba la validez de la fecha*/
int ? CheckDay(int? año, int? mes, int? día)
{
int? IsLoopYear(int? Year);
/*La fecha es mayor que cero, el mes es 1-12 y la fecha es 1 hasta el número máximo de días del mes. Preste atención al mes bisiesto de febrero*/
¿Y si? (Año gt=0? amp amp? Mes gt0? amp amp? Mes lt=12? amp amp? Día gt0? amp amp?\
día lt=(?DaysInMonth[mes] (mes = = 2 amperios; ampIsLoopYear(año))? ))
¿Regresar? 1;
Otros
¿Volver? 0;
}
/*Devuelve el número de días en un año desde el día del mes hasta 65438 octubre 0,0000 (tiempo abstracto))*/
龙? Date2Long(int? año, int? mes, int? día)
{
¿Largo? Días;
Número de días = año * 365 l año/4 años/100 años/400? ?(año gt0);? /*El número de días del 0 de octubre del año 65438, 0 es un año bisiesto*/
días = DíasEnAño[mes-1]? (mes gt2 amp ampIsLoopYear(año))? ?Día;/*Agregar mes y día*/
¿Volver? Día;
}
/*Calcular día de la semana*/
int? Semana (¿duración? días)
{
¿Regreso? (Número de días 5) 7;?
}
/*Imprimir la hora actual y el calendario del mes actual*/
int? Imprimir ahora (int? bandera)?
{
tiempo_t? Ahora;
estructura? ¿tm? *TM_1;?
int? Semana (¿duración? días);
int? CheckDay(int? año, int? mes, int? día);
Dragón? Date2Long(int? año, int? mes, int? día);
int? MonthCalendar(int? año, int? mes, int? bandera);
Hora (amp ahora);
tm_1=hora local.
ahora);
calendario mensual(TM_1->;tm_year 1900,TM_1->;tm_mon 1,flag);
Printf("Hoy es: 02d 02d, semana s\n ",TM_1-gt;tm_year 1900,TM_1->;tm_mon 1,TM_1->;tm_mday,WeekInfoChs[TM_1-gt;TM_wday]);
Printf("La hora actual es 02d minutos 02d segundos \n ", TM_1- gt; tm_hora, TM_1->; tm_min, TM_1->; TM_ seg);
¿Volver? 1;
}
/*Calendario mensual de salida*/
int? MonthCalendar(int? año, int? mes, int? cuando bandera)/*flag=1, escribir en el archivo */
{
int? Yo, k, día, semana;
¿Dragón? Cielo;
¿Ciel? Nombre de archivo[80];
int? Semana (¿duración? días);
int? CheckDay(int? año, int? mes, int? día);
Dragón? Date2Long(int? año, int? mes, int? día);
¿Archivo? * fp
¿Y si? (Bandera)
{
sprintf(nombre de archivo, "04d_02d.txt", año, mes);
fp=fopen(nombre de archivo, "w ") ;
¿Si? (fp==NULL)
{
printf("¿Archivo? ¿Abrir? ¿Error? ¿En? Función: CalendarioMes\n¿Presionar? ¿Hay? ¿Clave? ¿Dónde? Salir: ");
getch();
Salir(-1);
}?
}
Día = 1;
¿Si? (!CheckDay(Año, Mes, Día))
{
printf("Formato: d-d-1(AAAA-MM-DD)? ¿Sí? ¿No válido? ¿En? Función: MonthCalendar\n ", año, mes);
¿Volver? 0;
}
días=Fecha2Long (año, mes, día
semana=semana
k); =(4 * 7-9)/2;
¿Para qué? (I = 0;i ltk;i)
Nombre de archivo[i]= '? ';
Nombre de archivo [k] = '\0';
printf("calendario mensual:\n s d- s\n", nombre de archivo, año, información del mes[ mes]);
¿Si? (Bandera)
fprintf(fp, " sd - s\n ", nombre de archivo, año, mes info[mes]);
¿Para qué? (I = 0; i lt7; i )
{
printf("s?", WeekInfoEng[I]);
¿Si? (Bandera)
fprintf(fp, " s?", WeekInfoEng[I]);
}
printf(" \n ");
¿Y si? (Bandera)
fprintf(fp, "\n
");
¿Para qué? (I = 0; Iltweek; i)
{
printf(" ");
if? (flag)
fprintf(fp, "");
}
¿Para qué (I=Días; ilt= DíasEnMes] ( mes = = 2)*(is loopyear(year)); i )? /*En febrero del año bisiesto, agregue uno*/
{
printf("3d? " ,i);
if?(flag)
fprintf(fp,"3d?",i);
if?((I semana) 7 ==0)
{
printf(" \ n ");
si? (bandera);
fprintf( fp , " \ n ");
}?
}
printf(" \n ");
Si (marca? )
{
fprintf(fp, "\n");
fclose(FP);
}
Regresar? 1;
}
/*Anuario de salida*/
int? YearCalendar(int? año, int? bandera) p >
{
int? mes _ col = 2;? /*¿Cuántos meses calendario por fila?*/
int? espacios en el calendario de dos meses*/
int? Month_row =(int)ceil(12.0/month_col);
int? end_day[13], continúa[13] ]= { 1 };
int? I, j, k, mes, día[13], semana[13];
Dragón ]; >Carácter?[3][80];
int? Semana (longitud? día);
int? >
Fecha2Long(int? año, int? día);
int año, char ?ch,archivo?*FP);
archivo?*fp
if?(bandera)
char? Nombre de archivo[80];
sprintf(nombre de archivo, "04d.txt", año);
fp=fopen(nombre de archivo, "w");
¿Y si? (fp==NULL)
{
printf("¿Archivo? ¿Abrir? ¿Error? ¿En? Función: Almanaque\n¿Presionar? ¿Hay? ¿Clave? ¿A dónde ir? Salir:"
get();
Salir (-1
}?
}
¿para qué? (mes=1;mes lt=12;mes)
{
Día[mes]=1;
¿Si? (!CheckDay(año, mes, día [mes])
{
printf("Formato: d-d-1(AAAA-MM-DD)? ¿Sí? ¿No válido? en ? Función: YearCalendar\n ", año, mes);
Retorno? 0;
}
días[mes]=Fecha2Long
(año, mes, día [mes]);
semana [mes] = semana (día [mes]
sigue [mes] = 1;
}
k =(7 * 4-3)/2;
¿Para qué? (I = 0;I ltk;I)/*Espacio antes de la marca del mes*/
Espacio[0][i]= '? ';
espacio[0][I]= '\0';?
¿Para qué? (I = 0; i lt7 * 4-3-k; i )? /*Espacio después de la marca del mes*/
espacio[1][i]= '? ';
espacio[1][I]= ' \ 0 ';
¿Para qué? (I = 0; i lt columna_espacio; i )? /*El espacio entre las dos columnas*/
Espacio[2][i]= '? ';
espacio[2][I]= ' \ 0 ';
PrintNumMask(año, ' * ', salida estándar);
PrintNumMask(año , ' * ', FP);
Mes = 1;
¿Para qué? (I = 0; i ltmonth _ rowi )
{
¿Para qué? (j = 0; j lt columna_mes; j )? /*Ingrese la abreviatura del mes*/
{
printf("sss ", espacio[0], MonthInfo[mes j], espacio[1]); espacio inicial, abreviatura del mes, seguido de un espacio inicial*/
¿Si? (Bandera)
fprintf(fp, "sss", espacio[0], MonthInfo[mes j], espacio[1]);
¿Si? (j ltMonth_col-1)/*Espacio entre cada columna del mes*/
{
printf("s ", espacio[2]);
¿Y si? (bandera)
fprintf(fp, " s ", espacio[2]
}?
}
printf( " \ n "); /*Nueva línea*/
¿Si? (Bandera)
fprintf(fp, "\n");?
¿Para qué? (j = 0; j lt columna_mes; j )?
{
¿Para qué? (k = 0; k lt7; k )? /*Abreviatura de la semana*/
{
printf("s?", WeekInfoEng[k]);
¿Si? (Bandera)
fprintf(fp, "s?", WeekInfoEng[k]);
}
¿Si? (j ltMonth_col-1)/*Espacio entre cada columna del mes*/
{
printf("s ", espacio[2]);
¿Y si? (bandera)
fprintf(fp, " s ", espacio[2]
}?
}
printf( " \ n "); /*Nueva línea*/
¿Si? (Bandera)
fprintf(fp, "\n");?
¿Para qué? (j = 0; j lt columna_mes; j )? /*Línea horizontal*/
{
¿Para qué? (k = 0; k lt7; k
)? /*Línea horizontal*/
{
printf(" _ _ _ _ _ _ ", WeekInfoEng[k]);
¿Si? (Bandera)
fprintf(fp, " _ _ _ _ _ _ ", WeekInfoEng[k]);
}
¿Si? (j ltMonth_col-1)/*Espacio entre cada columna del mes*/
{
printf("s ", espacio[2]);
¿Y si? (bandera)
fprintf(fp, " s ", espacio[2]
}?
}
printf( " \ n "); /*Nueva línea*/
¿Si? (Bandera)
fprintf(fp, "\n");?
¿Para qué? (j = 0;j ltmonth_column;J)/*Primera fila*/
{
¿Para qué? (k = 0; k lt semana [mes j]; k )? /*Ventilación antes del número 1*/
{
printf(" ");
¿Si? (Bandera)
fprintf(fp, " ");
}
¿Para qué? (k = 1; k lt = 7; k )?
{
printf("3d?",k);
¿Si? (Bandera)
fprintf(fp, "3d?", k);
Si? ((k semana[mes j])7==0)
{
fin_día[mes j]= k 1;
printf(" s ", espacio[2]);
¿Si? (bandera)
fprintf(fp, " s ", espacio[2]
Romper
}
}
}
printf(" \ n "); /*Nueva línea*/
¿Si? (Bandera)
fprintf(fp, "\n");?
¿Para qué? (línea = 0; línea lt5; línea )
{
¿Para qué? (j = 0;j ltmonth_column;j)
{
¿Si? (sigue[mes j]==0)/*Llena una línea en blanco*/
¿Para qué? (k = 0; k lt7; k )
{
printf(" ");
¿Si? (Bandera)
fprintf(fp, " ");
}
Otro
{
Para ¿Qué? (k = fin _ día[mes j]; k lt= DíasEnMes[mes j] (mes = = 2)*(es bucleaño(año)); k )
{
printf("3d?",k);
¿Si? (Bandera)
fprintf(fp, "3d?", k);
Si? ((k semana[mes j])7==0)
{
fin_día[mes j]= k 1;
Descanso;
}
}
¿Y si? (k gt = D
aysInMonth[mes j] (mes = = 2)*(es loopyear(year)))
seguir adelante[mes j]= 0;?
¿Y si? (k gtdays en mes[mes j] (mes = = 2)*(es bucleaño(año)))? /*llena el espacio en blanco*/?
{
¿Para qué? (; k lt100; k )
{
printf(" ");
¿Si? (Bandera)
fprintf(fp, " ");
¿Si? ((k semana [mes j])7==0)
Descanso;
}
}
}
¿Y si? (j ltMonth_col-1)/*Espacio entre cada columna del mes*/
{
printf("s ", espacio[2]);
¿Y si? (bandera)
fprintf(fp, " s ", espacio[2]
}
}?
printf( "\n");? /*Nueva línea*/
¿Y si? (Bandera)
fprintf(fp, "\n");?
/*Si se han generado todos los meses de cada fila*/
k = 0;
¿Para qué? (j = 0; j lt columna_mes; j )
k = seguir adelante[mes j];
¿Si? (k==0)
Descanso;
}
¿Mes? =?Columna_Mes;
printf(" \ n "); /*Nueva línea*/
Si? (Bandera)
fprintf(fp, "\n");?
}
¿Y si? (Bandera)
fclose(FP);
¿Volver? 1;
}
/*Salida analógica digital*/
int? PrintNumMask(int? año, char? ch, file? *fp)
{
/*5*5 módulo 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? dígito[16]= { 0 };
¿Carácter? espacio = '? ';
int? I, j, k, n;
n = 0
Cuando (año)
{
dígito[n ]= Año 10;
año/= 10;
}
¿Para qué? (I = 0; I lt5; I )/* Línea */
{
¿Para qué? (k = 0; k ltn; k )? /*La primera línea de la palabra*/
{
¿Para qué? (j = 0; j
lt5;j)? /*Columna*/
{
¿Y si? (?mask[dígito[n-1-k]][i]? amp?(1 lt; lt(4-j))?)
fprintf(fp, " c ", ch);
Otros
fprintf(fp, "c", espacio
}
fprintf(fp, "c", espacio); );
}
fprintf(fp, "\n");
}
¿Volver? 1;
}
Resultados de salida:
El calendario mensual del mes actual y el calendario de 2010.