C语言实验(十二):函数(输入年份输出日历、闰年判断、元旦星期几)

  • 一、判断闰年和某年元旦星期几的函数
    • 1. 编写一个函数,输入年份,判断是否为闰年;
    • 2. 编写一个函数,输入年份,判断当年元旦所对应的星期数;
  • 二、输入日期(年、月、日),输出他是该年的第几天、星期几。
  • 三、打印年历,要求输入年份(1900以后),输出每个月的月历构成年历。即每天对应的星期。

一、判断闰年和某年元旦星期几的函数

1. 编写一个函数,输入年份,判断是否为闰年;
1、闰年:年份是4的倍数,但不是100的倍数的年份;以及年份是400的倍数的年份。
2、有闰年的定义,用代码实现即可。用取模运算判断是否是x的倍数。
2. 编写一个函数,输入年份,判断当年元旦所对应的星期数;
1、求出从1900年开始的闰年及平年数量。依此计算出共多少天,然后根据一周七日,用天数对7做取模运算。
2、结合1990年元旦为星期一,可推断出要求年份元旦是星期几。

二、输入日期(年、月、日),输出他是该年的第几天、星期几。

1、根据年份判断是否是闰年;根据月份和日期可以计算是该年第几天。
2、将该年第几天和与1900年间隔年份天数相加得到至1900年元旦的天数,对7做取模运算可推断得这一日期是星期几。

实验代码

#include <stdio.h>
#include <stdlib.h>int main()
{int y,m,d;printf("请输入日期(示例:2000.3.9)\n");scanf("%d.%d.%d",&y,&m,&d);Xingqi(y,m,d);Dijitian(y,m,d);return 0;
}int Runnian(int year)//判断year年是否是闰年
{if (year%4 == 0 && year%100!=0 || year%400==0)return 1;elsereturn 0;
}int Xingqi(int year,int month,int day)//判断year年month月day日是星期几
{int i,s=0,n,a[13];for(i=1990;i<year;i++){if(Runnian(i))n = 366;elsen = 365;s+=n; //结果为与1900年间隔的年总天数}if(Runnian(year))a[2] = 29;elsea[2] = 28;for(i=1;i<=12;i++)if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)a[i]=31;else if(i==4||i==6||i==9||i==11)a[i]=30;for(i=1;i<month;i++)s+=a[i]; //加上这年过去的月份共多少天s+=day;//加上这是本月第几天switch(s%7){case 0:printf("星期日");break;case 1:printf("星期一");break;case 2:printf("星期二");break;case 3:printf("星期三");break;case 4:printf("星期四");break;case 5:printf("星期五");break;case 6:printf("星期六");break;}return 0;
}int Dijitian(int year,int month,int day) //判断year年month月day日是这年第几天
{int i,s=0,n,a[13];if(Runnian(year))a[2] = 29;elsea[2] = 28;for(i=1;i<=12;i++)if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)a[i]=31;else if(i==4||i==6||i==9||i==11)a[i]=30;for(i=1;i<month;i++)s+=a[i];//这年过去的月份共多少天s+=day;//加上这是本月第几天printf("今年的第%d天\n",s);
}

运行结果

三、打印年历,要求输入年份(1900以后),输出每个月的月历构成年历。即每天对应的星期。

1、要打印年历,需要输入年份。年历的输出,需要用到两个循环:每个月一个循环及每周一个循环。

2、首先需要知道该年元旦是星期几(调用函数2),将之前的位置都空出来。然后每周一个循环,去填充月历。在此之前,应该判断该年是否是闰年(调用函数1),依此判断2月份的天数。

3、将步骤2填充月历的过程循环12次即可,输出年历。根据控制台输出结果,适当调整代码,可以使年历清晰展示。

实验代码

#include <stdio.h>
#include <stdlib.h>
int Xingqi_yuandan(int year);int main()
{int m,i,l,d,t,year;printf("请输入某年年份:");scanf("%d",&year);t = Xingqi_yuandan(year);printf("%d年\n",year);for (m=1;m<=12;m++){printf("                    %2d 月                     \n",m);printf("-------------------------------------------------\n");printf(" 星期日 星期一 星期二 星期三 星期四 星期五 星期六\n");printf("-------------------------------------------------\n");for(i=0;i<t;i++)//把元旦之前星期X空出来printf("       ");if(m==2) //判断二月多少天{if(Runnian(year))l = 29;elsel = 28;}else if(m==4||m==6||m==9||m==11)l = 30;elsel = 31;for(d=1;d<=l;d++){printf("     %2d",d);t++;if(t==7) //周日换行{t = 0;printf("\n\n");}}printf("\n\n\n");//与下一月之间隔开}return 0;
}int Runnian(int year) //判断year年是不是闰年
{if (year%4 == 0 && year%100!=0 || year%400==0)return 1;elsereturn 0;
}int Xingqi_yuandan(int year)//判断year年元旦是星期几
{int m,n;m = (year-1900)/4-(year-1900)/100+(year-1900)/400;n = ((year-1900)*365 + m)%7+1;return n;
}

运行结果

C语言实验(十二):函数(输入年份输出日历、闰年判断、元旦星期几)相关推荐

  1. c语言函数二实验报告,C语言实验报告6——函数

    <C语言实验报告6--函数>由会员分享,可在线阅读,更多相关<C语言实验报告6--函数(15页珍藏版)>请在人人文库网上搜索. 1.学生实验报告学号:日: 2014-06-22 ...

  2. C语言 实验十 结构体

    C语言 实验十 结构体 一.实验目的 1.掌握结构类型变量与数组的定义和使用. 2.掌握使用结构指针和结构变量名使用结构成员的方法. 3.初步掌握结构指针作函数参数的编程方法. 二.实验学时 4 学时 ...

  3. 实验十二 HTTP 协议分析实验

    实验十二 HTTP 协议分析实验 1.HTTP 协议简介 HTTP是超文本传输协议 (Hyper Text Transfer Protocol)的缩写,用于WWW 服务. (1)HTTP的工作原理 H ...

  4. 操作系统真象还原实验记录之实验十二:实现ASSERT

    操作系统真象还原实验记录之实验十二:实现ASSERT,通过makefile完成编译 对应书P367 第8.2节 1.相关基础知识 见书 2.实验代码 完成了开关中断函数.实现assert断言函数用于调 ...

  5. 离散时间系统的时域分析 matlab,实验十二离散时间系统时域分析的MATLAB实现.doc...

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspmatlab 实验十二离散时间系统时域分析的MATLAB实现.d ...

  6. 《C++程序设计实践》实验十二

    <C++程序设计实践>实验十二 一.课内实验题(共5小题,50分) 题型得分 50 [描述] 声明并实现一个Student类,表示学生信息.Student类包括: int类型的私有数据成员 ...

  7. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十二:串口模块① — 发送

    实验十二:串口模块① - 发送 串口固然是典型的实验,想必许多同学已经作烂,不过笔者还要循例介绍一下.我们知道串口有发送与接收之分,实验十二的实验目的就是实现串口发送,然而不同的是 ... 笔者会用另 ...

  8. 虚拟机dhcp服务器怎么检验,实验十二虚拟机上DHCP服务器的配置和验证.doc

    实验十二 虚拟机上DHCP服务器的配置与验证 一.实验目的 了解DHCP的基本概念和服务器的新特性 掌握DHCP服务器的安装与配置 掌握DHCP的运行方式 掌握DHCP客户机的设置 掌握ipconfi ...

  9. 计算机组成原理Rsel什么意思,el-jy-ⅱ 计算机组成原理第二套 实验十二

    el-jy-ⅱ 计算机组成原理第二套 实验十二 (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 梁旷啦倔洲湿悔胚啼铆止羊香蔫夏髓解师 ...

最新文章

  1. DataGrid的使用
  2. golang error类型详解
  3. 在虚拟机安装OpenSuse Tumbleweed
  4. Redis-相关概念记录
  5. 计算机常用编程英语词汇大全,计算机编程及常用术语英语词汇大全
  6. 苹果年底推出搭载M2芯片MacBook Air和MacBook Pro
  7. leetcode day7
  8. dosbox下载并配置masm环境变量的方法
  9. [前端]使用meta控制双核浏览器默认使用webkit/chrome内核
  10. python2.0迅雷下载_【Tomato DualWan】迅雷离线下载完美教程
  11. ntfs磁盘格式是什么?NTFS如何读写Mac硬盘?
  12. js删除节点的坑(删不完),以li为列
  13. python 实现简单画板_Python图像处理之简单画板实现方法
  14. SWIFT gpi Instant 成功与新加坡 FAST 进行全球测试
  15. REDO文件损坏修复
  16. 每天10个前端小知识(1day)
  17. h3cr4900g3安装系统_H3C服务器安装Windows操作系统
  18. 基于B/S的城市公交查询系统的设计与实现(附:源码+论文+答辩PPT))
  19. 金山快盘ubuntu shell客户端
  20. 根据银行卡卡号判断银行

热门文章

  1. 一次对在线挂机网站的渗透的例子
  2. 30岁,提了离职。最终还是回老家了,北京攒下回龙观一套房子,一个北京车牌。拜拜!...
  3. matlab实现悬臂梁非线性动力学分析
  4. 文本超出隐藏并显示省略号
  5. IOS 多线程编程_NSLock,NSCondition,synchronized和生产者消费者模型
  6. [模式识别].(希腊)西奥多里蒂斯第四版笔记7之__feature generation (2)
  7. 基于Java的宠物销售的设计与实现
  8. html美食网页制作 dw静态网页制作 div+css美食网页实现与制作
  9. 电子技术综合实践——基于Proteus的抢答器设计
  10. 在Ubuntu使用df命令查看目录挂载点及其空间使用情况