您的位置:首页 > 编程语言 > C语言/C++

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

2020-01-13 10:02 267 查看

写在前面

  前些日子在学习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'):
continue
elif(a == 'N'):
break
else:
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@qq.com

  • 点赞
  • 收藏
  • 分享
  • 文章举报
CCH21 发布了17 篇原创文章 · 获赞 6 · 访问量 1380 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐