Harrylby 发表于 2020-5-15 15:58:57

输出结果不正确不知道为什么以及怎么在执行中写出汉字?

本帖最后由 Harrylby 于 2020-5-15 16:09 编辑

题目如下:(题目所给条件与事实不符,只为练习)。
当每月工资S低于或等于3000元,征税5%;当每月工资高于3000元,低于5000元(3000<=S<5000),征税10%;
当每月工资高于5000元,低于10000元(5000=<S<10000),征税15%;
当每月工资高于10000元,征税20%
#include <stdio.h>
int main()
{
float s, m1,m2,m3,m4;
m1=s*0.5;
m2=s*0.15;
m3=s*0.1;
m4=s*0.01;
scanf("%f",&s);
printf("缴纳税金:");
if(s>=10000)
printf("%4.2f\n",m1);
else
if(s>=5000&&s<10000)
printf("%4.2f\n",m2);
else
if(s>=3000&&s<5000)
printf("%4.2f\n",m3);
else
printf("%4.2f\n",m4);
return 0;
}
我编完后,发现输出的结果如下
6000
缴纳税金:4199248-16106126.00
Press any key to continue

这是为什么呢,是逻辑出问题了吗?


另外如果想在执行时出现“月工资:”字样,然后再输入月工资数,应该怎么办呢?
效果即
月工资:6000    //然后输入6000
缴纳税金:4199248-16106126.00    //然后得出结论
Press any key to continue
scanf("'月工资:'%f",&s);
printf("缴纳税金:%d");这样写还是不行
感谢大佬解答!!

焦健鬼 发表于 2020-5-15 16:17:07

哈哈

本帖最后由 焦健鬼 于 2020-5-15 16:20 编辑

{:10_277:}

Harrylby 发表于 2020-5-15 17:00:04

焦健鬼 发表于 2020-5-15 16:17


疑惑的打出很多问号{:9_241:}

焦健鬼 发表于 2020-5-15 17:21:39

Harrylby 发表于 2020-5-15 17:00
疑惑的打出很多问号

嘻嘻

诡秘之旅 发表于 2020-5-15 17:31:58

printf("月工资: ");
scanf("%f",&s);
printf("\n");
printf("缴纳税金:%d");
另外你把m的那些变量初始化0.0试一下

sunrise085 发表于 2020-5-15 17:50:56

你是不是把 C 语言和 python 搞混了? python 中的输入函数 input 可以给出提示语。
而 C语言的输入函数 scanf 括号内只能由格式化操作符和变量地址,不能有其他内容作为提示语,提示语需要在 scanf 之前用 printf 给出。
printf("月工资: ");
scanf("%f",&s);
printf("缴纳税金:%d");

焦健鬼 发表于 2020-5-15 20:56:50

sunrise085 发表于 2020-5-15 17:50
你是不是把 C 语言和 python 搞混了? python 中的输入函数 input 可以给出提示语。
而 C语言的输入函数 s ...

我的确把 C 语言和 python 搞混了,我居然点进来了{:10_256:}

Harrylby 发表于 2020-5-15 21:33:59

sunrise085 发表于 2020-5-15 17:50
你是不是把 C 语言和 python 搞混了? python 中的输入函数 input 可以给出提示语。
而 C语言的输入函数 s ...

噢,太感谢了,那能再请问一下,为什么输出会是这样吗?
月工资: 5000
缴纳税金:-16106126
Press any key to continue

sunrise085 发表于 2020-5-15 22:14:34

Harrylby 发表于 2020-5-15 21:33
噢,太感谢了,那能再请问一下,为什么输出会是这样吗?
月工资: 5000
缴纳税金:-16106126


哎哟,我去。。。。
你的这缴纳税金与输入的值没有任何关系啊。。。。
你是先计算的税金,然后输入的s值。
计算税金的时候,s没有初始化,所以 s 值是不确定的。
#include <stdio.h>
int main()
{
    float s, m1,m2,m3,m4;
    scanf("%f",&s);//应该先输入s值,再进行计算!
    m1=s*0.5;
    m2=s*0.15;
    m3=s*0.1;
    m4=s*0.01;
    printf("缴纳税金:");
    if(s>=10000)
      printf("%4.2f\n",m1);
    else if(s>=5000&&s<10000)
            printf("%4.2f\n",m2);
      else if(s>=3000&&s<5000)
                printf("%4.2f\n",m3);
            else
                printf("%4.2f\n",m4);
    return 0;
}

Harrylby 发表于 2020-5-15 22:41:51

诡秘之旅 发表于 2020-5-15 17:31
printf("月工资: ");
scanf("%f",&s);
printf("\n");


非常感谢{:5_110:}
页: [1]
查看完整版本: 输出结果不正确不知道为什么以及怎么在执行中写出汉字?