Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Tính số dư vay nợ theo kỳ trả góp trong C

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ỳ
145,000.000.5833%262.501,000.0044,262.50
244,262.500.5833%258.201,000.0043,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 float hoặc double cho 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.