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};//每個(gè)月的天數(shù) 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));} 輸出到文件就自己寫吧
我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、裕民ssl等。為成百上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的裕民網(wǎng)站制作公司
#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;
}
定義一個(gè)12元素的int型數(shù)組存放1月份至12月份每個(gè)月的天數(shù);
根據(jù)輸入的年份判斷是否為閏年,對(duì)上述數(shù)組中2月份的天數(shù)進(jìn)行調(diào)整;
判斷年份大于0、月份大于0小于13、日期大于0小于等于月份對(duì)應(yīng)的天數(shù)為正確輸入,否則為錯(cuò)誤輸入。
代碼如下:
#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是每月天數(shù)數(shù)組
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;//閏年調(diào)整
if(y0??m0??m13??d0??d=md[m-1])//判斷輸入是否正確
printf("Your?input?is?correct!\n");//正確輸出
else
printf("Error...\n");//錯(cuò)誤輸出
return?0;
}
運(yùn)行樣例如下:
首先這個(gè)函數(shù)的輸入是什么?
(年,月,日)
當(dāng)不考慮閏年時(shí),只須(月,日)
然后先考查月的取值范圍(1~12)的整數(shù)
此時(shí)可以進(jìn)行第一步判斷
接下來,你要作的很簡單
比如你可以用個(gè)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:
...............
另外若加上閏年的情況也不會(huì)很復(fù)雜,只是須要以年來判斷是不是閏年,然后把那個(gè)28改成一個(gè)返回函數(shù)即可