只得了40分,没有通过全部测试点,请看下还有哪些地方有遗漏

问题描述:

【题目描述】
根据邮件的重量和用户是否选择加急计算邮费。计算规则:重量在1000克以内(包括1000克), 基本费8元。超过1000克的部分,每500克加收超重费4元,不足500克部分按500克计算;如果用户选择加急,多收5元。

【输入】
输入一行,包含整数和一个字符,以一个空格分开,分别表示重量(单位为克)和是否加急。如果字符是y,说明选择加急;如果字符是n,说明不加急。

【输出】
输出一行,包含一个整数,表示邮费。

【输入样例】
1200 y
【输出样例】
17

#include<iostream>
using namespace std;
int main(){
    int a; //重量 
    char b; //是否加急 
    cin >> a >> b;
    int s = 0;
    if(a<=1000){
        s+=8;
    } else{//a>1000
        a=a-1000;
        if(a%500 == 0){
            s=8+4*a/500;
        }else{
            s=8+4*a/500+1;
        }
        
    }
    
    if(b=='y'){
        s+=5;
    }
    cout << s;
    return 0;
}

简便写法

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    int m,money;
    char ch;
    cin>>m>>ch;
    if(m>1000) money=8+ceil((m-1000)/500.0)*4;
    else money=8;
    if(ch=='y') money=money+5;
    cout<<money<<endl;
    return 0;
}

15行改为s=8+4*(a/500+1);