m0_62954502
2021-10-23 08:37
采纳率: 100%
浏览 75

化验诊断,只学到数组

【问题描述】下表是进行血常规检验的正常值参考范围,及化验值异常的临床意义:

img

给定一张化验单,判断其所有指标是否正常,如果不正常,统计有几项不正常。化验单上的值必须严格落在正常参考值范围内,才算是正常。正常参考值范围包括边界,即落在边界上也算正常。
【输入形式】输入第一行包含一个正整数k(0<k<100),表示有k组测试数据;接下来k行,每行包含一组测试数据。每组测试数据第一项是一个英文单词(male·男·或者female·女),表示受测者性别;第二项是白细胞的值(以109/L为单位);第三项是红细胞的值(以1012/L为单位);第四项是血红蛋白(以g/L为单位);第五项是红细胞比积的值(以%为单位);第六项是血小板计数的值(以109/L为单位)。每两项用一个空格分开。

【输出形式】对于每组测试数据,输出一行。如果所有检验项目正常,则输出:normal;否则输出不正常的项的数目
【样例输入】

2
female 4.5 4.0 115 37 200
male 3.9 3.5 155 36 301
【样例输出】

normal
3
【样例说明】第一行输入2表示有两行数据,female的指标都正常,输出normal,male的第一项、第四项、第五项不正常,不正常项数为3,输出3.

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • 古呱 2021-10-25 12:54
    已采纳
    #include<cstdio>
    
    double a , b;
    
    int c , d , e;
    
    char named[10];
    
    int main()
    {
       int n;
       
       scanf("%d",&n);
           
       for(int i = 1 , ans = 0;i <= n;i ++ , ans = 0)
       {
           scanf("%s %lf %lf %d %d %d",named,&a,&b,&c,&d,&e);
    
           if(a < 4.0 or a > 10.0)
           
               ans ++;
               
           if(b < 3.5 or b > 5.5)
           
               ans ++;
               
           if(named[0] == 'm' and (c < 120 or c > 160))
           
               ans ++;
               
           if(named[0] == 'f' and (c < 110 or c > 150))
           
               ans ++;
               
           if(named[0] == 'm' and (d < 42 or d > 48))
           
               ans ++;
               
           if(named[0] == 'f' and (d < 36 or d > 40))
           
               ans ++;
               
           if(e < 100 or e > 300)
           
               ans ++;
               
           if(ans == 0) printf("normal\n");
           
           else printf("%d\n",ans);
       }
    }
    

    数组都不需要

    评论
    解决 2 无用 1
    打赏 举报

相关推荐 更多相似问题