c语言基础:L1-069 胎压监测

小轿车中有一个系统随时监测四个车轮的胎压,如果四轮胎压不是很平衡,则可能对行车造成严重的影响。

让我们把四个车轮 ------ 左前轮、右前轮、右后轮、左后轮 ------ 顺次编号为 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!

程序源码:

cpp 复制代码
#include <stdio.h>  // 包含标准输入输出头文件,为了使用scanf和printf函数  
  
int main(){  // 主函数的开始,每个C程序都从main函数开始执行  
    int p[5] = {0}, minP, range;  // 定义一个大小为5的整数数组p并初始化为0,还定义了两个整数变量minP和range  
  
    // 使用scanf函数从标准输入读取6个整数,并将它们存储到数组p的相应位置和变量minP、range中  
    scanf("%d %d %d %d %d %d", &p[1], &p[2], &p[3], &p[4], &minP, &range);    
  
    int max = 0;  // 定义一个整数变量max并初始化为0  
  
    // 循环遍历数组p的元素(从索引1到4),查找数组中的最大值,将其存储在max变量中  
    for(int i = 1; i <= 4; i++){    
        if(p[i] > max){    
            max = p[i];    
        }    
    }    
  
    int count1 = 0, count2 = 0, index;  // 定义三个整数变量count1、count2和index,分别用于计数满足特定条件的元素数量和存储异常元素的索引  
  
    // 循环遍历数组p的元素(从索引1到4),对每个元素进行条件检查并更新count1和count2的值,同时如果元素不满足条件,则将它的索引存储在index变量中  
    for(int i = 1; i <= 4; i++){    
        int e = p[i] - max;  // 计算当前元素与最大值的差值,存储在变量e中  
  
        if(e < 0) e = -e;  // 如果差值是负数,则将其转换为正数,确保计算结果的准确性  
  
        if(e <= range && p[i] >= minP){  // 如果差值小于或等于range并且元素值大于或等于minP,则增加count1的值  
            count1++;    
        }    
  
        if(e > range || p[i] < minP){  // 如果差值大于range或者元素值小于minP,则增加count2的值,并将元素的索引存储在index变量中  
            count2++;    
            index = i;    
        }    
    }    
  
    if(count1 == 4){  // 如果count1的值为4,即所有元素都满足条件(差值小于或等于range并且元素值大于或等于minP),则输出"Normal"并结束程序  
        printf("Normal\n");    
        return 0;    
    }    
  
    if(count2 == 1){  // 如果count2的值为1,即只有一个元素不满足条件(差值大于range或者元素值小于minP),则输出警告信息并指出异常元素的索引  
        printf("Warning: please check #%d!\n", index);    
    }else{  // 如果count2的值大于1,即有多个元素不满足条件(差值大于range或者元素值小于minP),则输出更严重的警告信息,指示需要检查所有轮胎  
        printf("Warning: please check all the tires!\n");    
    }    
  
    return 0;  // 主函数结束,返回0表示程序正常结束  
}
相关推荐
坚持编程的菜鸟5 分钟前
LeetCode每日一题——困于环中的机器人
c语言·算法·leetcode·机器人
Aurorar0rua2 小时前
C Primer Plus Notes 09
java·c语言·算法
我是华为OD~HR~栗栗呀5 小时前
华为od-21届考研-C++面经
java·c语言·c++·python·华为od·华为·面试
oioihoii5 小时前
C++ 中的类型转换:深入理解 static_cast 与 C风格转换的本质区别
java·c语言·c++
ytttr8736 小时前
C语言实现Modbus TCP/IP协议客户端-服务器
服务器·c语言·tcp/ip
我要学脑机6 小时前
C语言面试题问题+答案(claude生成)
c语言·开发语言
今麦郎xdu_7 小时前
【Linux系统】命令行参数和环境变量
linux·服务器·c语言·c++
Vanranrr9 小时前
nullptr vs NULL:C/C++ 空指针的演变史
c语言·c++
Sunsets_Red9 小时前
差分操作正确性证明
java·c语言·c++·python·算法·c#
第七序章10 小时前
【C++】AVL树的平衡机制与实现详解(附思维导图)
c语言·c++·人工智能·机器学习