永发信息网

c语言问题:用于计算某年中的某一天在该年中是第几天:

答案:4  悬赏:70  手机版
解决时间 2021-04-01 02:40
  • 提问者网友:树红树绿
  • 2021-03-31 19:09
c语言问题:用于计算某年中的某一天在该年中是第几天:
最佳答案
  • 五星知识达人网友:煞尾
  • 2021-03-31 19:38
发现你的错误了,scanf用法不对
改为scanf("%d%d%d",&y,&m,&d)
全部回答
  • 1楼网友:酒醒三更
  • 2021-03-31 21:50
那么长的一段代码!!!看见都困了
  • 2楼网友:逃夭
  • 2021-03-31 20:44
#include
#include
//判断该年是不是闰年,是闰年返回1,不是闰年返回0
int leapyear(int year)
{
if((year%400 == 0)
|| ((year%4 == 0) && (year%100 != 0)))
return 1;
return 0;
}
//某年到某年的总天数
int dayformbirthtoass(int birth_year, int ass_year)
{
int n = 0;
int days_birthyeartoassyear = 0;

for(n = birth_year; n < ass_year; n++)
{
if(1 == leapyear(n))
{
days_birthyeartoassyear += 366;
}
else
{
days_birthyeartoassyear += 365;
}
}

return days_birthyeartoassyear;
}
//某月某日在一年中的天数
//默认二月28天
int daysfrommonth(int year, int month, int day)
{
int local_month = 0;
local_month = month;
if((month > 12) || (month < 1) || (day > 31) || (day < 1))
{
return 0;
}

if(month > 1)
{
while(month - 1 > 0)
{
switch(month - 1)
{
case 2: day += 28;break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:day += 31;break;
case 4:
case 6:
case 9:
case 11:day += 30;break;
}
month--;
}
}
if(local_month >= 3)
{
if(1 == leapyear(year))
{
return day + 1;
}
}
return day;
}
int main(void)
{
// 出生年月日
int birth_year = 0;
int birth_month = 0;
int birth_day = 0;
//指定的年月日
int ass_year = 0;
int ass_month = 0;
int ass_day = 0;
//指定年到出生年的总天数
int days_birthyeartoassyear = 0;
//n用于for循环
//int n = 0;
//出生年月日的,当年的天数
int days_atbirthyear = 0;
//指定年月日的,当年的天数
int days_atassyear = 0;
//总天数
int days_total = 0;

printf("请输入出生年月日(格式:yyyy-mm-dd):");
scanf("%d-%d-%d", &birth_year, &birth_month, &birth_day);
printf("请输入当前日期(格式:yyyy-mm-dd):");
scanf("%d-%d-%d", &ass_year, &ass_month, &ass_day);
if((birth_month <= 12)
&& (birth_month > 0)
&& (birth_day <=31)
&& (birth_day > 0)
&& (ass_month <= 12)
&& (ass_month > 0)
&& (ass_day <= 31)
&& (ass_day > 0))
{

days_birthyeartoassyear = dayformbirthtoass(birth_year, ass_year);
days_atbirthyear = daysfrommonth(birth_year, birth_month, birth_day);
days_atassyear = daysfrommonth(ass_year, ass_month, ass_day);
days_total = days_birthyeartoassyear + days_atassyear - days_atbirthyear;
//printf("年到年的天数: %d\r\n", days_birthyeartoassyear);
//printf("出生年的天数:%d\r\n", days_atbirthyear);
//printf("指定年的天数:%d\r\n", days_atassyear);
printf("总天数:%d\r\n", days_total);
}
else if((birth_month > 12) || (birth_month <= 0))
{
printf("出生月份输入错误!\r\n");
}
else if((birth_day > 31) || (birth_day <= 0))
{
printf("出生日期输入错误!\r\n");
}
else if((ass_month > 12) || (ass_month <= 0))
{
printf("当前月份输入错误!\r\n");
}
else if((ass_day > 31) || (ass_day <= 0))
{
printf("当前日期输入错误!\r\n");
}
system("pause");
return 0;
}
你看看我的程序吧。
int daysfrommonth(int year, int month, int day);
可以求的某年中的某天在该年中是第几天
  • 3楼网友:玩家
  • 2021-03-31 20:34
你干嘛不用switch-case语句啊,这样就会方便清楚很多
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯