Mô tả bài toán
Tính số tiền còn phải trả sau mỗi kỳ trả góp cho khoản vay có lãi suất hàng tháng. Mỗi kỳ: tính lãi trên số dư → cộng vào số dư → trừ kỳ trả.
Công thức toán học
Lãi hàng tháng = Số dư × (Lãi suất năm / 100) / 12
Số dư mới = Số dư cũ + Lãi - Kỳ trả
Chương trình C
#include <stdio.h>
int main() {
float soTienVay, laiSuatNam, kyTra;
float lai, soDuSauKy1, soDuSauKy2;
printf("Nhap so tien vay: ");
scanf("%f", &soTienVay);
printf("Nhap lai suat nam (%%): ");
scanf("%f", &laiSuatNam);
printf("Nhap so tien tra hang thang: ");
scanf("%f", &kyTra);
// Kỳ 1
lai = soTienVay * (laiSuatNam / 100.0) / 12.0;
soDuSauKy1 = soTienVay + lai - kyTra;
// Kỳ 2
lai = soDuSauKy1 * (laiSuatNam / 100.0) / 12.0;
soDuSauKy2 = soDuSauKy1 + lai - kyTra;
printf("\nSo du sau ky 1: %.2f\n", soDuSauKy1);
printf("So du sau ky 2: %.2f\n", soDuSauKy2);
return 0;
}
Kết quả
Nhap so tien vay: 45000
Nhap lai suat nam (%%): 7
Nhap so tien tra hang thang: 1000
So du sau ky 1: 44262.50
So du sau ky 2: 43520.70
Chi tiết tính toán (Ví dụ)
| Kỳ | Số dư đầu kỳ | Lãi suất/tháng | Tiền lãi | Trả góp | Số dư cuối kỳ |
|---|---|---|---|---|---|
| 1 | 45,000.00 | 0.5833% | 262.50 | 1,000.00 | 44,262.50 |
| 2 | 44,262.50 | 0.5833% | 258.20 | 1,000.00 | 43,520.70 |
Mở rộng: Tính cho n kỳ (vòng lặp)
#include <stdio.h>
int main() {
float soTienVay, laiSuatNam, kyTra;
int soKy;
printf("Nhap so tien vay: ");
scanf("%f", &soTienVay);
printf("Nhap lai suat nam (%%): ");
scanf("%f", &laiSuatNam);
printf("Nhap ky tra hang thang: ");
scanf("%f", &kyTra);
printf("Nhap so ky can tinh: ");
scanf("%d", &soKy);
float soDu = soTienVay;
float laiThang = laiSuatNam / 100.0 / 12.0;
printf("\n%-5s %-15s %-15s %-15s\n", "Ky", "So du dau", "Lai", "So du cuoi");
for (int i = 1; i <= soKy; i++) {
float lai = soDu * laiThang;
float soDuMoi = soDu + lai - kyTra;
printf("%-5d %-15.2f %-15.2f %-15.2f\n", i, soDu, lai, soDuMoi);
if (soDuMoi <= 0) {
printf("Da tra het von o ky %d!\n", i);
break;
}
soDu = soDuMoi;
}
return 0;
}
Lưu ý tài chính
- Lãi suất thường được quy đổi hàng năm, cần chia 12 cho lãi tháng
- Chia 100.0 (không phải 100) để đảm bảo phép chia thực
- Dùng
floathoặcdoublecho tiền tệ (double chính xác hơn) - In
%.2fđể hiển thị 2 chữ số thập phân (xu/cent) - Cần kiểm tra: kỳ trả phải > lãi tháng đầu, nếu không nợ sẽ tăng mãi
Đây là cơ sở của lịch trả nợ amortization - dùng trong ngân hàng, tài chính cá nhân.