急:C++程序设计, 万年历:要求输入年份,输出该年各月的日历 ,谢谢各位大大了

本人新手,有些东西看不大懂,程序需要有注释,还需要流程图,谢谢各位了... 本人新手,有些东西看不大懂,程序需要有注释,还需要流程图,谢谢各位了 展开
 我来答
淦海瑶s1
2012-07-06 · TA获得超过3646个赞
知道大有可为答主
回答量:3341
采纳率:100%
帮助的人:764万
展开全部
计算每年的第一天是周几,这个道理很简单
400年的天数刚好是7的倍数,所以只求余下的那些年的天数就可
还有一点就是每年365天,364是7的倍数,所以一年多出一天,在加上闰年的多出来的那一天
int year(int ye)
{
int y=ye%400;
int i;
int dat=y-1;
for(i=1;i<y;i++)
if(y%4==0&&y%100!=0)
day+=1;
return day%7;

}
这个就是每年的第一天是周几
那么打印就可以了
设置一个全局变量数组
int c[12]={31,28,31,30,31,30,31,31,30,31,30,31}
这个在主函数中用if判断这一年是否是闰年来改变二月份的天数
接着打印就可以了
void pr(int k) //这里传递这一年的第一天是周几,也就是year函数求出的那个值
{
int i,j;
for(i=0;i<12;i++)
{
printf("周日 周一 周二 周三 周四 周五 周六\n");

for(j=0;j<k;j++) //这里是打印前面的空格

printf(" ");
for(j=1;j<c[i];j++)
{
printf("%4d",j);
if((k+i)%7==0) //这里判断是否换行

printf("\n");

}
k=(k+c[i])%7; //这个就是求出下一个月的第一天是周几

}

}
主函数就很简单了
main()
{
int yea,m;
scanf("%d",&yea);
if(yea%4==0&&(yea%400==0||yea%100!=0)) //这个判断闰年的公式可能不对,自己查一下
c[1]=29;
pr(year(yea));

}
dewipupu2
2012-07-05
知道答主
回答量:16
采纳率:0%
帮助的人:5.1万
展开全部
这个不简单啊,要又更多的分才行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
驭风者杨
2012-07-05 · 超过18用户采纳过TA的回答
知道答主
回答量:124
采纳率:0%
帮助的人:53.9万
展开全部
这个我用c51写过,还没用c++写过呢,不好意思哈。我的程序下载到单片机能运行。程序和仿真文件都在,你要是要,邮箱给我,我发给你。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式