C语言编程:输入任意一个年份和月份,按格式输出该月份的公历日历

编程序实现如下功能:输入任意一个年份和月份,按以下格式输出该月份的公历日历。要求由程序计算出来该月份的1日是星期几,并用循环控制打印。打印样例如下:2012年日历====... 编程序实现如下功能:输入任意一个年份和月份,按以下格式输出该月份的公历日历。
要求由程序计算出来该月份的1日是星期几,并用循环控制打印。
打印样例如下:
2012年日历
==========
9月
----------------------------------------
日 一 二 三 四 五 六
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
-------------------------

#include"stdio.h"
main()
{
int year,month,sum=0,week,i,day,j,k,l;
scanf("%d%d",&year,&month);
printf(" %d年日历 \n",year);
printf(" ========== \n\n");
printf(" %d月 \n\n",month);
printf("----------------------------\n");
printf(" 日 一 二 三 四 五 六\n");
i=1;
while(i<year)
{
if(i%4==0&&i%100!=0||i%400==0)
sum+=366;
else
sum+=365;
i+=1;
}
for(j=1;j<month;j++)
{
if(month==4||6||9||11)
day=30;
if(month==1||3||5||7||8||10||12)
day=31;
if(month==2)
if(year%4==0&&i%100!=0||year%400==0)
day=29;
else
day=28;
sum+=day;
}
week=sum%7;
if(week!=6)
{
for(k=0;k<=week;k++)
printf(" ");
}
for(l=1;l<=day;l++)
{
if((sum+l)%7!=6)
printf("%4d",l);
else
printf("%4d\n",l);
}
}

问题:只有2月天数正常,其他月的天数错误都是30天或都是31天

求解啊~~!!!
展开
 我来答
outspaceman19
推荐于2017-11-25 · TA获得超过1080个赞
知道小有建树答主
回答量:749
采纳率:100%
帮助的人:410万
展开全部
if(month==4||6||9||11)
if(month==1||3||5||7||8||10||12)
这种写法是错误的。
应该这样写
if(month==4||month==6||month==9||month==11)
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
另外,其实你可以不这么写,太多了,可以用
switch..case
switch(month)
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()...
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式