Bài 1 1 Cấu trúc lệnh rẽ nhánh

Một phần của tài liệu Bài giảng ngôn ngữ lập trình C (Trang 25 - 28)

Tóm tắt nội dung:

Để tạo ra hai nhánh đúng/sai trong lưu đồ giải thuật ta dùng câu lệnh điều kiện if trong C. Trong trường hợp cần có một cấu trúc đa nhánh ta dùng lệnh switch.

Thời lượng: 1 tiết

1. Lệnh if

if (<biểu thức>) <lệnh đơn hoặc khối lệnh>

[else <lệnh đơn hoặc khối lệnh>]

Câu lệnh if dùng để thực hiện một câu lệnh đơn hay một khối lệnh tuỳ thuộc vào một biểu thức kiểm tra. Nếu <biểu thức> cho kết quả là đúng thì nhánh chính của câu lệnh if được thực hiện, trường hợp sai thì nhánh else (nếu có) sẽ được thực hiện. Chú ý rằng một lệnh đơn luôn kết thúc bằng dấu chấm phẩy ‘;’ còn các lệnh của một khối nằm trong cặp dấu {}.

Ví dụ:

int a, b, max;

/* sử dụng câu lệnh if tính max của a, b */ if (a>b) max = a;

else max = b;

Biểu thức kiểm tra có thể là một biểu thức bất kì của C (xem bài 9 - Biểu thức và toán tử). Chỉ cần nó trả về giá trị 0 thì được coi là sai, khác 0 coi là đúng. Vì thế một phép kiểm tra if (a !=0) có thể thay bằng if (a). Cần chú ý sự nhầm lẫn giữa toán tử gán (=) với toán tử so sánh bằng (==).

Ví dụ:

int a=0, b=1, c=1;

/* biểu thức so sánh a bằng 0 đúng nên b = 0 */ if (a==0) b=a;

/* biểu thức gán a=0 trả về giá trị sai nên c giữ nguyên giá trị */ if (a=0) c=a;

Chương trình mẫu (ptb1.c): Giải và biện luận phương trình ax+b=0

#include <stdio.h> void main()

{

float a, b;

printf("Nhap he so cua phuong trinh bac nhat\n"); printf("He so a: "); scanf("%f", &a);

printf("He so b: "); scanf("%f", &b); if (a==0)

/* nhánh a==0 */ if (b==0)

printf("Phuong trinh co vo so nghiem"); else

printf("Phuong trinh vo nghiem"); else /* nhánh a!=0 */

printf("Phuong trinh co nghiem bang %f", -b/a); } 2. Lệnh switch Dạng thức chung: switch (<biểu thức>) { case <hằng 1>:

<các lệnh nhánh 1> break; case < hằng 2>: <các lệnh nhánh 2> break; . . . [default: <các lệnh nhánh default>] }

Khi gặp lệnh switch chương trình kiểm tra giá trị của <biểu thức> với các hằng sau từ khoá case. Nếu giá trị biểu thức bằng một hằng nào thì các lệnh của nhánh tương ứng được thực hiện. Lệnh break dùng để kết thúc một nhánh thực hiện. Nhánh default chỉ được thực hiện khi tất cả các nhánh hằng số đều không thoả mãn. Một nhánh có thể dùng cho nhiều hằng số khác nhau. Khi đó mỗi hằng số được viết sau một từ khố case. Sau đây là một ví dụ sử dụng lệnh switch để in lịch làm việc trong tuần.

int ngay;

printf("Nhap gia tri ngay trong tuan (1/CN, 2-7):"); scanf("%d", &ngay); switch (ngay) { case 2: case 3: case 4: case 5: case 6:

printf("Lam viec ca ngay\n"); break;

case 7:

printf("Lam viec buoi sang\n"); break;

case 1:

printf("Ngay nghi\n"); break;

default:

printf("Nhap sai gia tri\"); }

Chú ý khi lệnh break bị thiếu cho việc kết thúc nhánh thì các câu lệnh của nhánh dưới vẫn được coi là các câu lệnh của nhánh hiện tại. Việc thực hiện các câu lệnh của một nhánh chỉ kết thúc khi gặp break hoặc khi hết lệnh switch.

Ví dụ: int a=1; switch(a) { case 1: printf("a=1\n"); case 2: printf("a=2\n"); break; case 3: printf("a=3\n");

} /* kết quả in: /* kết quả in: a=1 a=2 */ BÀI TẬP

Câu 1: Viết chương trình giải và biện luận phương trình bậc 2 (ax2

+bx+c=0).

Câu 2: Viết chương trình đọc vào một số của tháng trong năm rồi in ra màn hình tên của tháng đó

trong tiếng Anh.

Câu 3: Cho bốn số a, b, c, d đọc vào từ bàn phím. Hãy tìm giá trị cực đại và gán cho biến có tên

là Max và in ra kết quả của nó.

Câu 4: Viết chương trình nhập vào phần thực và phần ảo của một số phức xong rồi in ra màn

hình dạng hồn chỉnh của số phức đó.

Câu 5: Viết chương trình đọc vào một số thể hiện tổng số giây rồi in ra số giờ, phút, giây tương

đương. Ví dụ 7322 giây là tương đương 2 giờ, 2 phút, 2 giây.

Một phần của tài liệu Bài giảng ngôn ngữ lập trình C (Trang 25 - 28)