入力年月日、出力この日付は今年の何日目ですか
12986 ワード
typedef struct Date
{
int year;
int month;
int day;
}Date;
/* */
bool ISleapyear(int year)
{
/* 4 100 400 */
return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
}
/* */
int Totaldays(struct Date* da)
{
int total = 0;//
int arr[12] = {
31,28,31,30,31,30,31,31,30,31,30,31 };//arr
if (ISleapyear(da->year))//
{
arr[1] =29;
}
//
for (int i = 0; i < da->month - 1; ++i)
{
total += arr[i];
}
total += da->day;//
return total;
}
int main()
{
Date date;
printf("Please input year、month and day:");
scanf_s("%d%d%d", &date.year, &date.month, &date.day);
printf("%d %d %d :%d
", date.year,date.month,date.day,Totaldays(&date));
return 0;
}
2つ目は、合計日数を計算する方法です.
int Totaldays(const Date *da)
{
int total=0;//
// month-1
switch (da->month)
{
case 1:total = 0; break;
case 2:total = 31; break;
case 3:total = 59; break;//2 28
case 4:total = 90; break;
case 5:total = 120; break;
case 6:total = 151; break;
case 7:total = 181; break;
case 8:total = 212; break;
case 9:total = 243; break;
case 10:total = 273; break;
case 11:total = 304; break;
case 12:total = 334; break;
default:printf(" !"); break;
}
// , +1
if (ISleapyear(da->year))
{
total += 1;
}
return total+da->day;
}