题目要求:2007年1月1日为星期一,编写一个函数,输出2007年任意月份的日历
这道题我是个人的做法,有个别地方可能有些绕。

#include<stdio.h>
int main()
{int month,WEEKDAY,count,month_days,width;int isWhatDay(int month);     //声明计算的函数printf("Please enter a month:\n");scanf("%d",&month);WEEKDAY = isWhatDay(month);         //将函数返回值赋给WEEKDAYprintf("Calendar 2007 - %d\n",month);printf("----------------------------\n");printf("  Su  Mo  Tu  We  Th  Fr  Sa\n");    //空白处是两个空格//下面是赋各个月份的天数if(month == 1||month == 3||month == 5||month == 7||month ==8||month == 10||month == 12)month_days = 31;else if(month == 2)month_days = 28;elsemonth_days = 30;width = 4 * WEEKDAY;  /*此处计算width可能一开始看不懂,实际上是为了打印空格,空格不printf到第一天的前一位是因为下面输出是%4d,其前三位是空格了。*/for(count = 1;count <= width;count++)printf(" ");for(count = 1;count <= month_days;count++){printf("%4d",count);if(WEEKDAY + (count - 1) % 7 == 6)  //这个if是因为到星期六就换行所以我从这个出发写出的等式printf("\n");}printf("\n----------------------------\n");return 0;}
int isWhatDay(int month)
{int weekday,distance;int days = 0;switch(month)/*没有break,是为了求出输入月份的第一天的前一天距这一年第一天有多少天,以便打出相应空格*/{case 12: days += 30;   case 11: days += 31;case 10: days += 30;case 9: days += 31;case 8: days += 31;case 7: days += 30;case 6: days += 31;case 5: days += 30;case 4: days += 31;case 3: days += 28;case 2: days += 31;       //注意:没有1月。      }distance = days % 7;switch(distance)    //余0即表明上个月最后一天即星期一,余6即星期六{case 0:  weekday = 1; break;case 1: weekday = 2; break;case 2: weekday = 3; break;case 3: weekday = 4; break;case 4: weekday = 5; break;case 5: weekday = 6; break;case 6: weekday = 0; break;   }return weekday;     //return打印相应空格
}

另外,加上年份其实也不难,仅需要加上个闰年判断,int i = 0; 二月是28 + i;如果是闰年i = 1即可。

欢迎交流探讨。
谢谢。

打印一年内任意月份的日历(C语言)相关推荐

  1. 【SQL开发实战技巧】系列(十九):数据仓库中时间类型操作(进阶)如何一个SQL打印当月或一年的日历?如何确定某月内第一个和最后—个周内某天的日期?

    系列文章目录 [SQL开发实战技巧]系列(一):关于SQL不得不说的那些事 [SQL开发实战技巧]系列(二):简单单表查询 [SQL开发实战技巧]系列(三):SQL排序的那些事 [SQL开发实战技巧] ...

  2. C语言打印某一年的全部日历(两行日历形式)

    C语言打印某一年的全部日历(两行日历形式) 输入一个年份(1970以后的),以如下的格式打印当年的日历 输入: Please input the year whose calendear you wa ...

  3. 输入一个年份,月份,输出该月份的日历。

    //输入一个年份,月份,输出该月份的日历. #include<cstdio> #include<iostream> #include<cstring> using ...

  4. 打印1998年2月的日历

    /*** * 打印1998年2月的日历* 请使用循环打印1997年7月的日历* 已知:1998年2月1日(星期日),* @author Monster丶ZF* @version1.8* @data 2 ...

  5. C语言pi等于前一百项相乘,2011年9月份计算二级C语言上机题库(可缩印做小抄)百分百准确.doc...

    2011年9月份计算二级C语言上机题库(可缩印做小抄)百分百准确 第一套 程序填空 程序通过定义学生结构体数组,存储了若干个学生的学号.姓名和三门课的成绩.函数fun的功能是将存放学生数据的结构体数组 ...

  6. c语言编程题输出2012年日历,C语言编程:输入任意一个年份和月份,输出该月份的公历日历...

    //⑴程序功能描述: 输入任意一个年份和月份,按以下格式输出该月份的公历日历. // 要求由程序计算出来该月份的1日是星期几,并用循环控制打印. // 打印样例如下: // 2012年日历 // == ...

  7. java 输出当月日历_java 实现打印当前月份的日历

    实现当前日历的打印,当前日期用*来表示. 关键得出这个月的第一天是星期几. 基姆拉尔森计算公式 W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 在公式中d表示 ...

  8. 输入年份月份实现日历打印,C到C++过渡。

    7月11日 注意事项 算法介绍 函数封装 1.计算某年是闰年 2.获取某年某月距1月1日共有多少天 3.计算某年某月到1900年1月1日有多少天 4.日历显示 C++编程实现输入年份月份打印日历功能 ...

  9. java如何打印当前月份日历_java打印指定年月份的日历

    本文实例为大家分享了java打印指定年月份日历的具体代码,供大家参考,具体内容如下 做了一个小的日历打印,没有使用数组,所以不能对日期进行操作,用了单个for循环打印,对初学者来说应该好理解点 工具类 ...

最新文章

  1. Linux shell test用法
  2. akka_Akka的字数统计MapReduce
  3. java.lang.NoSuchMethodError: org.springframework.beans.MutablePropertyValues.add
  4. SpringMVC简单小案例
  5. 怎么重新启动协议服务器,如何启用或禁用服务器网络协议 (SQL Server PowerShell)
  6. 三星发布A60 元气版:骁龙675 售价1499元
  7. UOJ#386. 【UNR #3】鸽子固定器(链表)
  8. 转载 WebService 的CXF框架 WS方式Spring开发
  9. oracle 命令行执行sql文件
  10. 高德地图显示多个气泡_arcgis api 4.x for js 地图加载多个气泡窗口展示(附源码下载)...
  11. 使用ASP.NET Global.asax 文件(转)
  12. C语言数字转换为字符的问题
  13. 【数学分析笔记01】平均值不等式证明
  14. seay代码审计mysql插件报错_Seay源代码审计系统2.1版本下载(附源码): 人人都是代码审计师...
  15. VelocityTracker使用总结
  16. Scala Either Left Right
  17. centos 基础镜像中安装失败,提示:Error: Failed to download metadata for repo ‘AppStream‘: Cannot prepare internal
  18. 《平衡掌控者 游戏数值战斗设计》学习笔记(二)人物基础属性设计
  19. 6410同时支持colorkey和aphablend
  20. 软件研发之道:微软开发团队的经验法则

热门文章

  1. 手机软件测试自学乐器,自学乐器不难!——从用好这6款APP开始吧
  2. oracle rman crosscheck,rman 之crosscheck 与delete expired
  3. 浏览器打开服务器上的图片无法显示,网页中的图片打不开怎么办?原因与解决办法...
  4. QString常用方法介绍
  5. python打印菱形三种方法_用python打印菱形的实操方法和代码
  6. 漏洞扫描的原理与应用
  7. IMX6ULL裸机开发之点亮LED灯
  8. Xcode不用数据线---真机测试
  9. 数学建模用python好吗_用 Python 做数学建模
  10. win10网络连接为地球禁用标志解决办法