2013-10-21 4 views
1

사용자의 체중과 신장을 입력 한 다음 BMI 값을 반환하고 사용자에게 그들이 과소 체중 또는 정상 체중인지를 알려주는 프로그램을 작성하려고합니다. 코드는 오류없이 컴파일되지만 체중과 신장에 대해 입력 한 숫자가 무엇이든 결과는 항상 "체중이 과체중 인 체중 상태가 0입니다."입니다. 내 코드에 문제가 있습니까? 아니면 수학이 잘못 되었습니까?BMI 계산기를 작성하는 데 도움이 필요합니다.

#include <stdio.h> 

int main() 
{ 
    double wt_lb, ht_in, bmi, ht_ft; 

    printf("Please enter your weight in whole pounds: "); 
    scanf("%lf", &wt_lb); 
    printf("Please enter your height in whole inches: "); 
    scanf("%lf", &ht_in); 

    ht_ft = ht_in/12; 
    bmi = (703*wt_lb)/(ht_ft*ht_ft); 

    if (bmi < 18.5) { 
      printf("You have a BMI of %.lf, and your weight status is underweight\n" &bmi); 
    } else if (bmi >= 18.5 && bmi < 25) { 
     printf("You have a BMI of %.lf, and your weight status is normal\n", &bmi); 
    } else { 
     printf("You have a BMI of %.lf, and your weight status is overweight\n", &bmi); 
    } 
} 
+1

입력 작업의 반환 값을 무시해서는 안됩니다. 오류 검사가 없으면 프로그램이 본질적으로 결함이 있으며 진단 할 수 없습니다. –

+0

wt_lb 및 ht_in 값을 출력하십시오. –

+1

당신은 정말로'printf ("[...] 저체중 \ n"&bmi);'?)에 쉼표가 누락 되었습니까? – RichieHindle

답변

2

printf의 인수에서 &을 제거하십시오.

printf("You have a BMI of %f, and your weight status is underweight\n" &bmi); 
                     ^
                     | 
                    Remove this & 

printf("You have a BMI of %f, and your weight status is underweight\n", bmi); 

가 대신 %f를 사용 ( scanf에서 당신은 사용해야합니다) printfdouble에 대한 %lf 지정자를 사용하지 않을해야합니다.

1

printf 문에서 & bmi를 사용하지 말고 간단한 bmi를 사용하십시오. 작동해야합니다.

관련 문제