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表示程序正常结束  
}
相关推荐
czy87874756 小时前
C语言主要标准版本的演进与核心区别的对比分析
c语言
巨龙之路7 小时前
C语言中的assert
c语言·开发语言
吃个早饭12 小时前
2025年第十六届蓝桥杯大赛软件赛C/C++大学B组题解
c语言·c++·蓝桥杯
qwertyuiop_i13 小时前
pe文件二进制解析(用c/c++解析一个二进制pe文件)
c语言·c++·pe文件
我叫珂蛋儿吖15 小时前
[redis进阶六]详解redis作为缓存&&分布式锁
运维·c语言·数据库·c++·redis·分布式·缓存
周Echo周16 小时前
20、map和set、unordered_map、un_ordered_set的复现
c语言·开发语言·数据结构·c++·算法·leetcode·list
安装虚拟机的老师傅16 小时前
【2025最新】Windows系统装VSCode搭建C/C++开发环境(附带所有安装包)
c语言·windows·vscode·其他
真的想上岸啊17 小时前
c语言第一个小游戏:贪吃蛇小游戏06
c语言·算法·链表
hardStudy_h17 小时前
C程序的存储空间分配
c语言·开发语言
h汉堡19 小时前
C/C++内存管理
java·c语言·开发语言·c++·学习