| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1301 人关注过本帖
标题:if语句的应用,年与月相同的情况下,输出的日期错误,不知道我的逻辑哪错了 ...
只看楼主 加入收藏
了无此生
Rank: 3Rank: 3
来 自:粤地潮州
等 级:论坛游侠
威 望:3
帖 子:82
专家分:121
注 册:2018-11-14
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
if语句的应用,年与月相同的情况下,输出的日期错误,不知道我的逻辑哪错了,求指正
题目要求是输入两个日期比较先后,早的在前晚的在后;如:输入  12/34/8跟11/11/8;输出11/11/8 is earlise than 12/34/8
代码如下:
#include <stdio.h>
int main (void)
{
        int m1, m2, d1, d2, y1, y2, m, d, y;
        printf("Enter frist date (mm/dd/yy): ");
        scanf ("%d/%d/%d", &m1, &d1, &y1);
        printf("Enter second date (mm/dd/yy): ");
        scanf ("%d/%d/%d", &m2, &d2, &y2);

        y = y1, m = m1, d = d1;
        if (y1 > y2)
          y = y1, m = m1, d = d1;
        else if (y1 == y2) {            //与最后的else结合
          if (m1 > m2) {
            m = m1, d = d1;
}         else if (m1 == m2) {
            if (d1 > d2)
              d = d1;
            else                        //d1 <= d2
              d = d2;
}
          else                          //m1 < m2
            m = m2, m2 = m1, d = d2, d2 = d1;
}       else {                          //y1 < y2
          y = y2, m = m2, d = d2, y2 = y1, m2 = m1, d2 = d1;
}
        printf("%d/%d/%02d is earlise than %d/%d/%02d\n", m2, d2, y2, m, d, y);
        return 0;
}
搜索更多相关主题的帖子: if 输出 日期 逻辑 printf 
2018-12-01 00:41
了无此生
Rank: 3Rank: 3
来 自:粤地潮州
等 级:论坛游侠
威 望:3
帖 子:82
专家分:121
注 册:2018-11-14
收藏
得分:0 
发现怎么改了,添加了一句d2 = d1就行了抱歉啊, 我也是发了之后才想到的,浪费大家时间了,实在抱歉哈
#include <stdio.h>
int main (void)
{
        int m1, m2, d1, d2, y1, y2, m, d, y;    //要学会用尽量少的int与if语句,应记住:int过的后面如果不再用了的可以重新赋值
        printf("Enter frist date (mm/dd/yy): ");
        scanf ("%d/%d/%d", &m1, &d1, &y1);
        printf("Enter second date (mm/dd/yy): ");
        scanf ("%d/%d/%d", &m2, &d2, &y2);

        y = y1, m = m1, d = d1;
        if (y1 > y2)
          y = y1, m = m1, d = d1;
        else if (y1 == y2) {            //与最后的else结合
          if (m1 > m2) {
            m = m1, d = d1;
}         else if (m1 == m2) {
            if (d1 > d2)
              d = d1;
            else                        //d1 <= d2
              d = d2, d2 = d1;
}
          else                          //m1 < m2
            m = m2, m2 = m1, d = d2, d2 = d1;
}       else {                          //y1 < y2
          y = y2, m = m2, d = d2, y2 = y1, m2 = m1, d2 = d1;
}
        printf("%d/%d/%02d is earlise than %d/%d/%02d\n", m2, d2, y2, m, d, y);
        return 0;
}

睡不醒的学渣(^・ω・^ )
2018-12-01 00:55
了无此生
Rank: 3Rank: 3
来 自:粤地潮州
等 级:论坛游侠
威 望:3
帖 子:82
专家分:121
注 册:2018-11-14
收藏
得分:0 
发现怎么改了,添加了一句d2 = d1就行了抱歉啊, 我也是发了之后才想到的,浪费大家时间了,实在抱歉哈
#include <stdio.h>
int main (void)
{
        int m1, m2, d1, d2, y1, y2, m, d, y;    //要学会用尽量少的int与if语句,应记住:int过的后面如果不再用了的可以重新赋值
        printf("Enter frist date (mm/dd/yy): ");
        scanf ("%d/%d/%d", &m1, &d1, &y1);
        printf("Enter second date (mm/dd/yy): ");
        scanf ("%d/%d/%d", &m2, &d2, &y2);

        y = y1, m = m1, d = d1;
        if (y1 > y2)
          y = y1, m = m1, d = d1;
        else if (y1 == y2) {            //与最后的else结合
          if (m1 > m2) {
            m = m1, d = d1;
}         else if (m1 == m2) {
            if (d1 > d2)
              d = d1;
            else                        //d1 <= d2
              d = d2, d2 = d1;
}
          else                          //m1 < m2
            m = m2, m2 = m1, d = d2, d2 = d1;
}       else {                          //y1 < y2
          y = y2, m = m2, d = d2, y2 = y1, m2 = m1, d2 = d1;
}
        printf("%d/%d/%02d is earlise than %d/%d/%02d\n", m2, d2, y2, m, d, y);
        return 0;
}

睡不醒的学渣(^・ω・^ )
2018-12-01 01:21
Tomorrw_I
Rank: 10Rank: 10Rank: 10
等 级:禁止访问
威 望:6
帖 子:406
专家分:1712
注 册:2018-10-16
收藏
得分:20 


这就是进步嘛,加油

学C有用吗?
学C++有前途吗?
数据库有必要学吗?
……
别问,你还什么都不会,学就对了
……
2018-12-01 10:03
快速回复:if语句的应用,年与月相同的情况下,输出的日期错误,不知道我的逻辑哪 ...
数据加载中...
 
   



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

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