关于#c语言#的问题:发现区别就是ceil函数里面的写的顺序不一样以及答案是if else 判断

计算邮资问题
题目是

img

我写的代码是

#include
    #include
    
    int main()
    {
        int n, fee;
        char c;
        scanf("%d %c", &n, &c);
        if(c == 'y'){
            if(n<=1000){
                fee = 8 + 5;
            }
            else{
                fee = 8 + ceil(1.0*(n-1000)/500)*4 + 5;
            }
        }
        else if(c == 'n'){
            if(n<=1000){
                fee = 8;
            }
            else{
                fee = 8 + ceil(1.0*(n-1000)/500);
            }
        }
        
        printf("%d", fee);
        
        return 0;
    }

找到答案的代码是

#include

#include



int main()

    {

    int x,N;

    char c;

    scanf("%d %c",&x,&c);

    if(c=='n') 

    {

        if(x<=1000) N=8;

        else N=8+ceil((x*1.000-1000)/500)*4;

    }

    else

        {

        if(x<=1000) N=13;

        else N=13+ceil((x*1.000-1000)/500)*4;

        }

        printf("%d",N);

return 0;

}

我仔细比较,发现区别就是ceil函数里面的写的顺序不一样以及答案是if else 判断,我把 y 和 n 都进行了判断,程序判定我是部分正确。。哪里有问题

判断n那里漏了乘4呀:

#include<stdio.h>
    #include<math.h>
    
    int main()
    {
        int n, fee;
        char c;
        scanf("%d %c", &n, &c);
        if(c == 'y'){
            if(n<=1000){
                fee = 8 + 5;
            }
            else{
                fee = 8 + ceil(1.0*(n-1000)/500)*4 + 5;
            }
        }
        else if(c == 'n'){
            if(n<=1000){
                fee = 8;
            }
            else{
                fee = 8 + ceil(1.0*(n-1000)/500) * 4; // 要乘4
            }
        }
        
        printf("%d", fee);
        
        return 0;
    }