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

这个题为什么不能是条件运算,而是选择结构?

忧郁的小桂圆 发布于 2020-02-26 17:10, 1210 次点击
例:为邮局工作人员编制计算邮费的小程序,输入邮件的重量,计算出该邮件的邮费,计算规则为,邮件重量小于50斤(包含50斤),每斤1.5元,超过50斤的部分按照每斤2元。
我编的是这样的
#include<stdio.h>
main()
{
    float a,b;
    printf("the weight is\n");
    scanf("%d",&a);
    (a<=50)?(b=1.5*a):(b=50*1.5+(a-50)*2);
    printf("the price is %d",b);
    return 0;
}
但是结果输出的是0,为什么?
4 回复
#2
forever742020-02-26 18:19
因为你用了%d
应该用%f
#3
forever742020-02-26 21:02
另外你尽管穿着条件运算的外衣,但是没有使用条件运算表达式的值,因此仍然是选择结构。
如果写作
b=1.5*a+(a>50)?(a-50)*0.5:0;
利用了条件表达式的值才算是你所说的条件运算。
#4
yu17761517872020-03-01 14:24
#include<stdio.h>
int main()
{
    float a,b;
    printf("the weight is\n");
    scanf("%f",&a);
    (a<=50)?(b=1.5*a):(b=50*1.5+(a-50)*2);
    printf("the price is %f",b);
    return 0;
}
//大佬,您看看int main和输入控制符那里%f改改就行得通😄
#5
hbccc2020-03-02 21:39
前面定义的类型是float,所以scanf后面应该是%f,而不是%d
1