c语言 输入某年某月某日(两次),计算两次输入日期的间隔

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 输入某年某月某日(两次),计算两次输入日期的间隔相关的知识,希望对你有一定的参考价值。

参考技术A //输入某年某月某日(两次),计算两次输入日期的间隔
#include<stdio.h>

int sum(int month,int day)

int days[13]=0,31,28,31,30,31,30,31,31,30,31,30,31;
int i;
for(i=1;i<month;i++)
day+=days[i];
return(day);


int leap(int year) //int year 中int不可少

int leap=0;
if((year%4==0&&year%100!=0)||(year%400==0))
leap=1;
return leap;


int main()

int year,month,day,num,year1,month1,day1,num1,MINUS,j=0;
int temp,tyear;//此定义不可放置32行后
printf("Please input year,month,day twice:\n");
scanf("%d,%d,%d %d,%d,%d",&year,&month,&day,&year1,&month1,&day1);
num=sum(month,day);
num1=sum(month1,day1);
if(leap(year)&&month>=3)
num++;
if(leap(year1)&&month1>=3)
num1++;
printf("It is the %dth day.\n",num);
printf("It is the %dth day.\n",num1);
if(year<year1)
temp=year1-year;
for(tyear=year;tyear<year1;tyear++)
if(leap(tyear))
j++;
MINUS=temp*365+j+num1-num;

else

temp=year-year1;
for(tyear=year1;tyear<year;tyear++)
if(leap(tyear))
j++;
MINUS=temp*365+j+num-num1;

printf("两次输入日期的间隔是: %d天\n",MINUS);
return 0;
参考技术B 这个题目不难,难点在2月的天数上
int year(n)

if(n%4==0||n%100==0&&n%400!=0)
return 366;
else
return 365;

main()

int year1,year2,m1,m2,day1,day2,sum=0,t;
int y,i;
scanf("%d %d %d",&year1,&m1,&day1);
scanf("%d %d %d",&year2,&m2,&day2);
if(year1<year2)

t=year1;
year1=year2;
year2=t
t=m1;
m1=m2;
m2=t;
t=day1;
day1=day2;
day2=t

y=year1
while(y-year2>1)

sum+= year(y-1);
y--;

for(i=1;i<m1;i++)

if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
sum+=31;
if(i==4||i==6||i==9||i==11)
sum+=30;
if(i==2)
if(year1%4==0||year1%100==0&&year1%400!=0)
sum+=29;
else
sum+=28;

for(i=m2+1;i<=12;i++)

if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
sum+=31;
if(i==4||i==6||i==9||i==11)
sum+=30;
if(i==2)
if(year1%4==0||year2%100==0&&year2%400!=0)
sum+=29;
else
sum+=28;

if(m2==1||m2==3||m2==5|m2==7||m2==8||m2==10||m2==12)
sum+=31-day2;
if(m2==4||i==6||m2==9||m2==11)
sum+=30-day2;
if(m2==2)
if(year2%4==0||year2%100==0&&year2%400!=0)
sum+=29-day2;
else
sum+=28-day2;
sum+=day1;

printf("day=%d",sum);
本回答被提问者采纳
参考技术C typedef struct _date
int year;
int month;
int day;
date;
int getday(date m)
int d;
int dur[11]=31,31+28,31+28+31,....;
d=(m.year-1)*3652422/10000+m.day;
if(d.month>1)d+=dur[m.month-1);
if(m.year%4==0 && m.year%100!=0 || m.year%400==0)
if(m.month>1)d++;

return d;

int daydiff(date m,date n)return getday(m)-getday(n);
大致这样了

Python实现 : 输入某年某月某日,判断某一天为当年的第几天

PTA_Python程序设计(判断某一天为当年的第几天)

输入某年某月某日,判断这一天是这一年的第几天?程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。若输入错误的数据,则输出data error!
输入格式:

2020 3 10

输出格式:

it is the 70th day.

输入样例:

在这里给出一组输入。例如:

2020 3 10
1
输出样例:

在这里给出相应的输出。例如:

 

import datetime
try:
    year, month, day = input().split()
    year,month,day=eval(year),eval(month),eval(day)
    today = datetime.datetime(year, month, day)
except Exception:
    print("data error!")
else:
    first = datetime.datetime(year,1,1)
    num = (today-first).days + 1
    print("it is the {:d}th day.".format(num))

  


————————————————
版权声明:本文为CSDN博主「是狄克啊」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45675072/article/details/103721639

以上是关于c语言 输入某年某月某日(两次),计算两次输入日期的间隔的主要内容,如果未能解决你的问题,请参考以下文章

输入某年某月某日,判断这一天是这一年的第几天?

练习四:日期计算(输入某年某月某日计算出这一天是该年第几天的方法)

C语言试题一百之输入某年某月某日,判断这一天是这一年的第几天

输入某年某月某日,判断这一天是这一年的第几天?

编程输入某年某月某日(正确日期),判断这一天是这一年的第几天?请用switch语句以及累加法完成。

输入某年某月某日,判断这一天是这一年的第几天?