/*計算某年某日為當年的第幾天*/
/*作者:石輔寸*/
/*2019,2,3*/
#include<stdio.h>
int year,month,day;
int monthAyear[] = {31,28,31,30,31,30,31,31,30,31,30,31};
void writeDate();
void daySumout(int year,int month,int day);
int checkmonth(int month);
int checkday(int day);
int checkFeb(int year,int month,int day);
int checkMinmonth(int month);
void repeat();
int main()
{
writeDate();
daySumout(year,month,day);
repeat();
return 0;
}
/*檢查日期是否輸入正確*/
/*檢查月份*/
int checkmonth(int month)
{
if(month <= 0 || month > 12)
{
printf("月份輸入錯誤,請重新輸入。\n");
return 1;
}
else
{
return 0;
}
}
/*粗略檢查日期*/
int checkday(int day)
{
if(day > 31 || day <= 0)//大於31天,小於1天必定錯誤
{
printf("日期輸入錯誤,請重新輸入。\n");
return 1;
}
else
{
return 0;
}
}
/*單獨檢查二月天數*/
int checkFeb(int year,int month,int day)
{
if(month == 2)
{
if((year%4 == 0 && year%100 != 0) || (year%400 == 0))//檢查閏年二月天數
{
if(day >29)
{
printf("日期輸入錯誤,請重新輸入。\n");
return 1;
}
else
{
return 0;
}
}
else//檢查平年二月天數
{
if(day >28)
{
printf("日期輸入錯誤,請重新輸入。\n");
return 1;
}
else
{
return 0;
}
}
}
}
/*檢查小月天數*/
int checkMinmonth(int month)
{
if(monthAyear[month-1] > 30)
{
switch(month)
{
case 4: printf("日期輸入錯誤,請重新輸入。\n");return 1;
break;
case 6: printf("日期輸入錯誤,請重新輸入。\n");return 1;
break;
case 9: printf("日期輸入錯誤,請重新輸入。\n");return 1;
break;
case 11:printf("日期輸入錯誤,請重新輸入。\n");return 1;
break;
default:return 0;
}
}
else
{
return 0;
}
}
/*寫函數*/
void writeDate()
{
printf("請輸入日期:");
scanf("%d,%d,%d",&year,&month,&day);
//規定返回值為1時為輸入錯誤
if(checkday(day) == 1)
{
writeDate();
}
if(checkmonth(month) == 1)
{
writeDate();
}
if(checkFeb(year,month,day) == 1)
{
writeDate();
}
if(checkMinmonth(month) == 1)
{
writeDate();
}
}
void daySumout(int year,int month,int day)
{
int daySum = 0,i;
/*month == 1;
daySum == day;
month == 2;
daySum ==day +monthAyaer[0];*/
if(month == 1)
{
daySum = day;
}
if(month > 1)
{
if((year%4 == 0 && year%100 != 0) || (year%400 == 0))
{
monthAyear[1] = 29;
}
for(i = 0; i < month-1; i++)
{
daySum += monthAyear[i];
}
daySum += day;
}
printf("這是當年的第%d天。\n",daySum);
}
/*重复输入*/
void repeat()
{
printf("請繼續輸入。\n");
writeDate();
daySumout(year,month,day);
repeat();
}
计算某年中的一天是这年的第几天C程序
最新推荐文章于 2019-05-12 23:52:01 发布