十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
typedef struct _data{ int year; int month; int day;}dataint isLeapYear(int year){ if((year%4==0 year%100 !=0) || (year%100==0 year%400 !=0)){ return 1; } return 0;}int countdays(data input){ int days[] = {31,28,31,30,31,30,31,31,30,31,30,31};//每个月的天数 int count = 0; for(int i = 0; i input.month-1; i++){ count += days[i]; } count += input.day; return count;}int main(){ data input; scanf("%d,%d,%d", input.year, input.month, input.day,); if(isLeapYear(input.year)){ printf("it is a leap year"); }else{ printf("it is not a leap year"); } printf("%d", countdays(input));} 输出到文件就自己写吧
我们提供的服务有:成都网站设计、网站制作、微信公众号开发、网站优化、网站认证、裕民ssl等。为成百上千企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的裕民网站制作公司
#includestdio.h
typedef struct {int y,m,d;}Date;
int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int checkDate(Date date)
{mon[2]=28+(date.y%4==0date.y%100||date.y%400==0);
return date.y0date.m0date.d0date.m13date.d=mon[date.m];
}
int main()
{ Date date;
scanf("%d%*c%d%*c%d",date.y,date.m,date.d);
printf("%s",(checkDate(date)?"OK":"Error"));
return 0;
}
定义一个12元素的int型数组存放1月份至12月份每个月的天数;
根据输入的年份判断是否为闰年,对上述数组中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改成一个返回函数即可