Dream in valinor 2021-11-08 16:39 采纳率: 66.7%
浏览 78
已结题

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


求问哪里出错,谢谢

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2021-11-08 17:17
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月16日
  • 已采纳回答 11月8日
  • 创建了问题 11月8日

悬赏问题

  • ¥15 echarts动画效果失效的问题。官网下载的例子。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加