CODE

#include<stdio.h>
#include<conio.h>

int main()
{
    int i, n;
    float S;
    S = 0;
    do
    {
        printf("\nNhap n: ");
        scanf("%d", &n);
        if(n < 1)
        {
            printf("\nN phai lon hon hoac bang 1. Xin nhap lai !");
        }
    }while(n < 1);

    for(i = 1; i <= n; i++)
    {
        S = S + 1.0 / (2 * i);
    }
    printf("\nTong la: %f", S);

    getch();
    return 0;
}

GIẢI THÍCH

Đoạn mã trên được viết bằng ngôn ngữ lập trình C nhằm tính tổng các phân số dạng S(n) = \frac{1}{2} + \frac{1}{4} + \dots + \frac{1}{2n}​ hay S(n) = \sum_{i=1}^{n} \frac{1}{2i}, trong đó n là số nguyên dương do người dùng nhập vào. Chúng ta sẽ cùng nhau tìm hiểu từng phần của đoạn mã này nhé!

1. Các thư viện được sử dụng

  • #include<stdio.h>: Thư viện chuẩn cho phép sử dụng các hàm như printfscanf để thực hiện xuất và nhập dữ liệu.
  • #include<conio.h>: Là thư viện dành riêng cho một số trình biên dịch C/C++ trên Windows (như Turbo C, Borland C, hoặc MSVC cũ). Thư viện này cung cấp hàm getch() để chờ người dùng nhấn phím bất kỳ trước khi chương trình kết thúc.

2. Giải thích từng bước trong hàm main()

Khai báo biến

int i, n;
float S;
S = 0;
  • i: Biến lặp được sử dụng trong vòng lặp for.
  • n: Giá trị đầu vào từ người dùng, quy định số lần lặp.
  • S: Biến lưu tổng, được khởi tạo ban đầu bằng 0.

Nhập giá trị n từ người dùng

do
{
    printf("\nNhap n: ");
    scanf("%d", &n);
    if(n < 1)
    {
        printf("\nN phai lon hon hoac bang 1. Xin nhap lai !");
    }
} while(n < 1);
  • Người dùng được yêu cầu nhập vào một số nguyên n.
  • Nếu n < 1, chương trình hiển thị thông báo yêu cầu nhập lại giá trị nnn lớn hơn hoặc bằng 1.
  • Vòng lặp do-while đảm bảo người dùng nhập đúng giá trị hợp lệ trước khi chương trình tiếp tục.

Tính tổng phân số

for(i = 1; i <= n; i++)
{
    S = S + 1.0 / (2 * i);
}
  • Vòng lặp for chạy từ i=1 đến i=n.
  • Ở mỗi lần lặp, giá trị 1.0 / (2 * i)​ được cộng dồn vào biến tổng S.
  • 1.0 / (2 * i): Việc dùng 1.0 đảm bảo phép toán được thực hiện dưới dạng số thực (float) để không gặp lỗi chia lấy phần nguyên.

Hiển thị kết quả

printf("\nTong la: %f", S);

Sau khi tính toán xong, tổng S được in ra màn hình với định dạng số thực (%f).

Hàm getch() và return 0;

getch();
return 0;

Hàm getch() giúp chương trình chờ người dùng nhấn một phím bất kỳ trước khi thoát. Điều này giữ kết quả hiển thị trên màn hình để người dùng xem.

return 0; báo hiệu rằng chương trình đã kết thúc mà không gặp lỗi.

Categorized in: