| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2502 人关注过本帖
标题:if-else-if语句为什么不论输入什么数字总是一个答案
只看楼主 加入收藏
略略略y
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-10-14
收藏
 问题点数:0 回复次数:4 
if-else-if语句为什么不论输入什么数字总是一个答案
#include <stdio.h>
void main()
{
double p,w,s,d,f;
      scanf("%f",&s);   
           if(s<250)
           {
               d=0;
           printf("总运费为f=p*w*s*(1-%f)",d);
           }
             else if(250<=s&&s<500)
             {
                 d=0.02;
           printf("总运费为f=p*w*s(1-%f)",d);
             }
           else if(500<=s&&s<1000)
           {
               d=0.05;
           printf("总运费为f=p*w*s*(1-%f)",d);
           }
           else if(1000<=s&&s<2000)
           {
               d=0.08;
           printf("总运费为f=p*w*s*%f",1-d);
           }
           else if(2000<=s&&s<3000)
           {
               d=0.1;
           printf("总运费为f=p*w*s(1-%f)",d);
           }
           else
           {
               d=0.15;
           printf("总运费为f=p*w*s*(1-%f)",d);

           }
}
搜索更多相关主题的帖子: 语句 输入 数字 答案 printf 
2018-10-14 16:15
幻紫灵心
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山咔咔里面
等 级:贵宾
威 望:53
帖 子:396
专家分:2640
注 册:2018-3-30
收藏
得分:0 
程序代码:
#include <stdio.h>
int main()
{
    double p,w,s,d,f;
    scanf("%lf",&s);    
    if(s<250) {
        d=0;
    }
    else if(s<500) { 
        d=0.02;
    }
    else if(s<1000) { 
        d=0.05;
    }
    else if(s<2000) {
        d=0.08;
    }
    else if(s<3000) {
        d=0.1;
    }
    else {
        d=0.15;
    }
    printf("总运费为f=p*w*s*(1-%.2f)",d);
    return 0;
}


这么多if 不如用switch

saber,别哭.
2018-10-14 19:25
Mr_doge
Rank: 5Rank: 5
等 级:贵宾
威 望:10
帖 子:159
专家分:385
注 册:2018-6-28
收藏
得分:0 
两个错误点,一个不规范点,一个需要注意的点

错误:
1:变量声明后,需要赋值,未赋值变量真实数据为无法预测的,不可用作计算
2:对于输出函数printf()的使用方式不熟悉的话,应将运算表达式独立出来作为一个单独的语句,先学会走路,再跑,不要在概念未清晰前过度追求所谓的简洁,有效性和可靠性才是首要要求,printf()函数的使用中,在字符串符号""内的所有内容除了转义和引用,其他都会被当作字符输出处理,计算式不应置于""内,而是在 , 后的引用内容处使用计算式,最稳妥的是独立出来作为单独的语句

不规范:
main函数应当进行明确的声明,例如:
int main(void)//main函数处理并返回int类型数值(int是默认的形式),main函数不接受任何外界参数(void)
{ }

需要注意:
不论是while还是if等等语句,位于括号内的条件判定每个判定都应当使用()括起来以保证逻辑判断按照编写者的想法正确运行,例如:
if((s>=250)&&(s<500))
2018-10-15 20:04
d1576525481
Rank: 1
等 级:新手上路
帖 子:8
专家分:3
注 册:2018-1-8
收藏
得分:0 
回复 2楼 幻紫灵心
为什么%f不行
2018-10-16 19:51
C基础
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:133
专家分:421
注 册:2018-10-15
收藏
得分:0 
回复 楼主 略略略y
scanf("%f",&s);这条语句应该改为scanf("%lf",&s),因为你的变量s定义的是double型,在C语言中double输入时的格式必须对应的是%lf,(具体是为什么一定要对应我就不知道了)我想如果不这样可能会造成数据丢失,因为float是单精度型(是4个字节),double是双精度型号(是8个字节),你可以试一下,把%f改为%lf就可以得到你想要的结果了。
2018-10-16 21:34
快速回复:if-else-if语句为什么不论输入什么数字总是一个答案
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.061396 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved