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 | 6.2.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();
   }

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

Đăng nhận xét

Lên đầu trang