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.
Switch trong C cho phép một biến được kiểm tra xem giá trị của nó có bằng một giá trị trong một danh sách hay không. Mỗi giá trị được gọi là một trường hợp (case).Cách hoạt động của switch case đó là sẽ so sánh lần lượt giá trị của bieu_thuc bên trong switch với giá trị của các biến trong các case là gia_tri_1, gia_tri_2, ... gia_tri_n. Nếu giá trị của bieu_thuc 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 bieu_thuc 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.
Cú pháp
switch (bieu_thuc) {
case gia_tri_1:
// Khối lệnh 1
break; //tùy chọn
case gia_tri_2:
// Khối lệnh 2
break; //tùy chọn
......
case gia_tri_n:
// Khối lệnh n
break; //tùy chọn
default:
// Khối lệnh này được thực thi
// nếu tất cả các điều kiện trên không thỏa mãn
}
Lưu ý:
- Biểu thức được sử dụng trong mệnh đề switch phải là một số nguyên, kiểu char, hoặc kiểu enum, hoặc kiểu lớp có một hàm chuyển đổi duy nhất thành một số nguyên hoặc kiểu enum.
- Bạn có thể khai báo bất kỳ số lượng lệnh case bên trong một switch. Đẳng sau từ khóa case là một giá trị được sử dụng để so sánh và một dấu hai chấm (:).
- Biểu thức hằng số cho một case phải giống kiểu dữ liệu như biến trong switch và nó phải là một hẳng số hoặc một chuỗi.
- Khi gặp case có giá trị phù hợp các câu lệnh sau đó được thực hiện cho tới khi gặp lệnh break.
- 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.
- Một câu lệnh switch có thể có một trường hợp mặc định (default) tùy chọn, nó được khai báo ở cuối switch. Case mặc định có thể được sử dụng để thực hiện tác vụ khi không có case nào đúng. Không cần khai báo break trong case mặc định.
Chúng ta sẽ thử với chương trình tào lao.
Ta sẽ thử với biến so5 đã có sẵn trong chương trình. Bạn thêm switch case như sau:switch(so5){
case 1:
printf("MOT\n");
break;
case 2:
printf("HAI\n");
break;
case 3:
printf("BA\n");
break;
case 4:
printf("BON\n");
break;
//Neu n khong phai la 1, 2, 3, 4
default:
printf("MACDINH\n");
}
Bấm Run để chạy chương trình, vì biến so5 bằng 2 nên chương trinh đã in ra từ HAI:
Chương trình tào lao, mặc dù toàn làm mấy việc...tào lao nhưng nhìn rất hoành tráng như sau:
/* Đây là chương trình tào lao */
#include <stdio.h>
#include <math.h>
int main()
{
int so = 2024; // Đây là biến số
char namtoi[] = "Năm 2025"; // Đây là biến chuỗi
float a = 8.3462326543;
double b = 10.8745634535333;
int n;
char Ten;
int soTien;
int soNam;
int tongSoTien;
int x = 15 < 25 ? 100 : 200;
int diBien1= (10 < 20) && (20 >= 20);
int diBien2= (10 > 20) || (20 < 10);
so +=10;
long long so2 = so;
float so3 = 35.82;
int so4 = (int)so3 + 1;
int so5 = 2, so6 = 10;
printf("Xin Chào ! \n");
printf("Rất vui gặp bạn!");
printf("Năm nay là %d \n", so);
printf("Năm tới là %s", namtoi);
printf("In 4 chữ số sau dấu phẩy : %.4f\n", a);
printf("In 5 chữ số sau dấu phẩy : %.5lf\n", b);
printf("Hãy nhập một số từ 1-100: ");
scanf("%d", &n);
printf("Gía trị của n là : %d\n", n);
printf("Nhap tên của bạn, chỉ một chữ A,B,C : ");
scanf(" %c", &Ten);
printf("Tên bạn là : %c\n", Ten);
printf("Hãy nhập số tiền gửi hàng tháng: ");
scanf("%d", &soTien);
printf("Hãy nhập tổng số năm đã tiết kiệm: ");
scanf("%d", &soNam);
tongSoTien = (soTien * 12) * soNam;
printf("Xin chào: %c, sau %d nam kien tri tich luy, ban da kiem đươc %d .Xin chuc mung ban!", Ten, soNam, tongSoTien);
printf("%d\n", x);
printf("%d, %d\n", diBien1,diBien2);
printf("%d ", 100 > 50);
printf("%d ", 20 <= 30);
printf("%d ", 80 >= 100);
printf("Gia tri cua bien so2 là %lld \n", so2);
printf("Gia trị so4 là %d \n", so4);
printf("%d ", (int)pow(so5, so6));
printf("Gia trị so3 ceil là %f \n", ceil(so3));
printf("Gia trị so3 floor là %f \n", floor(so3));
if (so % 2 == 0) {
printf("Bien so la so chan.");
} else {
printf("Bien so la so le.");
}
if (soTien < 0 || soTien >= 1000000) {
printf("Ban nen nhap so tu 1 den 1000000");
} else if (soTien > 0 && soTien < 700000) {
printf("Ban gui ít qua");
} else if (soTien >= 700000 && soTien < 800000) {
printf("Ban gui o muc trung binh");
} else if (soTien >= 800000 && soTien < 900000) {
printf("Ban gui tương doi nhieu");
} else if (soTien >= 900000 && soTien <= 1000000) {
printf("Ban gui nhieu qua!");
}
switch(so5){
case 1:
printf("MOT\n");
break;
case 2:
printf("HAI\n");
break;
case 3:
printf("BA\n");
break;
case 4:
printf("BON\n");
break;
//Neu n khong phai la 1, 2, 3, 4
default:
printf("MACDINH\n");
}
return 0;
}
Không có nhận xét nào:
Đăng nhận xét