
Nguyen Dinh Phuong
Bài 8 Đi u ki nề ệ
M c tiêu:ụ
K t thúc bài h c này, b n có th :ế ọ ạ ể
S d ng:ử ụ
Câu l nh ifệ
Câu l nh if – elseệ
Câu l nh v i nhi u ifệ ớ ề
Câu l nh if l ng nhauệ ồ
Câu l nh switch.ệ
Các b c trong bài h c này đ c trình bày chi ti t, rõ ràng và c n th n. Đi u này giúp ta hi u rõ vướ ọ ượ ế ẩ ậ ề ể ề
công c l p trình. Th c hi n theo các b c sau th t c n th n.ụ ậ ự ệ ướ ậ ẩ ậ
Ph n I - Trong th i gian 1 gi 30 phút đ u:ầ ờ ờ ầ
8.1 L nh if:ệ
Ví d 1:ụ
Trong ph n này chúng ta s vi t m t ch ng trình đ tính ti n hoa h ng ph i tr cho ng i bánầ ẽ ế ộ ươ ể ề ồ ả ả ườ
hàng d a vào s l ng hàng h bán đ c.ự ố ượ ọ ượ
Bài toán:
Công ty SARA s tr 10% ti n hoa h ng cho nhân viên bán hàng c a công ty n u doanh s bánẽ ả ề ồ ủ ế ố
hàng c a nhân viên đ t $10,000 ho c h n. Tính ti n hoa h ng ph i tr cu i m i thánng.ủ ạ ặ ơ ề ồ ả ả ố ỗ
Bài toán khai báo hai bi n ki u ‘float’ là ế ể sales_amt và com. Chú ý, các bi n đ c khai báo trongế ượ
cùng m t dòng trong ch ng trình thì s d ng d u ph y (ộ ươ ử ụ ấ ẩ ,) đ phân cách gi a các bi n.ể ữ ế
Theo dõi đo n mã l nh d i đây:ạ ệ ướ
printf(“Enter the Sales Amount: “);
scanf(“%f”,&sales_amt);
Trong hàm printf(), chúng ta hi n th thông đi p yêu c u nh p doanh s bán hàng, và trong hàmể ị ệ ầ ậ ố
scanf() s d ng %f đ nh n m t giá tr t ng i dùng. Giá tr nh p vào s đ c gán cho bi nử ụ ể ậ ộ ị ừ ườ ị ậ ẽ ượ ế
sales_amt.
if (sales_amt >= 10000)
com = sales_amt * 0.1;
Câu l nh trên đ c dùng đ ki m tra giá tr c a bi n ệ ượ ể ể ị ủ ế sales_amt có l n h n ho c b ng 10000 không.ớ ơ ặ ằ
>= là toán t so sánh, s tr v giá tr ử ẽ ả ề ị đúng ho c ặsai. Trong tr ng h p, n u b n nh p vào giá triườ ợ ế ạ ậ
15000, đi u ki n (ề ệ sales_amt >= 10000) có k t qu là ế ả đúng. N u ếđúng, nó s th c thi câu l nh ẽ ự ệ com
= sales_amt * 0.1. Bây gi giá tr c a bi n ờ ị ủ ế com s là ẽ1500. N u đi u ki n là ế ề ệ sai, nó s in ra giá trẽ ị
ti n hoa h ng là 0. đây chúng ta th y, đi u ki n ề ồ Ở ấ ề ệ if ch có m t l nh duy nh t. N u có nhi u h nỉ ộ ệ ấ ế ề ơ
m t l nh cho đi u ki n ộ ệ ề ệ if, các l nh ph i đ c đ t trong c p d u ngo c ệ ả ượ ặ ặ ấ ặ {}.
printf(“\n Commission = %f”, com);
Master.P Stuio E-book Đi u ki nề ệ N.D.Familys1

Smith Nguyen
Câu l nh trên đ c s d ng đ hi n th giá tr ti n hoa h ng. ‘%f’ đ c s d ng đ hi n th giá trệ ượ ử ụ ể ể ị ị ề ồ ượ ử ụ ể ể ị ị
c a m t bi n ‘float’ đ c đ a ra sau d u ph y cu i c a hàm ủ ộ ế ượ ư ấ ẩ ở ố ủ printf(). Vì v y, ậprintf() đây hi nở ể
th ti n hoa h ng tính đ c.ị ề ồ ượ
8.1.1 Tính ti n hoa h ng:ề ồ
1. T o m t t p tin m i.ạ ộ ậ ớ
2. Nh p vào đo n mã l nh sau đây trong c a s ‘Edit Window’:ậ ạ ệ ủ ổ
#include <stdio.h>
#include <conio.h>
void main()
{ float com = 0, sales_amt;
clrscr();
printf(“Enter the Sales Amount: “);
scanf(“%f”, &sales_amt);
if (sales_amt >= 10000)
com = sales_amt * 0.1;
printf(“\n Commission = %f”, com);
}
3. L u t p tin v i tên ư ậ ớ comm.C.
4. Biên d ch t p tin ị ậ comm.C.
5. Th c thi ch ng trinh ự ươ comm.C.
6. Tr v c a s ‘Edit Window’.ở ề ử ổ
K T QU :Ế Ả
Enter the Sales Amount: 15000
Commission = 1500.000
8.2 L nh ‘if-else’:ệ
Trong ph n này chúng ta s vi t m t ch ng trình s d ng l nh ầ ẽ ế ộ ươ ử ụ ệ if-else. Ch ng trình hi n th sươ ể ị ố
l n h n trong hai s .ớ ơ ố
Theo dõi các dòng mã l nh sau:ệ
if (num1 > num2)
printf(“\n The greater number is: %d”, num1);
else
printf(“\ The greater number is: %d”, num2);
Trong đo n mã l nh này hàm ạ ệ printf() đ u tiên ch đ c th c thi n u giá tr c a bi n ầ ỉ ượ ự ế ị ủ ế num1 l n h nớ ơ
giá tr c a bi n ị ủ ế num2, khi đó ph n ầelse đ c b qua. N u giá tr c a bi n ượ ỏ ế ị ủ ế num1 không l n h n giáớ ơ
tr c a bi n ị ủ ế num2, hàm printf() đ c b qua. Trong tr ng h p này hàm ượ ỏ ườ ợ printf() th hai, l nh theoứ ệ
sau else, đ c th c thi.ượ ự
Trong ch ng trình sau, b i vì giá tr c a bi n ươ ở ị ủ ế num1 l n h n ớ ơ num2, hàm printf() đ u tiên đ c th cầ ượ ự
thi.
1. T o m t t p tin m i.ạ ộ ậ ớ
2. Nh p vào đo n mã l nh sau đây trong c a s ‘Edit Window’:ậ ạ ệ ủ ổ
#include <stdio.h>
#include <conio.h>
2 L p trình c b n Cậ ơ ả

Nguyen Dinh Phuong
void main()
{
int Num1, Num2;
clrscr();
Num1 = 540;
Num2 = 243;
if (Num1 > Num2)
printf(“\n The Greater Number Is: %d”, Num1);
else
printf(“\n The Greater Number Is: %d”, Num2);
}
1. L u t p tin v i tên ư ậ ớ ifelse.C.
2. Biên d ch ch ng trình ị ươ ifelse.C.
3. Th c thi ch ng trình ự ươ ifelse.C.
4. Tr v c a s ‘Edit Window’.ở ề ử ổ
K T QU :Ế Ả
The greater number is: 540
8.3 L nh ‘if-else-if’:ệ
Trong ph n này chúng ta s vi t m t ch ng trình s d ng l nh ầ ẽ ế ộ ươ ử ụ ệ if – else – if. Ch ng trình s hi nươ ẽ ể
th s l n h n trong hai s , ho c s hi n th các s là b ng nhau.ị ố ớ ơ ố ặ ẽ ể ị ố ằ
Trong ch ng trình ph n tr c, có hai bi n ‘s nguyên’ ươ ở ầ ướ ế ố num1 và num2 đ c khai báo. Các bi nượ ế
đ c gán giá tr .ượ ị
Quan sát các dòng mã l nh sau:ệ
if (num1 == num2)
printf(“\nNumbers are Equal”);
else if (num1 < num2)
printf(“\nThe Larger Number is: %d”, num2);
else
printf(“\nThe Larger Number is: %d”, num1);
Trong đo n mã l nh trên, đi u kiên ‘ạ ệ ề if’ đ u tiên (num1 == num2) ki m tra xem giá tr c a bi nầ ể ị ủ ế
num1 có b ng bi n ằ ế num2 không. Trong C, ký hi u == đ c s d ng đ ki m tra hai toán h ng cóệ ượ ử ụ ể ể ạ
b ng nhau không. N u đi u ki n đ u tiên (num1 == num2) có giá tr ằ ế ề ệ ầ ị true thì hàm printf() theo ngay
sau s đ c th c thi. N u đi u ki n đ u tiên không đúng, đi u ki n c a ẽ ượ ự ế ề ệ ầ ề ệ ủ else-if s đ c ki m tra.ẽ ượ ể
Trong tr ng h p đi u ki n này (num1 < num2) th a, hàm ườ ợ ề ệ ỏ printf() theo sau nó s đ c th c thi.ẽ ượ ự
N u c hai đi u ki n c a ế ả ề ệ ủ if và else if đ u không th a mãn, thì câu l nh sau ề ỏ ệ else cu i cùng s đ cố ẽ ượ
th c thi.ự
Trong ch ng trình d i đây, vì giá tr c a ươ ướ ị ủ num1 nh h n ỏ ơ num2, l nh ệprintf() th hai s đ c th cứ ẽ ượ ự
thi.
1. T o m t t p tin m i.ạ ộ ậ ớ
2. Nh p đo n mã l nh sau trong c a s ‘Edit Window’.ậ ạ ệ ử ổ
#include <stdio.h>
#include <conio.h>
Master.P Stuio E-book Đi u ki nề ệ N.D.Familys3

Smith Nguyen
void main()
{ int num1, num2;
num1 = 77;
num2 = 90;
if (num1 == num2)
printf(“\nThe Numbers are equal”);
else if (num1 < num2)
printf(“\n The Larger Number is: %d”, num2);
else
printf(“\n The Larger Number is: %d”, num1);
}
1. L u t p tin v i tên ư ậ ớ ifelseif.C.
2. Biên d ch t p tin ị ậ ifelseif.C.
3. Th c thi ch ng trình ự ươ ifelseif.C.
4. Tr v c a s ‘Edit Window’.ở ề ử ổ
K T QU :Ế Ả
The Larger Number is: 90
8.4 L nh ‘if l ng nhau’:ệ ồ
Trong ph n này chúng ta s vi t m t ch ng trình đ hi u rõ v l nh ‘ầ ẽ ế ộ ươ ể ể ề ệ if l ng nhau’.ồ
Bài toán:
Công ty MONTEK đã ra quy t đ nh chi ti n hoa h ng cho b ph n bán hàng tùy thu c vào doanhế ị ề ồ ộ ậ ộ
thu bán s n ph m. T l hoa h ng đ c tính nh sau:ả ẩ ỷ ệ ồ ượ ư
Doanh thu bán Lo i s n ph mạ ả ẩ Hoa h ngồ
> 10,000$ A 10%
-- 8%
<= 10,000 -- 5%
Tính ti n hoa h ng cu i m i tháng.ề ồ ố ỗ
Trong ch ng trình này chúng ta tính ti n hoa h ng d a vào lo i s n ph m và l ng s n ph m bánươ ề ồ ự ạ ả ẩ ượ ả ẩ
đ c.ượ
Quan sát các dòng mã l nh sau:ệ
printf(“\Enter the Sales Amount: “);
scanf(“%f”,&sales_amt);
printf(“\n Enter the Grade: “);
scanf(“%c”,&grade);
Hàm scanf() đ u tiên đ c dùng đ nh p doanh thu bán hàng, và hàm ầ ượ ể ậ scanf() th haiứ đ c s d ngượ ử ụ
đ nh p lo i s n ph m. Đ nh d ng ể ậ ạ ả ẩ ị ạ %c đ c s d ng đ nh n m t ký t t ng i dùng.ượ ử ụ ể ậ ộ ự ừ ườ
if (sales_amt > 10000)
if (grade == ‘A’)
com = sales_amt * 0.1;
else
come = sales_amt * 0.08;
else
4 L p trình c b n Cậ ơ ả

Nguyen Dinh Phuong
com = sales_amt * 0.05;
Gi s chúng ta nh p doanh thu bán hàng là 15000 và lo i s n ph m là ‘A’. Ch ng trình s ki mả ử ậ ạ ả ẩ ươ ẽ ể
tra đi u ki n ề ệ if (sales_amt > 10000); vì đi u ki n này có k t qu đúng, ch ng trình s ti p t cề ệ ế ả ươ ẽ ế ụ
l nh ệif th hai (grade == ‘A’). Đi u ki n này cũng th a, vì v y ti n hoa h ng đ c tính ứ ề ệ ỏ ậ ề ồ ượ com =
sales_amt * 0.1.
Chúng ta xem m t tình hu ng khác v i doanh thu bán hàng là 15000 và lo i s n ph m là ‘B’.ộ ố ớ ạ ả ẩ
Ch ng trình s ki m tra đi u ki n ươ ẽ ể ề ệ if đ u tiên (sales_amt > 10000), đi u ki n này th a. Và ch ngầ ề ệ ỏ ươ
trình th c hi n ti p l nh ự ệ ế ệ if th hai, trong tr ng h p này đi u ki n không th a mãn, ch ng trìnhứ ườ ợ ề ệ ỏ ươ
s chuy n đ n l nh ẽ ể ế ệ else t ng ng, ...ươ ứ
else
com = sales_amt * 0.08;
N u chúng ta nh p giá tr 10000 ho c nh h n, ch ng trình s chuy n đ n đi u ki n ế ậ ị ặ ỏ ơ ươ ẽ ể ế ề ệ else sau
cùng và tính ti n hoa h ng theo công th c:ề ồ ứ
com = sales_amt * 0.05;
1. T o m t t p tin m i.ạ ộ ậ ớ
2. Nh p đo n mã l nh sau trong c a s ‘Edit Window’.ậ ạ ệ ử ổ
#include <stdio.h>
#include <conio.h>
void main()
{
float com = 0, sales_amt;
char grade;
clrscr();
printf(“\Enter the Sales Amount: “);
scanf(“%f”, &sales_amt);
printf(“\n Enter the Grade: “);
scanf(“%c”, &grade);
if (sales_amt > 10000)
if (grade == ‘A’)
com = sales_amt * 0.1;
else
com = sales_amt * 0.08;
else
com = sales_amt * 0.05;
printf(“\n Commission = %f”, com);
}
1. L u t p tin v i tên ư ậ ớ nestif.C.
2. Biên d ch t p tin ị ậ nestif.C.
3. Th c thi ch ng trình ự ươ nestif.C.
4. Tr v c a s ‘Edit Window’.ở ề ử ổ
K T QU :Ế Ả
Enter the Sales Amount: 15000
Enter the grade: A
Commission = 1500
Master.P Stuio E-book Đi u ki nề ệ N.D.Familys5

