PTA 3206 化验诊断 (C语言)

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

血常规检验正常值参考范围列表

3206.png

给定一张化验单,判断其所有指标是否正常,如果不正常,统计有几项不正常。化验单上的值必须严格落在正常参考值范围内,才算是正常。正常参考值范围包括边界,即落在边界上也算正常。

输入格式

输入的第一行包含一个正整数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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值