免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1189 | 回复: 7
打印 上一主题 下一主题

请教请教,大家帮我排排错 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-27 17:54 |只看该作者 |倒序浏览
这里为什么得出来的都是负数呢?~搞晕了!~大家帮忙排下错

[root@localhost openC]# vi nashui.c                                                                              
#include<stdio.h>
main()
{
        float xiaoshou,nashui;
        printf("please input xiao shou e.....\n");
        scanf("%f",&xiaoshou);
        if(xiaoshou<10)
        {
                nashui=0.1;
        printf("na shui:%f\n",nashui);
        }
        if(xiaoshou>10&&xiaoshou>=100)
        {
                nashui=xiaoshou*0.05;

        printf("na shui:%f\n",nashui);
        }
        if (xiaoshou>100&&xiaoshou<500)
        {
                nashui=xiaoshou*0.05-10;
        printf("na shui:%f\n",nashui);

        }
        if(xiaoshou>=500&&xiaoshou<=1000)
        {
                nashui=xiaoshou*0.05-30;
        printf("na shui:%f\n",nashui);
        }
        else
        {
                nashui=xiaoshou*0.05-50;
        printf("na shui:%f\n",nashui);
        }
}
~                                                                                                                           
~                                                                                                                           
~                                                                                                                           
~                                                                                                                           
~                                                                                                                           
~                                                                                                                           
~                                                                                                                           
"nashui.c" 34L, 555C written
[root@localhost openC]# gcc -o nashui ./nashui.c
[root@localhost openC]# ./nashui
please input xiao shou e.....
2
na shui:0.100000
na shui:-49.900002
[root@localhost openC]#

论坛徽章:
0
2 [报告]
发表于 2007-01-27 18:02 |只看该作者
else 有问题

论坛徽章:
0
3 [报告]
发表于 2007-01-27 18:11 |只看该作者
lz是高中生还是初中生阿,有点像作业

你的错误有两处

  1. #include<stdio.h>
  2. main()
  3. {
  4.         float xiaoshou,nashui;
  5.         printf("please input xiao shou e.....\n");
  6.         scanf("%f",&xiaoshou);
  7.         if(xiaoshou<10)
  8.         {
  9.                 nashui=0.1;
  10.         printf("na shui:%f\n",nashui);
  11.         }
  12.         if(xiaoshou>10&&xiaoshou>=100)//这里应该是xiaoshou<=100,不过这不是造成你迷惑的原因
  13.         {
  14.                 nashui=xiaoshou*0.05;

  15.         printf("na shui:%f\n",nashui);
  16.         }
  17.         if (xiaoshou>100&&xiaoshou<500)
  18.         {
  19.                 nashui=xiaoshou*0.05-10;
  20.         printf("na shui:%f\n",nashui);

  21.         }
  22.         if(xiaoshou>=500&&xiaoshou<=1000)//这里的if语句和上边的if是毫无联系的,
  23.         {                                                     //也就是说这里的if...else语句肯定是要执行的
  24.                 nashui=xiaoshou*0.05-30;       //这也是为什么得出负数的原因
  25.         printf("na shui:%f\n",nashui);
  26.         }
  27.         else
  28.         {
  29.                 nashui=xiaoshou*0.05-50;
  30.         printf("na shui:%f\n",nashui);
  31.         }
  32. }
复制代码

程序应该改成
if  
else if
else if
....
else
形式

论坛徽章:
0
4 [报告]
发表于 2007-01-27 18:34 |只看该作者
楼主应该注意下变量命名。

论坛徽章:
0
5 [报告]
发表于 2007-01-27 19:42 |只看该作者
嗯好的,我改正,谢谢。

可改正后判断还是有小数啊,换成else if了,麻烦再帮我看一下,谢谢!~


#include<stdio.h>
main()
{
        float xiaoshou,nashui;
        printf("please input xiao shou e.....\n");
        scanf("%f",&xiaoshou);
        if(xiaoshou<10)
        {
                nashui=0.1;
        printf("na shui:%f\n",nashui);
        }
        else if(xiaoshou>10&&xiaoshou<=100)
        {
                nashui=xiaoshou*0.05;

        printf("na shui:%f\n",nashui);
        }
        else if (xiaoshou>100&&xiaoshou<500)
        {
                nashui=xiaoshou*0.05-10;
        printf("na shui:%f\n",nashui);

        }
        else if(xiaoshou>=500&&xiaoshou<=1000)
        {
                nashui=xiaoshou*0.05-30;
        printf("na shui:%f\n",nashui);
        }
        else
        {
                nashui=xiaoshou*0.05-50;
        printf("na shui:%f\n",nashui);
        }
}
~                                                                                                                           
~                                                                                                                           
~                                                                                                                           
~                                                                                                                           
~                                                                                                                           
~                                                                                                                           
~                                                                                                                           
"nashui.c" 34L, 570C written                                                                              
[root@localhost openC]# gcc -o nashui nashui.c                                                                           
[root@localhost openC]# ./nashui
please input xiao shou e.....
510
na shui:-4.500000
[root@localhost openC]# ./nashui
please input xiao shou e.....
110
na shui:-4.500000
[root@localhost openC]#

[ 本帖最后由 piaoyizu 于 2007-1-27 19:51 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2007-01-27 19:55 |只看该作者
我明白了,原来是真的得负数,谢谢了。特别感谢zxylinux朋友!~

那么把
       else if (xiaoshou>100&&xiaoshou<500)
        {
                nashui=xiaoshou*0.05-10;
        printf("na shui:%f\n",nashui);

        }
        else if(xiaoshou>=500&&xiaoshou<=1000)
        {
                nashui=xiaoshou*0.05-30;
        printf("na shui:%f\n",nashui);
        }这两个判断转换一下位置,执行会不会出错呢?

[ 本帖最后由 piaoyizu 于 2007-1-27 20:00 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2007-01-27 21:21 |只看该作者
这些问题是非常简单的,自己反省一下

论坛徽章:
0
8 [报告]
发表于 2007-01-27 22:16 |只看该作者
反省明白了,结果是负数!减的太多了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP