
Bài 5 Toán t và Bi u th cử ể ứ
M c tiêu:ụ
K t thúc bài h c này, b n có th :ế ọ ạ ể
S d ng đ c các toán t s h c, so sánh và lu n lýử ụ ượ ử ố ọ ậ
Chuy n đ i các ki u d li uể ổ ể ữ ệ
N m đ c th t u tiên gi a các toán t .ắ ượ ứ ự ư ữ ử
Các b c trong ch ng này đã đ c nghiên c u k và gi i thích chi ti t đ chúng ta có th hi u rõướ ươ ượ ứ ỹ ả ế ể ể ể
và áp d ng chúng m t cách hoàn ch nh.Ta hãy theo các b c c n th n.ụ ộ ỉ ướ ẩ ậ
Ph n I - Trong th i gian 1 gi 30 phút đ u:ầ ờ ờ ầ
Ví d 1:ụ
Trong ch ng này, ta s vi t m t ch ng trình tính toán ti n lãi đ n gi n (lãi thu n ch a tính ti nươ ẽ ế ộ ươ ề ơ ả ầ ư ề
v n vào) khi ta vay ti n.ố ề
Công th c đ tính toán là ứ ể p * n * r /100. đây ‘Ởp’ có nghĩa là ti n v n, ‘ề ố n’ là s năm và ‘ốr’ có
nghĩa là t l lãi su t.ỉ ệ ấ
Ch ng trình khai báo ba bi n s th c ‘float’ có tên là p, n và r. Chú ý r ng, các bi n đ c khai báoươ ế ố ự ằ ế ượ
trên cùng m t dòng mã thì ta dùng d u ph y (,) đ phân chia chúng v i nhau. M i bi n trên đ cộ ấ ẩ ể ớ ỗ ế ượ
gán m t giá tr .ộ ị
Xét dòng mã sau:
printf(“\nAmount is: %f”, p*n*r/100);
Trong printf() trên, chúng ta đã dùng ‘%f’ đ hi n th giá tr c a bi n ki u float (s th c), giá trở ể ể ị ị ủ ế ể ố ự ị
bi n này là p*n*r/100, công th c dùng tính lãi đ n gi n đ c đ a vào trong ế ứ ơ ả ượ ư printf(). Đó là p, n và r
đ c nhân v i nhau và k t qu đ c chia cho 100. Nh v y ượ ớ ế ả ượ ư ậ printf() s hi n th lãi đ n. ẽ ể ị ơ
G i Borland C.ọ
5.1 Tính lãi đ nơ
1. T o ra m t t p tin m i.ạ ộ ậ ớ
2. Gõ đo n mã sau trong ‘Edit window’:ạ
#include <stdio.h>
#include <conio.h>
void main()
{
float p, n, r;
clrscr();
p = 1000;
Toán t và bi u th cử ể ứ 61

n = 2.5;
r = 10.5;
printf(“\n Amount is: %f”, p*n*r/100);
}
3. L u t p tin v i tên ư ậ ớ simple.c.
4. Biên d ch t p tin ị ậ simple.c.
5. Th c thi ch ng trình ự ươ simple.c.
6. Tr v trình so n th o.ở ề ạ ả
K t qu :ế ả
The Amount is: 262.500000
5.2 Dùng toán t s h cử ố ọ
Trong ph n này ta s vi t m t ch ng trình có s d ng toán t s h c.ầ ẽ ế ộ ươ ử ụ ử ố ọ
Ch ng trình này khai báo b n bi n s nguyên tên là a, b, c và d. Giá tr s gán cho các bi n a, b vàươ ố ế ố ị ẽ ế
c là:
a = 50, b = 24, c = 68
Xét dòng mã sau:
d = a*b+c/2;
a nhân v i b. c chia cho 2. K t qu c a a*b đ c c ng v i th ng s c a c/2. Giá tr này s gánớ ế ả ủ ượ ộ ớ ươ ố ủ ị ẽ
cho d qua toán t (=). Bi u th c đ c tính nh sau:ử ể ứ ượ ư
1. 50 * 24 = 1200
2. 68 / 2 = 34
3. 1200 + 34 = 1234
4. d = 1234
‘printf( )’ : hi n th giá tr c a bi n d. ể ị ị ủ ế
Xét bi u th c:ể ứ
d = a*(b+c+(a-c)*b);
đây d u ngo c đ n trong cùng có đ u tiên cao nh t. Do v y, (a-c) đ c tính tr c. Sau đó,Ở ấ ặ ơ ộ ư ấ ậ ượ ướ
tính t i các d u ngo c đ n ngoài. K t qu c a (a-c) đ c nhân cho b b i vì ‘*’ có đ u tiên caoớ ấ ặ ơ ế ả ủ ượ ở ộ ư
h n ‘-‘ và ‘+’. Bi u th c đ c tính nh d i đây:ơ ể ứ ượ ư ướ
1. d = 50 * (24 + 68 + (50 - 68) * 24)
2. d = 50 * (24 + 68 + (-18) * 24)
3. d = 50 * (24 + 68 + (-432))
4. d = 50 * (92 - 432)
62 L p trình c b n Cậ ơ ả

5. d = 50 * (-340)
6. d = -17000
Các bi u th c khác đ c tính tùy vào các toán t đã đ c dùng. K t qu đ c hi n th b i l nhể ứ ượ ử ượ ế ả ượ ể ị ở ệ
‘printf()’.
1.T o m i m t t p tin.ạ ớ ộ ậ
2. Gõ đo n mã sau trong ‘Edit window’:ạ
#include <stdio.h>
#include <conio.h>
void main()
{
int a,b,c,d;
clrscr();
a = 50;
b = 24;
c = 68;
d = a*b+c/2;
printf(“\n The value after a*b+c/2 is: %d”, d);
d = a%b;
printf(“\n The value after a mod b is: %d”, d);
d = a*b-c;
printf(“\n The value after a*b-c is: %d”, d);
d = a/b+c;
printf(“\n The value after a/b+c is: %d”, d);
d = a+b*c;
printf(“\n The value after a+b*c is: %d”, d);
d = (a+b)*c;
printf(“\n The value after (a+b)*c is: %d”, d);
d = a*(b+c+(a-c)*b);
printf(“\n The value after a*(b+c+(a-c)*b) is: %d”, d);
}
3. L u t p tin v i tên ư ậ ớ arith.c.
4. Biên d ch t p tin ị ậ arith.c.
5. Th c thi ch ng trình ự ươ arith.c.
6. Tr v trình so n th o.ở ề ạ ả
K t qu xu t:ế ả ấ
The value after a*b+c/2 is: 1234
The value after a mod b is: 2
The value after a*b-c is: 1132
The value after a/b+c is: 70
The value after a+b*c is: 1682
Toán t và bi u th cử ể ứ 63

The value after (a+b)*c is: 5032
The value after a*(b+c+(a-c)+b) is: -17000
5.3 Dùng toán t so sánh và lu n lýử ậ
Trong ph n này chúng ta s vi t m t ch ng trình s d ng toán t so sánh và toán t lu n lý. ầ ẽ ế ộ ươ ử ụ ử ử ậ
Ba bi n s nguyên tên là a, b và c đ c khai báo trong ch ng trình này. Các giá tr gán cho bi nế ố ượ ươ ị ế
nh sau: a = 5, b = 6 & c = 7.ư
Xét nh ng dòng mã sau:ữ
1. a + b >= c;
Ð u tiên, a+b s đ c tính (toán t s h c có đ u tiên cao h n toán t so sánh), k t qu là 11.ầ ẽ ượ ử ố ọ ộ ư ơ ử ế ả
K đ n giá tr 11 đ c so sánh v i c. K t qu là 1(true) b i vì 11 > 7.ế ế ị ượ ớ ế ả ở
2. Xét bi u th c khác: ể ứ
a > 10 && b <5;
Tính toán đ u tiên s là a> 10 và b<5, b i vì toán t so sánh (> <) có quy n u tiên cao h n toán tầ ẽ ở ử ề ư ơ ử
lu n lý AND (&&). Tính toán theo sau:ậ
1. 5 > 10 && 6<5
2. FALSE && FALSE
3. FALSE t c là, 0ứ
1. T o m t t p tin m i.ạ ộ ậ ớ
2. Gõ đo n mã sau vào ‘Edit window’:ạ
#include <stdio.h>
#include <conio.h>
void main()
{
int a = 5, b = 6, c = 7;
printf ("int a = 5, b = 6, c = 7;\n");
printf("The value of a > b is \t%i\n\n", a > b);
printf("The value of b < c is \t%i\n\n", b < c);
printf("The value of a + b >= c is \t%i\n\n", a + b >= c);
printf("The value of a - b <= b - c is \t%i\n\n", a-b <= b-c);
printf("The value of b-a == b - c is \t%i\n\n", b - a == b - c);
printf("The value of a*b != c * c is \t%i\n\n", a * b < c * c);
printf(“Result of a>10 && b<5 = %d\n\n“, a>10 && b<5);
printf(“Result of a > 100 || b < 50 = %d\n\n”, a>100 || b<50);
}
3. L u t p tin v i tên ư ậ ớ compare.c.
4. Biên d ch t p tin ị ậ compare.c.
64 L p trình c b n Cậ ơ ả

5. Th c thi ch ng trình ự ươ compare.c.
6. Tr v trình so n th o.ở ề ạ ả
K t qu xu t:ế ả ấ
int a = 5, b = 6, c = 7;
The value of a > b is 0
The value of b < c is 1
The value of a + b >= c is 1
The value of a - b <= b - c is 1
The value of b - a == b - c is 0
The value of a * b != c * c is 1
Result of a > 10 && b < 5 = 0
Result of a > 100 || b < 50 = 1
5.4 Chuy n đ i ki u d li u ểổểữệ
Trong ph n này, ta s vi t m t ch ng trình đ hi u rõ vi c chuy n đ i ki u d li u.ầ ẽ ế ộ ươ ể ể ệ ể ổ ể ữ ệ
Trong bi u th c đ u tiên, t t c đ u là s nguyên ‘int’ ể ứ ầ ấ ả ề ố 40 / 17 * 13 / 3 s có k t qu là 8 (ẽ ế ả 40 / 17
làm tròn ra 2, 2 * 13 = 26, 26 / 3 làm tròn ra 8)
Bi u th c th hai nh sau:ể ứ ứ ư
1. Ð nh giá tr : ị ị 40 / 17 * 13 / 3.0
2. 40 / 17 làm tròn k t qu là 2ế ả
3. 2 * 13 = 26
4. Nh ng vì có s ư ố 3.0 đã ép ki u phép chia cu i cùng thành s ki u ể ố ố ể double, vì v yậ
26.0 / 3.0 = 8.666667
Trong bi u th c th ba: ể ứ ứ
N u chúng ta di chuy n d u ch m th p phân sang s ế ể ấ ấ ậ ố 13 (40 / 17 * 13.0 / 3), k t qu v n s làế ả ẫ ẽ
8.666667 b i vì: ở
1. 40 / 17 làm tròn là 2
2. S ố13.0 ép ki u d li u phép nhân thành ể ữ ệ double nh ng k t qu v n là 26 vìư ế ả ẫ
2.0 * 13.0 = 26.0
Toán t và bi u th cử ể ứ 65

