gpt4 book ai didi

有人可以问为什么这个程序运行不正常。我是 C 的新手

转载 作者:太空宇宙 更新时间:2023-11-04 07:06:17 25 4
gpt4 key购买 nike

晚上好。我刚开始在大学学习 C,我们的第一个任务是制作一个计算用户 bmi 的程序。对于我的生活,我无法弄清楚为什么我没有得到我想要的结果。无论我提交给该计划的高度和体重是多少……我的 bmi 一直高得离谱,比如 4258544,然后它告诉我我体重不足。我想我可以用另一双眼睛。请帮忙。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void h_conversion (double *h) {
*h = *h/12;
}

int bmi_category (double h, double w, double b) {
b = (w * 4.88)/(h * h);
if (b < 20)
return 1;
else if (b >= 20 && b < 25)
return 2;
else if (b >= 25 && b < 30)
return 3;
else if (b >= 30 && b < 40)
return 4;
else
return 5;
}

int main (void) {

double height, weight, bmi;
double *h, *w, *b;
h = &height;
w = &weight;
b = &bmi;

printf ("Please enter height (inches): \n");
scanf (" %lf", &height);

while ( h <= 0 ) {
printf ("Weee, this is fun! Try again.\n");
scanf (" %.2lf", &height);
}

if ( *h < 42 || *h > 84 )
printf ("Your entry falls outside the norm for an adult.\n");

h_conversion( h );

printf ("Please enter weight (lbs): \n");
scanf (" %.2lf", &weight);

while ( w <= 0 ) {
printf ("This is why we can't have nice things. Try again.\n");
scanf (" %.2lf", &weight);
}

switch ( bmi_category(*h, *w, *b)) {

case 1:
printf ("BMI: %d. Underweight.", (int)&bmi);
break;
case 2:
printf ("BMI: %d. Normal weight.", (int)&bmi);
break;
case 3:
printf ("BMI: %d. Slightly overweight.", (int)&bmi);
break;
case 4:
printf ("BMI: %d. Overweight.", (int)&bmi);
break;
case 5:
printf ("BMI: %d. Extremely overweight.", (int)&bmi);
break;
default:
printf ("error condition\n");
}
system ("pause");
return 1;
}

最佳答案

在你的 printf 中你正在使用

(int)&bmi
// this request the address of bmi and casts that value to an integer (addresses are always integers)

什么时候应该使用

(int)bmi
// this casts the value of the variable bmi to an integer which is what you want.

你总是得到奇怪的值是因为你得到的是地址而不是变量的值。

还有为什么都是指针变量?你只需要 h 一个。 bmi 函数不要求您使用指针,那么为什么要使用它们而不是非指针函数呢?

当它没有任何问题地完成执行时,main 也会返回 0。由于某种原因,您返回 1 表示程序未正确完成执行。

关于有人可以问为什么这个程序运行不正常。我是 C 的新手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32674894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com