我用if else语句,是否有更简洁的写法?

银河铁道999 2021-11-23 20:50:41

题目:根据快递重量,是否加急,计算快递费,单位克,1000克以内8元,每超500克加4元,加急费5元

#include<stdio.h>

int main(void){
    int a,b,f;  //a是重量,b是超重部分,c是加急,f是总费用 
    char c; 

    printf("输入重量,是否加急?");
    scanf("%d %c",&a,&c);
    b=(a-1000)/500;
    
    
    if (c=='n'){
        if(a<=1000) f=8;
        else if(a%500==0) f=8+b*4;
        else f=8+(b+1)*4;
        }
    else {
        if(a%500==0) f=8+b*4+5;
        else f=8+(b+1)*4+5;
    }
    
    
    printf("总费用为%d",f);

    return 0;
}
 

是否有更简便的写法?

...全文
224 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

f = (a > 1000 ? 8 + (a - 501) / 500 * 4 : 8) + (c != 'N' && c != 'n') * 5;

疯狂刷题中 2021-11-23
  • 打赏
  • 举报
回复 1

同学,请参考:

#include <stdio.h>

int main() {
    int a, b, f; //a是重量,b是超重部分,c是加急,f是总费用
    char c;

    printf("输入重量,是否加急?");
    scanf("%d %c", &a, &c);
    b = (a - 1000) / 500;

    f = 8; // 基本费用,一定要收的
    if (a > 1000 && a % 500 != 0) { // 整收
        b++;
    }
    f += b * 4; // 超重收费
    if (c == 'y') { // 加急费
        f += 5;
    }

    printf("总费用为:%d", f);

    return 0;
}


银河铁道999 2021-11-23
  • 举报
回复 1
@疯狂刷题中 感谢

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧