#include<stdio.h>
#include<conio.h>
int main()
{
int n;
// Nhập n là số dương
do
{
printf("\nNhap so nguyen duong n (n >= 1): ");
scanf_s("%d", &n);
if (n < 1)
{
printf("\nGia tri n khong hop le! Vui long nhap lai");
}
} while (n < 1);
/*
Quá trình làm
Bước 1: Xác định kiểu dữ liệu của biến cần lưu trữ
Bước 1.1:
+ Nếu tính tổng thì biến lưu trữ khởi tạo là 0
+ Nếu tính tích thì biến lưu trữ khởi tạo là 1
Bước 2: Xác định các thành phần: Khởi tạo, điều kiện, bước lặp
Bước 3: Xác định công thức
*/
/* Câu a */
int Sa = 0; // Bước 1
for (int i = 1; i <= n; i++) // Bước 2
{
Sa += i; // Bước 3
}
printf("Sa = %d\n", Sa);
/*
Vd: Nhập n = 3
Đầu tiên Sa = 0
i = 1 => Sa = Sa + i => Sa = 0 + 1 = 1
i = 2 => Sa = Sa + i => Sa = 1 + 2 = 3
i = 3 => Sa = Sa + i => Sa = 3 + 3 = 6
*/
/* Câu b */
int Sb = 0;
for (int i = 1; i <= n; i++)
{
Sb += i * i;
}
printf("Sb = %d\n", Sb);
/* Câu c */
float Sc = 0;
// for(int i = n; i >= 0 ; --i) chạy nhanh hơn
for (int i = 1; i <= n; i++)
{
Sc += 1.0 / i;
}
printf("Sc = %f\n", Sc);
/* Câu d */
int Sd = 1;
for (int i = 1; i <= n; i++)
{
Sd *= i;
}
printf("Sd = %d\n", Sd);
/* Câu e
1! + 2! + 3! +....+ n!
<=> 1 + 1*2 + 1*2*3 + ... + 1*2*3*...*n
*/
// Cách cùi bắp
/*int Se = 0;
for (int i = 1; i <= n; i++)
{
int Tich = 1;
for (int j = 1; j <= i; j++)
{
Tich *= j;
}
Se += Tich;
}
printf("Se = %d", Se);*/
// Cách víp
int Se = 0;
int Tich = 1;
for (int i = 1; i <= n; i++)
{
Tich *= i;
Se += Tich;
}
printf("Se = %d\n", Se);
/*
Vd n = 3
i = 1
Tich = Tich * i => Tich = 1
Se = Se + Tich = 0 + 1 = 1
i = 2
Tich = Tich * i => Tich = 2
Se = Se + Tich = 1 + 2 = 3
i = 3
Tich = Tich * i => Tich = 6
Se = Se + Tich = 3 + 6 = 9
i = 4
Tich = Tich * i => Tich = 24
Se = Se + Tich = 24 + 9 = 33
*/
// Có thể gom lại cả 5 câu chạy 1 vòng lặp for duy nhất
_getch();
return 0;
}