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

本人新手,有些东西看不大懂,程序需要有注释,还需要流程图,谢谢各位了

计算每年的第一天是周几,这个道理很简单
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));

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-05
这个不简单啊,要又更多的分才行
第2个回答  2012-07-05
这个我用c51写过,还没用c++写过呢,不好意思哈。我的程序下载到单片机能运行。程序和仿真文件都在,你要是要,邮箱给我,我发给你。
相似回答