第1个回答 2012-05-31
#include<stdio.h>
void main()
{
int day;
int mouth;
int year;
int i,j,m,n;
int weekday;
long wantyear;
int sum;
printf("请输入你想查询的年份:");
scanf("%d",&wantyear);
printf("********************************************************\n");
printf(" %d年 \n",wantyear);
printf("________________________________________________________\n");
for(year=1;year<=wantyear;year++)
{
if((year%4==0&&year%100!=0)||year%400==0)
sum+=366;
else sum+=365;
}
weekday=sum%7;
do{
for(mouth=1;mouth<=12;mouth++){
printf("%d月 日 一 二 三 四 五 六\n",mouth);
printf(" ");
// for(i=0;i<=weekday;i++)
// printf(" ");
switch(mouth)
{
case 1:case 3:case 5:case 7:case 8:case 10:case 12:day=31;break;
case 4:case 6:case 9:case 11:day=30;break;
case 2:if((wantyear%4==0&&wantyear%100!=0)||wantyear%400==0) day=29;
else day=28;
break;
}
//printf(" ");
for(i=0;i<=weekday;i++)
printf(" ");
for(j=1,m=weekday;j<=day;j++)
{ m=m++%7;
if((weekday+j)%7==0){
printf("\n");
printf(" ");}
printf("%6d",j);
}
weekday=m;
printf("\n\n\n\n");
}
}
while(mouth<12);
}
第2个回答 2012-06-02
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int yue()
{
int i,x,day,j,s=0,sum=365,m,month,c,d;
printf("请输入年份:");
scanf("%d",&x);
printf("请输入月份:");
scanf("%d",&month);
while(1){
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
day=(x+(x-1)/4-(x-1)/100+(x-1)/400)%7;
if(x%100==0){
if(x%400==0){
a[1]++;sum++;}
}
else if(x%4==0){
a[1]++;sum++;}
if(day==0)
day=7;
sum=sum+day;
for(i=0;i<12;i++){
if(i==month-1){
printf("%d年%d月:\n\n",x,month);
printf(" SUN MON TUE WED THU FRI SAT\n");}
{for(j=1;j<=a[i];j++)
{if(j==1)
for(m=0;m<day%7*5;m++)
if(i==month-1)
printf(" ");
if(i==month-1)
printf("%5d",j);
if((day+j)%7==0)
if(i==month-1)
printf("\n");}
day=(day+a[i])%7;}
}
c=getch();
if(c==27)
return 0;
d=getch();
if(c==72&&d==224||c==224&&d==72)
{system("cls");x--;}
else if(c==224&&d==80||c==80&&d==224)
{system("cls");x++;}
else if(c==75&&d==224||c==224&&d==75)
{system("cls");month--;
if(month<=0)
{x--;month=12;}}
else if(c==77&&d==224||c==224&&d==77)
{system("cls");month++;
if(month>12)
{month=1;x++;}}
else break;
}}
int second(int year, int month, int days)
{
static int mdays[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30 };
int i, y = year - 1;
for (i=0; i<month; ++i) days += mdays[i];
if (month>2)
{
if (((year%400)==0) || ((year&3)==0 && (year%100))) ++days;
}
return (y+y/4-y/100+y/400+days)%7;
}
void secondproblem()
{
int year,month,day,w;
static char* wday[]={ "日","一","二","三","四","五","六" };
printf("请输入年份:\n");
scanf("%d",&year);
printf("请输入月份:\n");
scanf("%d",&month );
printf("请输入日期:\n");
scanf("%d",&day);
if((year%4==0&&year%100!=0||year%400==0)==1)
printf("%d年 是闰年\n", year);
else
printf("%d年 是平年\n", year);
w = second(year,month,day);
printf("%d年%d月%d日 是星期%s.\n\n", year, month, day, wday[w]);
}
void ShowMenu()
{
char *str[4]={"请选择:","1:输出月历","2:输出星期几+公历节日","3:退出",};
int i;
for(i=0;i<4;i++)
printf("%s\n",str[i]);
}
int main()
{
int a;
system("cls");
do{
ShowMenu();
printf("请输入您的选择:");
scanf("%d",&a);
switch(a)
{
case 1:
yue();
break;
case 2:
secondproblem();
break;
case 3:
break;
}
}while(a!=3);
return 0;
}