为什么a数组里面只存有一个数据

你永远叫不醒一个装睡的人 —— 但是通过分析一个人的呼吸频率和脉搏,你可以发现谁在装睡!医生告诉我们,正常人睡眠时的呼吸频率是每分钟15-20次,脉搏是每分钟50-70次。下面给定一系列人的呼吸频率与脉搏,请你找出他们中间有可能在装睡的人,即至少一项指标不在正常范围内的人。\n\n输入格式:\n输入在第一行给出一个正整数 N(≤10)。随后 N 行,每行给出一个人的名字(仅由英文字母组成的、长度不超过3个字符的串)、其呼吸频率和脉搏(均为不超过100的正整数)。\n\n输出格式:\n按照输入顺序检查每个人,如果其至少一项指标不在正常范围内,则输出其名字,每个名字占一行。

img

代码逻辑完全不对,你的程序先输入的是名字,并不是名字、各项指标作为一行。
名字输入用%s对应一维char数组。
循环n次
scanf("%s%d%d",a[i],&b[i][0],&b[i][1]);

名字如果是中文起码需要7个字节,3个中文加上\0

你写得好像有点复杂了,输入人名无需嵌套循环吧

img

#include<stdio.h>

int main(void)
{
    int n;
    scanf("%d", &n);
    struct
    {
        char name[4];
        int hx;
        int mb;
        int b;
    } per[n];
    for (int i = 0; i < n; i++)
    {
        per[i].b = 0;
        scanf("%3s%d%d", per[i].name, &per[i].hx, &per[i].mb);
        if (!(per[i].hx >= 15 && per[i].hx <= 20) || !(per[i].mb >= 50 && per[i].mb <= 70))
            per[i].b = 1;
    }

    for (int i = 0; i < n; i++)
    {
        if (per[i].b)
            puts(per[i].name);
    }

    return 0;
}


您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^