习题3-2 高速公路超速处罚 (15 分)浮点数的精度

习题3-2 高速公路超速处罚 (15 分)

按照规定,在高速公路上行使的机动车,达到或超出本车道限速的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

 1.答案:

#include 
int main()
{
    int carspeed,limitspeed;
    scanf("%d %d",&carspeed,&limitspeed);
    if(carspeed=limitspeed*1.1&&carspeed

注:这份代码虽然通过了测试点,但对条件为carspeed=limitspeed*1.1时出错,原因是浮点数的精度问题,任何十进制小数不一定能精确的转化成一个二进制小数,比如最接近0.1的16位二进制小数是0.0001100110011,也就是十进制的0.0999755859375。所以在输入样例2中,limitspeed(=100)*1.1>carspeed(=110),可以理解二进制小数第一位总是1。

大神博客详解

你可能感兴趣的:(习题3-2 高速公路超速处罚 (15 分)浮点数的精度)