Tương tư như Cấu trúc IF-ELSE hôm nay chúng ta sẽ làm quen với cấu trúc Lệnh switch – case. Switch-case là một bộ lựa chọn đa hướng, nó so sánh giá trị của một biểu thức với một danh sách các hằng số nguyên hoặc hằng ký tự,…
- Lệnh switch là một bộ lựa chọn đa hướng, nó so sánh giá trị của một biểu thức với một danh sách các hằng số nguyên hoặc hằng ký tự
- Khi gặp một sự so sánh khớp, các lệnh kết hợp với hằng đó được thực thi
Điều kiện sử dụng:
– Sử dụng khi bài toán rẽ nhánh có nhiều trường hợp (thường là từ 3 trở lên) và mỗi trường hợp là một giá trị cụ thể (có kiểu giá trị số hoặc ký tự)
– Vi dụ: Nếu xếp hạng 1 bạn được thưởng 10 cuốn tập, xếp hạng 2 bạn được thưởng 8 cuốn tập, xếp hạng 3 bạn được thưởng 5 cuốn tập, xếp hạng 4 bạn được thưởng 3 cuốn tập, còn lại bạn không được thưởng.
– Vi dụ: Nếu xếp hạng 1 bạn được thưởng 10 cuốn tập, xếp hạng 2 bạn được thưởng 8 cuốn tập, xếp hạng 3 bạn được thưởng 5 cuốn tập, xếp hạng 4 bạn được thưởng 3 cuốn tập, còn lại bạn không được thưởng.
Hạng 1: 10 cuốn tập
Hạng 2: 8 cuốn tập
Hạng 3: 5 cuốn tập
Hạng 4: 3 cuốn tập
Còn lại: 0 cuốn tập
Hạng 2: 8 cuốn tập
Hạng 3: 5 cuốn tập
Hạng 4: 3 cuốn tập
Còn lại: 0 cuốn tập
Cú pháp:
switch (expression)
{
{
case constant1:
block of instructions 1
break;
case constant2:
block of instructions 2
break;
.
.
.
default:
default block of instructions
block of instructions 1
break;
case constant2:
block of instructions 2
break;
.
.
.
default:
default block of instructions
}
Chi tiết hơn
- Ví dụ:
- Mỗi trường hợp (case) trong câu lệnh switch phải kết thúc bằng lệnh break.
- Kiểu trả về của <biểu thức> trong câu lệnh switch phải có cùng kiểu với các <gia tri1>, <gia tri 2>,…
- Cần xác định đúng biểu thức rẽ nhánh trong câu lệnh switch…case. Biểu thức rẽ nhánh là biểu thức có thể nhận các giá trị khác nhau nhưng trong mỗi trường hợp chỉ nhận 1 giá trị duy nhất. Biểu thức có thể là một biến.
Ví dụ 1: Chương trình kiểm tra một ký tự thường được nhập vào là một nguyên âm, là ký tự ‘z’ hay là một phụ âm.
#include <stdio.h> #include <conio.h> void main () { char ch; printf ("\n Nhap vao mot chu cai (a - z) : "); scanf("%c", &ch); if (ch < 'a' || ch > 'z') printf("\n chu cai ban nhap vao khong hop le"); else switch (ch) { case 'a' : case 'e' : case 'i' : case 'o' : case 'u' : printf("\nKy tu ban nhap la mot nguyen am"); break; case 'z' : printf ("\nban da nhap vao ky tu z"); break; default : printf("\nKy tu ban nhat vao khong phai la nguyen am"); break; } getch(); }
cho em hỏi là mình có thể sử dụng kết quả của 2 case khác nhau thành 1 case mới được không ạ? Ví dụ: case 1 là kết quả của hình vuông, case 2 là kết quả của hình tròn. tạo thêm case 3 là tổng kết quả của hình vuông và hình tròn được không ạ? em xin cảm ơn
Cho em hỏi là mình có thể dựa vào 2 case khác nhau tạo thành case thứ 3 liên quan đến kết quả của 2 case gốc không ạ? Ví dụ: case 1: kết quả hình vuông, case 2: kết quả hình tròn. tạo thêm case 3: tổng kết quả hình vuông với hình tròn. em xin cảm ơn ạ!