Nội dung

1

Câu lệnh điều kiện if

2

Câu lệnh rẽ nhánh switch

Giới thiệu

Các câu lệnh điều kiện cho phép thay đổi

luồng chương trình. Dựa trên một điều kiện nào đó, một công việc có thể được thực hiện hoặc không.

Lệnh if

Câu lệnh if (Dạng không đầy đủ )

S

Biểu thức điều kiện

Đ

Công việc

Trong ( ), cho kết quả (sai = 0, đúng ≠ 0)

if ( biểu thức điều kiện )

Câu lệnh đơn hoặc Câu lệnh phức (kẹp giữa { và })

Câu lệnh if (Dạng không đầy đủ )

Ví dụ 1: Nhập vào số nguyên n. Kiểm tra nếu n là

số chẵn thì xuất ra màn hình “n là số chẵn”,

ngược lại xuất “n là số lẻ”.

Thuật toán

Chia n cho 2, lấy phần dư: - Nếu phần dư=0 Xuất: n là số chẵn - Nếu phần dư=1 Xuất: n là số lẻ

if (n%2==0)

printf(“n la so chan");

if (n%2==1)

printf(“n la so le");

Câu lệnh if (Dạng không đầy đủ )

Ví dụ2: Tìm số lớn nhất, số bé nhất trong hai số a và b Thuật toán Nếu ab thì a là số lớn nhất, b là số nhỏ nhất.

Nếu a

if (a>=b) {

Khối lệnh phải đặt trong dấu { }

max=a; min=b;

} if(a

Khối lệnh phải đặt trong dấu { }

max=b; min=a;

}

Câu lệnh if (dạng đầy đủ)

S

Biểu thức điều kiện

Đ

Trong ( ), cho kết quả (sai = 0, đúng ≠ 0)

if ()

else

Câu lệnh đơn hoặc Câu lệnh phức (kẹp giữa { và })

Câu lệnh if (dạng đầy đủ)

Ví dụ 3: Tìm số lớn nhất trong hai số a và b

Thuật toán

Nếu a>b thì max là a. Ngược lai thì max là b

if( a > b)

max = a;

else

max = b;

Câu lệnh if (dạng đầy đủ)

Ví dụ 4: Tìm số lớn nhất, số bé nhất trong hai số a và b

if (a>=b) {

max=a; min=b;

} else {

max=b; min=a;

}

Câu lệnh if - Một số lưu ý

Câu lệnh if có thể lồng vào nhau và else

sẽ tương ứng với if gần nó nhất.

if (a != 0)

if (b > 0)

printf(“a != 0 va b > 0”);

else

printf(“a != 0 va b <= 0”);

if (a !=0) {

if (b > 0)

printf(“a != 0 va b > 0”);

else

printf(“a != 0 va b <= 0”);

}

Câu lệnh if - Một số lưu ý

Nên dùng else để loại trừ trường hợp.

Câu lệnh if - Một số lưu ý

Câu lệnh if - Một số lưu ý

Nên dùng else để loại trừ trường hợp.

if (delta < 0)

printf(“PT vo nghiem”);

if (delta == 0)

printf(“PT co nghiem kep”);

if (delta > 0)

printf(“PT co 2 nghiem”);

if (delta < 0)

printf(“PT vo nghiem”);

else // delta >= 0

if (delta == 0)

printf(“PT co nghiem kep”);

else

printf(“PT co 2 nghiem”);

Câu lệnh if - Một số lưu ý

Không được thêm ; sau điều kiện của if.

if (a != 0)

printf(“a khac 0.”);

if (a != 0);

printf(“a khac 0.”);

Câu lệnh switch

Cú pháp

switch () {

case : Công việc 1;

break;

case : Công việc 2;

break;

. . . . . . . . . . case : Công việc n;

break ;

default : Công việc n+1;

}

Câu lệnh switch

Lưu đồ

Câu lệnh switch

Giải thích: Tính giá trị của biểu thức.

+ Nếu giá trị của biểu thức bằng thì thực hiện rồi thoát. + Nếu giá trị của biểu thức khác thì so sánh với , nếu bằng thì thực hiện rồi thoát. + Cứ như thế, so sánh tới giá trị n. + Nếu tất cả các phép so sánh trên đều sai thì thực hiện công việc của trường hợp default.

Câu lệnh switch

Ví dụ: Nhập một số nguyên a. Hãy đọc giá trị của số nguyên đó nếu nó có giá trị từ 1 đến 5, ngược lại thông báo: số nằm ngoài phạm vi đọc . a là biểu thức cần xét điều kiện

switch(a) {

case 1:…… case 2:…… case 3:…… case 4:…… case 5:…… default:……

}

Câu lệnh switch

Ví dụ: switch (a) {

case 1:printf("Mot");

break;

case 2:printf("Hai");

break;

case 3:printf("Ba");

break;

case 4:printf("Bon");

break;

case 5:printf("Nam");

break;

default:

printf(“So nam ngoai pham vi doc");

}

Câu lệnh switch

- Trong lệnh switch có thể không có default

Ví dụ: Nhập vào một số nguyên n. Hãy cho biết n chẵn hay lẻ

switch(n % 2) {

case 0:printf("%d la so chan ",n);

break;

case 1:printf("%d la so le ",n);

break;

}

Câu lệnh switch

Chú ý: Lệnh switch sẽ nhảy đến case tương ứng và thực hiện đến khi nào gặp break hoặc cuối switch sẽ kết thúc.

switch(x) {

case 0:printf(" x = 0 ");

break;

case 1: case 2:printf("x = 1 hoac x = 2 ");

break;

case 3: case 4:printf("x = 3 hoac x = 4 ");

break;

default:printf("Cac truong hop khac ");

}

Câu lệnh switch

void main() {

char ch; printf("Nhap mot ki tu chu:"); scanf("%c",&ch); switch(ch) {

case 'a': case 'o': case 'e': case 'u': case 'y': case 'i':

printf("Day la nguyen am") ; break ;

default:printf("Khong phai la nguyen am");

} }

Câu lệnh switch

So sánh lệnh switch với lệnh if

− Đều là các câu lệnh rẽ nhánh

− Lệnh if tổng quát và mạnh hơn lệnh switch vì lệnh if không hạn chế gì cả, còn lệnh switch yêu cầu kết quả của biểu thức phải là giá trị hằng nguyên

− Lệnh switch nào cũng có thể thay thế tương đương bằng các lệnh if

So sánh lệnh switch với lệnh if

Sử dụng IF

Sử dụng câu lệnh switch

if (a == 1)

printf("Mot");

if (a == 2)

switch (a) { case 1:printf("Mot");

printf("Hai");

break;

if (a == 3)

case 2:printf("Hai");

printf("Ba");

break;

if (a == 4)

case 3:printf("Ba");

printf("Bon");

break;

if (a == 5)

case 4:printf("Bon");

printf("Nam");

break;

if (a<1 || a>5)

case 5:printf("Nam");

break;

printf(“Ngoai pham vi

doc");

default:

printf("Ngoai pham

vi doc"); }

CÂU TRẮC NGHIỆM

Câu 13. Lệnh nào sau đây in ra màn hình số lớn nhất giữa A và B?

a. if (A > B) printf("%d",B); else printf("%d",A);

b. if (A > B) printf("%d",A); else printf("%d",B);

c. if (A > B) scanf("%d",&A); else scanf("%d",&B);

d. if (A < B) printf("%d",A); else printf("%d",B); Câu 14. Kiểm tra nếu ba số a, b, c đều lớn hơn 1 thì in số 1, chọn lệnh nào?

a. if ((a>1)&&(b>1)&&(c>1))printf("%d",1);

b. if ((a>1)||(b>1)||(c>1))printf("%d",1);

c. if (a>1)&&(b>1)&&(c>1) printf("%d",1);

d. if a,b,c> 1 printf("%d",1);

CÂU TRẮC NGHIỆM

Câu 15. Cho i là biến nguyên. Sau khi thực hiện các lệnh:

int i=2; switch (i) {

case 1: i=i+1;

break;

case 2: i=i+2;

break;

case 3: i=i+3;

break;

}

Giá trị sau cùng của i là: a. 2 b. 3 c. 4 d. 5

CÂU TRẮC NGHIỆM

Câu 16. Cho n là biến nguyên, sau khi thực hiện các lệnh:

int n= 8; if (n<0)

printf("So am");

else

switch (n%2)

{

case 0: printf("Chan"); case 1: printf("Le");

}

a. Chan b. ChanLe c. So am d. Le

CÂU TRẮC NGHIỆM

Nhóm lệnh nào tính đúng y:

Câu 17. Cho hàm số:

a.

c. if(x<=-1) y=2*x+1 else

y=sin(x);

if(x>0) y=x; if(x>-1) y=sin(x);

if(x>0) else y=x;

d.

else

if (x<=-1) y=2*x+1 ;

y=2*x-1;

else

if (x <=0)

b. if(x<=-1) y=2*x-1; else

y=sin(x) ;

else y=x;

if(x<=0) y=sin(x); else y=x;

CÂU TRẮC NGHIỆM

Câu 18. Cho biết kết quả của đoạn chương trình sau: void main() {

int x = 1; int y= 3; int m = 0; if(++x < --y)

m = x;

else {

m = y; printf("%d",m);

} getch();

}

a. 1 b. 2 c. 3 d. Không hiển thị gì cả

CÂU TRẮC NGHIỆM

Câu 19. Cho biết kết quả hiển thị của đoạn chương trình trên là: void main() {

int t, i, j; i = 2 ; j = 1; t = 5; switch(i-j) { case 0: printf("khong"); case 1: printf("mot"); case 2: printf("hai"); default: printf("khong co ket qua"); }

}

a. mothaikhong co ket qua b. mot c. hai d. khong co ket qua

BÀI TẬP

11.Viết chương trình nhập vào hai số a và b và kiểm tra xem a có chia hết cho b hay không. 12.Viết chương trình nhập vào số nguyên n, kiểm tra xem n có là số nguyên tố hay không. 13.Cho ba số a, b, c đọc vào từ bàn phím. Hãy tìm giá trị lớn nhất của ba số trên và in ra kết quả. 14.Cho ba số a, b, c đọc vào từ bàn phím. Hãy in ra màn hình theo thứ tự tăng dần các số.

Company Logo