Code

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

int main()
{
    int i, n;
    long S;
    S = 0;
    i = 1;
    printf("\nNhap n: ");
    scanf("%d", &n);

    while(i <= n)
    {
        S = S + i * i;
        i++;
    }
    printf("i = %d", i);
    printf("\nTong 1^2 + 2^2 + ... + %d^2 la: %ld", n, S);

    /*int n,i;
    int sum=0;

    printf("Enter the n i.e. max values of series: ");
    scanf("%d",&n);

    sum = (n * (n + 1) * (2 * n + 1 )) / 6;

    printf("Sum of the series : ");

    for(i = 1; i <= n ; i++){
         if (i != n)
             printf("%d^2 + ",i);
         else
             printf("%d^2 = %d ",i,sum);
    }*/

    getch();
    return 0;
}							

Giải thích

Đoạn code C này tính toán tổng của các số nguyên bình phương từ 1 đến n, nhưng có hai phần khác nhau: phần đầu là cách tính tổng thủ công bằng vòng lặp while, còn phần bị comment là cách tính tổng theo công thức toán học cho tổng bình phương của các số nguyên.

Hãy đi qua từng phần:

1. Phần đầu tiên (vòng lặp while):

Chương trình này tính tổng các số bình phương từ 1 đến n theo cách thủ công bằng vòng lặp.

  • Khai báo và khởi tạo:
    • int i, n;: Khai báo hai biến nguyên i (biến đếm) và n (biến nhập từ người dùng).
    • long S;: Biến S dùng để lưu tổng các bình phương.
    • S = 0;i = 1;: Khởi tạo giá trị ban đầu cho tổng S bằng 0 và biến đếm i bằng 1.
  • Vòng lặp while:
    • while(i <= n): Vòng lặp chạy từ i = 1 đến i = n.
    • S = S + i * i;: Cộng bình phương của i vào biến S để cập nhật tổng.
    • i++: Tăng giá trị của i lên 1 sau mỗi lần lặp.
  • Hiển thị giá trị i sau vòng lặp:
    • printf("i = %d", i);: In ra giá trị của i khi vòng lặp kết thúc. Do i++ diễn ra sau mỗi lần lặp, giá trị cuối cùng của i sẽ là n + 1.
  • In kết quả tổng bình phương:
    • printf("\nTong 1^2 + 2^2 + ... + %d^2 la: %ld", n, S);: In kết quả tổng các bình phương từ 1 đến n.

2. Phần bị comment (tính tổng theo công thức):

Phần này đã bị comment, nhưng nó chứa một cách khác để tính tổng bình phương các số từ 1 đến n bằng công thức toán học trực tiếp thay vì dùng vòng lặp:

  • Công thức toán học:
    • sum = (n * (n + 1) * (2 * n + 1 )) / 6;: Đây là công thức tính tổng các số bình phương từ 1 đến n. Công thức này nhanh hơn vòng lặp vì chỉ cần thực hiện phép tính một lần, dựa trên giá trị n.
  • In dãy số bình phương:
    • Phần này sử dụng vòng lặp for để in từng số bình phương, từ 1 đến n, theo định dạng: 1^2 + 2^2 + ... + n^2.
    • Khi in ra, nó thêm dấu + giữa các số, nhưng với số cuối cùng (khi i == n), nó in dấu = và tổng cuối cùng.

3. Kết thúc chương trình:

  • getch();: Chờ người dùng nhấn một phím trước khi thoát chương trình (tương tự như phần trước).
  • return 0;: Kết thúc chương trình với giá trị trả về là 0, báo hiệu chương trình kết thúc thành công.

Categorized in: