// 从终端输入一个日期, 判断这是这一年的第几天
#include <stdio.h>
void run(int year, int mon, int day)
{
if (day >= 1 && day < 32)
{
switch (mon)
{
case 1:
printf("%d是闰年,这是第%d天\n", year, day);
break;
case 2:
printf("%d是闰年,这是第%d天\n", year, 31 + day);
break;
case 3:
printf("%d是闰年,这是第%d天\n", year, 31 + 29 + day);
break;
case 4:
printf("%d是闰年,这是第%d天\n", year, 31 + 29 + 31 + day);
break;
case 5:
printf("%d是闰年,这是第%d天\n", year, 31 + 29 + 31 + 30 + day);
break;
case 6:
printf("%d是闰年,这是第%d天\n", year, 31 + 29 + 31 + 30 + 31 + day);
break;
case 7:
printf("%d是闰年,这是第%d天\n", year, 31 + 29 + 31 + 30 + 31 + 30 + day);
break;
case 8:
printf("%d是闰年,这是第%d天\n", year, 31 + 29 + 31 + 30 + 31 + 30 + 31 + day);
break;
case 9:
printf("%d是闰年,这是第%d天\n", year, 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + day);
break;
case 10:
printf("%d是闰年,这是第%d天\n", year, 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + day);
break;
case 11:
printf("%d是闰年,这是第%d天\n", year, 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + day);
break;
case 12:
printf("%d是闰年,这是第%d天\n", year, 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + day);
break;
default:
printf("月份输入错误\n");
break;
}
}
else
printf("日输入错误\n");
}
void ping(int year, int mon, int day)
{
if (day >= 1 && day < 32)
{
switch (mon)
{
case 1:
printf("%d是平年,这是第%d天\n", year, day);
break;
case 2:
printf("%d是平年,这是第%d天\n", year, 31 + day);
break;
case 3:
printf("%d是平年,这是第%d天\n", year, 31 + 28 + day);
break;
case 4:
printf("%d是平年,这是第%d天\n", year, 31 + 28 + 31 + day);
break;
case 5:
printf("%d是平年,这是第%d天\n", year, 31 + 28 + 31 + 30 + day);
break;
case 6:
printf("%d是平年,这是第%d天\n", year, 31 + 28 + 31 + 30 + 31 + day);
break;
case 7:
printf("%d是平年,这是第%d天\n", year, 31 + 28 + 31 + 30 + 31 + 30 + day);
break;
case 8:
printf("%d是平年,这是第%d天\n", year, 31 + 28 + 31 + 30 + 31 + 30 + 31 + day);
break;
case 9:
printf("%d是平年,这是第%d天\n", year, 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + day);
break;
case 10:
printf("%d是平年,这是第%d天\n", year, 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + day);
break;
case 11:
printf("%d是平年,这是第%d天\n", year, 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + day);
break;
case 12:
printf("%d是平年,这是第%d天\n", year, 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + day);
break;
default:
printf("月份输入错误\n");
break;
}
}
else
printf("日输入错误\n");
}
int main(int argc, char const *argv[])
{
int year, mon, day;
printf("请输入一个日期:");
scanf("%d %d %d", &year, &mon, &day);
while (1)
{
if (year == 0 && mon == 0 && day == 0)
break;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
run(year, mon, day);
else
ping(year, mon, day);
printf("请输入一个日期:");
scanf("%d %d %d", &year, &mon, &day);
}
return 0;
}
注意平年闰年和条件,因为本人对于函数掌握的不精通,所以是用函数进行书写