Xem thêm

Bài tập C++ có lời giải (code mẫu)

Huy Erick
Code C++ có rất nhiều điều bạn cần học và nên thực hành chăm chỉ. Những bài tập C++ kèm đáp án dưới đây sẽ giúp bạn sử dụng ngôn ngữ lập trình này dễ dàng hơn. Dù code và...

Code C++ có rất nhiều điều bạn cần học và nên thực hành chăm chỉ. Những bài tập C++ kèm đáp án dưới đây sẽ giúp bạn sử dụng ngôn ngữ lập trình này dễ dàng hơn.

Dù code và cú pháp cơ bản ở ngôn ngữ lập trình C và C++ giống nhau. Tuy nhiên, là một ngôn ngữ lập trình ở cấp độ trung, C++ có lợi thế trong việc lập trình các ứng dụng cấp thấp và cấp cao hơn.

Điểm nổi bật của các chương trình C++

  • C++ là một ngôn ngữ đơn giản. Các chương trình được chia thành những đơn vị và các phần logic. Nó cũng hỗ trợ thư viện phong phú cùng nhiều kiểu dữ liệu khác nhau.
  • C++ không phải nền tảng độc lập như các chương trình được tạo trên Linux mà có thể không chạy trên Windows.
  • Với ngôn ngữ C++, bạn có thể phát triển các ứng dụng quy mô lớn cũng như lập trình hệ thống.
  • Nó có sẵn một thư viện thuật toán cấu trúc dữ liệu, bao gồm cả thư viện bên thứ ba để phát triển ứng dụng thật nhanh.
  • Trong C++, không có chi phí xử lý bổ sung như thu gom rác, nhập dữ liệu linh động…
  • Hỗ trợ con trỏ để người dùng có thể trực tiếp thao tác trên địa chỉ lưu trữ.

Bên cạnh các bài tập Python, Java, Quản Trị Mạng cũng tổng hợp cho các bạn một số bài tập C++ cơ bản để luyện tập thêm trong quá trình học ngôn ngữ lập trình C++.

Danh mục bài tập C++ này được chia thành 9 phần, mỗi phần có từ 3 đến 5 bài, với cấp độ khó tăng dần. Ban đầu bạn sẽ "khởi động" với những bài tập C++ hết sức cơ bản, như mô phỏng phép nhân tay, in số tiền, kiểm tra một bộ 3 số xem có phải là cạnh của một tam giác không, tính chu vi, diện tích tam giác đó.

Dần dần sẽ là những bài khó hơn như tạo và quản lý danh sách sinh viên, tài liệu, in hoặc thực hiện các công việc khác theo yêu cầu của đề bài. Thậm chí là vẽ cả đồ thị của hàm lượng giác.

Bài tập C++ số 1

Câu 1: Mô phỏng phép nhân tay

Lập trình in ra màn hình mô phỏng phép nhân tay 2 số nguyên dương có 3 chữ số nhập từ bàn phím. Ví dụ với 2 số nhập vào là 763 và 589 thì phải in ra màn hình như sau:

Bài tập C++ số 1

Code mẫu:

#include #include  void main () {     int a, b;     char dv, chuc, tram;     clrscr ();     printf ("Nhap so bi nhan co 3 chu so a=");     scanf ("%d", &a);     printf ("Nhap so nhan co 3 chu so b=");     scanf ("%d", &b);     dv = b % 10;     chuc = b % 100 / 10;     tram = b / 100;     printf ("Mo phong phep nhan tayn");     printf ("%20dn", a);     printf ("%15c%5dn", 'x', b);     printf ("%20sn", "-");     printf ("%20dn", a * dv);     printf ("%19dn", a * chuc);     printf ("%18dn", a * tram);     printf ("%20sn", "-");     printf ("%20ldn", long (a) * b);     getch (); }

Câu 2: Nhập số tiền, in số tờ, mệnh giá

Một người cần rút một số tiền T từ ngân hàng và muốn tổng số tờ ít nhất. Cho biết có các loại tiền mệnh giá 100, 20, 5 và 1. Nhập từ bàn phím số tiền T và in ra số tờ mỗi loại mệnh giá và tổng số tờ nhận được.

Code mẫu:

#include  #include   void main () {     int t, t100, t20, t5;     clrscr ();     printf ("Nhap so tien t=");     scanf ("%d", &t);     t100 = t / 100;     t -= 100 * t100;     t20 = t / 20;     t -= 20 * t20;     t5 = t / 5;     t -= 5 * t5;     printf ("So to cac loai menh gia la :n");     printf ("Loai 100 : %dn", t100);     printf ("Loai 20 : %dn", t20);     printf ("Loai 5 : %dn", t5);     printf ("Loai 1 : %dn", t);     printf ("Tong so to cac loai la : %dn", t + t5 + t20 + t100);     getch (); }

Câu 3: Đổi số sang số La Mã

Hãy lập trình nhập 1 số nguyên dương nhỏ hơn 1000 và đổi sang số La mã tương ứng, in kết quả ra màn hình.

Code mẫu:

#include  #include   void main() {     int n, dv, ch, tr;     clrscr();     cout << "Nhap so nguyen duong < 1000 :";     cin >> n;     cout << "So " << n << " doi sang so La ma la :";     tr = n / 100;     n = n % 100;     ch = n / 10;     dv = n % 10;     switch (tr) {         case 1: cout << "C"; break;         case 2: cout << "CC"; break;         case 3: cout << "CCC"; break;         case 4: cout << "CD"; break;         case 5: cout << "D"; break;         case 6: cout << "DC"; break;         case 7: cout << "DCC"; break;         case 8: cout << "DCCC"; break;         case 9: cout << "CM";     }     switch (ch) {         case 1: cout << "X"; break;         case 2: cout << "XX"; break;         case 3: cout << "XXX"; break;         case 4: cout << "XL"; break;         case 5: cout << "L"; break;         case 6: cout << "LX"; break;         case 7: cout << "LXX"; break;         case 8: cout << "LXXX"; break;         case 9: cout << "XC";     }     switch (dv) {         case 1: cout << "I"; break;         case 2: cout << "II"; break;         case 3: cout << "III"; break;         case 4: cout << "IV"; break;         case 5: cout << "V"; break;         case 6: cout << "VI"; break;         case 7: cout << "VII"; break;         case 8: cout << "VIII"; break;         case 9: cout << "IX";     }     getch(); }

Câu 4: In cách đọc số

In ra màn hình cách đọc một số nguyên dương nhỏ hơn 1000000. Ví dụ số 726503 đọc là: bảy mươi hai vạn sáu ngàn năm trăm linh ba.

Code mẫu:

#include  #include   void main() {     char doc[9][5] = { "mot", "hai", "ba", "bon", "nam", "sau", "bay", "tam", "chin" };     int van, ngan, tram, chuc, donvi, chv, dv;     long so;     clrscr();     cout << "Nhap so nguyen duong < 1000000 can doc = ";     cin >> so;     cout << "Cach doc so " << so << " la:n";     van = so / 10000;     ngan = so / 1000 % 10;     tram = so / 100 % 10;     chuc = so / 10 % 10;     donvi = so % 10;     if (van) {         chv = van / 10;         dv = van % 10;         if (chv == 1) cout << "muoi ";         else if (chv > 1) cout << doc[chv - 1] << " muoi ";         if (dv) cout << doc[dv - 1];         cout << " van ";     }     if ((ngan == 0) && van) cout << "khong ngan ";     else if (ngan) cout << doc[ngan - 1] << " ngan ";     if ((tram == 0) && (van || ngan)) cout << "khong tram ";     else if (tram) cout << doc[tram - 1] << " tram ";     if ((chuc == 0) && donvi && (van || ngan || tram)) cout << "le ";     else if (chuc == 1) cout << "muoi ";     else cout << doc[chuc - 1] << " muoi ";     if (donvi) cout << doc[donvi - 1];     getch(); }

Câu 5: Giải phương trình bậc hai

Lập trình giải phương trình ax2 + bx + c = 0, các hệ số thực a, b, c nhập từ bàn phím.

Code mẫu:

#include  #include  #include   void main() {     float a, b, c, d;     clrscr();     printf("Nhap cac he so a, b, c : ");     scanf("%f%f%f", &a, &b, &c);     if (a) {         d = b * b - 4 * a * c;         if (d < 0) printf("Vo nghiem !");         if (d == 0) printf("Nghiem kep x=%4.2f", -0.5 * b / a);         if (d > 0) {             printf("Hai nghiem phan biet :n");             printf("x1=%4.2fn", 0.5 * (-b - sqrt(d)) / a);             printf("x2=%4.2fn", 0.5 * (-b + sqrt(d)) / a);         }     }     else if (b) printf("Mot nghiem x=%4.2f", -c / b);     else if (c) printf("Vo nghiem !");     else printf("Vo so nghiem !");     getch(); }

Bài tập C++ số 2

Câu 1: Kiểm tra 3 số có phải cạnh tam giác không, nếu có là loại tam giác nào, tính chu vi, diện tích

Nhập 3 số thực a, b, c và kiểm tra 3 số đó có phải là 3 cạnh của 1 tam giác không? Nếu là 3 cạnh tam giác thì cho biết là tam giác nào trong các loại tam giác sau: đều, vuông cân, vuông, cân, thường và tính chu vi, diện tích của tam giác đó. In kết quả ra màn hình.

Code mẫu:

#include  #include  #include   void main() {     float a, b, c, p, s;     int deu, vuong, can;     clrscr();     printf("Nhap cac so thuc a, b, c : ");     scanf("%f%f%f", &a, &b, &c);     if (a + b > c && a + c > b && b + c > a) {         printf("La ba canh mot tam giac ");         deu = (a == b) && (b == c);         vuong = (a * a + b * b == c * c) || (a * a + c * c == b * b) || (b * b + c * c == a * a);         can = (a == b) || (a == c) || (b == c);         if (deu) printf("deun");         else if (vuong && can) printf("vuong cann");         else if (vuong) printf("vuongn");         else if (can) printf("cann");         else printf("thuongn");         p = (a + b + c) / 2;         printf("Chu vi = %4.2f, Dien tich = %4.2f", 2 * p, sqrt(p * (p - a) * (p - b) * (p - c)));     }     else printf("Khong phai la ba canh mot tam giacn");     getch(); }

Câu 2: Tính số năm cần gửi tiết kiệm

Một người cần có một số tiền T, tích lũy bằng cách gửi tiết kiệm số tiền ban đầu là S với lãi suất có kỳ hạn theo năm là P% theo phương thức lũy tiến (lãi của mỗi năm được cộng vào với tiền gốc). Hãy nhập vào các số thực T, S, P và xác định số năm cần gửi tiết kiệm.

Code mẫu:

#include  #include   void main() {     float s, t, p;     int n;     clrscr();     printf("Nhap so tien ban dau : ");     scanf("%f", &s);     printf("Nhap so tien can co : ");     scanf("%f", &t);     printf("Nhap lai suat %% nam : ");     scanf("%f", &p);     for (p = 0.01 * p, n = 0; s < t; s += s * p, n++);     printf("So nam can gui tiet kiem = %dn", n);     printf("Sau %d nam gui tiet kiem, so tien co la : %4.2fn", n, s);     getch(); }

Câu 3: In số PI tính được với sai số cho trước

Lập trình tính số PI với sai số eps cho trước nhập từ bàn phím. Biết rằng số PI tính theo công thức: PI = 4 - 4/3 + 4/5 - 4/7 +... tính tổng các số hạng có giá trị không nhỏ hơn eps. In ra số PI tính được và số PI của Turbo C++ với 10 chữ số thập phân để so sánh.

Code mẫu:

#include  #include  #include   void main() {     float pi, t, n, eps, dau;     clrscr();     printf("Nhap sai so eps=");     scanf("%f", &eps);     pi = 0;     t = 4;     n = dau = 1;     do {         pi += dau * t;         n = n + 2;         dau = -dau;         t = 4 / n;     } while (t >= eps);     printf("So PI tinh duoc voi sai so %12.10f, PI=%12.10fn", eps, pi);     printf("So PI cua Turbo C++, PI=%12.10fn", M_PI);     getch(); }

Câu 4: Tìm và in số hoàn hảo

Tìm và in ra màn hình tất cả các số hoàn hảo không vượt quá số n cho trước nhập từ bàn phím. Số hoàn hảo là số bằng tổng các ước số của nó không kể ước số là chính số đó. Ví dụ số 6 là số hoàn hảo vì 6=1+2+3.

Code mẫu:

#include  #include   void main() {     int n, i, j, s, ts;     clrscr();     printf("Nhap n=");     scanf("%d", &n);     printf("Cac so hoan hao khong vuot qua %d la :n", n);     for (ts = 0, i = 2; i <= n; i++) {         s = 1;         for (j = 2; j <= i / 2; j++) {             if (i % j == 0) {                 s += j;             }         }         if (s == i) {             ts++;             printf("%d = 1", i);             for (j = 2; j <= i / 2; j++) {                 if (i % j == 0) {                     printf(" + %d", j);                 }             }             printf("n");         }     }     if (ts) printf("Co tat ca %d so hoan haon", ts);     else printf("Khong co so hoan hao naon");     getch(); }

Câu 5: Tìm và in các số nguyên tố nhỏ hơn n

Tìm và in ra màn hình tất cả các số nguyên tố không vượt qua số n cho trước nhập từ bàn phím. Số nguyên tố là số chỉ có ước số là 1 và chính số đó.

Code mẫu:

#include  #include   void main() {     int n, i, j, d;     clrscr();     printf("Nhap gia tri N : ");     scanf("%d", &n);     printf("Cac so nguyen to khong vuot qua %d la :n", n);     for (d = 0, i = 2; i <= n; i++) {         for (j = 2; j <= i / 2; j++) {             if (i % j == 0) {                 break;             }         }         if (j == i / 2 + 1) {             d++;             printf(" %d", i);         }     }     printf("nTong so co %d so nguyen ton", d);     getch(); }
1