c - 打印给定月份和年份的月历

标签 c date

一旦用户输入有效的输入(两个由空格分隔的整数),就打印出 日历的格式类似于 UNIX cal 命令的输出。为了 例如,如果用户输入 03 2014,则输出应为:

http://imgur.com/NCKOFL0

我意识到我之前问过类似的问题,但我根本无法理解答案。我觉得我应该从基础开始,这样我就可以自己学习如何在输入月份和年份的基础上打印出月历。

我在下面提供的代码只能打印出下个月的三月,因为我们考虑到每个不同年份的每个不同月份在不同的一天开始这一事实,代码变得更加复杂,所以我想知道如何我甚至应该开始执行此代码。

请不要进行任何高级操作,因为我的教授不希望我使用远远超出我知识水平的东西。

#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/

相关文章:

command-line - 如何从命令行更改日期格式?

javascript - getDay() 方法 javascript 的问题

c++ - 无法在 igraph 上生成 igraph_degree_sequence_game

c - 如何在C中使用 "anonymous"管道进行进程同步?

c - 如何应用lua定义

c - 为什么这个结构不编译?

mysql - 日期数据类型的 fatal error : MySQL Insert from VB.

sql - Hive:日期范围未从表中获取数据

将整数转换为无符号长整型

templates - Scala模板中的Playframework 2.X和Date格式