重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

c语言用函数判断输入日期 c语言输入日期判断第几天

c语言:从键盘上输入一个日期,判断输入的日期是否正确

定义一个12元素的int型数组存放1月份至12月份每个月的天数;

创新互联主要为客户提供服务项目涵盖了网页视觉设计、VI标志设计、营销网站、网站程序开发、HTML5响应式重庆网站建设公司手机网站开发、微商城、网站托管及成都网站维护、WEB系统开发、域名注册、国内外服务器租用、视频、平面设计、SEO优化排名。设计、前端、后端三个建站步骤的完善服务体系。一人跟踪测试的建站服务标准。已经为广告设计行业客户提供了网站设计服务。

根据输入的年份判断是否为闰年,对上述数组中2月份的天数进行调整;

判断年份大于0、月份大于0小于13、日期大于0小于等于月份对应的天数为正确输入,否则为错误输入。

代码如下:

#include "stdio.h"

int main(int argc,char *argv[]){

int y,m,d,md[12]={31,28,31,30,31,30,31,31,30,31,30,31};//md是每月天数数组

printf("Please enter the year, month, day(separated by ' ')...\n");

scanf("%d%d%d",y,m,d);

md[1] = y%4==0  y%100 || y%400==0 ? 29 : 28;//闰年调整

if(y0  m0  m13  d0  d=md[m-1])//判断输入是否正确

printf("Your input is correct!\n");//正确输出

else

printf("Error...\n");//错误输出

return 0;

}

运行样例如下:

c语言判断日期

首先这个函数的输入是什么?

(年,月,日)

当不考虑闰年时,只须(月,日)

然后先考查月的取值范围(1~12)的整数

此时可以进行第一步判断

接下来,你要作的很简单

比如你可以用个switch来作这些事情

比如我来作:

switch(月)

case 1,3,5,7,8,10,12:

return (日 0 日 = 31) ?true:false; break;

case 4,6,9,11:

return (日 0 日 = 30) ?true:false; break;

case 2:

return (日 0 日 = 28) ?true:false; break;

defalts:

...............

另外若加上闰年的情况也不会很复杂,只是须要以年来判断是不是闰年,然后把那个28改成一个返回函数即可

用C语言函数输入某年某月某日,判断这一天是这一年的第几天?

#include stdio.h

#include stdlib.h

static int daytable[2][13] = {

{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},

{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}

};

/* Get the days from year month day */

void get_day ( int year, int *dayofyear, int month, int day )

{

int i, leap;

leap = (( year % 4 == 0 ) ( year % 100 != 0 ) || ( year % 400 == 0 ));

*dayofyear = 0;

for (i=1;i month;i++) {

*dayofyear = *dayofyear + daytable[leap][i];

}

*dayofyear = *dayofyear + day;

}

void main()

{

int year,month,day;

int days;

printf("Enter the year month day (for example: 2008 3 1)\n");

scanf("%d %d %d",year,month,day);

(void) get_day ( year, days, month, day );

printf("the days=%d\n",days);

}


名称栏目:c语言用函数判断输入日期 c语言输入日期判断第几天
浏览地址:http://cqcxhl.com/article/hjgeco.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP