一、题目
小轿车中有一个系统随时监测四个车轮的胎压,如果四轮胎压不是很平衡,则可能对行车造成严重的影响。
让我们把四个车轮 —— 左前轮、右前轮、右后轮、左后轮 —— 顺次编号为 1、2、3、4。本题就请你编写一个监测程序,随时监测四轮的胎压,并给出正确的报警信息。报警规则如下:如果所有轮胎的压力值与它们中的最大值误差在一个给定阈值内,并且都不低于系统设定的最低报警胎压,则说明情况正常,不报警;
如果存在一个轮胎的压力值与它们中的最大值误差超过了阈值,或者低于系统设定的最低报警胎压,则不仅要报警,而且要给出可能漏气的轮胎的准确位置;
如果存在两个或两个以上轮胎的压力值与它们中的最大值误差超过了阈值,或者低于系统设定的最低报警胎压,则报警要求检查所有轮胎。
输入格式:
输入在一行中给出 6 个 [0, 400] 范围内的整数,依次为 1~4 号轮胎的胎压、最低报警胎压、以及胎压差的阈值。
输出格式:
根据输入的胎压值给出对应信息:
如果不用报警,输出 Normal; 如果有一个轮胎需要报警,输出 Warning: please check #X!,其中 X 是出问题的轮胎的编号; 如果需要检查所有轮胎,输出 Warning: please check all the tires!。
输入样例 1:
242 251 231 248 230 20
输出样例 1:
Normal
输入样例 2:
242 251 232 248 230 10
输出样例 2:
Warning: please check #3!
输入样例 3:
240 251 232 248 240 10
输出样例 3:
Warning: please check all the tires!
二、方法1
1、思路
易错点提示:
- 在计数时,如果 count ==1的情况,标记以后,不要忘记将 count 置为一个数 x(方便起见,大于2即可),为了防止下一次循环,count 仍然为1,导致标记被刷新;
- 在输出时,记得考虑到所有情况:
(1)没有出错:count均为0
(2)只有一个出错:
①其中一个 count == x,另一个 count == 0;
②两个 count == x,并且 标记 t 相等;
(3)出错数大于2个:有一个 count 均大于 x。
2、代码
#include<stdio.h>
int main()
{
int a[5], i, a_max = 0, pre_max, diff_max, count1 = 0, t1 = 0, count2 = 0, t2 = 6;
for (i = 1; i < 5; i++)
{
scanf("%d", &a[i]);
if (a_max < a[i])
a_max = a[i];
}
scanf("%d %d", &pre_max, &diff_max);
for (i = 1; i < 5; i++)
{
if (a_max - a[i] > diff_max)
{
count1++;
}
if (count1 == 1)
{
t1 = i;
count1 = 2;
}
}
for (i = 1; i < 5; i++)
{
if (a[i] < pre_max)
{
count2++;
}
if (count2 == 1)
{
t2 = i;
count2 = 2;
}
}
if (count1 == 0 && count2 == 0)
{
printf("Normal");
}
else if (count1 == 2 && count2 == 0)
{
printf("Warning: please check #%d!", t1);
}
else if (count2 == 2 && count1 == 0)
{
printf("Warning: please check #%d!", t2);
}
else if (count2 == 2 && count1 == 2 && t1 == t2)
{
printf("Warning: please check #%d!", t2);
}
else if (count1 > 2 || count2 > 2)
{
printf("Warning: please check all the tires!");
}
return 0;
}