1226 - C语言8.30
时间限制 : 1 秒
内存限制 : 32 MB
给出年、月、日,使用一个函数计算出该日是该年的第几天。
题目输入
只有一行,包含三个正整数分别表示年、月、日。保证年份在0至3000之间,且月、日信息符合规则。
题目输出
输出该日是该年的第几天。
请注意行尾输出换行。
输入/输出样例
输入格式
2013 2 10
输出格式
41
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; }
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; }
Java解答
import java.util.Scanner; public class Main { private static Scanner s = new Scanner(System.in) ; public static void main(String[] args) { int year =s.nextInt() ; int month = s.nextInt() ; int day = s.nextInt() ; if(0<year&&year<3000){ System.out.println(getDay(month, year)+day); } } public static boolean isLeap(int year){ if(year%4==0){ if(year%100==0){ if(year%400==0){ return true ; } else return false ; } return true ; } else return false ; } public static int getDay(int month , int year){ int day = 0 ; if(month==1){ day = 0; }else if(month ==2){ day = 31; } else if(month ==3){ day = 59 ; if(isLeap(year)) { day ++ ; } } else if(month ==4){ day = day+31; } else if(month ==5){ day = day+30; } else if(month ==6){ day = day+31; } else if(month ==7){ day = day+30; } else if(month ==8){ day = day+31; } else if(month ==9){ day = day+31; } else if(month ==10){ day = day+30; } else if(month ==11){ day = day+31; } else if(month ==12){ day = day+30; } return day ; } }