| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1955 人关注过本帖
标题:求教结构体问题
只看楼主 加入收藏
fengyinxqy
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2020-5-2
结帖率:92.31%
收藏
已结贴  问题点数:10 回复次数:3 
求教结构体问题
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;
}
搜索更多相关主题的帖子: printf 差值 year 结构体 date 
2020-05-21 15:13
D2284581470
Rank: 3Rank: 3
来 自:沈阳
等 级:论坛游侠
威 望:2
帖 子:169
专家分:147
注 册:2019-12-8
收藏
得分:2 
从键盘输入两个日期,计算两个日期的差值,包括年份差值、月份差值和日差值。
重点在 包括 两个字
我理解的是两个日期差值多少天,最后这个多少天转化为几年几月几日的标准形式这样。
2020-05-21 15:24
MangooDD
Rank: 1
等 级:新手上路
帖 子:5
专家分:8
注 册:2020-3-30
收藏
得分:8 
按照你的改了一下,你看看是不是这样
#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编辑过]

2020-05-22 00:41
fengyinxqy
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2020-5-2
收藏
得分:0 
回复 3楼 MangooDD
是的,就是这个感觉,谢谢大佬。
2020-05-23 11:17
快速回复:求教结构体问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017412 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved