2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 如何用C语言和Python编写一个BMI指数计算器

如何用C语言和Python编写一个BMI指数计算器

时间:2022-01-31 18:06:23

相关推荐

如何用C语言和Python编写一个BMI指数计算器

写在前面

前些日子在学习C语言和Python的循环语句的时候,我心血来潮,想编写一个实用性较高的程序。想来想去,我决定编写一个BMI指数计算器。接下来,我将分享一下我编写这个程序的过程,希望给大家带来一些启发。

BMI指数计算器1.0

首先,我们先来编写BMI指数计算器的核心部分。我们对这个程序进行分析,可以知道这个程序需要用户输入自己的身高(m)和体重(kg)值,再用体重除以身高的平方计算出BMI,最后使用printf()将其打印输出。话不多说,我们现在就开始吧。

首先我们使用Python 3.6来编写它:

print('**********BMI指数计算器**********') weight = float(input('Please input your weight by kilograms: ')) height = float(input('Please input your height by metres: ')) BMI = weight / (height**2) print('Your BMI is %.1f. ' %BMI) if(BMI < 18.5): print('偏轻') elif(BMI <= 23.9 and BMI >= 18.5): print('正常') elif(BMI >=24 and BMI <= 27.9): print('超重') elif(BMI >= 28): print('肥胖')

使用C语言编写它:

#include <stdio.h>int main (void){printf ("********************BMI指数计算器********************\n"); float weight, height, BMI; char a[0]; printf ("Please input your weight by kilograms: "); scanf ("%f", &weight); printf ("Please input your height by metres: "); scanf ("%f", &height); BMI = weight / (height * height); printf ("Your BMI is %.1f. \n", BMI); if (BMI < 18.5){printf ("偏轻\n"); }else if (BMI >= 18.5 && BMI <= 23.9){printf ("正常\n"); }else if (BMI >= 24 && BMI <=27.9){printf ("超重\n"); }else if (BMI >= 28){printf ("肥胖\n"); }return 0; }

改进——BMI指数计算器2.0

我们不难发现,在运行这个程序的时候,程序在计算一次之后就会结束运行。结束一次计算之后倘若还想继续新一次计算,我们需要再重新运行它。这在实际应用的时候是没有可操作性的。针对这个问题,我们来进行一次改进。

相信大多数人会想到while循环语句,我们不妨试一试。

下面是用Python 3.6编写的改进版程序。

print('**********BMI指数计算器**********') while True: weight = float(input('Please input your weight by kilograms: ')) height = float(input('Please input your height by metres: ')) BMI = weight / (height**2) print('Your BMI is %.1f. ' %BMI) if(BMI < 18.5): print('偏轻') elif(BMI <= 23.9 and BMI >= 18.5): print('正常') elif(BMI >=24 and BMI <= 27.9): print('超重') elif(BMI >= 28): print('肥胖')

我们用C语言也同样可以实现。

#include <stdio.h>int main (void){printf ("********************BMI指数计算器********************\n"); while (1){ float weight, height, BMI; printf ("Please input your weight by kilograms: "); scanf ("%f", &weight); printf ("Please input your height by metres: "); scanf ("%f", &height); BMI = weight / (height * height); printf ("Your BMI is %.1f. \n", BMI); if (BMI < 18.5){printf ("偏轻\n"); }else if (BMI >= 18.5 && BMI <= 23.9){printf ("正常\n"); }else if (BMI >= 24 && BMI <=27.9){printf ("超重\n"); }else if (BMI >= 28){printf ("肥胖\n"); }}return 0; }

新的问题与解决方案

改进版的程序解决了上面提出的只能进行一次计算的问题,这很好。但新的问题又出现了——这个循环会一直进行下去。当我们想要结束计算的时候,我们没有可以退出程序的方法(除非我们强制关闭这个程序)。这又该怎么办呢?

我想到的解决方案是在C程序中使用if语句。一次计算结束后,我们可以用printf()来输出“是否要继续”的字样。在用户键入“Y”之后,程序会执行continue继续下一次运行;相反地,如果键入的是“N”,程序执行break退出循环。当然了,我们还要考虑到用户不小心按错“Y”或者“N”的情况。

改进Python程序的思路和改进C程序的思路类似。

再一次改进——BMI指数计算器3.0

既然有了想法,让我们动手做起来,写出完美无缺的程序吧!

我们先对Python程序进行改进,使它成为完美的最终版本。

print('**********BMI指数计算器**********')while True:weight = float(input('Please input your weight by kilograms: '))height = float(input('Please input your height by metres: '))BMI = weight / (height**2)print('Your BMI is %.1f. ' %BMI)if(BMI < 18.5):print('偏轻')elif(BMI <= 23.9 and BMI >= 18.5):print('正常')elif(BMI >=24 and BMI <= 27.9):print('超重')elif(BMI >= 28):print('肥胖')a = input('是否要继续?(Y/N)')if(a == 'Y'):continueelif(a == 'N'):breakelse:print('Error! \n')break

下面是C语言编写的BMI指数计算器3.0最终版。

#include <stdio.h>int main (void){printf ("********************BMI指数计算器********************\n"); while (1){ float weight, height, BMI; char a[0]; printf ("Please input your weight by kilograms: "); scanf ("%f", &weight); printf ("Please input your height by metres: "); scanf ("%f", &height); BMI = weight / (height * height); printf ("Your BMI is %.1f. \n", BMI); if (BMI < 18.5){printf ("偏轻\n"); }else if (BMI >= 18.5 && BMI <= 23.9){printf ("正常\n"); }else if (BMI >= 24 && BMI <=27.9){printf ("超重\n"); }else if (BMI >= 28){printf ("肥胖\n"); }printf ("是否要继续?(Y/N)"); scanf ("%s", a); if (a[0] == 'Y')continue; else if (a[0] == 'N')break; else{printf ("Error! \n"); }break; }return 0; }

写在最后

希望我的这篇文章可以给大家带来一些启发。如果文章有一些错误,或者是有什么意见和建议的话,欢迎联系我。大家一起学习,共同进步!

我的邮箱:1398635912@

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。