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 hay
, trong đó
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ưprintf
vàscanf
để 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àmgetch()
để 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ặpfor
.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
đếni=n
. - Ở mỗi lần lặp, giá trị
1.0 / (2 * i)
được cộng dồn vào biến tổngS
. 1.0 / (2 * i)
: Việc dùng1.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.