C语言编程 编程序实现如下功能:输入任意一个年份和月份,求出从公元1年1月1日到这个月的1日总共有
C语言编程编程序实现如下功能:输入任意一个年份和月份,求出从公元1年1月1日到这个月的1日总共有多少天,并求出这个月的1日是星期几,再按以下格式输出该月份的公历日历。要求...
C语言编程
编程序实现如下功能:输入任意一个年份和月份,求出从公元1年1月1日到这个月的1日总共有多少天,并求出这个月的1日是星期几,再按以下格式输出该月份的公历日历。
要求用循环控制打印。(提示:可以将每个月的天数存储到数组中。)
打印样例如下:
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
--------------------------- 展开
编程序实现如下功能:输入任意一个年份和月份,求出从公元1年1月1日到这个月的1日总共有多少天,并求出这个月的1日是星期几,再按以下格式输出该月份的公历日历。
要求用循环控制打印。(提示:可以将每个月的天数存储到数组中。)
打印样例如下:
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
--------------------------- 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏20(财富值+成长值)
1个回答
展开全部
#include<stdio.h>
int Month[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
int print_month[7][8];
bool leap_year(int year)
{
return year%4==0&&year%100!=0||year%400==0;
}
int get_days(int year,int month,int day)
{//返回从公元1年1月1日到该日期的天数
int i;
int sum=0;
for(i=1; i<year; i++)
{
if(leap_year(i))
sum+=366;
else sum+=365;
}
if(leap_year(year))
Month[2]=29;
for(i=1; i<month; i++)
sum+=Month[i];
Month[2]=28;
return sum+day;
}
void Print(int year,int month)
{//打印该月的日历
int i,j;
for(i=0; i<7; i++)
for(j=0; j<8; j++)
print_month[i][j]=0;
int sum=get_days(year,month,1);
if(leap_year(year))
Month[2]=29;
int t=1;
j=sum%7;
i=0;
while(t<=Month[month])
{
print_month[i][j]=t++;
j++;
if(j>=7)
{
i++;
j=0;
}
}
printf("\t%d月\n");
printf("****************************\n");
printf("日 一 二 三 四 五 六\n");
for(i=0; i<6; i++)
{
for(j=0; j<7; j++)
{
if(print_month[i][j]==0)printf(" ");
else printf("%-3d ",print_month[i][j]);
}
printf("\n");
}
printf("***************************\n");
Month[2]=28;
}
int main()
{
int year,month,day;
printf("输入日期:");
scanf("%d%d%d",&year,&month,&day);
printf("%d年%d月%d日是星期",year,month,day);
int t=get_days(year,month,day)%7;
if(t%7==0)printf("日\n");
else printf("%d\n",t%7);
Print(year,month);
return 0;
}
更多追问追答
追问
请问你调试了没有啊
追答
有错误吗?我测试了几个数据都是对的啊。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询