Lệnh có cấu trúc1.. Lệnh cấu trúc rẽ nhánh a.. Lệnh cấu trúc IF dạng khuyết.. Chúng sẽ tìm hiểu tiếp cấu trúc IF dạng đủ ở phần tiếp sau: b.. Lệnh cấu trúc IF dạng đủ... Tuy nhiên đối vớ
Trang 1IV Lệnh có cấu trúc
1 Lệnh cấu trúc rẽ nhánh
a Lệnh cấu trúc IF dạng khuyết
Cú pháp: if <điều kiện> <công việc>;
Ý nghĩa: Nếu điều kiện đúng thì thực hiện công việc
Lưu đồ cú pháp:
Ví dụ: Sau đây là chương trình tìm số lớn nhất trong hai số a, b
#include <stdio.h>
void main() {
int a, b;
printf(“nhap a”); scanf(“%d”,&a);
printf(“nhap b”); scanf(“%d”,&b);
if (a>b) printf(“so %d la so lon nhat”,a);
}
Chúng ta thấy chương trình trên chỉ đúng (tức là tìm được số lớn nhất) khi số thứ nhất lớn hơn số thứ 2 Vây khi số thứ 2 lớn hơn thì sao? Chúng sẽ tìm hiểu tiếp cấu trúc IF dạng đủ ở phần tiếp sau:
b Lệnh cấu trúc IF dạng đủ
Cú pháp:
if <điều kiện>
<công việc 1> ; else
<công việc 2
Ý nghĩa:
Nếu <điều kiện> đúng thì thực hiện <công việc 1> ngược lại thì thực hiện <công
việc 2>
Lưu đồ:
Ví dụ: Chúng ta sử dụng cấu trúc IF dạng đủ để viết lại chương trình ở ví dụ trên như sau:
#include <stdio.h>
void main() {
int a,b,max
Điều kiện
Công việc
đúng
Điều kiện Công việc 1 Công việc 2
Trang 2printf(“nhap a,b”); scanf(“%d%d”,&a,&b);
if (a>b)
max=a;
else
max=b;
printf(“%d”,max);
}
Qua 2 ví dụ trên ta thấy tùy vào yêu cầu của bài toán mà ta có thể lựa chọn cấu trúc cho phù hợp để giải quyết tối ưu bài toán Tuy nhiên đối với cấu trúc IF chỉ cho phép chúng ta lựa chọn một trong 2 phương án để thực hiện, nhưng đôi lúc chúng phải lựa chọn nhiều hơn 2 phương
án thì sao ? Để giải quyết vấn đề này chúng ta sẽ tìm hiểu một cấu trúc lựa chọn switch … case
2 Cấu trúc lựu chọn: switch … case
Cú pháp:
switch <biểu thức>
{
case <giá trị 1> :
<nhóm lệnh 1>; [break ;]
case <giá trị 2>:
<nhóm lệnh 2>; [break ;]
case <giá trị 3>:
<nhóm lệnh 3>; [break ;]
………
default: <nhóm lệnh khác>;
}
Ý nghĩa: <biểu thức> sẽ được ước lượng và so sánh với các <giá trị> tương ứng với các lệnh case nếu bằng thì thực hiện các <nhóm lệnh i > tương ứng Lệnh break (có thể có hoặc
không) cho phép ta ngưng thực hiện các lệnh phía sau của nhóm lệnh hiện hành
Lưu đồ cú pháp:
Ví dụ: Viết chương trình để đọc vào một năm từ bàn phím, sau đó in ra một thông báo cho biết năm này có word cup hoặc cách world cup mấy năm ?
#include <stdio.h>
#include <conio.h>
void main(){
int n;
printf("n=");scanf("%d",&n);
switch(n%4){
case 0: printf("2 nam nua co World Cup");break;
case 1: printf("1 nam nua co World Cup");break;
case 2: printf("nam Word Cup");break;
case 3: printf("3 nam nua co World Cup");break;
} getch();
}
Giá trị n Giá trị III
Giá trị II Giá trị I