C语言PTA习题关于if else分类讨论

按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元罚款;若达到或超出50%,就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。

输入格式:
输入在一行中给出2个正整数,分别对应车速和限速,其间以空格分隔。

输出格式:
在一行中输出处理意见:若属于正常行驶,则输出“OK”;若应处罚款,则输出“Exceed x%. Ticket 200”;若应吊销驾驶证,则输出“Exceed x%. License Revoked”。其中x是超速的百分比,精确到整数。

输入样例1:
65 60
结尾无空行
输出样例1:
OK
结尾无空行
输入样例2:
110 100
结尾无空行
输出样例2:
Exceed 10%. Ticket 200
结尾无空行
输入样例3:
200 120
结尾无空行
输出样例3:
Exceed 67%. License Revoked
结尾无空行

#include <stdio.h>
int main()
{
    int x,y,z;
    scanf("%d %d", &x, &y);
    double rate;
    rate = (x-y) * 1.0 / y * 100;
    if( rate < 10) printf("OK");
    else if( rate >= 10 && rate < 50){
        z = (int)rate;
        printf("Exceed %d%%. Ticket 200", z );
    }
    else{
        z = (int)rate;
        printf("Exceed %d%%. License Revoked", z );
    } 
    
    return 0;
}

我写的这个程序,满足上面的测试案例,但是提交答案后PTA反馈为

img


求问哪里出错,谢谢

估计是要考虑四舍五入吧。精确到整数,那么如果rate = 10.8,输出是不是应该11%,而不是10%呢?
试试: z = (int)(rate+0.5);


double rate;
rate = (x-y) * 1.0 / y * 100;
改成下面的:
int rate;
rate = (x-y) * 100 / y;