鱼C论坛

 找回密码
 立即注册
查看: 782|回复: 9

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

[复制链接]
发表于 2020-5-15 15:58:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 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 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-15 16:17:07 | 显示全部楼层

哈哈

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-15 17:00:04 | 显示全部楼层

疑惑的打出很多问号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 17:21:39 | 显示全部楼层
Harrylby 发表于 2020-5-15 17:00
疑惑的打出很多问号

嘻嘻
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 17:31:58 | 显示全部楼层
printf("月工资: ");
scanf("%f",&s);
printf("\n");
printf("缴纳税金:%d");
另外你把m的那些变量初始化0.0试一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 17:50:56 | 显示全部楼层
你是不是把 C 语言和 python 搞混了? python 中的输入函数 input 可以给出提示语。
而 C语言的输入函数 scanf 括号内只能由格式化操作符和变量地址,不能有其他内容作为提示语,提示语需要在 scanf 之前用 printf 给出。
printf("月工资: ");
scanf("%f",&s);
printf("缴纳税金:%d");
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我的确把 C 语言和 python 搞混了,我居然点进来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-15 22:41:51 | 显示全部楼层
诡秘之旅 发表于 2020-5-15 17:31
printf("月工资: ");
scanf("%f",&s);
printf("\n");

非常感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-14 02:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表