Trong bài học này chúng ta học thêm một cấu trúc rẽ nhánh nữa có phần ngắn gọn hơn so với if và else if đó là switch case.
1. Switch Case
Switch case sử dụng tương đối giống if và else if, nó cũng giúp bạn có thể kiểm tra nhiều điều kiện để thực hiện các rẽ nhánh khác nhau.
Cú pháp :
case c1:
//code
break;
case c2:
//code
break;
.... case cn:
//code
break;
default:
//code
}
Cách hoạt động của switch case đó là sẽ so sánh lần lượt giá trị của value bên trong switch với giá trị của các biến trong các case là c1, c2, ... cn. Nếu giá trị của value bằng giá trị của case nào thì khối lệnh bên trong case đó sẽ được thực hiện.
Nếu giá trị của value không bằng bất cứ giá trị nào trong các case thì khối lệnh trong default sẽ được thực hiện, default trong switch case tương tự như else trong if else bạn đã học ở bài trước.
Ví dụ 1:
using namespace std;
int main() {
int n = 3;
switch(n) {
case 1:
cout << "ONE\n";
break;
case 2:
cout << "TWO\n";
break;
case 3:
cout << "THREE\n";
break;
case 4:
cout << "FOUR\n";
break;
//Neu n khong phai la 1, 2, 3, 4
default:
cout << "DEFAULT\n";
}
}
Output :
Chú ý : Các câu lệnh bên trong case sẽ được kết thúc bởi câu lệnh break. Nếu không có câu lệnh break thì khi code trong nhánh nào được thực hiện, switch case sẽ không kết thúc ngay như else if mà sẽ thực hiện luôn các câu lệnh trong các rẽ nhánh bên dưới.
Ví dụ 2 :
using namespace std;
int main() {
int n = 2;
switch(n) {
case 1:
cout << "ONE\n";
case 2:
cout << "TWO\n";
case 3:
cout << "THREE\n";
case 4:
cout << "FOUR\n";
//Neu n khong phai la 1, 2, 3, 4
default:
cout << "DEFAULT\n";
}
}
Output :
Ví dụ 3 : Nhập vào toán tử +, -, *, / và in ra kết quả tương ứng với 2 số a, b
using namespace std;
int main() {
int a = 20, b = 5;
char op; cin >> op;
switch(op) {
case '+':
cout << a + b << endl;
break;
case '-':
cout << a - b << endl;
break;
case '*':
cout << a * b << endl;
break;
case '/':
cout << a / b << endl;
break;
default:
cout << "INVALID INPUT" << endl;
}
}
Ví dụ 4 : Nhập tháng và năm in ra số ngày của tháng, chú ý tháng 2 của năm nhuận có 29 ngày
using namespace std;
int main() {
int m, y;
cout << "Nhap thang, nam : ";
cin >> m >> y;
switch(m) {
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10:
case 12:
cout << 31 << endl;
break;
case 4 :
case 6 :
case 9 :
case 11:
cout << 30 << endl;
break;
case 2:
if ((y % 400 == 0) && (y % 4 == 0 && y % 100 != 0)) {
cout << 29 << endl;
} else {
cout << 28 << endl;
}
break;
default:
cout << "Du lieu khong hop le !\n";
}
}