4. 日历显示
试设计一个程序显示2010年日历。用户可连续查看某月日历,直到键入‘N’或‘n’为止。
(2010年第一天为周五)
输出举例:
Enter month in 2010 to display calendar (1-12): 1
****************************************************
SUN MON TUE WED THU FRI SAT
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Would you like to display another month (y/n) ? y
Enter month in 2010 to display calendar (1-12): 13
ERROR- Enter month in range of (1-12)!
Enter month in 2010 to display calendar (1-12): 6
****************************************************
SUN MON TUE WED THU FRI SAT
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Would you like to display another month (y/n) ? N
#include<stdio.h>
#include<stdlib.h>
main()
{ void calendar(int month);
int month,i=1;
char flag;
do{
printf("Enter month in 2010 to display calendar(1-12):");
scanf("%d",&month);
if(!(month>0&&month<13))
{printf("ERROR-Enter month in range of (1-12)!\n");
continue;}
calendar(month);
printf("Would you like to display another month (y/n) ?");
scanf("%c",&flag);
getchar();
}while(!(flag=='N'||flag=='n'));
system("pause");
}
void calendar(int month)
{
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int sum=0,i,j,k,date;
for(i=0;i<month-1;i++)
{sum+=a[i];}
date=(sum%7+5)%7;
printf("*********************************************\n");
printf("SUN MON TUE WED THU FRI SAT\n");
for(j=0;j<date;j++)
printf(" ");
for(k=1;k<=a[month-1];k++)
{printf("%6d",k);
if(!((date+k)%7)) printf("\n");}
printf("\n");
}