注册 登录
编程论坛 C语言论坛

新人编程错误,求解

不知其可 发布于 2020-02-02 21:17, 2788 次点击
只有本站会员才能查看附件,请 登录

#include <stdio.h>

int main()
{
    double p,w,s,d,f;
    scanf("%lf%lf%lf",&p,&w,&s);
    f=p*w*s*(1-d);
    if(s<250) printf("%lf\n",d=0);
    if(s>=250&&s<500) printf("%lf\n",d=0.02);
    if(s>=500&&s<1000) printf("%lf\n",d=0.05);
    if(s>=1000&&s<2000) printf("%lf\n",d=0.08);
    if(s>=2000&&s<3000) printf("%lf\n",d=0.10);
    if(s>=3000) printf("%lf\n",d=0.15);
    printf("%lf",f);
}
他输出的折扣率正确,但是最后求取f的时候没有吧d引入进去是为什么啊?
7 回复
#2
rjsp2020-02-03 00:02
在你代码基础上修改了一下,因为没有测试用例,我也不知道是否正确,仅供参考
程序代码:
#include <stdio.h>

int main()
{
    double p,w,s;
    scanf("%lf%lf%lf",&p,&w,&s);

    double d;
    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.10;
    else d=0.15;

    double f=p*w*s*(1-d);
    printf("%lf\n",f);
}

#3
八画小子2020-02-03 00:20
回复 2楼 rjsp
你是一如既往地每个问题都回答哈,中国好版主
#4
叶纤2020-02-03 00:38
回复 3楼 八画小子
我最敬佩的人就是r版主了,其实新手虽然问的问题很无语,但是也很需要有人去引导,如果我第一天在论坛发的贴没有人回答的话,我有可能会放弃,我会怀疑我学编程有啥用,但是r版回答了我第一第二个等等问题,给了我希望,没有他我可能真的会放弃,他是我心目中最好的导师,是最棒的筷子兄弟老男孩,像r版这样的人,和现在冲在前线去武汉救死扶伤的白衣天使有什么区别。真的很深深的感谢r版的默默付出不计回报
#5
不知其可2020-02-03 14:46
回复 2楼 rjsp
谢谢
#6
叶纤2020-02-03 15:10
我又尝试了两遍还是不可以,应该是手机的问题。。。。
#7
n老庄2020-02-04 08:45
程序执行到
f=p*w*s*(1-d);
这一步时,d的值还是未知的
#8
鲸落南北2020-02-04 10:36
#include<stdio.h>

int main()
{
    double p,w,s,f;
    scanf("%lf%lf%lf",&p,&w,&s);
    if(s<250)
    {
        f=p*w*s;
    }
    if(s>=250&&s<500)
    {
        f=p*w*250+p*w*(s-250)*(1-0.02);
    }
    if(s>=500&&s<1000)
    {
        f=p*w*250+p*w*245+p*w*(s-500)*(1-0.05);   
    }
    if(s>=1000&&s<2000)
    {
        f=p*w*250+p*w*245+p*w*475+(s-1000)*(1-0.08);
    }
    if(s>=2000&&s<3000)
    {
        f=p*w*250+p*w*245+p*w*475+p*w*920+(s-2000)*(1-0.1);
    }
    if(s>=3000)
    {
        f=p*w*250+p*w*245+p*w*475+p*w*920+p*w*900+p*w*(s-3000)*(1-0.15);
    }
    printf("%.2f",f);
    return 0;
}
咱也不会太简单的方法,只能用笨方法算了,得到的结果应该是正确的
1