1226 - C语言8.30
给出年、月、日,使用一个函数计算出该日是该年的第几天。
Input
只有一行,包含三个正整数分别表示年、月、日。保证年份在0至3000之间,且月、日信息符合规则。
Output
输出该日是该年的第几天。
请注意行尾输出换行。
Examples
Input
2013 2 10
Output
41
Solution C
#include<stdio.h> int main() { int year,month,day; scanf("%d %d %d",&year,&month,&day); if((year%4==0&&year%100!=0)||(year%400==0)) { switch(month) { case 1:printf("%d\n",day);break; case 2:printf("%d\n",day+31);break; case 3:printf("%d\n",day+60);break; case 4:printf("%d\n",day+91);break; case 5:printf("%d\n",day+121);break; case 6:printf("%d\n",day+152);break; case 7:printf("%d\n",day+182);break; case 8:printf("%d\n",day+213);break; case 9:printf("%d\n",day+244);break; case 10:printf("%d\n",day+274);break; case 11:printf("%d\n",day+305);break; default :printf("%d\n",day+335);break; } } else { switch(month) { case 1:printf("%d\n",day);break; case 2:printf("%d\n",day+31);break; case 3:printf("%d\n",day+59);break; case 4:printf("%d\n",day+90);break; case 5:printf("%d\n",day+120);break; case 6:printf("%d\n",day+151);break; case 7:printf("%d\n",day+181);break; case 8:printf("%d\n",day+212);break; case 9:printf("%d\n",day+243);break; case 10:printf("%d\n",day+273);break; case 11:printf("%d\n",day+304);break; default :printf("%d\n",day+334);break; } } return 0; }
Solution C++
#include <stdio.h> struct date { int year, month, day; }; int main() { int days(struct date today); struct date today; scanf("%d %d %d", &today.year, &today.month, &today.day); printf("%d\n", days(today)); return 0; } /* 计算输入的日期是当年的第几天 */ int days(struct date today) { int is_leap_year(int year); int day_of_month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int i, totdays = 0; for (i = 1;i < today.month;i++) { totdays += day_of_month[i - 1]; if (i == 2 && is_leap_year(today.year) == 1) totdays++; } totdays += today.day; return totdays; } /* 判断是否是闰年 */ int is_leap_year(int year) { if (year % 4 == 0) { if (year % 100 == 0 && year % 400 != 0) return 0; return 1; } return 0; }