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表示程序正常结束  
}
相关推荐
是翔仔呐16 小时前
第11章 显示外设驱动:I2C协议OLED屏、SPI协议LCD屏字符/图片/中文显示
c语言·开发语言·stm32·单片机·嵌入式硬件·学习·gitee
木下~learning18 小时前
对于Linux中等待队列和工作队列的讲解和使用|RK3399
linux·c语言·网络·模块化编程·工作队列·等待队列
是翔仔呐19 小时前
第13章 SPI通信协议全解:底层时序、4种工作模式与W25Qxx Flash芯片读写实战
c语言·开发语言·stm32·单片机·嵌入式硬件·学习·gitee
IT方大同19 小时前
RT_thread(RTOS实时操作系统)线程的创建与切换
c语言·开发语言·嵌入式硬件
是翔仔呐19 小时前
第14章 CAN总线通信全解:底层原理、帧结构与双机CAN通信实战
c语言·开发语言·stm32·单片机·嵌入式硬件·学习·gitee
深邃-20 小时前
数据结构-队列
c语言·数据结构·c++·算法·html5
2301_8227828221 小时前
C语言数组通关攻略!从一维到字符数组,零基础也能轻松掌握
c语言·算法·数组·编程基础·避坑技巧
2301_822782821 天前
C3 vs Zig:2026年,谁才是真正能“修复”C语言的救星?
c语言·zig·c3·系统级开发·语言革新
星夜夏空991 天前
C语言进阶项目——搭建内存池
c语言·开发语言
聆风吟º1 天前
【C标准库】深入理解 C 语言memmove函数:安全内存拷贝的利器
c语言·开发语言·memmove·库函数