在其中加入了防御编程,所以所占行数较多
#include<stdio.h>
#include<math.h>
int main()
{
float fa,mo,kid;
char sex,sport,diet;
printf("(1)输入被预测人的性别(F代表女,M代表男):");
scanf(" %c",&sex);
printf("(2)输入被预测人父母身高(单位:cm):");
scanf("%f,%f",&fa,&mo);
printf("(3)是否喜欢体育运动(Y代表喜欢,N代表不喜欢):\n");
scanf(" %c",&sport);
while(sport!='Y' && sport!='N')
{
printf("(3)wrong input!\n");
printf("请再次选择(3):");
scanf(" %c",&sport);
}
printf("(4)是否有良好的饮食习惯(Y代表有,N代表没有):");
scanf(" %c",&diet);
while(diet!='Y' && diet!='N')
{
printf("(4)wrong input!\n");
printf("请再次选择(4):");
scanf(" %c",&diet);
}
switch(sex)
{
case 'M':
if(diet=='N')
{
if(sport=='N')
{
kid=(fa+mo)*0.54;
printf("预测身高为%f",kid);
}
else if(sport=='Y')
{
kid=(fa+mo)*0.54*1.02;
printf("预测身高为%f",kid);
}
else
{
printf("(3)wrong input!\n");
}
}
else if(diet=='Y')
{
if(sport=='Y')
{
kid=(fa+mo)*0.54*1.035;
printf("预测身高为%f",kid);
}
else if(sport=='N')
{
kid=(fa+mo)*0.54*1.015;
printf("预测身高为%f",kid);
}
else
{
printf("(3)wrong input!\n");
}
}
else
{
printf("(4)wrong input!\n");
}
break;
case 'F':
if(diet=='N')
{
if(sport=='N')
{
kid=(fa*0.923+mo)/2;
printf("预测身高为%f",kid);
}
else if(sport=='Y')
{
kid=(fa*0.923+mo)/2*1.02;
printf("预测身高为%f",kid);
}
}
else if(diet=='Y')
{
if(sport=='Y')
{
kid=(fa*0.923+mo)/2*1.035;
printf("预测身高为%f",kid);
}
else if(sport=='N')
{
kid=(fa*0.923+mo)/2*1.015;
printf("预测身高为%f",kid);
}
}
break;
default:
printf("(1)wrong input\n");
}
return 0;
}