C语言实现某年某月某日是某年的第几天
看到这个标题,想实现这样的功能其实挺简单的,用C语言的switch语句加上闰年,平年条件的判断,再加上一定的逻辑可以轻松实现这样的函数,在linux内核中,存在判断闰年平年的接口,我将它移植出来后,写成一个宏,供计算天数的函数来调用,看看是不是可以实现,来,上代码:
#include<stdio.h>
#include<stdlib.h>
enum
{
zero = 0 ,NUM_TWO = 2, NUM_THR = 13 ,tw_e = 28 ,
tw_n = 29 ,st_z = 30 , st_o = 31 ,
};
#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0)) //判断是闰年还是平年
static int years[NUM_TWO][NUM_THR]=
{
{zero,st_o,tw_e,st_o,st_z,st_o, \
st_z,st_o,st_o,st_z,st_o,st_z,st_o},
{zero,st_o,tw_n,st_o,st_z,st_o, \
st_z,st_o,st_o,st_z,st_o,st_z,st_o}
};
static int Count(int year,int month,int day) ;
int main()
{
int year,month,day,m;
int day_num ;
printf("please input (year-month-day)\n");
scanf("%d-%d-%d",&year,&month,&day); //按上面说的格式输入
day_num = Count(year,month,day);
printf("day_num:%d\n",day_num);
return 0;
}
static int Count(int year,int month,int day)
{
int flag = 0 ;
static int i ;
if(isleap(year)) //判断是闰年还是平年
flag=1; //是闰年就把标志置一
for(i=0;i<month;i++)
day+=years[flag][i]; //然后对应数组的行数来选择相应的天数进行累加
return day ; //累加的结果返回,供主函数调用
}
运行结果:
我们可以看到,今天是2016年2月23日,是2016年的第54天!时间过得好快呀,两个月就快过去了噢,希望各位同行好好珍惜时间,有时间多多学习技术知识!
C语言实现某年某月某日是某年的第几天的更多相关文章
- iOS - 日期的时间差(某年某月某日的某一天。。。)
//首先创建格式化对象 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateF ...
- # 【Python3练习题 004】输入某年某月某日,判断这一天是这一年的第几天?
# [Python练习题 004]输入某年某月某日,判断这一天是这一年的第几天? # 思路:先判断是否为闰年,这关系到 2 月份的天数.# 之后再根据月份值把前几个月的天数累积加起来,最后再加上个“日 ...
- python3 输入某年某月某日,判断这一天是这一年的第几天?
题目 输入某年某月某日,判断这一天是这一年的第几天? 程序分析 特殊情况,闰年时需考虑二月多加一天. 代码: import calendar year = int(input("Year:& ...
- YTU 2715: 函数---判断某年某月某日是这一年中的第几天
2715: 函数---判断某年某月某日是这一年中的第几天 时间限制: 1 Sec 内存限制: 128 MB 提交: 380 解决: 155 题目描述 在主程序(main)中输入某年某月某日,例如2 ...
- python中输入某年某月某日,判断这一天是这一年的第几天?
输入某年某月某日,判断这一天是这一年的第几天?程序分析 特殊情况,闰年时需考虑二月多加一天: 直接上代码 #定义一个函数,判断是否为闰年 def leapyear(y): return (y % 40 ...
- 使用switch计算出某年某月某日是今年的第几天,输出一直是当月天数
package com.cx.Switch; import java.util.Scanner; /** * 计算出某年某月某日是今年的第几天 * 使用switch */ public class S ...
- C++风格写判断某年某月某日是一年的第几天
初学C++,在结构体中写函数及一些C++语言需要的一些格式 看代码 #include<iostream>#include<cstdio>using namespace std; ...
- iOS 时间戳转成今天,上午,下午,星期几,几月几日,某年某月某日
项目中有聊天功能,老板让聊天的时间转换成和 QQ 的聊天时间一样的格式, 研究了一下,来分析下 QQ 的聊天格式时间 代码: 会话列表显示的时间 如需转成24小时制,需要使用 HH //时间显示内容 ...
- js 输出某年某月某日的天数/判断闰年
console.log(getDays(2017,12,12)); function getDays(year,month,day){ var arr = [31,28,31,30,31,30,31, ...
随机推荐
- TortoiseSVN使用
TortoiseSVN是Subversion版本控制系统的一个免费开源客户端,不需要为使用它而付费. TortoiseSVN是 Subversion 的 Windows 扩展.它使你避免接触 Subv ...
- memcached实战系列(四)memcached stats命令 memcached优化
memcached提供一系列的命令进行优化的查看,方便我们调整我们的存储策略,查看我们的使用率,内存的使用率以及浪费情况.常用的命令有stats.stats settings.stats items. ...
- 14 Fragment 注意点
API 过时问题 API 23过时 public void onAttach(Activity activity)替换为public void onAttach(Context context) 注意 ...
- 剑指Offer——算法复杂度中的O(logN)底数是多少
剑指Offer--算法复杂度中的O(logN)底数是多少 前言 无论是计算机算法概论.还是数据结构书中,关于算法的时间复杂度很多都用包含O(logN)这样的描述,但是却没有明确说logN的底数究竟是多 ...
- Hadoop:Hadoop简介及环境配置
http://blog.csdn.net/pipisorry/article/details/51243805 Hadoop简介 下次写上... 皮皮blog 配置hadoop环境可能出现的问题 每次 ...
- Fork And Join框架初探
首先,关于Fork And Join框架的入门资料我觉得最好的是: Java线程(十一):Fork/Join-Java并行计算框架 本文参考了这篇文章 Fork/Join框架的核心类是ForkJoin ...
- (NO.00004)iOS实现打砖块游戏(五):游戏场景类
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 创建游戏场景类头文件 在Xcode创建新GameScene类,继 ...
- A*寻路算法入门(一)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...
- 【Vbox】centos虚拟机安装usb网卡驱动
前面安装增强pack之后 usb设备是可以识别了,但是无法正常使用,应该是无线网卡驱动没有的原因. 查看usb设备 os:centos6.6 内核:2.6.32-504.el6.x86_64 [roo ...
- [Python]django使用多进程连接msyql错误
问题 mysql 查询出现错误 error: (2014, "Commands out of sync; you can't run this command now") 查询 m ...