已知1800年1月1日星期三,计算每月第一天星期几?要C语言的表达式,初学者,不要太复杂,谢谢

如题所述

第1个回答  2012-12-08
如果只求1800年内……
int mon[13],i=1,week[13];
switch(i)
{
case 1: mon[i]=0;week[i]=3;i++;
case 2: mon[i]+=31;week[i]=(mon[i]+3)/7+1;i++;
case 3: mon[i]+=28;week[i]=(mon[i]+3)/7+1;i++;//1800不是闰年
case 4: mon[i]+=31;week[i]=(mon[i]+3)/7+1;i++;
case 5: mon[i]+=30;week[i]=(mon[i]+3)/7+1;i++;
case 6: mon[i]+=31;week[i]=(mon[i]+3)/7+1;i++;
case 7: mon[i]+=30;week[i]=(mon[i]+3)/7+1;i++;
case 8: mon[i]+=31;week[i]=(mon[i]+3)/7+1;i++;
case 9: mon[i]+=31;week[i]=(mon[i]+3)/7+1;i++;
case 10: mon[i]+=30;week[i]=(mon[i]+3)/7+1;i++;
case 11: mon[i]+=31;week[i]=(mon[i]+3)/7+1;i++;
case 12: mon[i]+=30;week[i]=(mon[i]+3)/7+1;i++;
}
for(i=1;i<13;i++)
{
printf("%d月第一天为星期%d\n",i,week[i])
}追问

也要求其他年份,谢谢

追答

是不是让输入一个年份然后求没有第一天为星期几?

追问

不是,是做万年历程序,要求输入年月,打印月历

追答

int year,fd,zjrn,Mon;
printf("请输入年份:");
scanf("%d",&year);
printf("请输入月份:");
scanf("%d",&Mon);

int mon[13],i=1,week[13];
if(((year%4==0)&&(year%100!=0))||(year%400==0))
{
fd=((year-1804)/4+(year-1800)*365+3)/7
switch(i)
{
case 1: mon[i]=0;week[i]=fd;i++;if(i==Mon)break;
case 2: mon[i]+=31;week[i]=(mon[i]+fd)/7+1;i++;if(i==Mon)break;
case 3: mon[i]+=29;week[i]=(mon[i]+fd)/7+1;i++;if(i==Mon)break;
case 4: mon[i]+=31;week[i]=(mon[i]+fd)/7+1;i++;if(i==Mon)break;
case 5: mon[i]+=30;week[i]=(mon[i]+fd)/7+1;i++;if(i==Mon)break;
case 6: mon[i]+=31;week[i]=(mon[i]+fd)/7+1;i++;if(i==Mon)break;
case 7: mon[i]+=30;week[i]=(mon[i]+fd)/7+1;i++;if(i==Mon)break;
case 8: mon[i]+=31;week[i]=(mon[i]+fd)/7+1;i++;if(i==Mon)break;
case 9: mon[i]+=31;week[i]=(mon[i]+fd)/7+1;i++;if(i==Mon)break;
case 10: mon[i]+=30;week[i]=(mon[i]+fd)/7+1;i++;if(i==Mon)break;
case 11: mon[i]+=31;week[i]=(mon[i]+fd)/7+1;i++;if(i==Mon)break;
case 12: mon[i]+=30;week[i]=(mon[i]+fd)/7+1;i++;if(i==Mon)break;
}

}
答案过长了==
else部分我换个地方回答……

zhangqilong120 很厉害……忽略我吧!!!!!!!!!!!!

第2个回答  2012-12-08
一天一天数。