重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
定义一个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;
}
运行样例如下:
首先这个函数的输入是什么?
(年,月,日)
当不考虑闰年时,只须(月,日)
然后先考查月的取值范围(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改成一个返回函数即可
#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);
}