采集人的身高体重,计算体脂率,判断健康情况

#include"BFR.h"
#include"stdio.h"
#include<windows.h>

double BfrFemaleLimits18_39[] = { 5.0, 20.5, 34.5, 39.5, 45.01 };
double BfrFemaleLimits40_59[] = { 5.0, 21.5, 35.5, 40.5, 45.01 };
double BfrFemaleLimits60[] = { 5.0, 22.5, 36.5, 41.5, 45.01 };

double BfrMaleLimits18_39[] = { 5.0, 10.5, 21.5, 26.5, 45.01 };
double BfrMaleLimits40_59[] = { 5.0, 11.5, 22.5, 27.5, 45.01 };
double BfrMaleLimits60[] = { 5.0, 13.5, 24.5, 29.5, 45.01 };

char *Result[] = { "Thin", "Normal", "Overweight", "Fat", "Illegal" }; 
int AgeLimits[] = { 18, 40, 60, 81 };

float Get_height(void)
{
	float Height = 0.0;
	printf("Enter a people's Height:");
	scanf_s("%f", &Height);

	if ((HEIGHT_MIN >= Height) && (Height >= HEIGHT_MAX))
	{
		printf("Error within height\n");
	}
	else
	{
		printf("Height=%.2f m\n", Height);
	}
	return Height;
}

float Get_weight(void)
{
	float Weight = 0.0;
	printf("Enter a people's Weight:");
	scanf_s("%f", &Weight);

	if ((WEIGHT_MIN >= Weight) && (WEIGHT_MAX >= Weight))
	{
		printf("Error within weight\n");
	}
	else
	{
		printf("weight=%.3f kg\n", Weight);
	}
	return Weight;
}

int Get_age(void)
{
	int Age = 0;
	printf("Enter a people's Age:");
	scanf_s("%d", &Age);
	if ((AGE_MIN >= Age) && (AGE_MAX <= Age))
	{
		printf("Error within Age\n");
	}
	else
	{ 
		printf("age=%d\n", Age); 
	}
	return Age;
}

int Judge_sex(void)
{
	//0表示女,1表示男
	int Sex=0;
	printf("Enter a people's Sex:");
	scanf_s("%d", &Sex);
	if ((0 == Sex) || (1 == Sex))
		;
	else
	{
		printf("Error in sex,please input again\n");
	}
	return Sex;
}

void  JudgeFemaleBfr(double Bfr, int Age)
{
	int AgeIndex = 0;
	int BfrIndex = 0;
	int ResultFlag = 0;

	if (Age < AgeLimits[0])
	{
		ResultFlag = 4;
	}

	if ((Age >= AgeLimits[0]) && (Age < AgeLimits[1]))
	{
		if (Bfr < BfrFemaleLimits18_39[0])
		{
			ResultFlag = 4;
		}
		if ((Bfr >= BfrFemaleLimits18_39[0]) && (Bfr < BfrFemaleLimits18_39[1]))
		{
			ResultFlag = 0;
		}
		if ((Bfr >= BfrFemaleLimits18_39[1]) && (Bfr < BfrFemaleLimits18_39[2]))
		{
			ResultFlag = 1;
		}
		if ((Bfr >= BfrFemaleLimits18_39[2]) && (Bfr < BfrFemaleLimits18_39[3]))
		{
			ResultFlag = 2;
		}
		if ((Bfr >= BfrFemaleLimits18_39[3]) && (Bfr < BfrFemaleLimits18_39[4]))
		{
			ResultFlag = 3;
		}
		if ((Bfr >= BfrFemaleLimits18_39[4]))
		{
			ResultFlag = 4;
		}
	}
	if ((Age >= AgeLimits[1]) && (Age < AgeLimits[2]))
	{
		if (Bfr < BfrFemaleLimits40_59[0])
		{
			ResultFlag = 4;

		}
		else if ((BfrFemaleLimits40_59[0] <= Bfr) && (Bfr < BfrFemaleLimits40_59[1]))
		{
			ResultFlag = 0;
		}
		else if ((BfrFemaleLimits40_59[1] <= Bfr) && (Bfr < BfrFemaleLimits40_59[2]))
		{
			ResultFlag = 1;

		}
		else if ((BfrFemaleLimits40_59[2] <= Bfr) && (Bfr < BfrFemaleLimits40_59[3]))
		{
			ResultFlag = 2;
		}
		else if ((BfrFemaleLimits40_59[3] <= Bfr) && (Bfr < BfrFemaleLimits40_59[4]))
		{
			ResultFlag = 3;

		}
		else
		{
			ResultFlag = 4;

		}
		return;
	}
	if ((Age >= AgeLimits[2]) && (Age < AgeLimits[3]))
	{

		if (Bfr < BfrFemaleLimits60[0])
		{
			ResultFlag = 4;
		}
		else if ((BfrFemaleLimits60[0] <= Bfr) && (Bfr < BfrFemaleLimits60[1]))
		{
			ResultFlag = 0;
		}
		else if ((BfrFemaleLimits60[1] <= Bfr) && (Bfr < BfrFemaleLimits60[2]))
		{
			ResultFlag = 1;

		}
		else if ((BfrFemaleLimits60[2] <= Bfr) && (Bfr < BfrFemaleLimits60[3]))
		{
			ResultFlag = 2;
		}
		else if ((BfrFemaleLimits60[3] <= Bfr) && (Bfr < BfrFemaleLimits60[4]))
		{
			ResultFlag = 3;

		}
		else
		{
			ResultFlag = 4;

		}

		switch (ResultFlag)
		{
		case 0:
			printf("result = %s \n",  Result[ResultFlag]);
			break;
		case 1:
			printf("result = %s \n", Result[ResultFlag]);
			break;
		case 2:
			printf("result = %s \n", Result[ResultFlag]);
			break;
		case 3:
			printf("result = %s \n",Result[ResultFlag]);
			break;
		default:
			printf("ERROR!result = %s\n", Result[4]);
		}
		return;
	}
	if (Age >= AgeLimits[3])
	{
		ResultFlag = 4;
	}
	return;
}


void JudgeMaleBfr(double Bfr, int Age)
{
	int AgeIndex = 0;
	int BfrIndex = 0;
	int ResultFlag = 0;

	if (Age < AgeLimits[0])
	{
		ResultFlag = 4;
	}

	if ((Age >= AgeLimits[0]) && (Age < AgeLimits[1]))
	{
		if (Bfr < BfrMaleLimits18_39[0])
		{
			ResultFlag = 4;
		}
		if ((Bfr >= BfrMaleLimits18_39[0]) && (Bfr < BfrMaleLimits18_39[1]))
		{
			ResultFlag = 0;
		}
		if ((Bfr >= BfrMaleLimits18_39[1]) && (Bfr < BfrMaleLimits18_39[2]))
		{
			ResultFlag = 1;
		}
		if ((Bfr >= BfrMaleLimits18_39[2]) && (Bfr < BfrMaleLimits18_39[3]))
		{
			ResultFlag = 2;
		}
		if ((Bfr >= BfrMaleLimits18_39[3]) && (Bfr < BfrMaleLimits18_39[4]))
		{
			ResultFlag = 3;
		}
		if ((Bfr >= BfrMaleLimits18_39[4]))
		{
			ResultFlag = 4;
		}
	}
	if ((Age >= AgeLimits[1]) && (Age < AgeLimits[2]))
	{
		if (Bfr < BfrMaleLimits40_59[0])
		{
			ResultFlag = 4;

		}
		else if ((BfrMaleLimits40_59[0] <= Bfr) && (Bfr < BfrMaleLimits40_59[1]))
		{
			ResultFlag = 0;
		}
		else if ((BfrMaleLimits40_59[1] <= Bfr) && (Bfr < BfrMaleLimits40_59[2]))
		{
			ResultFlag = 1;

		}
		else if ((BfrMaleLimits40_59[2] <= Bfr) && (Bfr < BfrMaleLimits40_59[3]))
		{
			ResultFlag = 2;
		}
		else if ((BfrMaleLimits40_59[3] <= Bfr) && (Bfr < BfrMaleLimits40_59[4]))
		{
			ResultFlag = 3;

		}
		else
		{
			ResultFlag = 4;

		}
		return;
	}
	if ((Age >= AgeLimits[2]) && (Age < AgeLimits[3]))
	{

		if (Bfr < BfrMaleLimits60[0])
		{
			ResultFlag = 4;
		}
		else if ((BfrMaleLimits60[0] <= Bfr) && (Bfr < BfrMaleLimits60[1]))
		{
			ResultFlag = 0;
		}
		else if ((BfrMaleLimits60[1] <= Bfr) && (Bfr < BfrMaleLimits60[2]))
		{
			ResultFlag = 1;

		}
		else if ((BfrMaleLimits60[2] <= Bfr) && (Bfr <BfrMaleLimits60[3]))
		{
			ResultFlag = 2;
		}
		else if ((BfrMaleLimits60[3] <= Bfr) && (Bfr < BfrMaleLimits60[4]))
		{
			ResultFlag = 3;

		}
		else
		{
			ResultFlag = 4;

		}

		switch (ResultFlag)
		{
		case 0:
			printf("result = %s \n", Result[ResultFlag]);
			break;
		case 1:
			printf("result = %s \n", Result[ResultFlag]);
			break;
		case 2:
			printf("result = %s \n", Result[ResultFlag]);
			break;
		case 3:
			printf("result = %s \n", Result[ResultFlag]);
			break;
		default:
			printf("ERROR!result = %s\n", Result[4]);
		}
		return;
	}
	if (Age >= AgeLimits[3])
	{
		ResultFlag = 4;
	}
	return;
}

#ifndef _BFR_H_ 
#define _BFR_H_ 
#include<stdio.h>

#define BMI(Weight,Height) ((Weight) / ((Height)*(Height)))
#define BFR(Bmi,Age,Sex) (1.2*(Bmi)+0.23*(Age)-5.4-10.8*(Sex))

#define HEIGHT_MAX (2.8)
#define HEIGHT_MIN (0.56)
#define WEIGHT_MAX (330.0)
#define WEIGHT_MIN (2.12)
#define AGE_MAX (80)
#define AGE_MIN (18)

float Get_height(void);
float Get_weight(void);
int Get_age(void);
int Judge_sex(void);

void JudgeFemaleBfr(double Bfr, int Age);
void JudgeMaleBfr(double Bfr, int Age);

#endif
#include"BFR.h"
#include<stdio.h>
#include"windows.h"


int main()
{
	//采集信息:身高,体重,年龄和性别

	float Height = 0.0;
	float Weight = 0.0;
	int Age = 0;
	int Sex = 0;

	double Bmi = 0.0;
	double Bfr = 0.0;

	Height = Get_height();
	Weight = Get_weight();
	Age = Get_age();
	Sex = Judge_sex();

	/*printf("Height=%.2f m\n", Height);
	printf("weight=%.3f kg\n", Weight);
	printf("age=%d\n", Age);*/
	printf("Sex=%s\n", Sex == 0 ? "famale" : "male");



	//计算Bmi
	Bmi = BMI(Weight,Height);
	//计算Bfr
	Bfr = BFR(Bmi, Age, Sex);

	printf("Bmi=%.2f \n", Bmi);
	printf("Bfr=%.2f \n", Bfr);

	//判断Bfr
	if (Sex == 0)
	{
		JudgeFemaleBfr(Bfr, Age);
	}
	else
	{
		JudgeMaleBfr(Bfr, Age);
	}


	system("pause");
	return 0;
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值