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表示程序正常结束  
}
相关推荐
bbppooi17 分钟前
堆的实现(完全注释版本)
c语言·数据结构·算法·排序算法
FFDUST24 分钟前
C++ 优先算法 —— 无重复字符的最长子串(滑动窗口)
c语言·c++·算法·leetcode
shiming887925 分钟前
C/C++链接数据库(MySQL)超级详细指南
c语言·数据库·c++
前端白袍26 分钟前
C语言:C语言实现对MySQL数据库表增删改查功能
c语言·数据库·mysql
Koishi_TvT1 小时前
蓝桥杯c++算法秒杀【6】之动态规划【下】(数字三角形、砝码称重(背包问题)、括号序列、异或三角:::非常典型的必刷例题!!!)
c语言·c++·算法·性能优化·蓝桥杯·动态规划·c
孤独且没人爱的纸鹤1 小时前
C++ 二叉搜索树(Binary Search Tree, BST)深度解析与全面指南:从基础概念到高级应用、算法优化及实战案例
c语言·数据结构·c++·算法
Heris991 小时前
零基础3分钟快速掌握 ——Linux【终端操作】及【常用指令】Ubuntu
linux·c语言·开发语言·ubuntu
@曲终1 小时前
C语言学习 12(指针学习1)
c语言·经验分享·笔记·学习
军训猫猫头2 小时前
44.扫雷第二部分、放置随机的雷,扫雷,炸死或成功 C语言
c语言·开发语言
忘梓.2 小时前
C嘎嘎探索篇:栈与队列的交响:C++中的结构艺术
c语言·开发语言·c++·