Cấu trúc switch
trong C++ được sử dụng để thực hiện một trong số nhiều hành động dựa trên giá trị của một biến. Dưới đây là cấu trúc cơ bản của switch case
:
switch (biến) {
case giá_trị_1:
// các câu lệnh
break;
case giá_trị_2:
// các câu lệnh
break;
...
default:
// các câu lệnh mặc định
}
Ví dụ cụ thể:
Giả sử chúng ta muốn in ra tên của một ngày trong tuần dựa trên một số nguyên (1 đến 7), chúng ta có thể sử dụng switch case
như sau:
#include <iostream>
using namespace std;
int main() {
int day = 4;
switch (day) {
case 1:
cout << "Monday" << endl;
break;
case 2:
cout << "Tuesday" << endl;
break;
case 3:
cout << "Wednesday" << endl;
break;
case 4:
cout << "Thursday" << endl;
break;
case 5:
cout << "Friday" << endl;
break;
case 6:
cout << "Saturday" << endl;
break;
case 7:
cout << "Sunday" << endl;
break;
default:
cout << "Invalid day" << endl;
break;
}
return 0;
}
Giải thích:
switch (day)
: kiểm tra giá trị của biếnday
.case 1:
đếncase 7:
: tương ứng với các giá trị cụ thể mà biếnday
có thể nhận.break;
: được sử dụng để thoát khỏiswitch
sau khi thực hiện các câu lệnh tương ứng với giá trị được so khớp. Nếu không cóbreak
, chương trình sẽ tiếp tục thực hiện các câu lệnh trong cáccase
tiếp theo (hiện tượng gọi là “fall-through”).default:
: được thực hiện nếu không cócase
nào khớp với giá trị của biếnday
.
Đó là cấu trúc cơ bản và ví dụ về cách sử dụng switch case
trong C++.
Bài tập thực hành
Chương trình máy tính
Viết chương trình nhập vào lựa chọn (+, -, *, /) và 2 số nguyên từ bàn phím. Tính và hiển thị kết quả phụ thuộc vào lựa chọn như sau:
- Lựa chọn là
'+'
thì cộng hai số nguyên vừa nhập. - Lựa chọn là
'-'
thì trừ hai số nguyên vừa nhập. - Lựa chọn là
'*'
thì nhân hai số nguyên vừa nhập. - Lựa chọn là
'/'
thì chia hai số nguyên vừa nhập. - Nếu lựa chọn không hợp lệ thì hiển thị là
"Lua chon khong hop le"
.
Ví dụ:
- Đầu vào:
+
1
2
- Đầu ra:
Ket qua: 3
Giải:
#include <iostream>
int main()
{
char lua_chon;
int a, b;
std::cin >> lua_chon;
std::cin >> a >> b;
// Viết code ở đây
switch(lua_chon){
case '+':
std::cout << "Ket qua: " << a + b << std::endl;
break;
case '-':
std::cout << "Ket qua: " << a - b << std::endl;
break;
case '*':
std::cout << "Ket qua: " << a * b << std::endl;
break;
case '/':
std::cout << "Ket qua: " << a / b << std::endl;
break;
default:
std::cout << "Lua chon khong hop le" << std::endl;
break;
}
return 0;
}
Tính số ngày của 1 tháng
Viết chương trình nhập vào tháng và in ra màn hình tổng số ngày trong tháng đó, nếu tháng nhập vào nhỏ hơn 1 hoặc lớn hơn 12 thì hiển thị ra là "Thang khong hop le"
.
Lưu ý: bỏ qua trường hợp năm nhuận, mặc định tháng 2 có 28 ngày.
Ví dụ:
- Đầu vào:
2
- Đầu ra:
Thang 2 co 28 ngay
Giải:
#include <iostream>
int main()
{
int month;
std::cin >> month;
// Viết code ở đây
switch(month){
case 1:
std::cout << "Thang 1 co 31 ngay" << std::endl;
break;
case 2:
std::cout << "Thang 2 co 28 ngay" << std::endl;
break;
case 3:
std::cout << "Thang 3 co 31 ngay" << std::endl;
break;
case 4:
std::cout << "Thang 4 co 30 ngay" << std::endl;
break;
case 5:
std::cout << "Thang 5 co 31 ngay" << std::endl;
break;
case 6:
std::cout << "Thang 6 co 30 ngay" << std::endl;
break;
case 7:
std::cout << "Thang 7 co 31 ngay" << std::endl;
break;
case 8:
std::cout << "Thang 8 co 31 ngay" << std::endl;
break;
case 9:
std::cout << "Thang 9 co 30 ngay" << std::endl;
break;
case 10:
std::cout << "Thang 10 co 31 ngay" << std::endl;
break;
case 11:
std::cout << "Thang 11 co 30 ngay" << std::endl;
break;
case 12:
std::cout << "Thang 12 co 31 ngay" << std::endl;
break;
default:
std::cout << "Thang khong hop le" << std::endl;
}
return 0;
}
Tính số ngày của 1 tháng #2
Viết chương trình nhập vào lần lượt năm và tháng sau đó hiển thị ra màn hình tổng số ngày trong tháng đó (nếu tháng nhỏ hơn 1 hoặc lớn hơn 12 thì hiển thị là "Thang khong hop le"
).
Lưu ý: tháng 2 của năm nhuận có 29 ngày.
Ví dụ:
- Đầu vào:
1992
2
- Đầu ra:
Thang 2 nam 1992 co 29 ngay
Giải:
#include <iostream>
int main()
{
int year, month;
std::cin >> year >> month;
// Viết code ở đây
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
std::cout << "Thang " << month << " nam " << year << " co 31 ngay" << std::endl;
break;
case 4:
case 6:
case 9:
case 11:
std::cout << "Thang " << month << " nam " << year << " co 30 ngay" << std::endl;
break;
case 2:
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
std::cout << "Thang " << month << " nam " << year << " co 29 ngay" << std::endl;
}
else{
std::cout << "Thang " << month << " nam " << year << " co 28 ngay" << std::endl;
}
break;
default:
std::cout << "Thang khong hop le" << std::endl;
}
return 0;
}