01/10/2018, 00:00

Các bác giỏi C giúp em phát

em mới học C, viết đoạn code này mà không biết sai ở đâu, bác nào chỉ em với.

int heso (int a, int b);
int main()
{
    int tien = getchar();
    int so_nam=10;
    int a = 16;
    int b =100;
    for(int sonam=1;sonam<=so_nam;sonam++){
        int lai;
        lai = tien*heso(a,b);
        tien+=lai;
        printf("sau %d nam ban se duoc %d tien
", sonam, tien);
    }
return 0;
}
int heso (int a, int b){
    int ty_le=a/b;
return ty_le;
}
Ngô Doãn Tuấn viết 02:01 ngày 01/10/2018

int heso (int a, int b){
int ty_le=a/b;
return ty_le;

Sai kết quả thì mình nghĩ là bạn đang bị lỗi logic ở đây.

Kết quả của a/b có thể bạn muốn là số thực nhưng bạn lại đang để nhầm kiểu dữ liệu về kiểu int.
Như vậy kết quả sẽ được lấy phần nguyên không như mong muốn

Lee D viết 02:11 ngày 01/10/2018

mình thử đổi thành float nó vẫn lỗi

Lương Quang Mạnh viết 02:06 ngày 01/10/2018

Code bác có nhiều lỗi quá

  1. ty_le là phép chia, thường là kiểu thực nhưng bác lại dùng kiểu int.
  2. getchar() là để lấy 1 kí tự từ bàn phím chứ không phải số nguyên, cho nên giả dụ bác có nhập 9 thì nó cũng không phải là số 9 đâu. Dẫn tới phần code phía dưới cũng sai nốt.
  3. Ngoài ra thì indentation của bác cũng lằng nhằng. Tự nhiên cứ return thì bác thụt ra ngoài làm gì?
Sơn viết 02:05 ngày 01/10/2018

int tien = getchar();

scanf("%d",&tien) thì đúng hơn

Lee D viết 02:10 ngày 01/10/2018

oke thank bạn

Bài liên quan
0