Thông báo! Chúng tôi đang cố gắng khôi phục lại các link download, các bạn vui lòng tải lại sau (dự kiến 10/12/2022 hoàn thành). Cảm ơn các bạn!

Bài 2 - Sử dụng lệnh Switch (phần 1)

TuanPi | 9.1.15 | |
. . Không có nhận xét nào:
1. Cấu trúc switch…case (switch thiếu)
Chọn thực hiện 1 trong n lệnh cho trước.
  • Cú pháp lệnh.
switch (biểu thức)
{
case giá trị 1 : lệnh 1;
break;
case giá trị 2 : lệnh 2;
break;

case giá trị n : lệnh n;
break;
}


- từ khóa switch, case, break


phải viết bằng chữ thường


- biểu thức phải là có kết quả là


giá trị hằng nguyên (char, int, long,…)


- Lệnh 1, 2…n có thể gồm nhiều lệnh, nhưng


không cần đặt trong cặp dấu { }


- Khi giá trị của biểu thức bằng giá trị i thì lệnh i


sẽ được thực hiện. Nếu sau lệnh i không có lệnh


break thì sẽ tiếp tục thực hiện lệnh i + 1…Ngược


lại thoát khỏi cấu trúc switch.


Ví dụ 1: Viết chương trình nhập vào số 1, 2, 3. In ra tương ứng 1, 2, 3 sao.

            a.Viết chương trình.
* Chuong trinh nhap vao so 1, 2, 3. In ra so sao tuong ung */
#include <stdio.h>
#include <conio.h>
void main(void)
{
int i;
printf("Nhap vao so 1, 2 hoặc 3: ");
scanf("%d", &i);
switch(i)
{
case 3: printf("*");
case 2: printf("*");
case 1: printf("*");
};
printf("An phim bat ky de ket thuc!\n");
getch();
}

b. Bàn thêm về chương trình
Trong chương trình trên khi nhập vào i = 2 lệnh printf("*") ở dòng case 2 được thi hành,
nhưng do không có lệnh break sau đó nên lệnh printf("*") ở dòng case 1 tiếp tục được thi hành. Kết
quả in ra **.

(!) Không đặt dấu chấm phẩy sau câu lệnh switch.
Ví dụ: switch(i);
(!) trình biên dịch không báo lỗi nhưng các lệnh trong switch không được thực hiện.

Hình ảnh thực tế sau khi chạy chương trình:


Ví dụ 2: Viết chương trình nhập vào tháng và in ra quý. (tháng 1 -> quý 1, tháng 10 -> quý 4)
a. Phác họa lời giải
Nhập vào giá trị tháng, kiểm tra xem tháng có hợp lệ (trong khoảng 1 đến 12). Nếu hợp lệ
in ra quý tương ứng (1->3: quý 1, 4->6: quý 2, 7->9: quý 3, 10->12: quý 4).

b. Viết chương trình.
/* Chuong trinh nhap vao thang. In ra quy tuong ung */
#include <stdio.h>
#include <conio.h>
void main(void)
{
int ithang;
printf("Nhap vao thang: ");
scanf("%d", &ithang);
if (ithang > 0 && ithang <= 12)
switch(ithang)
{
case 1:
case 2:
case 3: printf("Quy 1.\n");
break;
case 4:
case 5:
case 6: printf("Quy 2.\n");
break;
case 7:
case 8:
case 9: printf("Quy 3.\n");
break;
case 10:
case 11:
case 12:printf("Quy 4.\n");
break;
};
else
printf("Thang khong hop le.\n");
getch();
}
Hoặc cũng có thể viết như sau:
/* Chuong trinh nhap vao thang. In ra quy tuong ung */
#include <stdio.h>
#include <conio.h>
void main(void)
{
int ithang;
printf("Nhap vao thang: ");
scanf("%d", &ithang);
switch(ithang)
{
case 1: case 2: case 3 : printf("Quy 1.\n");
break;
case 4: case 5: case 6: printf("Quy 2.\n");
break;
case 7: case 8: case 9: printf("Quy 3.\n");
break;
case 10: case 11: case 12: printf("Quy 4.\n");
break;
default : printf("Ban phai nhap vao so trong khoang 1..12\n");
};
getch();
}
Hình ảnh thực tế sau khi chạy chương trình:








2. Cấu trúc switch…case…default (switch đủ)

Chọn thực hiện 1 trong n + 1 lệnh cho trước.
  •  Cú pháp lệnh
  switch (biểu thức)
{
case giá trị 1 : lệnh 1;
break;
case giá trị 2 : lệnh 2;
break;

case giá trị n : lệnh n;
break;
default : lệnh;
[break;]
}

- Từ khóa switch, case, break, default


phải viết bằng chữ thường


- Biểu thức phải là có kết quả là


giá trị nguyên (char, int, long,…)


- Lệnh 1, 2…n có thể gồm nhiều lệnh, nhưng


không cần đặt trong cặp dấu { }




>>Khi giá trị của biểu thức bằng giá trị i thì lệnh


i sẽ được thực hiện. Nếu sau lệnh i không có


lệnh break thì sẽ tiếp tục thực hiện lệnh i +


1…Ngược lại thoát khỏi cấu trúc switch. Nếu


giá trị biểu thức không trùng với bất kỳ giá trị


i nào thì lệnh tương ứng với từ khóa default


sẽ được thực hiện.


Ví dụ 3: Viết lại chương trình ở Ví dụ 1
   /* Chuong trinh nhap vao so 1, 2, 3. In ra so sao tuong ung */
   #include <stdio.h>
   #include <conio.h>
   void main(void)
   {
             int i;
             printf("Nhap vao so 1, 2 hoặc 3: ");
             scanf("%d", &i);

            switch(i)
           {
                   case 3: printf("*");
                   case 2: printf("*");
                   case 1: printf("*");
                   break;
           default: printf("Ban nhap phai nhap vao so 1, 2 hoac 3.\n");
          };
          getch();
   }

Ví dụ 4: Viết lại chương trình ở Ví dụ 2

   /* Chuong trinh nhap vao thang. In ra quy tuong ung */
   #include <stdio.h>
   #include <conio.h>
   void main(void)
   {
           int ithang;
           printf("Nhap vao thang: ");
           scanf("%d", &ithang);

          switch(ithang)
          {
              case 1: case 2: case 3 : printf("Quy 1.\n");
                                                   break;
              case 4: case 5: case 6: printf("Quy 2.\n");
                                                   break;
              case 7: case 8: case 9: printf("Quy 3.\n");
                                                   break;
              case 10: case 11: case 12: printf("Quy 4.\n");
                                                   break;
         default : printf("Ban phai nhap vao so trong khoang 1..12\n");
          };
      getch();
   }

Các bài liên quan:
Bài 1Bài 2Bài 3Bài 4
Sử dụng lệnh If (1)Sử dụng lệnh Switch (1)Sử dụng vòng lặp ForSử dụng vòng lặp While
Sử dụng lệnh If (2)Sử dụng lệnh Switch (2)
Sử dụng lệnh If (3)
Phantuan.ktd@gmail.com

Không có nhận xét nào:

Đăng nhận xét

Lên đầu trang