要求:用调用函数实现,每个函数完成一个功能;

思路:

1. main函数中只出现输入年份,和打印年份月数的函数;

2. 输入年份函数;

3. 打印年份日历函数:用循环实现1-12月的打印,调用月份打印函数

4.打印月份函数

5. 返回月数名称的函数

6. 计算year的month的天数的函数

7. 计算year的month的第一天是星期几的函数

8.判断year是否是闰年

9. 打印某月的第一天以前的空格数;

#include#includeint enter_year(void);//输入年份函数

_Bool leap_year(int year);//判断是否为闰年函数

void print_calendar(int year); //打印日历函数

void print_month(int month);//打印月份名称函数

int days_num(int year,int month);//返回该月天数函数

void print_week(void);//打印周一到周日

int firstday(int year,int month);//返回该月第一天是周几函数

void print_space(int year,int month);//空格缩进函数

int main()

{

//while(1)

//{

print_calendar( enter_year() );

//}

return 0;

}

int enter_year(void)//输入年份函数,并返回输入值

{

printf("please enter the year:");

int year;

scanf("%d",&year);

printf("\n");

return year;

}

_Bool leap_year(int year)//判断是否为闰年函数

{

if( (year%400 == 0) || (year%4==0 && year%100!=0) )

return true;

else

return false;

}

void print_calendar(int year)//打印年份日历函数

{

int i;

int j;

int count;

for(i=1; i<=12; i++)

{

print_month(i);

print_week();

print_space(year,i);

count=firstday(year,i)+1;

for(j=1; j<=days_num(year,i); j++)

{

printf("%-2d ",j);//左对齐,宽度为2

if( count%7 == 0 && j!=days_num(year,i) )//避免某月最后一天也正好换行

{

printf("\n");

//count=0;

}

count ++;

}

printf("\n");

}

}

void print_month(int month)//打印月数名称函数

{

switch(month)

{

case 1:printf(" JANUARY:\n");

break;

case 2:printf(" FEBRUARY:\n");

break;

case 3:printf(" MARCH:\n");

break;

case 4:printf(" APRIL:\n");

break;

case 5:printf(" MAY:\n");

break;

case 6:printf(" JUNE:\n");

break;

case 7:printf(" JULY:\n");

break;

case 8:printf(" AUGUST:\n");

break;

case 9:printf(" SEPTMBER:\n");

break;

case 10:printf(" OCTOBER:\n");

break;

case 11:printf(" NOVEMBER:\n");

break;

case 12:printf(" DECEMBER:\n");

break;

default :

break;

}

}

int days_num(int year,int month)//返回该月天数函数

{

switch(month)

{

case 2:if( leap_year(year) )

{

return 29;

}

else

return 28;

break;

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

return 31;

break;

case 4:

case 6:

case 9:

case 11:

return 30;

break;

default :

break;

}

}

void print_week(void)//打印周日到周一

{

printf("Mon Tue Wen Thu Fri Sat Sun\n");

}

int firstday(int year,int month)//该月第一天是周几函数

{

if(month==1 || month==2)//判断是否为1、2月

{

year--;

month+=12;

}

return ( (1+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7 );

//0-6 一到日

}

void print_space(int year,int month)//空格缩进函数

{

int i=0;

while(i

C语言输入年份显示日历,输入年份并输出当年的日历相关推荐

  1. Java输入年份和第一天的星期,展示全年日历

    输入年份和第一天的星期,即可展示全年日历 利用循环每次展示一个月的日历,日历每一行作为一个字符串,长度定为28 根据观察可知,第一天的星期几加7之后除以7取余则可知道该月第一天之前有几天空着,每天字符 ...

  2. 输入年份和月份,输出该月日历。

    简述思路 接收键盘数据得到年份和月份,判断是否为闰月,若为将2月天数改为29天 利用Calendar类找到该月份1号是周几 打印日历,逢7换行 package day8;import java.uti ...

  3. 写代码:输入一年份,判断该年份是否是闰年并输出结果。

    # 输入一年份,判断该年份是否是闰年并输出结果.# 注: 凡符合下面两个条件之一的年份是闰年.# 1. 能被4整除但不能被100整除.# 2. 能被400整除. year = int(input(&q ...

  4. html自动年份版权,如何将html5日期输入限制在合理的年份

    html5 input type ='date'用于Chrome中以输入最新免费jqgrid中的日期.如何将html5日期输入限制在合理的年份 它允许输入5位数字的日期,如20161. 如何解决此问题 ...

  5. 编写程序,输入本金、年利率和年份,计算复利(结果保留2位小数)

    题目: 编写程序,输入本金.年利率和年份,计算复利(结果保留2位小数).运行效果如下: 请输入本金:2000 请输入年利率:5.6 请输入年份:5 本金利率和为:2626.3 1.引入库 代码如下(示 ...

  6. 输入年月日,各种判断年份(平润年)来输出这是多少年的第几天

    通过输入年月日,各种判断年份(平润年)来输出这是多少年的第几天 用switch方法1: const readline = require('readline-sync'); console.log(' ...

  7. 在Putty或mRemote下输入和显示中文

    如果你安装的时候默认语言选的是中文,那么基本上不需要什么设置 而如果你默认选择的是英文的,就需要将编码改变一下, 我在RHEL AS4 u2下, # export LC_ALL= 'zh_CN.utf ...

  8. c语言怎么循环输入单个字符,c语言 帮我检查一下 输入一段文字,每行用回车结束,文字输入完毕可以使用某个特殊字符作为结束,...

    c语言 帮我检查一下 输入一段文字,每行用回车结束,文字输入完毕可以使用某个特殊字符作为结束,0 HIDE152019.04.28浏览4次分享举报 c语言输入一段文字,每行用回车结束,文字输入完毕可以 ...

  9. C++STL开发温习与总结(六): 6.C++语言输入/输出流定义之输入/输出格式控制

    原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://mp.blog.csdn.net/postedit/79177645 C++STL开发温习 ...

最新文章

  1. 微信推送模板消息的PHP代码整理
  2. 你想要什么样的财富自由
  3. IntelliJ IDEA中JAVA连接MYSQL
  4. 新手入门深度学习 | 3-1:数据管道Dataset
  5. ipv6计算_移动云多款产品通过工信部IPv6支持能力技术测评
  6. 汇编程序:将字符串中所有大写字符转为小写
  7. c语言b20等于多少,C语言程序:温度DS19B20显示
  8. vs 错误error C2011:类型重定义的解决办法
  9. MQL5 中如何调用指标
  10. 为Linux安装CHM阅读器
  11. mysql 告警日志_错误日志监控报警脚本
  12. 大豆技术面分析_期货分析是看技术面还是基本面?怎么进行期货分析
  13. 非零基础自学Golang 第18章 HTTP编程(下) 18.2 HTTP服务端 18.2.2 启动HTTP服务器 18.2.3 启动HTTPS服务器
  14. Win10安装Docker和k8s
  15. 贝叶斯公式推导及意义
  16. jstree的简单使用例子
  17. 2021最新css3面试题理论,前端css面试题,移动端面试题理论。
  18. 烤仔建工×MetaEstate×MetaCat | 明天来元宇宙过感恩节!
  19. mysql 突然报错 1878 Temporary file write failure
  20. 手把手搭建SpringBoot电子商城网站【附源码】(毕设)

热门文章

  1. 基于LSB的信息隐藏
  2. php程序员的出路,php程序员有前途吗
  3. Java 生成13位条形码 Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验码。
  4. POJ 1655 求树的重心(树形dp)
  5. WPF 几何图形之图形微语言命令
  6. VMR论文visualization实验总结
  7. python 利用脚本命令压缩加密文件并删除源文件
  8. linux客户端连接iscsi,配置ISCSI客户端(LINUX)redhat5-iSCSI-INITIATOR
  9. 大数据分析的思维方式有哪些
  10. win10无法连接到win7系统更新服务器,win10系统提示无法连接到windows服务的解决方法...