Các câu lệnh rẽ nhánh:
- if đơn
- if - else
- if - else lồng nhau (nested)
- else - if ladder
- switch
1. if đơn
Thực hiện khi điều kiện đúng.
if (dieu_kien) { cau_lenh; }
Ví dụ: Kiểm tra số > 50
#include <stdio.h>
int main() {
int a; scanf("%d", &a);
if (a > 50) printf("%d > 50", a);
return 0;
}
2. if - else
if (dk) { dung; } else { sai; }
Ví dụ: Chẵn/lẻ
#include <stdio.h>
int main() {
int n; scanf("%d", &n);
if (n%2==0) printf("%d chan", n);
else printf("%d le", n);
return 0;
}
3. Nested if - else
if (dk1) {
if (dk2) stmt1; else stmt2;
} else {
if (dk3) stmt3; else stmt4;
}
Ví dụ: Tìm max của 3 số
#include <stdio.h>
int main() {
int a,b,c; scanf("%d%d%d",&a,&b,&c);
if (a>b) {
if (a>c) printf("%d lon nhat", a);
else printf("%d lon nhat", c);
} else {
if (b>c) printf("%d lon nhat", b);
else printf("%d lon nhat", c);
}
return 0;
}
4. Else - if ladder
Nhiều điều kiện tuần tự.
if (dk1) stmt1; else if (dk2) stmt2; ... else stmtX;
Ví dụ: Nghiệm phương trình bậc 2
#include <stdio.h>
#include <math.h>
int main() {
int a,b,c,d; float r1,r2;
scanf("%d%d%d",&a,&b,&c);
d = b*b - 4*a*c;
if (d>0) {
r1 = (-b+sqrt(d))/(2*a);
r2 = (-b-sqrt(d))/(2*a);
printf("r1=%.2f, r2=%.2f", r1, r2);
} else if (d==0) {
r1 = r2 = -b/(2*a);
printf("Nghiem kep: %.2f", r1);
} else
printf("Vo nghiem");
return 0;
}
5. Switch statement
Chọn một trong nhiều trường hợp.
switch(bieu_thuc) {
case gt1: stmt1; break;
case gt2: stmt2; break;
default: stmtX;
}
Ví dụ: In tên số 0,1
#include <stdio.h>
int main() {
int n; scanf("%d",&n);
switch(n) {
case 0: printf("khong"); break;
case 1: printf("mot"); break;
default: printf("sai");
}
return 0;
}