求助
按照规定,在高速公路上行使的机动车,达到或超出本车道限速的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:25 编辑
if(speed>=int(1.1*limit) && speed<int(1.5*limit))\\1.1*limit小数部分未必为零 #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;
} 不用scanf,直接赋值,应该可以运行。 谢谢 本帖最后由 傻眼貓咪 于 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-14 22:06
本帖最后由 傻眼貓咪 于 2021-10-14 22:09 编辑
兄弟,你的题目已经说明:其中x是超速的百分比,精确到整 ...
哦哦
页:
[1]