joker__ 发表于 2020-5-23 11:33:03

我这个程序为什么无论输入多少输出都是0?

#include <stdio.h>
int main()
{
    int total, a, b, c, d, level;
    float sum;

    printf("请输入此月收入(整数)\n");
    scanf("%d", &total);

    if(total > 3500)
    {
      level++;
      a = total - 3500;
    }
    else if (total > 5000)
      {
            level++;
            b = total - 5000;
      }
      else if (total > 8000)
            {
                level++;
                c = total - 8000;
            }
            else if (total > 12500)
            {
                level++;
                d = total - 12500;
            }
            else
            {
                printf("免税\n");
            }

    printf("%d", b);
   
    return 0;
}
图片是我们学校的这次作业

qiuyouzhi 发表于 2020-5-23 11:36:32

假设我输入6000,然后开始第一个判断,6000>3500,所以a = 6000 - 3500,
但是,你后面写的是else if,也就是说,第一个判断完之后,不会继续判断。你应该从大到小判断。

joker__ 发表于 2020-5-23 11:38:52

qiuyouzhi 发表于 2020-5-23 11:36
假设我输入6000,然后开始第一个判断,6000>3500,所以a = 6000 - 3500,
但是,你后面写的是else if,也 ...

这样,我试试看

joker__ 发表于 2020-5-23 11:47:38

qiuyouzhi 发表于 2020-5-23 11:36
假设我输入6000,然后开始第一个判断,6000>3500,所以a = 6000 - 3500,
但是,你后面写的是else if,也 ...

我刚刚试了一下,确实可以,但假如值在大一点,下面会停止判断,但我想让全部都判断一次应该用什么函数比较好

qiuyouzhi 发表于 2020-5-23 11:51:43

joker__ 发表于 2020-5-23 11:47
我刚刚试了一下,确实可以,但假如值在大一点,下面会停止判断,但我想让全部都判断一次应该用什么函数比 ...

switch?

joker__ 发表于 2020-5-23 11:54:40

qiuyouzhi 发表于 2020-5-23 11:51
switch?

switch的话case后面不能跟范围,那怎么判断,有点难受

永恒的蓝色梦想 发表于 2020-5-23 11:57:22

qiuyouzhi 发表于 2020-5-23 11:51
switch?

case 后面只能是常量,不如 goto?

joker__ 发表于 2020-5-23 11:59:12

永恒的蓝色梦想 发表于 2020-5-23 11:57
case 后面只能是常量,不如 goto?

goto老师说这东西不能用,就很烦

joker__ 发表于 2020-5-23 12:09:02

qiuyouzhi 发表于 2020-5-23 11:36
假设我输入6000,然后开始第一个判断,6000>3500,所以a = 6000 - 3500,
但是,你后面写的是else if,也 ...

我那个语句假如不加else只用if就可以直接一路执行下去了,谢谢提醒,是我傻了

晓觉懿 发表于 2020-5-23 15:52:27

你这个 level++有啥用呢?
页: [1]
查看完整版本: 我这个程序为什么无论输入多少输出都是0?