01/10/2018, 17:38
Chương trình làm tròn số
#include <stdio.h>
void nhap( float &a);
int lamtronso( float a);
void xuat ( int b);
void main ()
{
float a;
nhap(a);
int b= lamtronso(a);
xuat(b);
}
void nhap( float &a)
{
scanf("%f", &a);
}
int lamtronso( float a)
{
int b;
if ((a % 1) >=0.5)
b=(a/1)+1;
return b;
}
void xuat ( int b)
{
printf("%d", b);
}
Bài này em bị hai lỗi mà đó giờ gặp nhưng không bao giờ biết sửa
- ‘%’ : illegal, left operand has type ‘float’
- ‘=’ : conversion from ‘float’ to ‘int’, possible loss of data
Bài liên quan
Xem cách định dạng mã để dễ nhìn:
Dùng
fmod()
trongmath.h
.Lấy
(int) (a + 0.5)
thôi vì (vô tình) 0.5 là số tròn không lẻAnh ơi em muốn lấy bên phải phần thập phân chứ không phải lấy dư anh giúp em với.
(int) a
là phần nguyên rồi, nhưng làm tròn thì không cần trích phần lẻDùng
modf
tách được cả phần nguyên và phần lẻ.Cho em hỏi luôn là bài em làm sao mới có thể sửa được lỗi này.
Note: không được đổi thành float hay int hết nha .
Đừng gán trực tiếp
mà hãy ép kiểu. Dùng
Thêm nữa là trong C không có tham chiếu, chắc là bạn chạy chương trình theo kiểu C++ nên trình biên dịch không báo lỗi.
Bạn cho mình hỏi luôn là nếu mình làm kiểu này
làm như vậy có báo lỗi không bởi vì ban đầu là int và bên trong 2 kiểu int, 1 kiểu float. Nếu có hoặc không thì tại sao lại như vậy ? thank bạn
Lưu ý
chia
truyền theo tham biến. int chia int ra float thì công dụng sẽ khác so với ra int, chứ về nguyên tắc thì ko sao.