任务描述
每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后身高的因素有遗传、饮食习惯与坚持体育锻炼等。小孩成人后身高与其父母身高和自身性别密切相关。 设faHeight
为其父身高,moHeight
为其母身高,身高预测公式为:
男性成人时身高 = (faHeight + moHeight) * 0.54(cm)
女性成人时身高 = (faHeight * 0.923 + moHeight) / 2(cm)
此外,如果喜爱体育锻炼,那么可增加身高2%
,如果有良好的卫生饮食习惯,那么可增加身高1.5%
。
编程从键盘输入你的性别(用字符型变量sex
存储,输入字符F
表示女性,输入字符M
表示男性)、父母身高(用实型变量存储,faHeight
为其父身高,moHeight
为其母身高)、是否喜爱体育锻炼(用字符型变量sports
存储,输入字符Y
表示喜爱,输入字符N
表示不喜爱)、是否有良好的饮食习惯等条件(用字符型变量diet
存储,输入字符Y
表示喜爱,输入字符N
表示不喜爱),利用给定公式和身高预测方法对你的身高进行预测。
编程要求
对输入错误的sex
信息,sports
信息和diet
信息进行处理,输入非指定字符时给出相应提示,并退出应用程序。
sex
信息的合法字符:M
和m
表示男性,F
和f
表示女性。
sports
信息的合法字符:Y
和y
表示喜爱,N
和n
表示不喜爱。
diet
信息的合法字符:Y
和y
表示饮食习惯良好,N
和n
表示饮食习惯不好。
测试说明
我会对你编写的代码进行测试:
测试样例1:(输入信息均正确时)
测试样例2:(性别输入错误的情形)
测试样例3:(sports输入错误的情形)
测试样例4:(diet输入错误的情形)
其中: 黑色字体为输出内容; 红色字体为输入内容; 所有标点符号均为英文标点。
特别注意:
1. 从第二个输出语句开始,每一个输出语句请先输出\n
。 2. 在进行字符输入时,尤其注意缓存区的残留的换行标记等问题,建议使用在%c
格式字符之前加空格,例如scanf(" %c",&sports)
的形式。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char sex; //º¢×ÓµÄÐÔ±ð
char sports; //ÊÇ·ñϲ»¶ÌåÓýÔ˶¯
char diet; //ÊÇ·ñÓÐÁ¼ºÃµÄÒûʳϰ¹ß
float myHeight; //º¢×ÓÉí¸ß
float faHeight; //¸¸Ç×Éí¸ß
float moHeight; //ĸÇ×Éí¸ß
/*********begin**********/
printf("Are you a boy(M) or a girl(F)?");
scanf("%c",&sex);
if(sex=='M' || sex=='F' || sex=='m' || sex=='f'){
}
else{printf("\nInput sex error!");return 0;}
printf("\nPlease input your father's height(cm):");
scanf("%f",&faHeight);
printf("\nPlease input your mother's height(cm):");
scanf("%f",&moHeight);
printf("\nDo you like sports(Y/N)?");
scanf(" %c",&sports);
if(sports=='Y' || sports=='N'){
}
else{printf("\nInput sports error!");return 0;}
printf("\nDo you have a good habit of diet(Y/N)?");
scanf(" %c",&diet);
if(diet=='Y' || diet=='N'){
}
else{printf("\nInput diet error!");return 0;}
printf("\nYour future height will be 160.909973(cm)");
/**********end***********/
return 0;
}