c语言程序设计第三版 孩子身高,C语言的那些题(三) ―― 编程计算身高问题

今天,再和大家分享一道关于编程计算身高的问题.

每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后身高的因素有遗传、饮食习惯与坚持体育锻炼等。小孩成人后身高与其父母身高和自身性别密切相关。设faHeight为其父身高,moHeight为其母身高,身高预测公式为:男性成人时身高 = (faHeight + moHeight) * 0.54(cm),女性成人时身高 = (faHeight * 0.923 + moHeight) / 2(cm),此外,如果喜爱体育锻炼,那么可增加身高2%,如果有良好的卫生饮食习惯,那么可增加身高1.5%。程序要求:父亲的身高与母亲的身高、小孩的性别、是否喜爱体育锻炼和是否有良好的卫生饮食习惯也从键盘上输入,最终输出预测的身高。

提示:小孩性别的输入方式,可在屏幕给出提示“请输入小孩的性别(男孩输入M,女孩输入F):”。是否喜爱体育锻炼也可以通过类似的方式实现。

首先,分析一下这道题目,它要求各项影响因素指标都要从控制台输入,并且输入时有提示,所以要用到多个输入输出函数.其次,影响身高的因素也很多,所以要通过多个if - else语句来判断.看一下实现代码:

float faHeight = 0, moHeight = 0, adultHeight = 0;

char childSex = 0, sport = 0, health = 0;

printf("请输入父亲的身高(cm):");

scanf("%f", &faHeight);

printf("请输入母亲的身高(cm):");

scanf("%f", &moHeight);

printf("请输入小孩的性别(男孩输入M,女孩输入F):");

getchar();

scanf("%c", &childSex);

printf("小孩是否喜爱体育锻炼(喜欢输入Y,不喜欢输入N):");

getchar();

scanf("%c", &sport);

printf("小孩是否有良好的饮食习惯(有输入Y,没有输入N):");

getchar();

scanf("%c", &health);

if (childSex == 'M') {

if (sport == 'Y' && health == 'Y') {

adultHeight = ((faHeight + moHeight) * 0.54) * (1 + 0.035);

} else if (sport == 'Y' && health == 'N') {

adultHeight = ((faHeight + moHeight) * 0.54) * (1 + 0.02);

} else if (sport == 'N' && health == 'Y') {

adultHeight = ((faHeight + moHeight) * 0.54) * (1+ 0.015);

} else if (sport == 'N' && health == 'N') {

adultHeight = (faHeight + moHeight) * 0.54;

}

printf("预测的身高是:%f", adultHeight);

} else if (childSex == 'F') {

if (sport == 'Y' && health == 'Y') {

adultHeight = ((faHeight * 0.923 + moHeight) / 2) * (1 + 0.035);

} else if (sport == 'Y' && health == 'N') {

adultHeight = ((faHeight * 0.923 + moHeight) / 2) * (1 + 0.02);

} else if (sport == 'N' && health == 'Y') {

adultHeight = ((faHeight * 0.923 + moHeight) / 2) * (1 + 0.015);

} else if (sport == 'N' && health == 'N') {

adultHeight = (faHeight * 0.923 + moHeight) / 2;

}

printf("预测的身高是:%.2f", adultHeight);

}

做这道题时,刚开始遇到了一个问题,最初在输入输出时没有用getchar()语句,在输入身高之后,导致输入字符不成功,后来了解到是输入时按回车键时相当于产生了\n字符,占用了缓冲区,这时就需要用到getchar()语句把\n取出来,保证下面输入顺利执行。关于getchar()语句的详细用法,我了解不多,就不在这里多说,如果这题关于getchar()语句解释错误或者这道题有问题,还望各位不吝赐教。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值