├── 10. Bài tập chương 08.md ├── 03. Thực hành sử dụng mảng.md ├── 02. Vòng lặp.md ├── 08. Bài tập chương 06.md ├── 01. Chương 02.md ├── 09. Bài tập chương 07.md ├── 07. Bài tập chương 05.md ├── 04. Bài tập chương 03.md ├── 05. Thực hành sử dụng mảng (phần 2).md ├── 06. Bài tập chương 04.md └── 11. Giải bài 2 chương 8.md /10. Bài tập chương 08.md: -------------------------------------------------------------------------------- 1 | ## Bài tập chương 08 2 | 3 | #### Bài 1: Viết chương trình nhập vào dữ liệu bán kính của 1 hình tròn. Tính và in ra màn hình chu vi và diện tích của hình tròn đó (sử dụng struct). 4 | 5 | Ví dụ: 6 | ``` 7 | Nhap ban kinh: 3 8 | Chu vi hinh tron: 18.84 9 | Dien tich hinh tron: 28.26 10 | ``` 11 | 12 | --- 13 | 14 | #### Bài 2: Viết chương trình quản lý sản phẩm (tên, đơn giá, số lượng) gồm các chức năng sau: 15 | - Xem danh sách sản phẩm 16 | - Thêm sản phẩm mới 17 | - Xóa sản phẩm 18 | -------------------------------------------------------------------------------- /03. Thực hành sử dụng mảng.md: -------------------------------------------------------------------------------- 1 | ## Thực hành sử dụng mảng 2 | 3 | #### Bài 1: Tạo mảng số nguyên dương có n phần tử (tối đa 10 phần tử). Nhập vào 1 số nguyên dương x và thêm x vào cuối mảng vừa tạo. 4 | 5 | --- 6 | 7 | #### Bài 2: Tạo mảng số nguyên dương có n phần tử (tối đa 10 phần tử). Nhập vào 1 số nguyên dương x (0 <= x <= 9) và xóa phần tử ở vị trí x. 8 | 9 | --- 10 | 11 | #### Bài 3: Tạo mảng số nguyên dương có n phần tử (tối đa 10 phần tử). Nhập vào 1 số nguyên dương x (0 <= x <= 9) và số nguyên dương y. Thêm y vào vị trí x của mảng. 12 | -------------------------------------------------------------------------------- /02. Vòng lặp.md: -------------------------------------------------------------------------------- 1 | ## Bài tập vòng lặp 2 | 3 | #### Bài 1: Nhập 1 số nguyên dương n. In ra màn hình giá trị của **S = 1 + 2 + 3 + ... + n**. 4 | 5 | Ví dụ: 6 | ``` 7 | n = 4 8 | S = 10 9 | ``` 10 | 11 | #### Bài 2: Nhập 1 số nguyên dương n. In ra màn hình giá trị của **S = 1^2 + 2^2 + 3^2 + ... + n^2**. 12 | 13 | Ví dụ: 14 | ``` 15 | n = 4 16 | S = 30 17 | ``` 18 | 19 | #### Bài 3: Nhập 1 số nguyên dương n. In ra màn hình giai thừa **n!**. 20 | 21 | Ví dụ: 22 | ``` 23 | n = 3 24 | n! = 6 25 | ``` 26 | 27 | #### Bài 4: Nhập vào 1 số nguyên dương n. In ra màn hình các số chia hết cho 5 từ **1** đến **n**. 28 | 29 | Ví dụ: 30 | ``` 31 | n = 20 32 | 5 10 15 20 33 | ``` 34 | -------------------------------------------------------------------------------- /08. Bài tập chương 06.md: -------------------------------------------------------------------------------- 1 | ## Bài tập chương 06 2 | #### Bài 1: Viết chương trình nhập vào 1 số nguyên dương n. Kiểm tra xem số n có phải là số nguyên tố hay không 3 | 4 | Ví dụ: 5 | ``` 6 | n = 3 7 | 3 la so nguyen to 8 | ``` 9 | 10 | --- 11 | 12 | #### Bài 2: Viết chương trình nhập vào 1 số nguyên dương n (n > 1). Tính và in ra màn hình tổng các số nguyên tố từ 2 -> n. 13 | 14 | *Lưu ý: Làm bằng 2 cách (sử dụng vòng lặp, sử dụng đệ quy)* 15 | 16 | Ví dụ: 17 | ``` 18 | n = 10 19 | Ket qua: 17 20 | ``` 21 | 22 | --- 23 | 24 | Ví dụ: 25 | 26 | #### Bài 3: Viết chương trình nhập vào 1 số nguyên dương n. Tính và in ra màn hình **n!**. 27 | 28 | *Lưu ý: Làm bằng 2 cách (sử dụng vòng lặp, sử dụng đệ quy)* 29 | 30 | Ví dụ: 31 | ``` 32 | n = 3 33 | 3! = 6 34 | ``` 35 | -------------------------------------------------------------------------------- /01. Chương 02.md: -------------------------------------------------------------------------------- 1 | ## Bài tập chương 02 2 | 3 | #### Bài 1: Nhập vào 2 số `a` và `b`. Bạn hãy in ra màn hình tổng và hiệu của 2 số đó. 4 | 5 | Ví dụ: 6 | ``` 7 | a = 2 8 | b = 3 9 | a + b = 5 10 | a - b = -1 11 | ``` 12 | 13 | --- 14 | #### Bài 2: Nhập vào 1 chữ cái viết thường bất kì. Hãy in ra màn hình chữ cái đó dưới dạng viết hoa. 15 | 16 | Ví dụ: 17 | ``` 18 | Chu cai viet thuong: a 19 | Chu cai viet hoa: A 20 | ``` 21 | 22 | --- 23 | #### Bài 3: Nhập vào 2 số nguyên `a` và `b`. Hãy hoán đổi giá trị của 2 số đó và in ra màn hình. 24 | Ví dụ: 25 | ``` 26 | a = 1 27 | b = 2 28 | Gia tri cua a la 1 29 | Gia tri cua b la 2 30 | ``` 31 | 32 | --- 33 | #### Bài 4: Nhập vào 2 số nguyên dương `a` và `b` (`a` và `b` không trùng giá trị). Hãy in ra màn hình số nhỏ hơn (không dùng cấu trúc if else hoặc toán tử 3 ngôi). 34 | 35 | Ví dụ: 36 | ``` 37 | a = 1 38 | b = 2 39 | Gia tri nho hon la 1 40 | ``` 41 | -------------------------------------------------------------------------------- /09. Bài tập chương 07.md: -------------------------------------------------------------------------------- 1 | ## Bài tập chương 07 2 | 3 | #### Bài 1: Tạo mảng động có n phần tử nguyên (tối đa 10 phần tử). Nhập vào 1 số nguyên x và thêm x vào cuối mảng vừa tạo. 4 | 5 | Ví dụ: 6 | ``` 7 | n = 4 8 | Nhap mang: 1 2 3 4 9 | x = 5 10 | Mang sau khi them: 1 2 3 4 5 11 | ``` 12 | 13 | --- 14 | 15 | #### Bài 2: Tạo mảng động có n phần tử nguyên (tối đa 10 phần tử). Nhập vào 1 số nguyên dương x (0 <= x <= 9) và xóa phần tử ở vị trí x. 16 | 17 | Ví dụ: 18 | ``` 19 | n = 4 20 | Nhap mang: 1 2 3 4 21 | x = 1 22 | Mang sau khi xoa: 1 3 4 23 | ``` 24 | 25 | --- 26 | 27 | #### Bài 3: Tạo mảng động có n phần tử nguyên (tối đa 10 phần tử). Nhập vào 1 số nguyên dương x (0 <= x <= 9) và số nguyên y. Thêm y vào vị trí x của mảng. 28 | 29 | Ví dụ: 30 | ``` 31 | n = 4 32 | Nhap mang: 1 2 3 4 33 | y = 7 34 | x = 1 35 | Mang sau khi them: 1 7 2 3 4 36 | ``` 37 | 38 | #### Bài 4: Tạo mảng động có n phần tử nguyên (tối đa 10 phần tử). Sắp xếp lại mảng đó theo thứ tự tăng dần và in ra màn hình. 39 | 40 | Ví dụ: 41 | ``` 42 | n = 4 43 | Nhap mang: 4 3 2 1 44 | Mang sau khi sap xep: 1 2 3 4 45 | ``` 46 | -------------------------------------------------------------------------------- /07. Bài tập chương 05.md: -------------------------------------------------------------------------------- 1 | ## Bài tập chương 05 2 | #### Bài 1: Viết chương trình nhập vào 1 chuỗi gồm các ký tự từ a -> z và có thể chứa khoảng trắng. Hãy loại bỏ các khoảng trắng ở đầu và cuối chuỗi. 3 | 4 | Ví dụ: 5 | ``` 6 | Nhap chuoi: f8 fullstack 7 | Ket qua: f8 fullstack 8 | ``` 9 | 10 | --- 11 | 12 | #### Bài 2: Viết chương trình nhập vào 1 chuỗi gồm các ký tự a -> z và có thể chứa khoảng trắng. Hãy loại bỏ các khoảng trắng thừa ở giữa các từ. 13 | 14 | Ví dụ: 15 | ``` 16 | Nhap chuoi: f8 fullstack 17 | Ket qua: f8 fullstack 18 | ``` 19 | 20 | --- 21 | 22 | #### Bài 3: Viết chương trình nhập vào 1 chuỗi gồm các ký tự a -> z, A -> Z và có thể chứa khoảng trắng. Hãy viết hoa các chữ cái ở đầu mỗi từ, các chữ cái còn lại để ở dạng viết thường. 23 | 24 | Ví dụ: 25 | ``` 26 | Nhap chuoi: f8 fulLsTack 27 | Ket qua: F8 Fullstack 28 | ``` 29 | 30 | --- 31 | 32 | #### Bài 4: Viết chương trình nhập vào 1 chuỗi gồm các ký tự a -> z, A -> Z và có thể chưa khoảng trắng. Hãy chuẩn hóa chuỗi đó. 33 | 34 | Gợi ý: 35 | - Loại bỏ khoảng trắng đầu cuối. 36 | - Loại bỏ khoảng trắng thừa ở giữa các từ. 37 | - Viết hoa chữ cái đầu, các chữ còn lại viết thường. 38 | 39 | Ví dụ: 40 | ``` 41 | Nhap chuoi: bUI duC LONG 42 | Ket qua: Bui Duc Long 43 | ``` 44 | -------------------------------------------------------------------------------- /04. Bài tập chương 03.md: -------------------------------------------------------------------------------- 1 | ## Bài tập chương 03 2 | #### Bài 1: Viết chương trình giải phương trình bậc nhất một ẩn ax + b = 0, trong đó `a` và `b` là các hệ số nhập từ bàn phím. 3 | 4 | Gợi ý: 5 | - Nếu a = 0 và b = 0 thì phương trình có vô số nghiệm. 6 | - Nếu a = 0 và b != 0 thì phương trình vô nghiệm. 7 | - Nếu a != 0 thì phương trình có nghiệm duy nhất **x = -b / a**. 8 | 9 | Ví dụ: 10 | ``` 11 | a = 1 12 | b = 2 13 | Nghiem cua phuong trinh la -2 14 | ``` 15 | 16 | --- 17 | 18 | #### Bài 2: Viết chương trình nhập vào số nguyên dương **n** (n <= 100). Tính và hiển thị tổng các số tự nhiên lẻ từ 1 đến n. 19 | 20 | Ví dụ: 21 | ``` 22 | n = 10 23 | Ket qua la 25 24 | ``` 25 | 26 | --- 27 | #### Bài 3: Viết chương trình nhập nhiệt độ F từ bàn phím rồi tính và hiển thị nhiệt độ đó ở độ C 28 | 29 | Gợi ý: 30 | - degC = (degF - 32) / 1.8 31 | 32 | Ví dụ: 33 | ``` 34 | F = 80 35 | C = 26.6667 36 | ``` 37 | 38 | --- 39 | 40 | #### Bài 4: Viết chương trình nhập vào một số **n** từ bàn phím. Hãy kiểm tra xem **n** có phải số nguyên tố hay không. 41 | 42 | Gợi ý: 43 | - Số nguyên tố là số chỉ chia hết cho 1 và chính nó. 44 | 45 | Ví dụ: 46 | ``` 47 | n = 3 48 | n la so nguyen to 49 | ``` 50 | 51 | --- 52 | 53 | #### Bài 5: Viết chương trình nhập vào một số nguyên dương **n** từ bàn phím. Tính tổng các chữ số tạo nên số đó. 54 | 55 | Ví dụ: 56 | ``` 57 | n = 2023 58 | Ket qua la 7 59 | ``` 60 | -------------------------------------------------------------------------------- /05. Thực hành sử dụng mảng (phần 2).md: -------------------------------------------------------------------------------- 1 | ## Thực hành sử dụng mảng (phần 2) 2 | 3 | #### Bài 1: Viết chương trình nhập vào 2 số nguyên dương n và m (0 < n <= 10, 0 < m <= 10). Tạo mảng 2 chiều chứa các số nguyên có n hàng và m cột. Tính và in ra màn hình tổng các phần tử có trong mảng. 4 | 5 | Ví dụ: 6 | ``` 7 | n = 2 8 | m = 3 9 | Nhap mang: 10 | 1 2 3 11 | 4 5 6 12 | Tong cac phan tu trong mang la: 21 13 | ``` 14 | 15 | --- 16 | 17 | #### Bài 2: Viết chương trình nhập vào số nguyên dương n (0 < n <= 10). Tạo mảng 1 chiều có n phần tử là số nguyên và in ra màn hình phần tử có giá trị lớn nhất. 18 | 19 | Ví dụ: 20 | ``` 21 | n = 3 22 | Nhap mang: 1 3 2 23 | Gia tri lon nhat la: 3 24 | ``` 25 | 26 | --- 27 | 28 | #### Bài 3: Viết chương trình nhập vào 2 số nguyên dương n và m (0 < n <= 10, 0 < m <= 10). Tạo mảng 2 chiều chứa các số nguyên có n hàng và m cột. In ra màn hình các phần tử lớn nhất của các hàng. 29 | 30 | Ví dụ: 31 | ``` 32 | n = 2 33 | m = 3 34 | Nhap mang: 35 | 1 2 3 36 | 4 6 5 37 | Cac phan tu lon nhat la: 3 6 38 | ``` 39 | 40 | --- 41 | 42 | #### Bài 4: Viết chương trình nhập vào 2 số nguyên dương n và m (2 <= n <= 10, 2 <= m <= 10). Tạo mảng 2 chiều chứa các số nguyên có n hàng và m cột. Tính tổng các giá trị biên của mảng vừa tạo. 43 | 44 | Ví dụ: 45 | ``` 46 | n = 3 47 | m = 3 48 | Nhap mang: 49 | 1 2 3 50 | 4 5 6 51 | 7 8 9 52 | Tong cac gia tri bien la: 40 53 | ``` 54 | -------------------------------------------------------------------------------- /06. Bài tập chương 04.md: -------------------------------------------------------------------------------- 1 | ## Bài tập chương 04 2 | 3 | #### Bài 1: Viết chương trình nhập vào 1 số nguyên n (2 <= n <= 10). Nhập mảng có n số nguyên. Hãy sắp xếp lại mảng đó theo thứ tự giảm dần và in ra màn hình. 4 | 5 | Ví dụ: 6 | ``` 7 | n = 4 8 | Nhap mang: 2 3 1 4 6 9 | Mang sau khi sap xep: 6 4 3 2 1 10 | ``` 11 | 12 | --- 13 | 14 | #### Bài 2: Viết chương trình nhập vào 1 số nguyên n (2 <= n <= 10). Nhập mảng có n số nguyên và nhập số nguyên k. Hãy kiểm tra xem trong mảng có xuất hiện 2 phần tử có tổng bằng k hay không, nếu có hãy in ra màn hình vị trí của 2 phần tử đó (lấy 2 vị trí đầu tiên tìm được). 15 | 16 | Ví dụ: 17 | ``` 18 | n = 4 19 | Nhap mang: 1 2 3 4 20 | k = 3 21 | Ket qua: 0 1 22 | ``` 23 | 24 | --- 25 | 26 | #### Bài 3: Viết chương trình nhập vào 2 ma trận có n hàng và m cột (0 < n <= 10, 0 < m <= 10). In ra tổng của 2 ma trận. 27 | 28 | Gợi ý: 29 | - Phép cộng 2 ma trận là việc cộng các phần tử có vị trí tương ứng của 2 ma trận đó 30 | 31 | Ví dụ: 32 | ``` 33 | n = 2 34 | m = 3 35 | Nhap ma tran 1: 36 | 1 2 3 37 | 1 2 3 38 | Nhap ma tran 2: 39 | 2 3 4 40 | 2 3 4 41 | Tong 2 ma tran: 42 | 3 5 7 43 | 3 5 7 44 | ``` 45 | 46 | --- 47 | 48 | #### Bài 4: Viết chương trình nhập vào 1 ma trận có n hàng và m cột (0 < n <= 10, 0 < m <= 10). In ra màn hình tổng của các số lẻ xuất hiện trong ma trận. 49 | 50 | Ví dụ: 51 | ``` 52 | n = 2 53 | m = 3 54 | Nhap ma tran: 55 | 1 2 3 56 | 4 5 6 57 | Tong cac so le la: 9 58 | ``` 59 | -------------------------------------------------------------------------------- /11. Giải bài 2 chương 8.md: -------------------------------------------------------------------------------- 1 | ```c 2 | #include 3 | #include 4 | 5 | using namespace std; 6 | 7 | struct Product 8 | { 9 | string name; 10 | int price; 11 | int quantity; 12 | 13 | friend istream& operator>>(istream &is, Product &product) 14 | { 15 | cout << "Nhap ten: "; 16 | is.ignore(); 17 | getline(is, product.name); 18 | cout << "Nhap don gia: "; 19 | is >> product.price; 20 | cout << "Nhap so luong: "; 21 | is >> product.quantity; 22 | 23 | return is; 24 | } 25 | 26 | friend ostream& operator<<(ostream &os, Product product) 27 | { 28 | os << "Ten: " << product.name; 29 | os << ", don gia: " << product.price; 30 | os << ", so luong: " << product.quantity; 31 | 32 | return os; 33 | } 34 | }; 35 | 36 | int show_menu(); 37 | void print_products(Product *products, int size); 38 | void add_product(Product* &products, int &size); 39 | void delete_product(Product* &products, int &size); 40 | 41 | int main() 42 | { 43 | int size = 0; 44 | Product *products = new Product[size]; 45 | 46 | while(true) 47 | { 48 | int chose = show_menu(); 49 | 50 | system("cls"); 51 | switch(chose) 52 | { 53 | case 1: 54 | print_products(products, size); 55 | break; 56 | case 2: 57 | add_product(products, size); 58 | break; 59 | case 3: 60 | delete_product(products, size); 61 | break; 62 | case 0: 63 | cout << "Bye bye!"; 64 | 65 | return 0; 66 | default: 67 | cout << "Lua chon khong hop le." << endl; 68 | } 69 | 70 | cout << "Ban co muon tiep tuc khong? (1/0) "; 71 | bool is_continue; 72 | cin >> is_continue; 73 | 74 | if (!is_continue) 75 | { 76 | cout << "Bye bye!"; 77 | break; 78 | } 79 | } 80 | 81 | return 0; 82 | } 83 | 84 | int show_menu() 85 | { 86 | system("cls"); 87 | int chose; 88 | cout << "====== MENU =====" << endl; 89 | cout << "1. Xem danh sach san pham" << endl; 90 | cout << "2. Them san pham moi" << endl; 91 | cout << "3. Xoa san pham" << endl; 92 | cout << "0. Thoat chuong trinh" << endl; 93 | 94 | cout << "Lua chon cua ban la: "; 95 | cin >> chose; 96 | 97 | return chose; 98 | } 99 | 100 | void print_products(Product *products, int size) 101 | { 102 | if (!size) 103 | { 104 | cout << "Chua co san pham nao." << endl; 105 | } 106 | else 107 | { 108 | cout << "Danh sach san pham: " << endl; 109 | for(int i = 0; i < size; i++) 110 | { 111 | cout << products[i] << endl; 112 | } 113 | } 114 | } 115 | 116 | void add_product(Product* &products, int &size) 117 | { 118 | Product new_product; 119 | cout << "Nhap thong tin san pham moi: " << endl; 120 | cin >> new_product; 121 | 122 | int new_size = size + 1; 123 | Product *tmp_products = new Product[new_size]; 124 | 125 | for(int i = 0; i < size; i++) 126 | { 127 | tmp_products[i] = products[i]; 128 | } 129 | tmp_products[new_size - 1] = new_product; 130 | 131 | delete[] products; 132 | products = tmp_products; 133 | size = new_size; 134 | 135 | cout << "Them san pham thanh cong!" << endl; 136 | } 137 | 138 | void delete_product(Product* &products, int &size) 139 | { 140 | cout << "Nhap ten san pham can xoa: "; 141 | string deleted_name; 142 | cin.ignore(); 143 | getline(cin, deleted_name); 144 | 145 | int deleted_index = -1; 146 | for(int i = 0; i < size; i++) 147 | { 148 | if (!deleted_name.compare(products[i].name)) 149 | { 150 | deleted_index = i; 151 | break; 152 | } 153 | } 154 | 155 | if (deleted_index == -1) 156 | { 157 | cout << "Khong tim thay san pham!" << endl; 158 | return; 159 | } 160 | 161 | for(int i = deleted_index; i < size - 1; i++) 162 | { 163 | products[i] = products[i + 1]; 164 | } 165 | size--; 166 | 167 | Product *tmp_products = new Product[size]; 168 | for(int i = 0; i < size; i++) 169 | { 170 | tmp_products[i] = products[i]; 171 | } 172 | 173 | delete[] products; 174 | products = tmp_products; 175 | 176 | cout << "Xoa thanh cong!" << endl; 177 | } 178 | 179 | ``` 180 | --------------------------------------------------------------------------------