你永远叫不醒一个装睡的人 —— 但是通过分析一个人的呼吸频率和脉搏,你可以发现谁在装睡!医生告诉我们,正常人睡眠时的呼吸频率是每分钟15-20次,脉搏是每分钟50-70次。下面给定一系列人的呼吸频率与脉搏,请你找出他们中间有可能在装睡的人,即至少一项指标不在正常范围内的人。
输入格式:
输入在第一行给出一个正整数N(≤10)。随后N行,每行给出一个人的名字(仅由英文字母组成的、长度不超过3个字符的串)、其呼吸频率和脉搏(均为不超过100的正整数)。
输出格式:
按照输入顺序检查每个人,如果其至少一项指标不在正常范围内,则输出其名字,每个名字占一行。
输入样例:
4
Amy 15 70
Tom 14 60
Joe 18 50
Zoe 21 71
输出样例:
Tom
Zoe
程序源码:
#include <stdio.h> // 引入标准输入输出库。这允许我们使用例如printf和scanf等函数。
#include <string.h> // 引入字符串处理库。这允许我们处理字符数组(例如名字)。 // 定义一个结构体类型。结构体是一种组合多种类型的数据结构。
// 这里,我们有三个成员:一个字符数组(用于存储名字,最多4个字符),以及两个整型(用于存储b_rate和p_rate)。
typedef struct
{ char name[4]; int b_rate; int p_rate;
} N; // 定义主函数。C程序的执行从这里开始。
int main() { // 定义一个N类型的数组,名为n,大小为10。这样我们可以存储10个N类型的对象。 N n[10]; // 定义并初始化一个整型变量cnt为10。这表示我们要读入10个数据记录。 int cnt = 10; // 定义一个整型变量i,用于循环控制。 int i; // 使用scanf函数读取用户输入的整数,并赋值给cnt变量。 scanf("%d", &cnt); // 这个循环读取用户输入的每个数据记录,并存储到n数组中。 for (i = 0; i < cnt; i++) { // 使用scanf函数读取用户输入的字符串,整数,和整数,并分别存储到n[i].name, n[i].b_rate, 和 n[i].p_rate中。 // 注意这里scanf的格式是"%s",这意味着它读取一个字符串,并将其存储到给定的字符数组中。 scanf("%s %d %d", n[i].name, &n[i].b_rate, &n[i].p_rate); } // 这个循环检查每个数据记录,看是否满足b_rate和p_rate的条件。 for (i = 0; i < cnt; i++) { // 如果任何一个条件不满足,就打印出相应的名字。 if (n[i].b_rate < 15 || n[i].b_rate > 20 || n[i].p_rate < 50 || n[i].p_rate > 70) { // 使用printf函数打印出满足条件的名字。注意这里使用的是“->”来访问结构体的成员。 printf("%s\n", n[i].name); } } // 返回0表示程序成功执行。这是main函数的约定。 return 0;
}