30/09/2018, 19:31
Hàm scanf trong C
Em mới học tìm hiểu C, em có viết chương trình tính chỉ số cơ thể BMI, các anh xem lại đoạn code của em có gì sai,em nhập xong cân nặng thì không nhập tiếp được chiều cao ạ
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
float can_nang;
float chieu_cao;
float bmi;
printf(“Nhap can nang (kg):”, can_nang);
scanf("%.2f", &can_nang);
printf(“Nhap chieu cao (m):”, chieu_cao);
scanf("%.2f", &chieu_cao);
bmi = (can_nang/(chieu_cao*chieu_cao));
printf("Chi so BMI cua ban la : %.2f
", bmi);
if(bmi >= 18.50 && bmi <= 24.99)
printf("Ban nguoi la binh thuong
");
else
if(bmi < 18.50)
printf("Ban la nguoi gay
");
else
if(bmi >= 24.99 && bmi <= 30.00)
printf("Ban la nguoi beo
");
else
if(bmi > 30.00)
printf("Ban bi benh beo phi
");
else
printf("Ban nhap sai can nang hoac chieu cao
");
return 0;
}
Bài liên quan
he.m cũng mới tâp.như bạn nè. …lỗi này là bạn để dấu chấm trong lệnh “scanf " ban chỉ để mỗi”%f " xem sao…((
Lúc in ra thì mới dùng %0.2f để in tròn số thôi bạn, còn nhập thì để %f thôi là được rồi.
Còn về bài của bạn thì ko nhập được chiều cao nguyên nhân là do khi dùng scanf thì nó còn lưu ký từ Enter trong bộ nhớ đệm nên lệnh scanf sau sẽ bị trôi, để khác phục bạn bạn thêm lệnh fflush(stdin); ở sau lệnh scanf đầu tiên nha.
Cảm ơn bạn, mình làm được rồi, với bạn cho mình hỏi cái này dùng Switch-case có được không, và cái này còn có thể viết code ngắn hơn không?
m nghĩ là không bạn à…vì switch case chỉ áp dụng số nguyên…m nghĩ v thôi m còn non nớt nên chưa có nhiều kinh nghiệm((
Sao có bài mình không cần dùng ’ fflush(stdin); ’ mà vẫn nhập được dữ liều 2 lần nhỉ?
ví dụ :
int main()
{
int thang;
int nam;
printf(“Nhap vao nam :”);
scanf("%d",&nam);
printf (“nhap vao thang:”);
scanf ("%d",&thang);
switch (thang){
case 1:
printf("thang 1 ");
printf(“co 31 ngay”);
break;
case 2:
if(nam%4==0)
printf(“thang 2 co 29 ngay”);
else
printf(“thang 2 co 28 ngay”);
break;
case 3:
printf("thang 3 ");
printf(“co 31 ngay”);
break;
case 4:
printf("thang 4 ");
printf(“co 30 ngay”);
break;
case 5:
printf("thang 5 ");
printf(“co 31 ngay”);
break;
case 6:
printf("thang 6 ");
printf(“co 30 ngay”);
break;
case 7:
printf("thang 7 ");
printf(“co 31 ngay”);
break;
case 8:
printf("thang 8 ");
printf(“co 31 ngay”);
break;
case 9:
printf("thang 9 ");
printf(“co 30 ngay”);
break;
case 10:
printf("thang 10 ");
printf(“co 31 ngay”);
break;
case 11:
printf("thang 11 ");
printf(“co 30 ngay”);
break;
case 12:
printf(“thang 12 “);
printf(“co 31 ngay”);
break;
default:
printf(” khong ton tai thang ban vua nhap”);
break;
}
k biêt.nhưng bạn cứ cho dấu chấm vào là bạn k nhập đk cái tiếp đâu…bạn thử làm xem…m thực nghiệm thấy v…
((