Bạn đang học C++ và muốn tìm thêm các bài tập C++ mẫu để nâng cao kiến thức? Dưới đây là một số bài tập C++ có lời giải chi tiết mà bạn không nên bỏ qua.

Dưới đây là danh sách các bài tập C++ cơ bản có đáp án. Bạn có thể tải thêm nhiều bài tập C++ hay và phức tạp hơn tại liên kết cuối bài.
Danh sách bài tập C++ về Hàm
1. Hãy tìm ước chung lớn nhất của hai số a và b
#includeusing namespace std; int ucln(int, int); 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 một chương trình để kiểm tra xem một năm có phải là năm nhuận hay không
#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 << ' là năm nhuận.\n'; else cout << n << ' không phải là năm nhuận.\n'; } while (n>1); }
Thực hành C++ với Câu lệnh điều khiển
Nhập vào một số nguyên, yêu cầu xuất ra chữ số hàng trăm của số đó. Nếu không có, thì xuất ra 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; }
Thực hành C++ với Chuỗi ký tự
1. Viết chương trình loại bỏ ký tự a trong một chuỗi
#include#include #include void main() { int i,j; char x[80]; cout<<' nhậ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<<' Chuỗi ký tự sau khi loại bỏ ký tự a là:'; puts(x); getch(); }
2. Viết chương trình trích chuỗi con bên trái của một chuỗi
#include <iostream> #include <conio.h>
#include <stdio.h> void main()
{
clrscr();
char ten[25], *tentro; tentro=ten;
int i,sokytu;
cout<<'\n Nhập vào 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();
}Thực hành C++ với Mảng và con trỏ
1. Tìm số nhỏ nhất và lớn nhất trong mảng
#include <iostream>
using 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 << 'Giá trị nhỏ nhất:' << minval << endl;
cout << 'Giá trị lớn nhất:' << maxval << endl;
return 0;
}2. Viết chương trình nhập một ma trận thực kích thước không vượt quá 20x20 và tìm giá trị lớn nhất trong các phần tử của ma trận
#include <conio.h> #include <stdio.h> void main()
{
float a[20][20],smax; int m,n,i,j,imax,jmax; clrscr();
puts('Nhập vào 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\nMa 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\nPhần tử lớn nhất:'); printf('\n Có giá trị=%6.1f', smax); getch();
}
Thực hành C++ với Nhập xuất dữ liệu
1. Nhập vào một ký tự, yêu cầu xuất ra mã ASCII của ký tự đó
Ví dụ:
| Input | Output |
A |
65 |
#include <iostream>
using namespace std;
int main()
{
char m;
cin >> m;
cout << int(m);
return 0;
}2. Nhập vào một số có 2 chữ số, yêu cầu xuất ra tổng các chữ số của nó ra màn hình
Ví dụ:
| Input | Output |
23 |
5 |
#include <iostream>
using namespace std;
int main()
{
int a;
cin >> a;
cout << a%10 + a/10;
return 0;
}Thực hành C++ với Vòng lặp
1. Nhập một số nguyên n, xuất tổng các số lẻ từ 1 đến n
Ví dụ:
| Input | Output |
3 |
4 |
#include <iostream>
using 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. Nhập vào 1 số nguyên n, xuất ra n!
Ví dụ:
| Input | Output |
3 |
6 |
#include <iostream>
using 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++ Xử lý Tập tin
Viết chương trình thực hiện các yêu cầu:
- 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 <stdio.h> #include <stdlib.h> #include <conio.h>
void write()
{FILE *f = fopen('input','wt');
/*Ghi vao file van ban 10 so thuc */
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();
}
Đây là một bộ sưu tập các bài tập C++ có lời giải hữu ích.
tai-bai-tap-cpp-co-loi-giai.rar
Trên đây là tập hợp các bài tập C++ hay kèm theo lời giải, bạn có thể tải xuống và tham khảo code. Hy vọng bạn sẽ có thêm nhiều kiến thức và thành công trong học tập!
