鲸悦海 发表于 2021-10-14 21:01:01

求助

按照规定,在高速公路上行使的机动车,达到或超出本车道限速的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(void)
{
        double speed,limit;
        scanf("%lf %lf", &speed, &limit);
       
        if(speed<limit){
                printf("OK");
        }else if(speed>=1.1*limit && speed<1.5*limit){
                printf("Exceed %.0f%%. Ticket 200", (speed-limit)/limit*100);
        }else{
                printf("Exceed %.0f%%. License Revoked", (speed-limit)/limit*100);
        }
        return 0;
}
运行 110 100 的一个错误,大神看看哪不合适

jhq999 发表于 2021-10-14 21:23:13

本帖最后由 jhq999 于 2021-10-14 21:25 编辑

if(speed>=int(1.1*limit) && speed<int(1.5*limit))\\1.1*limit小数部分未必为零

qsy78 发表于 2021-10-14 21:25:02

#include <stdio.h>
int main(void)
{
      int speed,limit;
      scanf("%d %d", &speed, &limit);
      
      if (speed*10>=15*limit){
                printf("Exceed \%50. pass die");
               
      }elseif (speed*10>=11*limit&&speed*10<15*limit){
                printf("Exceed \%10. Ticket 200");
      }else{
            printf("OK");
      }
      return 0;
}

qsy78 发表于 2021-10-14 21:28:03

不用scanf,直接赋值,应该可以运行。

鲸悦海 发表于 2021-10-14 21:41:53

谢谢

傻眼貓咪 发表于 2021-10-14 22:06:33

本帖最后由 傻眼貓咪 于 2021-10-14 22:09 编辑

兄弟,你的题目已经说明:其中x是超速的百分比,精确到整数。(是整数!)

代码:#include <stdio.h>
#include <math.h>

int main(){
    int speed, limit;
    scanf("%d %d", &speed, &limit);
    if(speed > (limit*1.1) || speed == (int)(limit*1.1)){ // 因为浮点数精度问题,这里采用双重保险,int 和 float(大于就用 float,等于就用 int)
      int exceed = ceil(((speed-limit)/(float)limit)*100);
      printf("Exceed %d%% Ticket 200", exceed); // ceil 函数:四舍五入
    }
    else if(speed > (limit*1.5) || speed == (int)(limit*1.5)){ // 如上
      int exceed = ceil(((speed-limit)/(float)limit)*100);
      printf("Exceed %d%% License Revoked", exceed);
    }
    else printf("OK");
}65 60
OK

200 120
Exceed 67% Ticket 200

200 120
Exceed 67% Ticket 200

鲸悦海 发表于 2021-10-15 20:26:44

傻眼貓咪 发表于 2021-10-14 22:06
本帖最后由 傻眼貓咪 于 2021-10-14 22:09 编辑
兄弟,你的题目已经说明:其中x是超速的百分比,精确到整 ...

哦哦
页: [1]
查看完整版本: 求助