1226 - C语言8.30

通过次数

0

提交次数

0

时间限制 : 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 ;
  }
}