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

else if 问题 算法问题

lwy2019 发布于 2019-10-16 11:50, 1331 次点击
#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");
}
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
3 回复
#2
rjsp2019-10-16 14:47
    //下面是问题
    /*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));

#3
lwy20192019-10-16 23:13
我就是想要 月份错了  就输出错的月份 日子错了 就输出错的日子 两个都错了 就两个都输出
这程序不会写 求教
#4
lwy20192019-10-16 23:23
我知道哪里错了 现在OK了
1