Bài tập C++ thú vị kèm lời giải chi tiết
Nội dung bài viết
Nếu bạn đang học C++ và muốn nâng cao kỹ năng qua những bài tập thực tế, bài viết này sẽ cung cấp cho bạn bộ sưu tập các bài tập mẫu hữu ích. Bạn có thể tham khảo và tải về những bài tập C++ với lời giải chi tiết được tổng hợp dưới đây.

Dưới đây là những bài tập C++ cơ bản và hay, kèm theo lời giải rõ ràng. Bạn cũng có thể tiếp tục tải thêm các bài tập C++ từ cơ bản đến nâng cao tại liên kết ở cuối bài viết.
Bài tập C++ về Hàm
1. Tìm ước chung lớn nhất của hai số a và b, một bài toán cổ điển trong lý thuyết số. Đây là thuật toán giúp chúng ta tìm ra số nguyên lớn nhất có thể chia hết cho cả hai số đó, một công cụ cực kỳ hữu ích trong nhiều ứng dụng toán học và mã hóa.
#includeusing namespace std; int ucln(int x, int y) { if (x < y) { x = x + y; y = x - y; x = x - y; } while (y != 0) { int m = x % y; x = y; y = m; } return x; } int main() { int a, b; cin >> a >> b; cout << ucln(a, b); return 0; }
2. Viết chương trình kiểm tra năm nhuận, với mục đích xác định năm nào là năm nhuận trong lịch Gregory. Đây là bài toán thú vị, có sự kết hợp giữa toán học và lập trình, khi xác định năm nhuận cần phải xét đến các quy tắc chia cho 4, 100 và 400.
#include#include int isLeapYear(int y) { return y % 4 == 0 && (y % 100 != 0 || y % 400 == 0); } void main() { int n; do { cin >> n; if (isLeapYear(n)) cout << n << " la nam nhuan.\n"; else cout << n << " Khong phai nam nhuan.\n"; } while (n > 1); }
Bài tập C++: Sử dụng câu lệnh điều khiển
Nhập vào một số nguyên và yêu cầu hiển thị chữ số ở hàng trăm của số đó. Nếu số này không có chữ số hàng trăm, hãy trả về giá trị 0.
Ví dụ:
Input | Output |
1234 |
2 |
#includeusing namespace std; int main() { int n, i; cin >> n; i = 0; if (n < 100) { cout << i << endl; } else { i = n / 100 % 10; cout << i << endl; } return 0; }
Bài tập C++: Xử lý chuỗi ký tự
1. Viết chương trình để loại bỏ tất cả các ký tự 'a' trong một chuỗi cho trước. Đây là một bài toán cơ bản giúp làm quen với thao tác xử lý chuỗi trong C++.
#include#include #include void main() { int i, j; char x[80]; cout << "\nNhập một chuỗi: "; gets(x); for (i = j = 0; x[i] != NULL; i++) { if (x[i] != 'a') { x[j] = x[i]; j++; } } x[j] = NULL; cout << "\nChuỗi sau khi loại bỏ ký tự 'a' là: "; puts(x); getch(); }
2. Viết chương trình để trích xuất một chuỗi con từ bên trái của một chuỗi gốc. Bài tập này giúp làm quen với thao tác cắt chuỗi trong C++.
#include#include #include void main() { clrscr(); char ten[25], *tentro; tentro = ten; int i, sokytu; cout << "\nNhập một chuỗi ký tự: "; gets(ten); cout << "\nBạn muốn trích bao nhiêu ký tự?"; cin >> sokytu; for (i = 0; i < sokytu; i++) { cout << *tentro++; } getch(); }
Bài tập C++: Mảng và Con trỏ
1. Viết chương trình để tìm số lớn nhất và nhỏ nhất trong một mảng số nguyên. Bài toán này giúp người học làm quen với thao tác tìm kiếm giá trị cực trị trong mảng.
#includeusing namespace std; int main() { int a[100]; int n = 0; int x; while (cin >> x) { a[n] = x; n++; } int maxval = a[0], minval = a[0]; for (int i = 1; i < n; i++) { if (maxval < a[i]) maxval = a[i]; if (minval > a[i]) minval = a[i]; } cout << minval << endl; cout << maxval << endl; return 0; }
2. Viết chương trình nhập một mảng số thực có kích thước tối đa 20x20 và tìm ra phần tử có giá trị lớn nhất trong mảng. Đây là bài toán giúp rèn luyện kỹ năng làm việc với mảng hai chiều và xử lý các giá trị số thực.
#include#include void main() { float a[20][20], smax; int m, n, i, j, imax, jmax; clrscr(); puts("Cho biết số hàng và số cột của ma trận: "); scanf("%d%d", &m, &n); for (i = 0; i < m; ++i) { for (j = 0; j < n; ++j) { printf("\n a[%d][%d] = ", i, j); scanf("%f", &a[i][j]); } } smax = a[0][0]; for (i = 0; i < m; ++i) { for (j = 0; j < n; ++j) { if (smax < a[i][j]) { smax = a[i][j]; } } } puts("\n\n Ma trận"); for (i = 0; i < m; ++i) { for (j = 0; j < n; ++j) { if (j == 0) puts(""); printf("%6.1f", a[i][j]); } } puts("\n\n Phần tử max:"); printf("\n Có giá trị = %6.1f", smax); getch(); }
Bài tập C++: Nhập xuất dữ liệu
1. Viết chương trình nhập vào một ký tự và yêu cầu xuất ra mã ASCII tương ứng với ký tự đó. Bài tập này giúp người học hiểu rõ hơn về sự tương quan giữa ký tự và mã số trong bộ mã ASCII.
Ví dụ:
Input | Output |
A |
65 |
#includeusing namespace std; int main() { char m; cin >> m; cout << int(m); return 0; }
2. Viết chương trình nhập vào một số gồm hai chữ số và yêu cầu tính tổng các chữ số của số đó, sau đó hiển thị kết quả lên màn hình. Bài tập này giúp người học làm quen với thao tác phân tách và cộng các chữ số trong số nguyên.
Ví dụ:
Input | Output |
23 |
5 |
#includeusing namespace std; int main() { int a; cin >> a; cout << a % 10 + a / 10; return 0; }
Bài tập C++: Vòng lặp
1. Viết chương trình nhập vào một số nguyên n, và tính tổng các số lẻ từ 1 đến n. Đây là bài tập giúp bạn làm quen với việc sử dụng vòng lặp để xử lý các dãy số theo yêu cầu.
Ví dụ:
Input | Output |
3 |
4 |
#includeusing namespace std; int main() { int n, s = 0; cin >> n; for (int i = 1; i <= n; i = i + 2) { s = s + i; } cout << s; return 0; }
2. Viết chương trình nhập vào một số nguyên n và tính giá trị giai thừa của n (n!). Bài tập này giúp bạn thực hành với các phép toán và vòng lặp để tính toán giá trị của giai thừa.
Ví dụ:
Input | Output |
3 |
6 |
#includeusing namespace std; int main() { int n, giaithua = 1; cin >> n; for (int i = 1; i <= n; i++) { giaithua = giaithua * i; } cout << giaithua << endl; return 0; }
Bài tập C++ Kiểu tập tin
Hãy viết chương trình thực hiện các thao tác sau:
- Nhập 10 số thực vào một file văn bản có tên là INPUT.
- Đọc nội dung file INPUT.
- Tính tổng bình phương các số có trong file INPUT.
#include#include #include void write() { FILE *f = fopen("input", "wt"); // Ghi vào file văn bản 10 số thực for (int i = 1; i <= 10; i++) { float a; printf("\n Nhập số thứ %d: ", i); scanf("%f", &a); fprintf(f, "%f ", a); } fclose(f); } void read() { int i; float a; FILE *f = fopen("input", "rt"); printf("\n Nội dung tập tin là: \n\n"); do { fscanf(f, "%f", &a); if (!feof(f)) printf("%.2f ", a); } while (!feof(f)); fclose(f); } float tongbp() { int i; float tong = 0; FILE *f = fopen("input", "rt"); do { float a; fscanf(f, "%f", &a); if (!feof(f)) tong += a * a; } while (!feof(f)); fclose(f); return tong; } void main() { clrscr(); write(); read(); printf("\n Tổng bình phương là %.2f \n", tongbp()); getch(); }
Khám phá kho tài liệu bài tập C++ hấp dẫn với lời giải chi tiết tại đây.
bai-tap-c-hay-co-loi-giai.rar
Bài viết này đã tổng hợp một loạt bài tập C++ thú vị cùng các lời giải, giúp các bạn có thể dễ dàng tải về và nghiên cứu mã nguồn. Hy vọng bạn sẽ tích lũy được nhiều kiến thức quý giá, từ đó phát triển thêm khả năng lập trình C++ của mình. Chúc các bạn luôn thành công và phát triển vượt bậc!
Có thể bạn quan tâm

10 địa chỉ nhậu đình đám nhất quận Cầu Giấy, Hà Nội - Bật mí điểm đến lý tưởng cho tín đồ ẩm thực

Hướng dẫn cách xóa số trang tại một trang cụ thể trong Word

Cách ngăn chim phá hoại cây đậu trong vườn hiệu quả

Top 6 Địa chỉ bán sạc dự phòng chất lượng hàng đầu tại tỉnh Bắc Ninh

Hướng dẫn chi tiết cách kết nối thiết bị Bluetooth với iPhone
