题目
输入某年某月某日,判断这一天是这一年的第几天?
c语言实现
#include "stdio.h"
#include "conio.h"
void main()
{
int day, month, year, sum, leap;
printf("请输入年:");
scanf("%d", &year);
printf("请输入月:");
scanf("%d", &month);
printf("请输入日: ");
scanf("%d", &day);
switch (month) /*先计算某月以前月份的总天数*/
{
case 1:sum = 0; break;
case 2:sum = 31; break;
case 3:sum = 59; break;
case 4:sum = 90; break;
case 5:sum = 120; break;
case 6:sum = 151; break;
case 7:sum = 181; break;
case 8:sum = 212; break;
case 9:sum = 243; break;
case 10:sum = 273; break;
case 11:sum = 304; break;
case 12:sum = 334; break;
default:printf("data error"); break;
}
sum = sum + day; /*再加上某天的天数*/
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) /*判断是不是闰年*/
leap = 1;
else
leap = 0;
if (leap == 1 && month>2) /*如果是闰年且月份大于 2,总天数应该加一天*/
sum++;
printf("这是当年的第%d天.", sum);
getch();
}
Python语言实现
import math
#判断是平年还是闰年
def isLeapYear(year):
result1 = year / 100
result2 = year / 4
result3 = year / 400
if math.floor(result1) == result1:
if math.floor(result3) == result3:
return 1
else:
return 0
else:
if math.floor(result2) == result2:
return 1
else:
return 0
#如果是一月
def count1month(day):
return day;
#如果是二月
def count2month(day):
return 31+day;
#如果是3月
def count3month(day):
return 59+day;
#如果是4月
def count4month(day):
return 90+day;
#如果是5月
def count5month(day):
return 120+day;
#如果是6月
def count6month(day):
return 151+day;
#如果是7月
def count7month(day):
return 181+day;
#如果是8月
def count8month(day):
return 212+day;
#如果是9月
def count9month(day):
return 243+day;
#如果是10月
def count10month(day):
return 273+day;
#如果是11月
def count11month(day):
return 304+day;
#如果是12月
def count12month(d):
return 334+d;
#判断用户是否输入正确
def correctinput():
if isLeapYear(year) == 1:
print("当年是闰年")
if month == 1:
print("这是当年的第:",count1month(day),"天")
if month == 2:
print("这是当年的第:",count2month(day),"天")
if month == 3:
print("这是当年的第:",count3month(day)+1,"天")
if month == 4:
print("这是当年的第:",count4month(day)+1,"天")
if month == 5:
print("这是当年的第:",count5month(day)+1,"天")
if month == 6:
print("这是当年的第:",count6month(day)+1,"天")
if month == 7:
print("这是当年的第:",count7month(day)+1,"天")
if month == 8:
print("这是当年的第:",count8month(day)+1,"天")
if month == 9:
print("这是当年的第:",count9month(day)+1,"天")
if month == 10:
print("这是当年的第:",count10month(day)+1,"天")
if month == 11:
print("这是当年的第:",count11month(day)+1,"天")
if month == 12:
print("这是当年的第:",count12month(day)+1,"天")
else:
print("当年是平年")
if month == 2 and day == 29:
print("当年是平年,没有2月29日,输入错误!")#提示错误信息
else:
if month == 1:
print("这是当年的第:",count1month(day),"天")
if month == 2:
print("这是当年的第:",count2month(day),"天")
if month == 3:
print("这是当年的第:",count3month(day),"天")
if month == 4:
print("这是当年的第:",count4month(day),"天")
if month == 5:
print("这是当年的第:",count5month(day),"天")
if month == 6:
print("这是当年的第:",count6month(day),"天")
if month == 7:
print("这是当年的第:",count7month(day),"天")
if month == 8:
print("这是当年的第:",count8month(day),"天")
if month == 9:
print("这是当年的第:",count9month(day),"天")
if month == 10:
print("这是当年的第:",count10month(day),"天")
if month == 11:
print("这是当年的第:",count11month(day),"天")
if month == 12:
print("这是当年的第:",count12month(day),"天")
try:
#提示用户输入年月日
year = int(input("请输入年:"))
month = int(input("请输入月:"))
day = int(input("请输入日:"))
if month>12 or month <1 or day >31 or day<0 or year<0:
print("输入信息有误,请重新输入!")
else:
correctinput()
except:
print("输入错误!")
★finished by songpl,2018.11.28