18058 一年的第几天
时间限制:1000MS 代码长度限制:10KB
提交次数:0 通过次数:0
题型: 填空题 语言: G++;GCC;VC
Description
定义一个结构体类型表示日期类型(包括年、月、日)。程序中定义一个日期类型的变量,输入该日期的年、月、日,
计算并输出该日期是一年的第几天。
#include <stdio.h>
struct DATE
{
};
int days(struct DATE date)
{
}
int main()
{
struct DATE d;
scanf("%d-%d-%d", &d.year, &d.month, &d.day);
printf("%d", days(d));
}
输入格式
年月日,格式如样例
输出格式
该年的第几天
输入样例
2015-1-1
输出样例
1
我的写法:
(暴力解决问题again)
#include <stdio.h>
struct DATE
{
int year;
int month;
int day;
};
int days(struct DATE date)
{
int month2,a;
if(date.year%4==0)
month2=29;
else
month2=28;
switch(date.month)
{
case 1:a=date.day;break;
case 2:a=31+date.day;break;
case 3:a=31+month2+date.day;break;
case 4:a=62+month2+date.day;break;
case 5:a=92+month2+date.day;break;
case 6:a=123+month2+date.day;break;
case 7:a=153+month2+date.day;break;
case 8:a=184+month2+date.day;break;
case 9:a=215+month2+date.day;break;
case 10:a=245+month2+date.day;break;
case 11:a=276+month2+date.day;break;
case 12:a=306+month2+date.day;break;
}
return a;
}
int main()
{
struct DATE d;
scanf("%d-%d-%d", &d.year, &d.month, &d.day);
printf("%d", days(d));
}
别人的写法:
#include <stdio.h>
struct DATE
{
int year;
int month;
int day;
};
int days(struct DATE date)
{
int runnian=0,days=0;
int months[12]={31,28,31,30,31,30,31,31,30,31,30,31}; //每个月的天数
if(date.year%4==0)runnian=1; //闰年
for(int i=0; i<date.month-1; i++){
days+=months[i];
}
days+=runnian;
days+=date.day;
return days;
}
int main()
{
struct DATE d;
scanf("%d-%d-%d", &d.year, &d.month, &d.day);
printf("%d", days(d));
}