C语言 为什么我这个程序输入正确数后 结果总为负数
答案:4 悬赏:70 手机版
解决时间 2021-11-25 06:37
- 提问者网友:佞臣
- 2021-11-24 05:45
C语言 为什么我这个程序输入正确数后 结果总为负数
最佳答案
- 五星知识达人网友:执傲
- 2021-11-24 06:34
把t,w,sum的类型全改为float追问我的t w指时间 贷款金额 我感觉应该和是不是float没关系吧 我结果都是负数追答有关,你试试追问一样 还是负数追答不会啊,你把结果贴出来我看看追问
追答你用%f进行输入输出的话,数据类型必须是float。而且t要是int的话,你的判断就没有意义了应该不是程序问题,等我回去试试。追问我给你我们的题行吗 你帮我重新设计一下 我感觉做错了
我这利润是贷款金额好几倍……追答好的,暂时在上课,10点前给你追问没事 不着急 主要一会有事..明天才能回来再用电脑打追答那个利率是月月利率??追问年所以除以12追答
已经试过了追问好 回去试试那我的错在哪儿 知道吗
对了 我的这个也是负数....之后那个我改成y=(int)x了 能运行 但也是负数追答呃,这里你干嘛要用float呢,直接用int就行。类型格式符用%d 对应int型数据而且x=(int)x这句有毛病追问原意是化整
这个也是invild追答scanf有误追问知道哪儿错了今天多谢你了追答没事追问怎么之前的那个还是负数啊我们需要时间为月 所以改了一下
追答我那个的时间就是月啊。
t=t/12这一句有问题。它只取整数,所以任何小于12的数这么算之后都是零,大于12小于24的数这么算都是1,以此类推追问好 我重试追答你用的什么环境,感觉不好用啊,出现的问题都挺奇怪的。按照你刚才是输入,起码不应该输出"input wrong"追问
追答这绝对是IDE的问题了,你换个环境或者用别人机子试试吧我试了没问题啊追问好吧... 多谢了追答没事,你这问题也挺奇怪的,从来没见过追问嗯追答
两个数据中间你没输空格吧追问我明天天再试 在外面但是我的有啊好像确实电脑有点问题 我按照别人输入的程序写 我的就不行我需要怎么解决 重新下别的c++吗追答你用的不是C么而且我用的就是codeblocks追问对 但我们上课有个6.0 而我的没有追答是不是你工程建的有问题??vs6.0,我们机房都是那个追问?不知道什么意思那我的是不是版本问题 我的没有写6.0不对 好像有...那我怎么办呢
追答你用%f进行输入输出的话,数据类型必须是float。而且t要是int的话,你的判断就没有意义了应该不是程序问题,等我回去试试。追问我给你我们的题行吗 你帮我重新设计一下 我感觉做错了
我这利润是贷款金额好几倍……追答好的,暂时在上课,10点前给你追问没事 不着急 主要一会有事..明天才能回来再用电脑打追答那个利率是月月利率??追问年所以除以12追答
已经试过了追问好 回去试试那我的错在哪儿 知道吗
对了 我的这个也是负数....之后那个我改成y=(int)x了 能运行 但也是负数追答呃,这里你干嘛要用float呢,直接用int就行。类型格式符用%d 对应int型数据而且x=(int)x这句有毛病追问原意是化整
这个也是invild追答scanf有误追问知道哪儿错了今天多谢你了追答没事追问怎么之前的那个还是负数啊我们需要时间为月 所以改了一下
追答我那个的时间就是月啊。
t=t/12这一句有问题。它只取整数,所以任何小于12的数这么算之后都是零,大于12小于24的数这么算都是1,以此类推追问好 我重试追答你用的什么环境,感觉不好用啊,出现的问题都挺奇怪的。按照你刚才是输入,起码不应该输出"input wrong"追问
追答这绝对是IDE的问题了,你换个环境或者用别人机子试试吧我试了没问题啊追问好吧... 多谢了追答没事,你这问题也挺奇怪的,从来没见过追问嗯追答
两个数据中间你没输空格吧追问我明天天再试 在外面但是我的有啊好像确实电脑有点问题 我按照别人输入的程序写 我的就不行我需要怎么解决 重新下别的c++吗追答你用的不是C么而且我用的就是codeblocks追问对 但我们上课有个6.0 而我的没有追答是不是你工程建的有问题??vs6.0,我们机房都是那个追问?不知道什么意思那我的是不是版本问题 我的没有写6.0不对 好像有...那我怎么办呢
全部回答
- 1楼网友:猎心人
- 2021-11-24 08:43
int w,t; 要改成 float w,t;
- 2楼网友:轻雾山林
- 2021-11-24 07:36
你把代码复制贴出来追问#include
main()
{
int w,t;
double sum;
scanf("%f,%f",&t,&w);
t=t/12;
if(t<=0.5) sum=w*0.0610*t*w;
else if(t<=1) sum=w*0.0610*0.5+w+0.0656*(t-0.5)*w*(1+0.0610*0.5);
字数超过 不能全发反正前面开始就不行追答你的w和t都声明为int类型的啊, 可是你scanf里面的格式是%f应该是%d把 或者你把w和t声明为float我也是醉了。说对在先居然采纳别人追问你可拉倒吧 你说的就算改完了也一样错的追答好吧
main()
{
int w,t;
double sum;
scanf("%f,%f",&t,&w);
t=t/12;
if(t<=0.5) sum=w*0.0610*t*w;
else if(t<=1) sum=w*0.0610*0.5+w+0.0656*(t-0.5)*w*(1+0.0610*0.5);
字数超过 不能全发反正前面开始就不行追答你的w和t都声明为int类型的啊, 可是你scanf里面的格式是%f应该是%d把 或者你把w和t声明为float我也是醉了。说对在先居然采纳别人追问你可拉倒吧 你说的就算改完了也一样错的追答好吧
- 3楼网友:鸠书
- 2021-11-24 07:27
那么长的结果 你不把数据类型改长一点 那么就会数据溢出 变成负数的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯