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

编程序实现如下功能:输入任意一个年份和月份,按以下格式输出该月份的公历日历。
要求由程序计算出来该月份的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天

求解啊~~!!!

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()...
温馨提示:内容为网友见解,仅供参考
无其他回答

编程序实现如下功能:输入任意一个年份和月份,按以下格式输出该月份的公...
int year,monthmax,m,i,j,d;printf("请输入年份:\\n");scanf("%d",&year);printf("请输入月份:\\n");scanf("%d",&m);if(year%4==0||(year%100==0&&year%400==0)){ if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)monthmax=31;if(m==2)monthmax=29;if...

C语言编程
int year,day,leap;\/\/leap为1表示闰年,0表示平年 int i =1,thisYear[13]={0},j=1;printf("请输入年份:");scanf("%d",&year);\/\/计算公元01年01月01日到该年份的天数 day = (year-1) * 365 + year\/4-year\/100+year\/400;printf("公元01年01月01日到该年是%d天\\r\\n",day);p...

C语言求高手!!!输入年份就能显示当年月历,并能看出日期是星期几,并且...
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("...

用C++编写 输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年...
int DaySearch(int year,int month,int day) \/*这个函数是计算输入的日期对应的星期*\/ { int c=0;float s;int m;for(m=1;m<month;m++)c=c+month_day(year,m); \/\/这是计算输入的月分的累计天数 c=c+day; \/\/计算日期在这一年中是第几天 s=year-1+(int)(year-1)\/4+(int )(...

跪求一个c语言编写的日历程序(最好加上注释)
跪求一个c语言编写的日历程序(最好加上注释) 10 以1900年一月一日是星期一为基础,编写程序(要考虑闰年)。1随意输入某年某月某日就可以推算出星期几。2输出一个月的月历。输入年份便罗列出该年的日历... 以1900年一月一日是星期一为基础,编写程序(要考虑闰年)。1随意输入某年某月某日就可以推算出星期几。

C语言年历显示程序设计
C语言年历显示程序设计 用C实现如下功能:1、输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间;2、输入年月,输出该月的日历。3、输入年月日,输出距今天还有多少天,星期几,... 用C实现如下功能:1、输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间;2...

求山东理工大学C语言实验答案(在线等、求速度)
1.编程序实现如下功能:输入任意一个年份的值,按以下格式输出该年份一月份的公历日历。要求用循环控制打印。 2011年日历1月日 一 二 三 四 五 六 12 3 4 5 6 7 8 9 10 11 12 13 14 1516 17 18 19 20 21 2223 24 25 26 27 28 29 30 31 #include <stdio.h>void main(){int year,days,...

C语言程序设计;"已知2000年1月1日为星期六,请输入任一年的年份后,打印...
printf("\\n请输入某年1月1日:");scanf("%d",&weekday);\/*因为你的要求是已知2000年1月1日是星期六,所以这里不用week_of_newyears_day去求星期六了*\/ \/*weekday = week_of_newyears_day(year); 求元旦是星期几 *\/ printf("\\n\\n\\n %d年\\n",year); \/* 打印年份 *\/ ...

想用c语言写一个关于日历的小程序,但是不知道如何计算星期几的问题...
公历一年一月一日是星期一,算出这一天和公历一年一月一日之间的天数就可以了 还有一个算法就是,400年一个循环,也就是401年一月一日也是周一这样可以少算很多天 再就是更简单的算法就是,一年是365天,364天正好是7的倍数,也就是一年多出一天来,这样再把闰年的那一天加上就可以了,这样可以算...

C语言程序设计 万年历查询程序。
如果输入Y,则重新显示,“请输入要查哪一年?(XXXX)”,否则回到主菜单。4. 在主菜单中输入3后,显示:“请输入要打印的年份(XXXX)”运行后输出XXXX年的日历,格式为:XXXX X(月数)0 1 2 3 4 5 6 S M T W T F S x x x x x x x x x x xx xx xx xx xx xx xx xx ...

相似回答