注册 登录
编程论坛 C语言论坛

求教结构体问题

fengyinxqy 发布于 2020-05-21 15:13, 2261 次点击
2.    编写程序,定义日期结构体,成员包含年、月日。从键盘输入两个日期,计算两个日期的差值,包括年份差值、月份差值和日差值。
下面是我写的代码,我在想是不是我理解错了。月份差值比如是今年5月到明年4月,应该是11个月,而不是一个月,日差值也要把年份月份算上?
如果是那样,应该怎么写?小白只会这样写、
程序代码:
#include <stdio.h>
#include <math.h>
struct date
{
    int year,month,day; /* 年月日*/
};
int main()
{

    int month,day;
    struct date mindate,maxdate;
    printf("please input the one date:");
    scanf("%i-%i-%i",&mindate.year,&mindate.month,&mindate.day);
    printf("please input other day:");
    scanf("%i-%i-%i",&maxdate.year,&maxdate.month,&maxdate.day);

    printf("年差值为:%d\n",abs(maxdate.year-mindate.year));
    printf("月差值为:%d\n",abs(maxdate.month-mindate.month));
    printf("日差值为:%d\n",abs(maxdate.day-mindate.day));
    return 0;
}
3 回复
#2
D22845814702020-05-21 15:24
从键盘输入两个日期,计算两个日期的差值,包括年份差值、月份差值和日差值。
重点在 包括 两个字
我理解的是两个日期差值多少天,最后这个多少天转化为几年几月几日的标准形式这样。
#3
MangooDD2020-05-22 00:41
按照你的改了一下,你看看是不是这样
#include <stdio.h>
#include <math.h>
struct date
{
    int year,month,day; /* 年月日*/
};

int m[13][2]={ {0,0},{31,31},{28,29},{31,31},{30,30},{31,31},
                {30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}
                };                                         //每月天数
    isleap(int year){
        return(year%4==0&&year%100!=0)||(year%400==0);    //判断闰年
    }
int main()
{

    int month=0,day=0;
    struct date mindate,maxdate;
    printf("please input the one date:");
    scanf("%d-%d-%d",&mindate.year,&mindate.month,&mindate.day);
    printf("please input other day:");
    scanf("%d-%d-%d",&maxdate.year,&maxdate.month,&maxdate.day);

    printf("年差值为:%d\n",abs(maxdate.year-mindate.year));
    while(mindate.year!=maxdate.year||mindate.month!=maxdate.month){
        month++;
        day+=m[mindate.month][isleap(mindate.year)];        //假设每月都从1号开始,先算月份相差的日期
            if(++mindate.month>12){
                mindate.month=1;
               mindate.year++;
            }
        }
        day=day+maxdate.day-mindate.day;
    printf("月差值为:%d\n",month);
    printf("日差值为:%d\n",day);
    return 0;
}


[此贴子已经被作者于2020-5-22 09:43编辑过]

#4
fengyinxqy2020-05-23 11:17
回复 3楼 MangooDD
是的,就是这个感觉,谢谢大佬。
1