一旦用户输入有效的输入(两个由空格分隔的整数),就打印出 日历的格式类似于 UNIX cal 命令的输出。为了 例如,如果用户输入 03 2014,则输出应为:
我意识到我之前问过类似的问题,但我根本无法理解答案。我觉得我应该从基础开始,这样我就可以自己学习如何在输入月份和年份的基础上打印出月历。
我在下面提供的代码只能打印出下个月的三月,因为我们考虑到每个不同年份的每个不同月份在不同的一天开始这一事实,代码变得更加复杂,所以我想知道如何我甚至应该开始执行此代码。
请不要进行任何高级操作,因为我的教授不希望我使用远远超出我知识水平的东西。
#include <stdio.h>
int main()
{
int k, rmd;
printf(" March 2014\n");
printf(" Su Mo Tu We Th Fr Sa\n");
for(k=1;k<32;++k){
if(k==1){
printf(" %2d\n", k);
}
else if(k%7 == 1){
printf(" %2d\n",k);
}
else{
printf(" %2d",k);
}
}
return 0;
}
最佳答案
基本方法很简单:
找到您知道会发生什么的一年(例如 2014 年 3 月 1 日是星期六)。然后考虑一年有 365 天(由 7*52 + 1 天...)和 366 天的一年会发生什么。之后你只需要弄清楚什么时候 leap years发生。
您可以找到您将考虑的第一年的开始日期,也可以合并向后计算(例如在此之前 365 天发生的事情) - 第一个更简单,但引入了额外的约束。
关于c - 打印给定月份和年份的月历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22589067/