5 bài tập về câu lệnh rẽ nhánh trong C++ siêu hay có đáp án chi tiết
Để giúp các bạn làm quen hơn với câu lệnh rẽ nhánh (if else, switch case) trong ngôn ngữ lập trình C++, bài viết dưới đây sẽ chia sẻ những bài tập về câu lệnh rẽ nhánh trong C++ siêu hay. Những bài tập này đã được Isinhvien tổng hợp và chọn lọc từ nhiều nguồn khác nhau, từ cơ bản đến nâng cao, đảm bảo sẽ giúp các bạn rất nhiều trong việc thành thạo câu lệnh rẽ nhánh này đấy! Trước khi bước vào làm những bài tập này, nếu bạn chưa biết gì hay con lan man hãy tham khảo ngay bài viết về câu lệnh if else và cấu trúc switch case của Isinhvien đã nhé!
1. Kiểm tra một số nhập vào là âm hay dương
Đề bài: Nhập một số nguyên n khác 0 từ bàn phím, kiếm tra xem số n vừa nhập vào đó là số dương hay âm và in ra màn hình.
Đáp án tham khảo:
#include<iostream> using namespace std; int main() { int n; cout << "Nhap n:"; cin >> n; if(n>0) cout << n << " la so nguyen duong!"; if(n<0) cout << n << " la so nguyen am"; }
Kết quả thực thi:
Nhap n:100 100 la so nguyen duong!
Nhap n:-5 -5 la so nguyen am
2. Xếp loại một học sinh dựa vào điểm trung bình
Đề bài: Nhập điểm trung bình (dtb) của một học sinh từ bàn phím, sau đó in ra màn hình xếp loại của học sinh này.
- 8 \leqslant dtb \leqslant 10: Xếp loại Giỏi
- 6.5 \leqslant dtb < 8: Xếp loại Khá
- 5 \leqslant dtb < 6.5: Xếp loại Trung bình
- 0 \leqslant dtb < 5: Xếp loại Yếu
Đáp án:
#include<iostream> #include<math.h> using namespace std; int main() { double dtb; cout << "Nhap diem trung binh: "; cin >> dtb; if(dtb>=8 && dtb<=10) cout << "Xep loai Gioi"; else if(dtb<8 && dtb >=6.5) cout <<"Xep loai Kha"; else if(dtb<6.5 && dtb>=5) cout << "Xep loai Trung binh"; else cout << "Xep loai Yeu"; }
Kết quả thực thi:
Nhap diem trung binh: 7 Xep loai Kha
3. Giải phương trình bậc 2
Đề bài: Nhập vào lần lượt 3 hệ số a. b. c của phương trình bậc 2 (ax^2+bx+c). Giải phương trình bậc 2 trên và in kết quả ra màn hình.
Đáp án:
#include <iostream> #include <math.h> using namespace std; int main() { float a,b,c,d,x1,x2; cout << "Nhap ba he so a, b, c tuong ung la: " << endl; cin>>a>>b>>c; if(!a){ if(!b) cout << "Ca a va b khong the cung bang 0 trong phuong trinh ax^2 + bx + c = 0" << "\n"; else { d=-c/b; cout << "Phuong trinh co nghiem duy nhat : " << d << endl; } } else { d=b*b-4*a*c; if(d>0) { x1=(-b+sqrt(d))/(2*a); x2=(-b-sqrt(d))/(2*a); cout << "Nghiem thu nhat x1 = " << x1 << endl; cout << "Nghiem thu hai x2 = " << x2 << endl; } else if (d==0) cout << "Phuong trinh co nghiem duy nhat: " << -b/(2*a); else cout << "Phuong trinh vo nghiem."; } return 0; }
Kết quả thực thi:
Nhap ba he so a, b, c tuong ung la:
2
7
-9
Nghiem thu nhat x1 = 1
Nghiem thu hai x2 = -4.5
Nhap ba he so a, b, c tuong ung la: 1 2 3 Phuong trinh vo nghiem.
4. Bài toán kinh điển gà chó
Đề bài:
“Vừa gà vừa chó,
Bó lại cho tròn,
Ba mươi sáu con,
Một trăm chân chẵn”
Bài toán trên có số gà là 22, số chó là 14. Từ đó, hãy viết chương trình nhập vào tổng số con và tổng số chânn . Hãy in ra màn hình số gà và chó, nếu số liệu không hợp lệ, in không thõa mãn.
Đáp án:
#include <iostream> #include <math.h> using namespace std; int main() { int socon, sochan; cout << "Nhap so con: "; cin >> socon; cout << "Nhap so chan: "; cin >> sochan; if((sochan-2*socon) %2 !=0) cout << "So lieu khong hop le"; else { cout << "So cho la: " << (sochan-2*socon)/2 << endl; cout << "So ga la: " << socon - (sochan-2*socon)/2 ; } return 0; }
Kết quả thực thi:
Nhap so con: 36 Nhap so chan: 100 So cho la: 14 So ga la: 22
5. Đi tìm ngày mai và ngày hôm qua
Đề bài: Lần lượt nhập vào ngày tháng năm, in ra ngày hôm sau và ngày hôm qua của ngày vừa nhập.
Đáp án:
#include<iostream> #include<math.h> using namespace std; int main() { int day, month, year, tg, day1, month1, year1; cout<<"Nhap vao ngay: "; cin>>day; day1=day; cout<<"Nhap vao thang: "; cin>>month; month1=month; cout<<"Nhap vao nam: "; cin>>year; year1=year; switch(month) { case 4: case 6: case 9: case 11: tg = 30; break; case 2: tg = 28 + ((year%4==0 && year%100) || (year%400==0)); break; default: tg = 31; } day = (day%tg)+1; if(day==1) { month = (month%12)+1; } cout<<"Ngay mai: "<<day<<"/"<<month<<"/"<<year+(month==1 && day==1); if(day1==1) { switch(month1-1) { case 4: case 6: case 9: case 11: day1=30; break; case 2: day1=28+((year1%4==0 && year1%100) || (year1%400==0)); break; default: day1=31; } if(month1==1) { month1=12; year1--; } else { month1--; } } else { day1--; } cout<<"\nHom qua: "<<day1<<"/"<<month1<<"/"<<year1; cout<<endl; return 0; }
Kết quả thực thi:
Nhap vao ngay: 7 Nhap vao thang: 5 Nhap vao nam: 2002 Ngay mai: 8/5/2002 Hom qua: 6/5/2002
Nhap vao ngay: 31 Nhap vao thang: 12 Nhap vao nam: 2021 Ngay mai: 1/1/2022 Hom qua: 30/12/2021
Hy vọng những bài tập này sẽ giúp các bạn thành thạo hơn về sử dụng câu lệnh rẽ nhanh trong C++! Nếu thấy bài viết này của Isinhvien hay và bổ ích thì hãy chia sẻ nó đến với bạn bè của mình để ủng hộ cho Isinhvien và giúp Isinhvien ngày càng phát triển hơn nhé! Chúc các bạn thành công!