下表是进行血常规检验的正常值参考范围,及化验值异常的临床意义:
血常规检验正常值参考范围列表
给定一张化验单,判断其所有指标是否正常,如果不正常,统计有几项不正常。化验单上的值必须严格落在正常参考值范围内,才算是正常。正常参考值范围包括边界,即落在边界上也算正常。
输入格式
输入的第一行包含一个正整数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
要求
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
栈限制 8192 KB
AC代码
该代码考虑利用数组和字符数组来解决问题
#include<stdio.h>
#include<string.h>
int main()
{
double xcg[5];
char sex[10]; //构建数组和字符数组
int n,count;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%s",sex); //每一次循环都会对sex字符数组进行覆写
count = 0;
scanf("%lf %lf %lf %lf %lf",&xcg[0],&xcg[1],&xcg[2],&xcg[3],&xcg[4]);
if(xcg[0]<4.0||xcg[0]>10.0) count++;
if(xcg[1]<3.5||xcg[1]>5.5) count++;
if(xcg[4]<100||xcg[4]>300) count++;
//单独判断出现分支情况的检查项
if(!strcmp(sex,"male"))
//此处先使用strcmp函数比较sex字符数组中的字符串和性别,相同返回0,不同返回1。然后通过!
(非运算)将返回结果转化成布尔型,0为true,1为false
{
if(xcg[2]<120||xcg[2]>160) count++;
if(xcg[3]<42||xcg[3]>48) count++;
}
else
{
if(xcg[2]<110||xcg[2]>150) count++;
if(xcg[3]<36||xcg[3]>40) count++;
}
if(count)
{
printf("%d\n",count);
}
else
{
printf("normal\n");
}
}
return 0;
}