1270 - C语言11.6
时间限制 : 1 秒
内存限制 : 32 MB
定义一个包括年、月、日的结构体变量,读入年、月、日,计算该日在当年中是第几天。注意闰年问题。
请写一个函数days实现计算,将读入的结构体变量传递给days函数,计算后将答案返回给main函数进行输出。
题目输入
三个整数,分别表示年、月、日。保证输入是实际存在的日期,且年份在1000至3000之间(包含1000和3000)。
题目输出
输出该日期是一年中的第几天。
请注意行尾输出换行。
输入/输出样例
输入格式
2012 12 21
输出格式
356
C语言解答
#include<stdio.h> int ok(int n) { if(n%100==0) {if(n%400==0) return 1; else return 0; } else if( n%4==0) return 1; else return 0; } int main() { int i,x,y,z,sum=0; int a[]={31,29,31,30,31,30,31,31,30,31,30,31}; int b[]={31,28,31,30,31,30,31,31,30,31,30,31}; scanf("%d%d%d",&x,&y,&z); if(ok(x)) { for(i=1;i<y;i++) sum+=a[i-1]; sum+=z; } else { for(i=1;i<y;i++) sum+=b[i-1]; sum+=z; } printf("%d\n",sum); 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(1000<=year&&year<=3000){ System.out.println(get(year, month, day)); } } static int get(int year , int month , int day){ int temp = getDay(year, month) ; return temp + day ; } 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 ; } static int getDay(int year , int month){ int day = 0 ; if(month>=1){ day = 0 ; }if(month>=2){ day = day + 31 ; }if(month>=3){ if (isLeap(year)) { day =day+ 29 ; } else day =day+ 28 ; }if(month>=4){ day = day + 31 ; }if(month>=5){ day = day + 30 ; }if(month>=6){ day = day + 31 ; }if(month>=7){ day = day + 30 ; }if(month>=8){ day = day + 31 ; }if(month>=9){ day = day + 31 ; }if(month>=10){ day = day + 30 ; }if(month>=11){ day = day + 31 ; }if(month>=12){ day = day + 30 ; } return day ; } }