功能说明
-
获取输入:
fmt.Scanln(&weight)和fmt.Scanln(&height)用于获取用户输入的体重和身高。
-
计算BMI:
calculateBMI函数根据身高和体重计算BMI值。
-
判断体重状态:
weightStatus函数通过BMI值判断体重状态,返回相应的字符串(如 "正常"、"偏轻"、"肥胖")。
-
输出结果:
- 输出BMI值和体重状态。
- 根据体重状态提供健康建议。
package main
import (
"fmt"
"os"
)
// 获取用户输入的身高体重,计算BMI指数
func main() {
height, weight := GetUserInput()
bmi := calculateBMI(height, weight)
status := getWeightStatus(bmi)
printBMIDefinitions()
fmt.Printf("您的BMI指数为: %.2f\n", bmi)
fmt.Printf("您的体重状况为: %s\n", status)
fmt.Println("按任意键关闭...")
var input string
fmt.Scanln(&input)
}
func GetUserInput() (float64, float64) {
var height float64
var weight float64
for {
fmt.Println("请输入身高(单位:米):")
_, err := fmt.Scanln(&height)
if err == nil {
break
}
fmt.Println("输入无效,请输入一个有效的数字。")
// 清除输入缓冲区
os.Stdin.Read(make([]byte, 1024))
}
for {
fmt.Println("请输入体重(单位:千克):")
_, err := fmt.Scanln(&weight)
if err == nil {
break
}
fmt.Println("输入无效,请输入一个有效的数字。")
// 清除输入缓冲区
os.Stdin.Read(make([]byte, 1024))
}
return height, weight
}
// 根据BMI指数判断体重状况
func getWeightStatus(bmi float64) string {
if bmi < 18.5 {
return "体重过轻 (BMI < 18.5): 可能营养不良,需增加体重。"
} else if bmi >= 18.5 && bmi < 24.9 {
return "正常 (18.5 ≤ BMI < 24.9): 体重正常,保持健康生活方式。"
} else if bmi >= 24.9 && bmi < 29.9 {
return "超重 (24.9 ≤ BMI < 29.9): 可能需要控制体重,注意饮食和锻炼。"
} else {
return "肥胖 (BMI ≥ 29.9): 需关注健康,建议咨询医生。"
}
}
// 输出所有BMI区间及其意义
func printBMIDefinitions() {
fmt.Println("BMI区间及其意义:")
fmt.Println("体重过轻: BMI < 18.5")
fmt.Println("正常: 18.5 ≤ BMI < 24.9")
fmt.Println("超重: 24.9 ≤ BMI < 29.9")
fmt.Println("肥胖: BMI ≥ 29.9")
}
// 计算BMI指数
func calculateBMI(height, weight float64) float64 {
return weight / (height * height)
}