| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1090 人关注过本帖
标题:else if 问题 算法问题
只看楼主 加入收藏
lwy2019
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2019-10-11
结帖率:33.33%
收藏
 问题点数:0 回复次数:3 
else if 问题 算法问题
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
void main()
{
    //输入日期,判断这一天是这一年的第几天
    int year, month, day;
    int sum = 0;
    A: printf("输入日期:");
    scanf("%d %d %d", &year, &month, &day);
    if (month > 0 && month < 13 && day>0 && day < 32)
   
    {
        switch (month)
        {
        case 1: month = 31; sum = 0; break;
        case 2: month = 28; sum = 31; break;
        case 3: month = 31; sum = 59; break;
        case 4: month = 30; sum = 90; break;
        case 5: month = 31; sum = 120; break;
        case 6: month = 30; sum = 151; break;
        case 7: month = 31; sum = 181; break;
        case 8: month = 31; sum = 212; break;
        case 9: month = 30; sum = 243; break;
        case 10: month = 31; sum = 273; break;
        case 11: month = 30; sum = 304; break;
        case 12: month = 31; sum = 334; break;

        }
        sum = sum + day;
        if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
        {
            sum = sum + 1;
        }
        printf("输入的日子是这年的第%d天", sum);
        printf("\n");
    }
    //下面是问题
    /*else
    {
        
        if ((month < 0 && month>12)|| (day < 0 && day>31));
        {
            printf("你输入的月份是%d格式不对\n", month);
        }
        
        if (day < 0 && day>31);
        {

            printf("你输入的日子是%d格式不对\n", day);
        }
    }*/
    //用上面的代码可以运行 但是得不到想要的结果 上面的 不管 month day 只要有一个错就一起打印出
    // 我的要的结果是 month 错了 就打印month  day错了就打印day

    //------------------------------------//
    //用下面代码直接无视 不运行下面的 直接跳转 goto A
    //请问 要达到我的效果要怎么写代码
    //我的要的结果是 month 错了 就打印month  day错了就打印day
                  
    else if(month < 0 && month>12)
    {
        printf("你输入的月份是%d格式不对\n", month);
    }
    else if (day < 0 && day>31)
    {
        printf("你输入的日子是%d格式不对\n", day);
    }
   
    //----------------//
   
    goto A;

    system("pause");
}
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: printf 输入 case break sum 
2019-10-16 11:50
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
    //下面是问题
    /*else
    {
        
        if ((month < 0 && month>12)|| (day < 0 && day>31));
        {
            printf("你输入的月份是%d格式不对\n", month);
        }
        
        if (day < 0 && day>31);
        {

            printf("你输入的日子是%d格式不对\n", day);
        }
    }*/
    //用上面的代码可以运行 但是得不到想要的结果 上面的 不管 month day 只要有一个错就一起打印出
    // 我的要的结果是 month 错了 就打印month  day错了就打印day

不会编程的人也能看出问题,既然“month 错了 就打印month”,那么条件中就不应该出现day,实际上却有 if ((month < 0 && month>12)|| (day < 0 && day>31));

2019-10-16 14:47
lwy2019
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2019-10-11
收藏
得分:0 
我就是想要 月份错了  就输出错的月份 日子错了 就输出错的日子 两个都错了 就两个都输出
这程序不会写 求教
2019-10-16 23:13
lwy2019
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2019-10-11
收藏
得分:0 
我知道哪里错了 现在OK了
2019-10-16 23:23
快速回复:else if 问题 算法问题
数据加载中...
 
   



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

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