望讲解一下,刚入门,不知道哪里错了

img

img


请各位帮我看看,图一是要求,图二是我写的代码,我输入满足图一要求的数字,它总是输出“输入错误”,我又找不到是哪出了问题,想请教一下。希望各位资深的程序员帮我解答一下,谢谢各位了😊。

你的判断条件写反了
应该是 year <= 1900 || year >= 2015 才是错误

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7730086
  • 这篇博客也不错, 你可以看下指针深入了解——函数指针,函数指针数组,指向函数指针数组的指针。
  • 除此之外, 这篇博客: 为了拿证好吧中的 写这篇文章的缘由呢是因为我发现我记性真的很差,不把他记下来我总是需要去翻书找知识点,但是外出时带书又会不方便,所以我想到了把他传到网上,以便我和大家随时查看。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

  • 以下回答来自chatgpt:

    在参考资料中提供的代码中,并没有涉及到输入数字并判断输入是否合法的部分。因此,需要先看一下问题所在的代码。

    根据提供的代码,可以看到判断输入是否合法的部分为:

    if(num<=0 || num>=5) { printf("输入错误\n"); return 0; }

    这里的判断条件是判断输入的数字是否小于等于0或者大于等于5,如果满足条件则输出“输入错误”。因此,首先需要确认输入的数字是否在1-4的范围内。如果不在,就会输出“输入错误”。

    同时,需要注意到在main函数中定义了变量num,并给其赋初值为0。这可能导致在输入数据的时候可能会出现问题。

    针对上述问题,建议可以进行如下的修改:

    参考代码:

    include

    include

    void remind() { printf("*******\n"); printf("**按1加 按2减 按3乘 按4除*\n"); printf("** 其他操作报告提示 ***\n"); }

    int add(int x,int y) { return x+y; }

    int sub (int x,int y) { return x-y; }

    int mul(int x,int y) { return x*y; }

    float div(int x,int y) { if(y==0) { printf("除数不能为0\n"); return -1; } else { return (float)x/y; } }

    int main() { int a, b, c; float d; int num;

    remind(); //调用该函数,显示提示信息
    
    while (1) 
    {
        printf("请输入选项数字(1/2/3/4):");
        scanf("%d", &num);
    
        if (num == 1) 
        {
            printf("请输入两个数字(以空格隔开): ");
            scanf("%d %d", &a, &b);
            c = add(a, b);
            printf("%d + %d = %d\n", a, b, c);
            break;
        }
        else if (num == 2) 
        {
            printf("请输入两个数字(以空格隔开): ");
            scanf("%d %d", &a, &b);
            c = sub(a, b);
            printf("%d - %d = %d\n", a, b, c);
            break;
        }
        else if (num == 3) 
        {
            printf("请输入两个数字(以空格隔开): ");
            scanf("%d %d", &a, &b);
            c = mul(a, b);
            printf("%d × %d = %d\n", a, b, c);
            break;
        }
        else if (num == 4) 
        {
            printf("请输入两个数字(以空格隔开): ");
            scanf("%d %d", &a, &b);
            d = div(a, b);
            if (d != -1) 
            {
                printf("%d ÷ %d = %f\n", a, b, d);
            }
            break;
        }
        else 
        {
            printf("输入错误,请重新输入\n");
        }
    }
    
    system("pause"); //用于防止dos窗口过快关闭
    
    return 0;
    

    }

    上述代码可以正常运行,其中加入了输入数字判断的部分,如果在1-4之间输入数字则执行对应的操作。如果输入不在这个范围内,则会输出“输入错误”。同时,当除数为0的时候,会提示“除数不能为0”。

    提示:上述代码中使用了windows下的system("pause")命令来防止dos窗口过快关闭,如果是在Linux下运行,则需要使用其他的方式来进行防止窗口过快关闭。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^