Giúp tìm lỗi sai trong code tính lãi suấ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\n", sonam, tien);
    }
return 0;
}
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

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

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ì?

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

1 Like

oke thank bạn :slight_smile:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?