Download as pdf or txt
Download as pdf or txt
You are on page 1of 95

Bi tp lp trnh c bn

Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 1


Mc lc
CHNG 1: K THUT LP TRNH VI NGN NG C++ .......... 2
CHNG 2: BIN N ..................................................................... 79
CHNG 3: MNG MT CHIU..................................................... 84
CHNG 4: MA TRN ..................................................................... 88
CHNG 5: XU K T .................................................................. 91
CHNG 6: CU TRC (struct) ....................................................... 93
CHNG 7: CON TR V D LIU NG .................................. 94

Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 2


CHNG 1: K THUT LP TRNH VI NGN NG C++
1. Mt chng trnh n gin.
V d ly chng trnh HELLO.CPP gii thch cc phn ca mt chng
trnh C++. (Ch cc s th t dng di y (1:,2:,..) khng vit trong ni dung
chng trnh)
1: #include <iostream.h>
2:
3: int main()
4: {
5: cout << "Hello World!\n";
6: return 0;
7: }

Dng 1 l th vin # iostream.h.
Include l mt lnh tin x l. Du ngoc n <file name > ch cho b tin x
l tm trong tt c cc v tr thng thng i vi file ny. Nu b bin dch
c thit lp ng, du ngoc < > s lm cho b tin x l tm kim file "
iostream.h" trong th mc m cha tt c cc file H cho b bin dch. ( file
"iostream.h" [ Input-Oput-Stream] c dng bi hm "cout"_ gip cho vic vit
ra mn hnh.)
Dng 3 bt u chng trnh thng thng vi hm c tn " main() ". Mi
chng ttrnh C++ u c 1 hm main(). Ni chung," hm l 1 khi m lnh m
thc hin 1 hoc nhiu cng vic." Cc hm thng thng c gi bi cc hm
khc, nhng main() l hm c bit. Khi chng trnh bt u, main() c t
ng gi ln. ( main(), ging nh tt cc hm, phi nh r loi gi tr no n s tr
v. Kiu gi tr tr v i vi main() trong HELLO.CPP l "void" _ngha l hm
ny s khng tr v bt c gi tr no.)
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 3


Tt c cc hm bt u vi mt ngoc m ({) v kt thc mt du ngoc ng
(}). Du ngoc ca main() l trn dng 4 v dng 7.
Phn cn bn ca chng trnh l dng s 5. Hm "cout" dng in mt bn
tin ra mn hnh.
Cch dng cout : t cout t sau ton t (<<). Bt c ci g sau du ny th
u c vit ln mn hnh. Nu bn mun vit mt chui k t, phi vit chng
trong du ngoc kp ("), nh dng 5.
Cui cng l 2 k t : \n bo hm cout nhy xung mt dng mi sau t
Hello World ! y l m c bit c gii thch k phn sau.
Trong gio trnh ny hm main() s lun tr v 0. (return 0)
Hm Cout.
V d 2.S dng hm cout.
1: // Listing 2 using cout
2:
3: #include <iostream.h>
4: int main()
5: {
6: cout << "Hello there.\n";
7: cout << "Here is 5: " << 5 << "\n";
8: cout << "The manipulator endl writes a new line to the screen."
<< endl;
9: cout << "Here is a very big number:\t" << 70000 << endl;
10: cout << "Here is the sum of 8 and 5:\t" << 8+5 << endl;
11: cout << "Here's a fraction:\t\t" << (float) 5/8 << endl;
12: cout << "And a very very big number:\t" << (double) 7000 * 7000 <<
endl;
13: return 0;
14: }
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 4


Kt qu:
Hello there.
Here is 5: 5
The manipulator endl writes a new line to the screen.
Here is a very big number: 70000
Here is the sum of 8 and 5: 13
Here's a fraction: 0.625
And a very very big number: 4.9e+07
Ch : 3 gi tr c a ra trn dng 7, mi gi tr c tch ra bi ton t
chn. Gi tr u tin l chui " Here is 5: ". Ch c du cch sau du hai chm.
Du cch l mt phn ca chui. Tip n, gi tr 5 c a ra n ton t chn
v k t dng mi ( lun lun trong du ngoc kp hay du ngoc n). iu ny
to ra dng:
Here is 5: 5
c in ra mn hnh. V khng c k t dng mi nn gi tr sau s c
in ngay sau . y gi l mc ni 2 gi tr.
Trn dng 8, bn tin c in ra, v sau lnh " endl" c s dng. Mc
ch ca "endl " l vit mt dng mi ra mn hnh.
?Trn dng 9, ( \t) c a vo. y l chn mt k t "tab" v n c
dng trn dng 8-12. Dng 9 ch ra rng khng ch c cc s nguyn, s nguyn
di cng c in ra.
Dng 10 gii thch rng: cout s thc hin phn b sung n gin. Gi tr ca
8+5 c a ra bi cout, nhng 13 c in ra.
Trn dng 11, gi tr 5/8 c chn vo cout. S hng (float) ch ra cho cout
rng bn mun gi tr ny c gi tr tng h s 10, v v vy mt phn s c in.
Trn dng 12, gi tr 7000*7000 a ti cout v s hng (double) ch cho cout
bit bn mun ci ny c in ra s dng k hiu ton hc
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 5


Ch thch (Comments).
Dng gii thch cu lnh cho d hiu v gii thiu c cc thng tin v
tc gi v thi gian sa i mi nht cho d nng cp.
Trong C++ c hai cch bo hiu li ch thch l : ( // ) v cp ( /* ), (*/).
Du ( // ) ny bo cho chng trnh bin dch b qua tt c nhng g sau du
ch thch ny, ti tn ht dng.
Du ( /* ) ny bo cho chng trnh bin dch b qua tt c nhng g sau du
ch thch ny, ti khi tm thy cp ( */ ) ca n.
Cch s dng Comments:
Mt qui lut chung, nn c mt ch thch u ca ton chng trnh, ni ln
chng trnh lm ci g.
Mi hm cng nn c ch thch gii thch hm lm ci g v n tr v gi tr
no.
Nu trong chng trnh c cu lnh no kh hiu th cng nn c ch thch
lm sng t vn .
V d 3. S dng comments.
1: #include <iostream.h>
2:
3: int main()
4: {
5: /* this is a comment
6: and it extends until the closing
7: star-slash comment mark */
8: cout << "Hello World!\n";
9: // this comment ends at the end of the line
10: cout << "That comment ended!\n";
11:
12: // double slash comments can be alone on a line
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 6


13: /* as can slash-star comments */
14: return 0;
15: }
Hello World!
That comment ended!
Hm ( Functions ).
Mt chng trnh c x l tng dng theo th t m n c trong m
ngun, tn khi n mt hm, sau chng trnh r nhnh x l hm. Khi hm
kt thc, n tr li iu khin cho dng m ngay sau n.
Khi mt chng trnh cn thc hin mt dch v, n c th gi mt hm
thc hin dch v . V d sau minh ho iu :
V d 4. Gi mt hm.
1: #include <iostream.h>
2:
3: // function Demonstration Function
4: // prints out a useful message
5: void DemonstrationFunction()
6: {
7: cout << "In Demonstration Function\n";
8: }
9:
10: // function main - prints out a message, then
11: // calls DemonstrationFunction, then prints out
12: // a second message.
13: int main()
14: {
15: cout << "In main\n" ;
16: DemonstrationFunction();
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 7


17: cout << "Back in main\n";
18: return 0;
19: }
In main
In Demonstration Function
Back in main
Cch s dng hm:
Hm hoc tr v gi tr hoc chng tr v void (ngha l chng tr v s
khng "nothing").
Mt hm m cng hai s nguyn, phi tr v tng v v vy s c nh
ngha tr v mt gi tr s nguyn.
Mt hm m ch in mt bn tin khng c ci g tr v, v vy s c khai
bo tr v dng "void".
Mt hm bao gm : u v thn hm.
u bao gm ln lt : kiu tr v, tn hm, v cc tham s dnh cho
hm. Cc tham s dnh cho hm cho php cc gi tr c a vo bn trong hm.
V vy,nu hm cng 2 s, cc s s l tham s cho hm.
V d mt u dng hm thng thng:
int Sum(int a, int b)
Mi tham s c khai bo cng vi kiu gi tr s a vo ; gi tr thng
thng c a vo bng cch gi hm c gi l i s. Nhiu nh lp trnh
s dng s dng hai s hng : tham s (parameters) v i s (arguments) nh l "
synonyms". Nhng ngi khc cn thn i vi vic phn bit thc v chuyn
mn. Trong sch ny s s dng cc s hng c th hon i cho nhau.
Thn hm bao gm : mt du ngoc m, khng c hoc c cc cu lnh
v du ngoc ng. Cc lnh cu trc nn cng vic ca hm. Mt hm c th tr
v mt gi tr, s dng mt lnh tr v. Lnh ny cng lm cho hm kt thc. Nu
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 8


khng a vo mt lnh tr v bn trong hm, n s t ng tr v dng void
cui hm. Gi tr c tr v phi l dng c khai bo u hm.
V d 5. Mt hm mu n gin.
1: #include <iostream.h>
2: int Add (int x, int y)
3: {
4:
5: cout << "In Add(), received " << x << " and " << y << "\n";
6: return (x+y);
7: }
8:
9: int main()
10: {
11: cout << "I'm in main()!\n";
12: int a, b, c;
13: cout << "Enter two numbers: ";
14: cin >> a;
15: cin >> b;
16: cout << "\nCalling Add()\n";
17: c=Add(a,b);
18: cout << "\nBack in main().\n";
19: cout << "c was set to " << c;
20: cout << "\nExiting...\n\n";
21: return 0;
22: }

I'm in main()!
Enter two numbers: 3 5
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 9



Calling Add()
In Add(), received 3 and 5

Back in main().
c was set to 8

Exiting...

2. Bin s.
Bin s l g:
Trong C++, bin s l ni lu gi thng tin. Mt bin s l mt v tr
trong b nh ca my tnh m c th lu gi mt gi tr v t bn c th truy
nhp vo gi tr sau ny.
Cch thit lp bin:
Khi nh ngha mt bin trong C++, bn phi bo cho trnh bin dch bit bin
l kiu g : s nguyn, k t,.... y l thng tin bo cho trnh bin dch bit kch
thc ln bao nhiu thit lp mt khong b nh v kiu gi tr bn mun lu
trong bin ca bn.
Kch thc kiu s nguyn (Intergers)
Mt bin char (dng lu k t) thng l mt byte. Mt short interger l
2 byte trn hu ht cc my tnh, mt long interger thng l 4 byte, v mt
interger (khng phi l long hay short) c th l 2 hay 4 byte.
Mt character l mt ch n, s, hay biu tng chim 1 byte ca b nh.
V d 1. Xc nh kch thc kiu bin trn my tnh
1: #include <iostream.h>
2:
3: int main()
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 10


4: {
5: cout << "The size of an int is:\t\t" << sizeof(int) << " bytes.\n";
6: cout << "The size of a short int is:\t" << sizeof(short) << " bytes.\n";
7: cout << "The size of a long int is:\t" << sizeof(long) << " bytes.\n";
8: cout << "The size of a char is:\t\t" << sizeof(char) << " bytes.\n";
9: cout << "The size of a float is:\t\t" << sizeof(float) << " bytes.\n";
10: cout << "The size of a double is:\t" << sizeof(double) << " bytes.\n";
11:
12: return 0;
13: }
Output: The size of an int is: 2 bytes.
The size of a short int is: 2 bytes.
The size of a long int is: 4 bytes.
The size of a char is: 1 bytes.
The size of a float is: 4 bytes.
The size of a double is: 8 bytes.
S c du v khng du.
Ni chung tt c cc kiu s nguyn l 2 dng chnh : c du v khng c du.
Mc ch y l thnh thong bn cn s m v khng cn. S nguyn ( short v
long )khng c t "unsigned" c coi l c du (signed). S nguyn c du hoc
l s dng hoc s m. S nguyn khng du lun l dng.
S nguyn khng du short c gi tr t : 0 n 65535
S nguyn c du short c gi tr t : -32768 n 32767
Cc kiu bin c bn
Bin du phy ng dng biu din s thc (real)
Bin Character chim 1 byte dng cha 256 k t hoc biu tng ca
bng ASCII hoc ASCII m rng.
Bng 3.1. Cck kiu bin (Variable Types)
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 11



Type

Size

Values
Unsigned short int
2
bytes
0 to 65,535
Short int
2
bytes
-32,768 to 32,767
Unsigned long int
4
bytes
0 to 4,294,967,295
Long int
4
bytes
-2,147,483,648 to
2,147,483,647
Int (16 bit)
2
bytes
-32,768 to 32,767
Int (32 bit)
4
bytes
-2,147,483,648 to
2,147,483,647
Unsigned int (16 bit)
2
bytes
0 to 65,535
Unsigned int (32 bit)
2
bytes
0 to 4,294,967,295
Char 1 byte 256 character values
Float
4
bytes
1.2e-38 to 3.4e38
Double
8
bytes
2.2e-308 to 1.8e308
Cch to mt bin:
u tin l kiu bin, sau l mt hoc nhiu du cch, sau l tn
bin v du chm phy.
V d 1:
main()
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 12


{
unsigned short x;
unsigned short y;
ULONG z;
z = x * y;
}
V d 2:
main ()
{
unsigned short Width;
unsigned short Length;
unsigned short Area;
Area = Width * Length;
}

C th to nhiu bin cng mt lc nh sau:
unsigned int myAge, myWeight; // khai bo hai bin kiu nguyn dng
long area, width, length; // khai bo ba bin kiu long integer
T kho.
Bao gm : if, while , for, main.
Khng c s dng t kha lm tn bin.
Gn gi tr cho bin
Gn gi tr cho bin bng cch s dng ton t (=). V d:
unsigned short Width;
Width = 5;
Bn c th gp ba bc thnh mt bc.
unsigned short Width = 5;
Tng t, c th khi to cho nhiu bin cng mt lc nh sau:
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 13


long width = 5, length = 7;
V d ny khi to bin s nguyn long l width =5 v bin s nguyn long l
length =7. Ta c th kt hp c khai bo v khi to nh sau:
int myAge = 39, yourAge, hisAge = 40;
V d 2. Cc s dng bin.
1: // Demonstration of variables
2: #include <iostream.h>
3:
4: int main()
5: {
6: unsigned short int Width = 5, Length;
7: Length = 10;
8:
9: // Khai bo bin Area kiu unsigned short int v khi to vi
10: // kt qu ca php nhn bin Width v Length
11: unsigned short int Area = Width * Length;
12:
13: cout << "Width:" << Width << "\n";
14: cout << "Length: " << Length << endl;
15: cout << "Area: " << Area << endl;
16: return 0;
17: }
Output: Width:5
Length: 10
Area: 50
nh ngha kiu Typedef
Bn c th cm thy chn ngt v bun t nu c phi s dng kiu khai bo
unsigned short int.
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 14


C++ cho php bn to ra mt b danh cho cm t ny bng cch s dng t
kho typedef, vit tt cho s nh ngha kiu.
Ta nh ngha bng cch: sau t kho typedef l kiu v sau l tn mi. V
d:
Typedef unsigned short int USHORT
Tn mi USHORT s dng bt c u thay th cho vic vit : unsigned
short int.
V d 3. S dng nh ngha kiu typedef
1: // *****************
2: // Demonstrates typedef keyword
3: #include <iostream.h>
4:
5: typedef unsigned short int USHORT; // nh ngha USHORT cho kiu
unsigned short int
6:
7: void main()
8: {
9: USHORT Width = 5;
10: USHORT Length;
11: Length = 10;
12: USHORT Area = Width * Length;
13: cout << "Width:" << Width << "\n";
14: cout << "Length: " << Length << endl;
15: cout << "Area: " << Area <<endl;
16: }
Output: Width:5
Length: 10
Area: 50
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 15


Hin tng nhy vng trong s nguyn c du v khng c du.
Hin tng nhy vng khi bin s vt qu gi tr cho php ca kiu khai
bo.
V d 4. Gii thch v gn gi tr qu ln cho bin kiu s nguyn dng
(unsigned integer)
1: #include <iostream.h>
2: int main()
3: {
4: unsigned short int smallNumber;
5: smallNumber = 65535;
6: cout << "small number:" << smallNumber << endl;
7: smallNumber++;
8: cout << "small number:" << smallNumber << endl;
9: smallNumber++;
10: cout << "small number:" << smallNumber << endl;
11: return 0;
12: }
Output: small number:65535
small number:0
small number:1
V d 5. Gii thch v gn gi tr qu ln cho bin kiu s nguyn (signed
integer)
1: #include <iostream.h>
2: int main()
3: {
4: short int smallNumber;
5: smallNumber = 32767;
6: cout << "small number:" << smallNumber << endl;
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 16


7: smallNumber++;
8: cout << "small number:" << smallNumber << endl;
9: smallNumber++;
10: cout << "small number:" << smallNumber << endl;
11: return 0;
12: }
Output: small number:32767
small number:-32768
small number:-32767
Characters
Bin k t ( type char ) l 1 byte, cha 256 gi tr. Mt char c th
c dch nh l mt s nh ( 0-255) hay nh l mt s ca tp ASCII. Trong m
ASCII, "a" c xc nh bng gi tr 97. Tt c ch thng v ch hoa, ch s v
cc du chm c gi tr trong khong 1 n 128.
V d 6. In cc k t t s trong bng m ASCII
1: #include <iostream.h>
2: int main()
3: {
4: for (int i = 32; i<128; i++)
5: cout << (char) i;
6: return 0;
7: }
Output: !"#$%G'()*+,./0123456789:;<>?@ABCDEFGHIJKLMNOP
_QRSTUVWXYZ[\]^'abcdefghijklmnopqrstuvwxyz<|>~s
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 17


3. Biu thc v cu lnh
Mt chng trnh l mt tp cc lnh x l ni tip nhau.
Cu lnh:
Trong C++ mt cu lnh iu khin chui x l, c lng mt biu thc,
hoc khng c g (cu lnh rng ). Tt c cc cu lnh kt thc vi mt du chm
phy, thm ch cu lnh "null". Mt trong cc cu lnh thng dng l lnh gn :
x = a + b ;
Khng ging nh trong i s, cu lnh ny khng c ngha l x bng a+b.
M c l " Gn gi tr ca php cng a v b cho x" hoc " Gn cho x, a+b ".
Ton t gn s gn bt c ci g bn phi du bng cho bt c ci g bn tri
du bng.
Khong trng
Khong trng ( tabs, spaces, v cc dng mi) thng c b qua trong cu
lnh. Cu lnh gn trn s c vit nh sau:
x=a+b;
Hoc nh l :
x =a
+ b ;
Khong trng c th c dng cho chng trnh d c,d sa hn, hoc
n c th c dng to ra m kinh khng v khng th c ra c. Trong
trng hp ny,nh tt c mi th, C++ cung cp kh nng.
Cc k t khong trng (tab, space, newline ) khng th nhn thy c. Nu
cc k t ny c in ra, bn ch nhn thy khong trng trn giy.
Cc lnh khi v lnh phc.
Bt c ni no bn c th a vo mt cu lnh n, bn c th a vo mt
cu lnh phc, cng c th c gi l mt khi. Mt khi bt u vi 1 du ngoc
m ({) v kt thc vi 1 du ngoc ng (}). Mc d vy mi cu lnh trong khi
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 18


phi kt thc vi mt du chm phy, khi t n khng kt thc vi mt du chm
phy. V d :
{
temp = a;
a = b;
b = temp;
}
Khi m ny hot ng nh mt lnh v s trao i cc gi tr trong cc bin
a v b
Cc ton t.
L biu tng m lm cho trnh bin dch hot ng. Cc ton t hot ng
trn cc ton hng, v trong C++ tt c cc t l cc biu thc. Trong C++ c mt
vi loi ton t khc nhau. Hai loi ton t l :
- Cc ton t gn.
- Cc ton t ton hc.
Ton t gn.
Ton t gn (=). V d :
x = a + b ;
Ta c th gn mt bin bng mt hng s nh sau.
x = 35 ;
Nhng khng th vit:
35 = x ;
Ton t ton hc.
C 5 ton t ton hc: cng (+), tr (-), nhn (*), chia (/), v (%).
V d 2.
1: // Listing 2 - demonstrates subtraction and
2: // integer overflow
3: #include <iostream.h>
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 19


4:
5: int main()
6: {
7: unsigned int difference;
8: unsigned int bigNumber = 100;
9: unsigned int smallNumber = 50;
10: difference = bigNumber - smallNumber;
11: cout << "Difference is: " << difference;
12: difference = smallNumber - bigNumber;
13: cout << "\nNow difference is: " << difference <<endl;
14: return 0;
15: }
Output: Difference is: 50
Now difference is: 4294967246
Ch khi thc hin php tr. Nu ly s nh hn tr i mt s ln hn, s c
kt qu l s m. Nu l s khng du th s xy ra trn nh v d trn.
Php chia s nguyn v php chia ly s d.
Php chia s nguyn c khc mt cht so vi php chia thng thng. Khi
chia 21 cho 4, kt qu l mt s thc (mt s thp phn). Cc s nguyn khng c
phn thp phn, v v vy "remainder" (s d) c ct i. Tr li l 5. ly
c s d, a 21 modulus 4 (21%4) v kt qu l 1.
- Php chia divison (/) l php chi ly phn nguyn.
- Php chia modulus (%) l php chia ly phn d.
Cho 2 s nguyn a v b. Ta c:
if (a % b ==0)
{
cout<< S << a << chia ht cho << s << b;
// hoc printf(S %d chia ht cho s %d, a, b);
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 20


}
Ton t gn v ton t ton hc phc.
Him khi mun cng mt gi tr vi mt bin s v sau gn kt qu tr
li bin. Nu c mt bin myAge v bn mun tng gi tr thm hai, c th vit:
int myAge = 5;
int temp;
temp = myAge + 2; // cng 5 vi 2 ri gn kt qu vo temp
myAge = temp; // gn tr li vo myAge
Phng php ny rt kh chu v gy lng ph. Trong C++, c th a vo
bin tng t trn c hai chiu ca ton t gn, v v vy on chng trnh trn
c ci tin tt hn nhiu :
MyAge = myAge + 2 ;
Trong i s biu thc thc ny l v ngha, nhng trong C++ c c l
"cng 2 vo gi tr ca myAge v gn kt qu vo myAge ".
Mt cch vit n gin hn l :
MyAge += 2 ;
Ton t (+=) cng r-gi tr vo 1-gi tr v sau gn tr li kt qu vo trong
1-gi tr. Ton t l "cng-bng". Cu lnh c l "myAge cng-bng 2". Nu
myAge c gi tr 4 bt u, sau cu lnh s l 6.
C cc ton t "t -gn" tr (-=), chia (/=), nhn (*=), v modulus (%=).
Cc php tng v gim
Thng thng gi tr cng (hoc tr) v sau gn li vo bin l 1.Trong
C++, vic tng gi tr l 1 c gi l lng tng, v gim 1 c gi lng gim.
C cc ton t c bit thc hin nhng tc ng ny.
Ton t tng (++) tng gi tr ca bin ln 1, v ton t gim (--) gim i 1.
V vy,nu c 1 bin, c, v mun tng n, ta s s dng lnh ny:
c++ ;
Lnh ny tng ng vi lnh sau:
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 21


c = c +1 ;
Cu lnh ny cng tng ng:
c += 1 ; //hn ch dng cch vit ny
Quyn u tin.
Trong cu lnh phc tp : x = 5 + 3 * 8;
Th php nhn s c thc hin trc php cng.
Mi ton t u c 1 gi tr u tin. Khi 2 ton t ton hc c cng quyn u
tin, chng s thc hin theo trt t " t tri - qua - phi". V vy
X = 5 + 3 + 8 * 9 + 6 * 4 ;
Php nhn s thc hin t tri qua phi. V vy, 8 * 9 = 72, v 6*4 =24. By
gi cu lnh s l:
X = 5 + 3 + 72 + 24;
By gi php cng thc hin t tri qua phi: 5 + 3 =8 ; 8+72 =80 ; 80+24 =
104.
Hy cn thn vi iu ny. Mt s ton t, nh l ton t gn thc hin theo
trt t t " phi - qua - tri ". V d :
TotalSeconds = NumMinutesToThink + NumMinutesToType * 60
Trong biu thc ny, ta mun nhn NumMinutesToType vi 60 v sau
cng n vi NumMinutesToThink. Ta mun cng hai bin ta c tng s pht, v
sau nhn n vi 60 c tng s giy.
Trong trng hp ny, ta phi s dng cc du ngoc thay i trt t u
tin. Cc s hng trong du ngoc c xc nh trt t u tin cao hn nhng
ton t ton hc. V vy ta phi vit :
TotalSeconds = ( NumMinutesToThink + NumMinutesToType ) * 60
Ton t quan h
Dng xc nh hoc 2 s bng nhau, hoc 1 s ln hn hoc nh hn 1 s
khc. Cu lnh quan h xc nh hoc 1 (TRUE) hoc 0 (FALSE).
- Ton t bng "equals" :
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 22


MyAge == yourAge ; // gi tr myAge tng t ca yourAge ?
Biu thc xc nh 0, hoc FALSE khi 2 bin khng bng nhau.
- Ton t ln hn.
MyAge > yourAge ; // gi tr myAge ln hn yourAge ?
Trong C++ c 6 ton t quan h :
Bng : ==
Nh hn: <
Ln hn: >
Nh hn hoc bng: <=
Ln hn hoc bng : >=
Khc nhau : !=
Bng 4.1. Cc ton t quan h (The Relational Operators)

Name
Operato
r
Sample Evaluates
Bng (Equals) ==
100 ==
50;
false
50 ==
50;
true
Khng bng (Not Equals) !=
100 !=
50;
true
50 !=
50;
false
Ln hn (Greater Than) >
100 >
50;
true
50 > 50; false
Ln hn hoc bng
(Greater Than
>=
100 >=
50;
true
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 23


or Equals)
50 >=
50;
true
Nh hn (Less Than) <
100 <
50;
false
50 < 50; false
Nh hn hoc bng (Less
Than
<=
100 <=
50;
False
or Equals)
50 <=
50;
true

Cu lnh IF.
Cu lnh if cho php bn kim tra mt iu kin, v r nhnh ti phn khc
ca on m, ph thuc vo kt qu.
Cu lnh if n gin nht l:
if (biu thc)
Khi lnh ;
Biu thc trong du ngoc c th l bt c biu thc no, nhng n thng
cha mt biu thc quan h. Nu biu thc c gi tr 0, n coi l sai, v lnh c
b qua. Nu n c gi tr khng phi l 0, n coi l ng, v lnh c x l. Ch
v d sau:
if (bigNumber > smallNumber)
bigNumber = smallNumber;
Nu lnh trong cu lnh if gm nhiu lnh th dng lnh if nh sau:
if (biu thc)
{
khi lnh1;
khi lnh2;
khi lnh3;
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 24


}
V d:
if (bigNumber > smallNumber)
{
bigNumber = smallNumber;
cout << "bigNumber: " << bigNumber << "\n";
cout << "smallNumber: " << smallNumber << "\n";
}
V d 4.
1: // Listing 4 - demonstrates if statement
2: // used with relational operators
3: #include <iostream.h>
4: int main()
5: {
6: int RedSoxScore, YankeesScore;
7: cout << "Enter the score for the Red Sox: ";
8: cin >> RedSoxScore;
9:
10: cout << "\nEnter the score for the Yankees: ";
11: cin >> YankeesScore;
12:
13: cout << "\n";
14:
15: if (RedSoxScore > YankeesScore)
16: cout << "Go Sox!\n";
17:
18: if (RedSoxScore < YankeesScore)
19: {
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 25


20: cout << "Go Yankees!\n";
21: cout << "Happy days in New York!\n";
22: }
23:
24: if (RedSoxScore == YankeesScore)
25: {
26: cout << "A tie? Naah, can't be.\n";
27: cout << "Give me the real score for the Yanks: ";
28: cin >> YankeesScore;
29:
30: if (RedSoxScore > YankeesScore)
31: cout << "Knew it! Go Sox!";
32:
33: if (YankeesScore > RedSoxScore)
34: cout << "Knew it! Go Yanks!";
35:
36: if (YankeesScore == RedSoxScore)
37: cout << "Wow, it really was a tie!";
38: }
39:
40: cout << "\nThanks for telling me.\n";
41: return 0;
42: }
Output: Enter the score for the Red Sox: 10
Enter the score for the Yankees: 10
A tie? Naah, can't be
Give me the real score for the Yanks: 8
Knew it! Go Sox!
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 26


Thanks for telling me.
Cch t du ngoc gip chng trnh sng, d nm bt.
if (biu thc)
{
Cu lnh ; // Li cu lnh vo mt cht
}
Else
Thng chng trnh ca bn s mun r nhnh nu iu kin ng, v nu
iu kin sai. Nu ch s dng lnh if khng th chng trnh s di v ta s dng
t kho "else" nh sau:
If (biu thc)
Cu lnh ;
Else
Cu lnh ;
V d 5. S dng t kha ELSE
1: // Listing 5 - demonstrates if statement
2: // with else clause
3: #include <iostream.h>
4: int main()
5: {
6: int firstNumber, secondNumber;
7: cout << "Please enter a big number: ";
8: cin >> firstNumber;
9: cout << "\nPlease enter a smaller number: ";
10: cin >> secondNumber;
11: if (firstNumber > secondNumber)
12: cout << "\nThanks!\n";
13: else
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 27


14: cout << "\nOops. The second is bigger!";
15:
16: return 0;
17: }

Output: Please enter a big number: 10
Please enter a smaller number: 12
Oops. The second is bigger!

Cc kiu c php lnh if.
Dng 1:
If (biu thc)
khi lnh1 ;
khi lnh2 ;
Nu biu thc xc nh l ng, "khi lnh1" c x l v chng trnh tip
tc vi "khi lnh2". Nu biu thc sai, cu lnh c b qua v chng trnh
nhy ti "khi lnh2".
Ch rng khi lnh c th l mt cu lnh n kt thc vi 1 du chm phy
hoc nhiu cu lnh th phi c 2 du ngoc m ng khi ({,})
Dng 2.
if (biu thc)
khi lnh1;
else
khi lnh2;
khi lnh3;
Nu biu thc ng th "khi lnh1" c x l; nu sai "khi lnh2" c x
l, sau y, chng trnh tip tc vi "khi lnh3". V d:
if (SomeValue < 10)
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 28


cout << "SomeValue is less than 10");
else
cout << "SomeValue is not less than 10!");
cout << "Done." << endl;
Cc lnh if phc tp.
if (biu thc1)
{
if (biu thc2)
khi lnh1;
else
{
if (biu thc3)
{
cu lnh1;
cu lnh2;
}
else
khi lnh3;
}
}
else
khi lnh4;
V d :
V d 6. S dng cc lnh IF phc tp lng nhau
1: // Listing 6 - a complex nested
2: // if statement
3: #include <iostream.h>
4: int main()
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 29


5: {
6: // Nhp t bn phm vo hai s
7: // Ln lt gn vo 2 bin bigNumber v littleNumber
8: // Kim tra nu bigNumber ln hn littleNumber,
9: // nu ng -> kim tra nu chng chia ht cho nhau
10: // nu ng -> kim tra xem chng c bng nhau hay khng
11:
12: int firstNumber, secondNumber;
13: cout << "Enter two numbers.\nFirst: ";
14: cin >> firstNumber;
15: cout << "\nSecond: ";
16: cin >> secondNumber;
17: cout << "\n\n";
18:
19: if (firstNumber >= secondNumber)
20: {
21: if ( (firstNumber % secondNumber) == 0) // nu chia ht cho nhau?
22: {
23: if (firstNumber == secondNumber)
24: cout << "They are the same!\n";
25: else
26: cout << "They are evenly divisible!\n";
27: }
28: else
29: cout << "They are not evenly divisible!\n";
30: }
31: else
32: cout << "Hey! The second one is larger!\n";
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 30


33: return 0;
34: }

Output: Enter two numbers.
First: 10

Second: 2

They are evenly divisible!
Ton t lgc.
Bng 4.2. Ton t Logic (The Logical Operators)
Ton
t
K
hiu
V d
AND &
&
biu thc1 && biu thc2
OR || biu thc1 || biu thc2
NOT ! !biu thc
Php lgc AND
Php AND ng (=1) khi c hai biu thc u ng. Sai khi 1 trong 2 biu
thc sai.
If ( ( x == 5 ) && (y == 5) )
Php AND c biu tng l &&.
Php lgc OR
ng khi 1 trong 2 hoc c 2 biu thc ng. Sai khi c 2 biu thc u sai.
if ( (x == 5) || (y == 5) )
Php OR c biu tng l .
Php lgc NOT.
L php ph nh.
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 31


if ( !(x == 5) )
kt qu ca if l ng nu x khc 5. Php ny c th vit cch khc nh sau :
if ( x != 5 )
Quyn u tin trong ton t lgc.
V d:
if ( x > 5 && y > 5 || z > 5)
Nu vit cch ny s lm cho cu lnh khng r ngha. Do ta c th s
dng cc du ngoc.
if ( (x > 5) && (y > 5 || z > 5) )
Ch trong khi vit chng trnh cn trnh by sao cho d c v d hiu.
Mt s cch vit tt.
V d 1:
if (x) // if x is true (nonzero)
x = 0;
Cu lnh c ngha : nu x c gi tr khc 0, t n l 0. Ta c th vit cch
khc r rng hn:
if (x != 0) // if x is nonzero
x = 0;
V d 2:
Hai cu lnh sau l tng ng :
if (!x) // if x is false (zero)
if (x == 0) // if x is zero
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 32


4. Cc hm.
Hm l g ?
Hm l mt chng trnh con m c th lm vic trn d liu v tr v mt
gi tr. Trong chng trnh C++ c ti thiu mt hm: hm main() . Khi chng
trnh bt u, main() c t ng gi. main() c th gi cc hm khc.
Mi hm c tn ca n v khi tn c gp, vic x l chng trnh r nhnh
vo trong thn hm. Khi hm tr v, vic x l tr li trn dng tip theo ca hm
gi.
Cc hm c hai cch to ra:
- Do ngi s dng nh ngha.
- C sn trong trnh bin dch.
Khai bo v nh ngha hm.
S dng cc hm trong chng trnh,u tin phi khai bo hm v sau
nh ngha hm . Khai bo l ch ra tn, kiu tr v, cc tham s ca hm. nh
ngha l bo trnh bin dch bit hm lm vic nh th no. Khng c hm no
c gi t hm khc m khng khai bo. Khai bo l th tc u tin.
Khai bo hm.
C 3 cch khai bo mt hm:
- Vit nguyn mu vo trong mt file, sau s dng mt ch dn
#include gp n vo trong chng trnh ca bn.
- Vit nguyn mu vo trong file m hm ca bn c s dng.
- nh ngha hm trc khi n c gi bi bt k hm. Khi lm iu ny,
vic nh ngha hot ng nh chnh s khai bo ca n.
Cch th nht, l tng ti v kh cho vic sa v thay i.
Cch th hai, gi s rng hm A() cn c th gi hm B(), nhng hm B()
cng cn c th gi hm A() trong mt s trng hp.
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 33


C th nh ngha hm A() trc khi nh ngha hm B() v cng hm B()
trc khi nh ngha hm A(), v vy ti thiu 1 trong s chng phi c khai bo
trong bt c trng hp no.
Cch th ba, cc nguyn mu l mt k thut g ri y sc mnh v tt. Nu
nguyn mu ca bn khai bo rng hm gm mt tp cc tham s ring bit, hoc
rng n tr v mt kiu gi tr c th, v sau hm khng sp xp nguyn mu,
trnh bin dch c th ra hiu bng c li ca bn thay v i n hin ln khi chy
chng trnh .
Cc nguyn mu hm.
Nhiu hm c sn, bn c th s dng chng trong chng trnh ca bn bng
cch s dng # include . i vi cc hm ca chnh bn vit, bn phi gp
nguyn mu.
Nguyn mu hm l mt cu lnh , ngha l n kt thc vi du chm phy
(;). N kiu tr v ca hm, tn, v danh sch tham s.
Danh sch tham s l mt danh sch ca tt c cc tham s v kiu ca chng,
phn cch bi du phy (commas).
Nguyn mu hm v s nh ngha hm phi ging nhau chnh xc v kiu tr
v, tn, danh sch tham s. Nu chng khng ging nhau , bn s nhn c mt
li "compile-time". Ch : nguyn mu hm khng cn gm tn ca tham s, m
ch l kiu ca chng. Mt nguyn mu trng ging nh :
long Area (int , int ) ;
Nguyn mu ny khai bo mt hm tn l Area() tr v mt long v c hai
tham s, c hai l s nguyn. Mc d y l theo qui nh, n khng phi l
tng tt. Tn tham s thm vo lm cho nguyn mu r rng hn. Hm tng t
vi cc tham s c dt tn c th l :
long Area (int length, int width) ;
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 34


Ch rng: tt c cc hm c mt kiu tr v. Nu khng nh r, kiu tr v
mc nh l int . Chng trnh ca bn s hiu d dng hn, mc d, nu khai bo
r rng kiu tr v ca mi hm, k c main() .
V d 1.
1: // Listing 1 - demonstrates the use of function prototypes
2:
3: typedef unsigned short USHORT; //nh ngha USHORT thay
unsigned short
4: #include <iostream.h>
5: USHORT FindArea(USHORT length, USHORT width); //khai bo
mu ca hm
6:
7: int main()
8: {
9: USHORT lengthOfYard;
10: USHORT widthOfYard;
11: USHORT areaOfYard;
12:
13: cout << "\nHow wide is your yard? ";
14: cin >> widthOfYard;
15: cout << "\nHow long is your yard? ";
16: cin >> lengthOfYard;
17:
18: areaOfYard= FindArea(lengthOfYard,widthOfYard);
19:
20: cout << "\nYour yard is ";
21: cout << areaOfYard;
22: cout << " square feet\n\n";
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 35


23: return 0;
24: }
25:
26: USHORT FindArea(USHORT l, USHORT w)
27: {
28: return l * w;
29: }
Output: How wide is your yard? 100

How long is your yard? 200

Your yard is 20000 square feet
nh ngha hm .
nh ngha hm bao gm u hm v thn hm. u hm chnh xc ging
nh nguyn mu hm, ngoi tr cc tham s phi c t tn, v khng c du
chm phy kt thc.
Thn hm l mt tp cc lnh bn trong cc du ngoc.
C php nguyn mu hm:
Return_type function_name ( [type [parameterName] ] .....) ;
C php nh ngha hm:
Return_type function_name ( [type [parameterName] ] .....) ;
{
cu lnh ;
}
Nguyn mu hm ch ra : kiu tr v, tn, danh sch tham s. Hm khng cn
c cc tham s, v nguyn mu khng cn danh sch cc tn ca chng, ch c cc
kiu ca chng. Mt nguyn mu lun kt thc vi du chm phy (;).
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 36


nh ngha hm phi ph hp kiu tr v v danh sch tham s vi nguyn
mu ca n. N phi cung cp tn cho cc tham s, v thn nh ngha hm phi
c bao quanh bng cc du ngoc. Tt c cc lnh bn trong thn hm phi c
kt thc vi du chm phy (;), nhng hm t n khng kt thc vi mt du chm
phy m n kt thc vi mt du ng ngoc. Nu hm tr v mt gi tr, n kt
thc vi mt cu lnh return, mc d cc lnh return c th xut hin hp php
bt c ni no trong thn hm. Mi hm c 1 kiu tr v. Nu khng r rng, kiu
tr v s l int. Nu mt hm khng tr v mt gi tr, kiu tr v ca n s l void.
Function Prototype Examples
long FindArea(long length, long width); // hm 2 tham s v tr v kiu
long
void PrintMessage(int messageNumber); // hm mt tham s v khng
tr v gi tr
int GetChoice(); // hm khng c tham s v tr
v kiu int
int BadFunction(); // hm khng c tham s v tr v kiu
int

Function Definition Examples
long Area(long l, long w)
{
return l * w;
}

void PrintMessage(int whichMsg)
{
if (whichMsg == 0)
cout << "Hello.\n";
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 37


if (whichMsg == 1)
cout << "Goodbye.\n";
if (whichMsg > 1)
cout << "I'm confused.\n";
}
X l hm.
Khi bn gi mt hm, vic x l bt u vi cu lnh u tin sau du ngoc
m ({). Nhnh c th c x l bng cch s dng lnh if. Cc hm cng c th
gi cc hm khc thm ch gi chnh chng.
Bin khu vc (local variables).
Bin khu vc ch tn ti trong khu vc bn trong hm ca n. Khi hm tr v,
cc bin khu vc l bin khng c hiu lc na.
Bin khu vc c nh ngha nh bt c bin khc. Cc tham s t bn
trong hm cng coi l bin khu vc v c th c s dng chnh xc bi v nu
chng c nh ngha bn trong thn hm.
V d 2. S dng bin khu vc
1: #include <iostream.h>
2:
3: float Convert(float);
4: int main()
5: {
6: float TempFer;
7: float TempCel;
8:
9: cout << "Please enter the temperature in Fahrenheit: ";
10: cin >> TempFer;
11: TempCel = Convert(TempFer);
12: cout << "\nHere's the temperature in Celsius: ";
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 38


13: cout << TempCel << endl;
14: return 0;
15: }
16:
17: float Convert(float TempFer)
18: {
19: float TempCel;
20: TempCel = ((TempFer - 32) * 5) / 9;
21: return TempCel;
22: }

Output: Please enter the temperature in Fahrenheit: 212
Here's the temperature in Celsius: 100
Please enter the temperature in Fahrenheit: 32
Here's the temperature in Celsius: 0
Please enter the temperature in Fahrenheit: 85
Here's the temperature in Celsius: 29.4444

V d khc:
1: #include <iostream.h>
2:
3: float Convert(float);
4: int main()
5: {
6: float TempFer;
7: float TempCel;
8:
9: cout << "Please enter the temperature in Fahrenheit: ";
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 39


10: cin >> TempFer;
11: TempCel = Convert(TempFer);
12: cout << "\nHere's the temperature in Celsius: ";
13: cout << TempCel << endl;
14: }
15:
16: float Convert(float Fer)
17: {
18: float Cel;
19: Cel = ((Fer - 32) * 5) / 9;
20: return Cel;
21: }
Hin nay, cc bin c khai bo bn trong u ca mt vng for (for int i =
0; i<SomeValue ; i++ )
Bin ton cc (global variables)
Cc bin c nh ngha bn ngoi ca bt c hm c phm vi ln v v vy
c sn bt c hm trong chng trnh, k c main() .
Bin khu vc vi tn tng t nh cc bin ton cc khng lm thay i bin
ton cc. Nu mt hm c 1 bin vi tn ging bin ton cc, tn c xem l bin
khu vc--khng l bin ton cc-- khi c dng trong hm.
V d 3. S dng bin khu vc v ton cc
1: #include <iostream.h>
2: void myFunction(); // khai bo nguyn mu hm
3:
4: int x = 5, y = 7; // x v y y l cc bin ton cc
5: int main()
6: {
7:
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 40


8: cout << "x from main: " << x << "\n";
9: cout << "y from main: " << y << "\n\n";
10: myFunction();
11: cout << "Back from myFunction!\n\n";
12: cout << "x from main: " << x << "\n";
13: cout << "y from main: " << y << "\n";
14: return 0;
15: }
16:
17: void myFunction()
18: {
19: int y = 10;
20:
21: cout << "x from myFunction: " << x << "\n";
22: cout << "y from myFunction: " << y << "\n\n";
23: }

Output: x from main: 5
y from main: 7

x from myFunction: 5
y from myFunction: 10

Back from myFunction!

x from main: 5
y from main: 7
V d bin khu vc.
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 41


V d 4.
1: // Listing 4 - demonstrates variables
2: // scoped within a block
3:
4: #include <iostream.h>
5:
6: void myFunc();
7:
8: int main()
9: {
10: int x = 5;
11: cout << "\nIn main x is: " << x;
12:
13: myFunc();
14:
15: cout << "\nBack in main, x is: " << x;
16: return 0;
17: }
18:
19: void myFunc()
20: {
21:
22: int x = 8;
23: cout << "\nIn myFunc, local x: " << x << endl;
24:
25: {
26: cout << "\nIn block in myFunc, x is: " << x;
27:
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 42


28: int x = 9;
29:
30: cout << "\nVery local x: " << x;
31: }
32:
33: cout << "\nOut of block, in myFunc, x: " << x << endl;
34: }

Output: In main x is: 5
In myFunc, local x: 8

In block in myFunc, x is: 8
Very local x: 9
Out of block, in myFunc, x: 8

Back in main, x is: 5
Chng trnh bt u vi s khi to 1 bin khu vc, x, trn dng 10, trong
main(). In ra trn dng 11 xc nh rng x c khi to vi gi tr 5. MyFunc()
c gi, v 1 bin khu vc, cng c t tn x, c khi to vi gi tr 8 trn
dng 22. Gi tr c in ra trn dng 23.
Mt khi c bt u trn dng 25, v bin x t hm c in li trn dng
26. Mt bin mi cng c t tn x, nhng khu vc khi c to ra trn
dng 28 v c khi to vi gi tr 9.
Gi tr ca bin x mi nht c in ra trn dng 30. Khi kt thc trn dng
31, v bin c to ra trn dng 28 -"out of scope".
Khi x c in ra trn dng 33, x c nh ngha trn dng 28; gi tr ca
n vn l 8.
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 43


Cu lnh hm.
Hu nh khng c gii hn v s kiu cu lnh m c th bn trong thn
hm. Trong mt hm bn c th gi 1 hm khc. Cc hm c th thm ch gi
chnh chng ( quy)
Mc d khng c gii hn v kch thc ca 1 hm trong C++, nhng xu
hng xy dng hm c kch thc nh. Nhiu nh lp trnh khuyn lm cho hm
va trn mt mn hnh n v vy bn c th nhn ton b hm cng mt lc.
y l mt qui lut lt trang, thng ngt qung bi cc nh lp trnh gii, mt
hm cng nh th cng d hiu v sa cha.
Mi hm nn thc hin mt cng vic n l v d hiu.
i s ca hm.
Cc i s hm c l l 1 i s hm, bao gm cc hng s, biu thc lgc v
ton hc, v cc hm khc m tr v gi tr .
Bt c biu thc C++ c th l 1 i s hm, bao gm cc hng s, biu thc
lgc v ton hc, v cc hm khc m tr v gi tr .
S dng cc hm nh l cc tham s thc hin cc chc nng.
Mc d l qui lut i vi mt hm thc hin nh 1 tham s ca hm
th hai m tr v 1 gi tr, n c th lm cho m chng trnh kh c v rc ri.
V d, c cc hm : double(), triple(), square(), v cube(); mi hm tr v 1
gi tr. C th vit.
Answer = (double(triple(square(cube(myValue)))));
Cu lnh ny dng 1 bin, myValue, v coi n nh 1 i s i vi hm
cube(), gi tr tr v c coi l i s ca hm square(), gi tr tr v ca n coi l
i s ca hm triple(), v gi tr tr v a ti hm double(). Gi tr tr v ca
hm double(), triple(), square(), cube() c a ti Answer.
Kh c th chc chn on m no thc hin (l gi tr trc triple hay sau l
square ?).
Mt thay i k tip l gn mi bc ti bin trung gian ca n:
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 44


unsigned long myValue = 2;
unsigned long cubed = cube(myValue); // cubed = 8
unsigned long squared = square(cubed); // squared = 64
unsigned long tripled = triple(squared); // tripled = 196
unsigned long Answer = double(tripled); // Answer = 392
Tham s l cc bin khu vc.
Tham s a vo trong hm ging nh truyn gi tr, ngha l to mt bn
sao l bin khu vc ca mi tham s trong hm. Nhng bn sao bin khu vc ny
c th thay i gi tr trong hm nhng khng nh hng g n bin ton cc
V d 5.
1: // Listing 5 - demonstrates passing by value
2:
3: #include <iostream.h>
4:
5: void swap(int x, int y);
6:
7: int main()
8: {
9: int x = 5, y = 10;
10:
11: cout << "Main. Before swap, x: " << x << " y: " << y << "\n";
12: swap(x,y);
13: cout << "Main. After swap, x: " << x << " y: " << y << "\n";
14: return 0;
15: }
16:
17: void swap (int x, int y)
18: {
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 45


19: int temp;
20:
21: cout << "Swap. Before swap, x: " << x << " y: " << y << "\n";
22:
23: temp = x;
24: x = y;
25: y = temp;
26:
27: cout << "Swap. After swap, x: " << x << " y: " << y << "\n";
28:
29: }

Output: Main. Before swap, x: 5 y: 10
Swap. Before swap, x: 5 y: 10
Swap. After swap, x: 10 y: 5
Main. After swap, x: 5 y: 10
Gi tr tr v.
Cc hm tr v gi tr hoc tr v dng void. Void l 1 tn hiu bo cho trnh
bin dch s khng c gi tr tr v.
tr v mt gi tr t 1 hm, vit t kho return theo sau l gi tr mun tr
v. Gi tr c th t n l 1 biu thc m tr v mt gi tr. V d:
return 5;
return (x > 5);
return (MyFunction());
y l tt c nhng lnh return theo qui nh, gi s rng hm MyFunction()
t n tr v mt gi tr. Gi tr trong cu lnh th hai, return (x>5), s l zero nu x
khng ln hn 5, hoc n s l 1. Ci c tr v l gi tr ca biu thc ,0 (false)
hay 1(true), khng phi gi tr ca x.
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 46


Khi t kho return c bt gp, biu thc sau return c tr v nh gi tr
ca hm. Chng trnh tr v v thot ngay lp tc khi gi hm, v bt c cu lnh
sau return khng c s l.
V d 6. S dng nhiu lnh return trong mt hm
1: // Listing 6 - demonstrates multiple return statements
2: // statements
3:
4: #include <iostream.h>
5:
6: int Doubler(int AmountToDouble);
7:
8: int main()
9: {
10:
11: int result = 0;
12: int input;
13:
14: cout << "Enter a number between 0 and 10,000 to double: ";
15: cin >> input;
16:
17: cout << "\nBefore doubler is called... ";
18: cout << "\ninput: " << input << " doubled: " << result << "\n";
19:
20: result = Doubler(input);
21:
22: cout << "\nBack from Doubler...\n";
23: cout << "\ninput: " << input << " doubled: " << result << "\n";
24:
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 47


25:
26: return 0;
27: }
28:
29: int Doubler(int original)
30: {
31: if (original <= 10000)
32: return original * 2;
33: else
34: return -1;
35: cout << "You can't get here!\n";
36: }
Output: Enter a number between 0 and 10,000 to double: 9000
Before doubler is called...
input: 9000 doubled: 0
Back from doubler...
input: 9000 doubled: 18000
Enter a number between 0 and 10,000 to double: 11000
Before doubler is called...
input: 11000 doubled: 0
Back from doubler...
input: 11000 doubled: -1
Tham s mc nh.
i vi mi tham s khai bo v nh ngha trong nguyn mu hm, hm
ang gi phi a vo mt gi tr. Gi tr c a vo phi l kiu c khai
bo. V vy, nu c 1 hm khai bo nh sau.
Long myFunction (int);
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 48


Hm phi nhn mt bin s nguyn. Nu nh ngha hm khng ging hoc
nu khng a vo mt s nguyn th s nhn c mt li bin dch.
Mt s ngoi tr i vi qui lut ny l nu nguyn mu hm khai bo 1 gi
tr mc nh i vi tham s. Gi tr mc nh l 1 gi tr s dng nu dng
dng "none". Khai bo trc c th c vit nh sau:
long myFunction (int x = 50) ;
Nguyn mu ni rng, "myFunction ()" tr v mt gi tr long v nhn 1 tham
s s nguyn. Nu mt i s khng c a vo, s dng gi tr mc nh 50.
Bi v tn tham s khng cn trong nguyn mu hm, nguyn mu ny c th c
vit nh sau:
long myFunction (int = 50);
nh ngha hm khng thay i bi khai bo 1 tham s mc nh. u
nh ngha hm i vi hm ny s l :
long myFunction (int x)
Nu hm gi khng c 1 tham s, trnh bin dch s in x vi gi tr mc
nh 50. Tn ca tham s mc nh trong nguyn mu khng ging nh tn trong
u hm; gi tr mc nh c gn cng v tr, khng c tn.
Bt c hoc tt c cc tham s ca hm c th c gn gi tr mc nh. Mt
s rc ri l : Nu bt c tham s no khng c gi tr mc nh, khng tham s c
trc no c th c 1 gi tr mc nh.
Nu nguyn mu hm trng ging nh:
long myFunction (int Param1, int Param2, int Param3);
C th gn 1 gi tr mc nh ch cho Param2, nu gn 1 gi tr mc nh cho
Param3. C th gn 1 gi tr mc nh ch cho Param1 nu gn cc gi tr mc
nh cho c hai Param2 v Param3.
V d 7. S dng tham s mc nh.
1: // Listing 7 - demonstrates use
2: // of default parameter values
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 49


3:
4: #include <iostream.h>
5:
6: int AreaCube(int length, int width = 25, int height = 1);
7:
8: int main()
9: {
10: int length = 100;
11: int width = 50;
12: int height = 2;
13: int area;
14:
15: area = AreaCube(length, width, height);
16: cout << "First area equals: " << area << "\n";
17:
18: area = AreaCube(length, width);
19: cout << "Second time area equals: " << area << "\n";
20:
21: area = AreaCube(length);
22: cout << "Third time area equals: " << area << "\n";
23: return 0;
24: }
25:
26: AreaCube(int length, int width, int height)
27: {
28:
29: return (length * width * height);
30: }
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 50



Output: First area equals: 10000
Second time area equals: 5000
Third time area equals: 2500

6. qui.
quy (recursion) l phng php dng trong cc chng trnh my tnh
trong c mt hm t gi chnh n
qui l mt phn kh, i hi k thut lp trnh cao. y ch trnh by s
lc v khi nim
V d 9. S dng quy vi hm tnh giai tha
long giaithua(int n)
{
if (n<=1)
return 1;
else
return (n*giaithua(n-1));
}
Nh vy khi cn tnh mt s k! ch cn gi hm giaithua(k);
Hm qui cn mt iu kin dng, nu khng n s khng bao gi kt thc.
Trong v d v hm tnh giai tha th iu kin dng l n<=1 cn trong v d sau
v dng quy cho chui Fibonacci, iu kin dng l n<3.
Thut ton s dng cho chui :
1. Hi user v v tr trong chui.
2. Gi hm fib() vi v tr . Nhn gi tr user a vo.
3. Hm fib() xc nh i s (n). Nu n<3, n tr v 1; ngc li fib() t gi
n ( qui) n-2, t gi li n-1 v tr v tng s.
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 51


Nu gi fib(1), n tr v 1. Nu gi fib(2) , n tr v 1, gi fib(3), n tr v
tng ca fib(2) v fib(1). V fib(2) tr v 1 v fib(1) tr v 1, fib(3) s tr v 2.
Nu gi fib(4), n tr v tng ca fib(3) v fib(2). Chng ta thit lp fib(3)
tr v 2 v fib(2) tr v 1, v vy fib(4) s l tng ca nhng s ny v tr v 3, l
s th 4 trong chui.
Thc hin cc bc ny nu gi fib(5), n tr v 5.
Phng php ny hu nh khng c hiu qu gii quyt bi ton ny ( vi
fib(20), hm fib() c gi 13529 ln) , nhng n vn thc hin. Cn thn: nu vi
n qu ln, n s ht b nh. Mi hm fib() c gi, b nh c thit lp ring
ra. Khi n tr v b nh c gii phng. Vi qui, b nh tip tc ring ra
trc khi n c gii phng, v phng php ny c th chim b nh rt nhanh.
V d 10. S dng quy vi dy Fibonacci
1: // Listing 10 - demonstrates recursion using the Fibonacci series
2: // Fibonacci find.
3: // Finds the nth Fibonacci number
4: // Uses this algorithm: Fib(n) = fib(n-1) + fib(n-2)
5: // Stop conditions: n = 2 || n = 1
6:
7: #include <iostream.h>
8:
9: int fib(int n);
10:
11: int main()
12: {
13:
14: int n, answer;
15: cout << "Enter number to find: ";
16: cin >> n;
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 52


17:
18: cout << "\n\n";
19:
20: answer = fib(n);
21:
22: cout << answer << " is the " << n << "th Fibonacci number\n";
23: return 0;
24: }
25:
26: int fib (int n)
27: {
28: cout << "Processing fib(" << n << ")... ";
29:
30: if (n < 3 )
31: {
32: cout << "Return 1!\n";
33: return (1);
34: }
35: else
36: {
37: cout << "Call fib(" << n-2 << ") and fib(" << n-1 << ").\n";
38: return( fib(n-2) + fib(n-1));
39: }
40: }

Output: Enter number to find: 5

Processing fib(5)... Call fib(3) and fib(4).
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 53


Processing fib(3)... Call fib(1) and fib(2).
Processing fib(1)... Return 1!
Processing fib(2)... Return 1!
Processing fib(4)... Call fib(2) and fib(3).
Processing fib(2)... Return 1!
Processing fib(3)... Call fib(1) and fib(2).
Processing fib(1)... Return 1!
Processing fib(2)... Return 1!
5 is the 5th Fibonacci number

Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 54


7. Cc loi vng lp.
Vng lp While.
Vng lp While s lp li khi no iu kin bt u vn cn ng.
V d 2. Vng lp While.
1: // Listing 2
2: // Looping with while
3:
4: #include <iostream.h>
5:
6: int main()
7: {
8: int counter = 0; // khi tr iu kin
9:
10: while(counter < 5) // kim tra iu kin
11: {
12: counter++;
13: cout << "counter: " << counter << "\n";
14: }
15:
16: cout << "Complete. Counter: " << counter << ".\n";
17: return 0;
18: }
Output: counter: 1
counter: 2
counter: 3
counter: 4
counter: 5
Complete. Counter: 5.
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 55


Cu lnh While.
C php:
While (iu kin)
Cu lnh ;
iu kin l bt c biu thc no, cu lnh c th l 1 cu lnh hoc mt khi
cc lnh. Khi iu kin l ng (TRUE), cu lnh c x l, v sau iu kin
c kim tra li. Qu trnh s tip tc n khi iu kin kim tra l FALSE, khi
vng lp kt thc v x l dng u tin sau cu lnh .
V d:
// m n 10
int x = 0;
while (x < 10)
cout << "X: " << x++;
Cu lnh While phc tp hn.
iu kin kim tra trong vng lp while c th phc tp, n c th s dng
ton t lgc: && (AND), // (OR), v ! (NOT).
V d 3. Cc vng lp while phc tp.
1: // Listing 3
2: // Complex while statements
3:
4: #include <iostream.h>
5:
6: int main()
7: {
8: unsigned short small;
9: unsigned long large;
10: const unsigned short MAXSMALL=65535;
11:
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 56


12: cout << "Enter a small number: ";
13: cin >> small;
14: cout << "Enter a large number: ";
15: cin >> large;
16:
17: cout << "small: " << small << "...";
18:
19: // vi mi ln lp, kim tra ba iu kin
20: while (small < large && large > 0 && small < MAXSMALL)
21:
22: {
23: if (small % 5000 == 0) // Vit mt du chm mi 5000 dng
24: cout << ".";
25:
26: small++;
27:
28: large-=2;
29: }
30:
31: cout << "\nSmall: " << small << " Large: " << large << endl;
32: return 0;
33: }
Output: Enter a small number: 2
Enter a large number: 100000
small: 2.........
Small: 33335 Large: 33334
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 57


Continue v break.
Lnh continue nhy tr li u ca vng lp. Lnh break lp tc kt thc
vng lp while v chng trnh x l tip sau du ng ngoc.
V d:
V d 4. S dng break v continue.
1: // Listing 4
2: // Demonstrates break and continue
3:
4: #include <iostream.h>
5:
6: int main()
7: {
8: unsigned short small;
9: unsigned long large;
10: unsigned long skip;
11: unsigned long target;
12: const unsigned short MAXSMALL=65535;
13:
14: cout << "Enter a small number: ";
15: cin >> small;
16: cout << "Enter a large number: ";
17: cin >> large;
18: cout << "Enter a skip number: ";
19: cin >> skip;
20: cout << "Enter a target number: ";
21: cin >> target;
22:
23: cout << "\n";
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 58


24:
25: // To 3 iu kin dng cho vng lp
26: while (small < large && large > 0 && small < 65535)
27:
28: {
29:
30: small++;
31:
32: if (small % skip == 0) // skip the decrement?
33: {
34: cout << "skipping on " << small << endl;
35: continue;
36: }
37:
38: if (large == target) // exact match for the target?
39: {
40: cout << "Target reached!";
41: break;
42: }
43:
44: large-=2;
45: } // end of while loop
46:
47: cout << "\nSmall: " << small << " Large: " << large << endl;
48: return 0;
49: }
Output: Enter a small number: 2
Enter a large number: 20
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 59


Enter a skip number: 4
Enter a target number: 6
skipping on 4
skipping on 8

Small: 10 Large: 8
Lnh Continue.
Lm cho vng lp while hoc for tr li u vng lp. V d:
if (value > 10)
goto end;
if (value < 10)
goto end;
cout << "value is 10!";
end:
cout << "done";
Cu lnh Break.
Lm cho vng lp while hoc for lp tc kt thc. V d:
while (iu kin)
{
if (iu kin2)
break;
// statements;
}
Vng lp While(1) hay While(true)
y l vng lp While khng bao gi kt thc (lp v hn). V 1 lun l
ng v lp khng bao gi kt thc tr khi gp lnh break.
V d 5. Vng lp while (1).
1: // Listing 5
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 60


2: // Demonstrates a while true loop
3:
4: #include <iostream.h>
5:
6: int main()
7: {
8: int counter = 0;
9:
10: while (1)
11: {
12: counter ++;
13: if (counter > 10)
14: break;
15: }
16: cout << "Counter: " << counter << "\n";
17: return 0;
18:
Output: Counter: 11
Vng lp do ... While.
Do ... While.
Vng lp ny x l khi lp trc khi kim tra iu kin ca n v chc chn
rng khi lp lun c thc hin vi thi gian ti thiu.
1: // Listing 7.7
2: // Demonstrates do while
3:
4: #include <iostream.h>
5:
6: int main()
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 61


7: {
8: int counter;
9: cout << "How many hellos? ";
10: cin >> counter;
11: do
12: {
13: cout << "Hello\n";
14: counter--;
15: } while (counter >0 );
16: cout << "Counter is: " << counter << endl;
17: return 0;
18: }

Output: How many hellos? 2
Hello
Hello
Counter is: 0
Cc lnh continue v break lm vic trong vng lp do ...while c tc dng
nh trong vng lp while. S khc nhau gia while v do...while l khi no
kim tra iu kin .
C php vng lp do ... while.
C php:
Do
Cu lnh;
While (iu kin) ;
Cu lnh c thc hin sau iu kin c xc nh. Nu iu kin l
TRUE, vng lp c lp li, ngc li nu l FALSE, vng lp kt thc.
V d 1:
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 62


// m n 10
int x = 0;
do
cout << "X: " << x++;
while (x < 10)
V d 2:
// In ra cc ch ci thng.
char ch = `a';
do
{
cout << ch << ` `;
ch++;
} while ( ch <= `z' );
Vng lp For.
Khi lp trnh vi vng lp while, ta lun thng tm cho mnh iu kin thit
lp ban u, kim tra xem iu kin c ng khng, v tng ln hoc cch khc
thay i bin mi ln lp li.
V d 8.
1: // Listing 8
2: // Looping with while
3:
4: #include <iostream.h>
5:
6: int main()
7: {
8: int counter = 0;
9:
10: while(counter < 5)
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 63


11: {
12: counter++;
13: cout << "Looping! ";
14: }
15:
16: cout << "\nCounter: " << counter << ".\n";
17: return 0;
18: }
Output: Looping! Looping! Looping! Looping! Looping!
Counter: 5.
V d v vng lp for:
V d 9.
1: // Listing 9
2: // Looping with for
3:
4: #include <iostream.h>
5:
6: int main()
7: {
8: int counter;
9: for (counter = 0; counter < 5; counter++)
10: cout << "Looping! ";
11:
12: cout << "\nCounter: " << counter << ".\n";
13: return 0;
14: }
Output: Looping! Looping! Looping! Looping! Looping!
Counter: 5.
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 64


C php vng lp FOR.
C php cu lnh for :
For ( Khi to; Kim tra; Hot ng)
Cu lnh ;
V d:
// in Hello 10 ln
for (int i = 0; i<10; i++)
cout << "Hello! ";
V d 2:
for (int i = 0; i < 10; i++)
{
cout << "Hello!" << endl;
cout << "the value of i is: " << i << endl;
}
Vng lp For cp cao.
Cu lnh for c y sc mnh v s linh hot.
Mt vng lp for lm vic theo cc bc sau:
1. Thc hin php ton khi to.
2. Xc nh iu kin .
3. Nu iu kin TRUE, thc hin lnh hot ng v lp.
Sau mi ln, vng lp lp li cc bc 2 v 3. Vic khi to nhiu bin v
tng chng nn, v thc hin nhiu hn mt lnh . Khi to v hot ng c th
thay th bng nhiu cu lnh C++, mi cu lnh c ngn cch bi 1 du phy.
V d 11. V d v cu lnh Null trong vng lp FOR:
1: // Listing 11
2: // For loops with null statements
3:
4: #include <iostream.h>
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 65


5:
6: int main()
7: {
8: int counter = 0;
9:
10: for( ; counter < 5; )
11: {
12: counter++;
13: cout << "Looping! ";
14: }
15:
16: cout << "\nCounter: " << counter << ".\n";
17: return 0;
18: }

output: Looping! Looping! Looping! Looping! Looping!
Counter: 5.
Trong thc t, s dng break v continue to ra mt vng for khng c 3
cu lnh .
V d cu lnh For rng:
1: //Listing 12 illustrating
2: //empty for loop statement
3:
4: #include <iostream.h>
5:
6: int main()
7: {
8: int counter=0; // khi to
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 66


9: int max;
10: cout << "How many hellos?";
11: cin >> max;
12: for (;;) // vng for rng
13: {
14: if (counter < max) // test
15: {
16: cout << "Hello!\n";
17: counter++; // increment
18: }
19: else
20: break;
21: }
22: return 0;
23: }

Output: How many hellos?3
Hello!
Hello!
Hello!
Vng lp for(; ;) l lp v hn ging nh vng lp while(1) .
Vng lp lng.
Cc vng lp c th c lng vo bn trong thn ca mt vng lp khc.
Vng lp bn trong c thc hin y i vi mi ln thc hin vng lp
ngoi.
V d 14.
1: //Listing 14
2: //Illustrates nested for loops
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 67


3:
4: #include <iostream.h>
5:
6: int main()
7: {
8: int rows, columns;
9: char theChar;
10: cout << "How many rows? ";
11: cin >> rows;
12: cout << "How many columns? ";
13: cin >> columns;
14: cout << "What character? ";
15: cin >> theChar;
16: for (int i = 0; i<rows; i++)
17: {
18: for (int j = 0; j<columns; j++)
19: cout << theChar;
20: cout << "\n";
21: }
22: return 0;
23: }

Output: How many rows? 4
How many columns? 12
What character? x
xxxxxxxxxxxx
xxxxxxxxxxxx
xxxxxxxxxxxx
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 68


xxxxxxxxxxxx
S dng vng lp vi chui s.
Nh trn trnh by v chui Fibonacci. Chui Fibonacci c dng:
1, 1, 2, 3,5 , 8, 13, 21, 34, .....
Dng vng lp ta c th thc hin nh sau:
1: // Listing 7.15
2: // Demonstrates solving the nth
3: // Fibonacci number using iteration
4:
5: #include <iostream.h>
6:
7: typedef unsigned long int ULONG;
8:
9: ULONG fib(ULONG position);
10: int main()
11: {
12: ULONG answer, position;
13: cout << "Which position? ";
14: cin >> position;
15: cout << "\n";
16:
17: answer = fib(position);
18: cout << answer << " is the ";
19: cout << position << "th Fibonacci number.\n";
20: return 0;
21: }
22:
23: ULONG fib(ULONG n)
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 69


24: {
25: ULONG minusTwo=1, minusOne=1, answer=2;
26:
27: if (n < 3)
28: return 1;
29:
30: for (n - = 3; n; n--)
31: {
32: minusTwo = minusOne;
33: minusOne = answer;
34: answer = minusOne + minusTwo;
35: }
36:
37: return answer;
38: }
Output: Which position? 4

3 is the 4th Fibonacci number.

Which position? 5

5 is the 5th Fibonacci number.

Which position? 20

6765 is the 20th Fibonacci number.

Which position? 100
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 70



3314859971 is the 100th Fibonacci number.
6. Mng
Mng l mt tp cc v tr lu tr d liu, mi v tr lu tr c gi l mt
thnh phn ca mng.
Khai bo mng: Kiu mng tn mng ch s mng: l s phn t trong
mng, bao quanh l du ngoc vung [ ].
V d :
long longarray[25] ; // mng ny c 25 phn t
Cc phn t ca mng tnh t 0: longarray[0] , longarray[1], ... ,
longarray[24]
V d :
1: #include <iostream.h>
3:
4: int main()
5: {
6: int myArray[5];
7: int i;
8: for ( i=0; i<5; i++) // 0-4
9: {
10: cout << "Value for myArray[" << i << "]: ";
11: cin >> myArray[i];
12: }
13: for (i = 0; i<5; i++)
14: cout << i << ": " << myArray[i] << "\n";
15: return 0;
16: }

Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 71


Output:
Value for myArray[0]: 3
Value for myArray[1]: 6
Value for myArray[2]: 9
Value for myArray[3]: 12
Value for myArray[4]: 15
0: 3
1: 6
2: 9
3: 12
4: 15
Khi to mng
C th khi to mng khi khai bo. V d:
Int intArray[5] = {10, 15, 20, 25, 35} ;
Nu qun kch thc ca mng, mt mng s c kch thc bng ng s
phn t khi to. V d:
Int intArray[ ] = { 5, 12, 15, 18, 20 };
Hm dng ly kch thc ca mng :
Const USHORT IntArraylength ;
IntArraylength = sizeof(IntArray)/sizeof(IntArray[0]) ;
Ly kch thc ton mng chia cho kch thc mt phn t.
Ch : Khng c khi to cc phn t ln hn khai bo cho mng. Tuy
nhin c th khi to 2 phn t trong 5 phn t ca c mng:
Int IntArray[5] = {2, 6};
Nu khng khi to cho cc phn t ca mng th cc phn t s c gn
mc nh l 0.
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 72


Mng nhiu chiu.
Mng nhiu chiu l c t hai chiu tr ln. Mi chiu c xc nh bng
mt du ngoc vung:
Int Mang [5] [3] ;
Khi to:
Th t xc nh l: 3 phn t u tin thuc Mang[0], 3 phn t tip theo l
thuc Mang[1] , v tip tc ...
Ta c th vit :
Int Mang[5][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } ;
r dng, nn vit nh sau:
Int Mang[5][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}, {13, 14, 15}
} ;
Mng k t (CHAR).
Trong C++, mt chui (String) l mt mng cc k t, kt thc l mt k t
null. Ta c th khai bo v khi to mt mng k t nh cc mng thng thng
nh sau:
Char Greeting[ ] = { 'H', 'e', 'l', 'l', 'o', ' ' W', 'o', 'r', 'l', 'd', '\0' };
'\0' l k t null, trong nhiu hm C++ chp nhn nh l du kt thc chui.
gim s phc tp v c th gy ra li, C++ cho php vit nh sau:
char Greeting[ ] = "Hello World" ; // Vi cch ny khng cn c k t null
('\0')
Chui Hello World chim 12 byte. Hello chim 5 byte, space 1 byte, World 5
byte v null chim 1 byte.
V d 8.
1: //Listing 8 char array buffers - Filling an array.
2:
3: #include <iostream.h>
4:
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 73


5: int main()
6: {
7: char buffer[80];
8: cout << "Enter the string: ";
9: cin >> buffer;
10: cout << "Here's the buffer: " << buffer << endl;
11: return 0;
12: }

Output: Enter the string: Hello World
Here's the buffer: Hello
C hai kh nng li vi chng trnh ny:
Th 1: Nu user a vo hn 79 k t (mt k t l ca null), cin vit vo
vt qu im kt thc ca mng buffer .
Th 2: Nu user nhp vo 1 space, cin cho rng l kt thc chui, v dng
vic ghi vo buffer.
gii quyt iu ny, phi gi mt phng thc c bit vi cin.get() c 3
tham s:
in y buffer
S k t ti a nhn vo.
nh ra ranh gii kt thc nhp vo.
Ranh gii mc nh l newline.
V d 9.
1: //Listing 9 using cin.get()
2:
3: #include <iostream.h>
4:
5: int main()
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 74


6: {
7: char buffer[80];
8: cout << "Enter the string: ";
9: cin.get(buffer, 79); // c th ly n 79 k t
10: cout << "Here's the buffer: " << buffer << endl;
11: return 0;
12: }

Output: Enter the string: Hello World
Here's the buffer: Hello World
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 75


7. X l trn File - c d liu t file v ghi ra file
Cch 1: Dng con tr FILE*
Cch m file:
FILE* f; //khai bo mt con tr kiu FILE
f=fopen(tn file, kiu m file);
if (f==NULL) //kim tra xem c m c file hay cha
{
printf(Khong mo duoc file);
exit(1);
}
V tn file: c th ch r ng dn tuyt i ca file hoc ch cn dng tn
file khi file c nm cng th mc cha file chng trnh (*.cpp)
V d: f=fopen(test.inp, r); //v lc ny file test.inp ang trong th mc
cha project
V kiu m file:
Nu chng ta m file c th kiu m file l : r
V d: f=fopen(test.txt,r);
Nu m file ghi th kiu m l : w
V d: f=fopen(test.txt,w);
Cc thao tc trn file:
- c d liu:
Cng ging nh cc hm c d liu trn console, thao tc c trn file cng
tng t.
Nhc li: S dng hm scanf c vo cc thnh phn d liu:
scanf(format ca kiu d liu cn c, a ch ca bin lu);
V d:
int n;
scanf(%d,&n);
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 76


char c;
scanf(%c,&n);
V format cu kiu d liu cn c c cc dng sau:
int: %d
long: %ld
char: %c
string: %s
float: %f
double: %lf
V i vi vic c file ta s thay th hm scanf trc y bng hm
fscanf:
fscanf(con tr file, format ca kiu d liu cn c, a ch ca bin lu);
V d:
int n;
f=fopen(test.inp,r);
if (f==null)
{
printf(khong mo duoc file);
exit(1);
}
fscanf(f,%d,&n);
Tt nhin l file f phi c m trc ri.
- Ghi d liu:
Tng t nh phn c d li, ta cng c hm fprintf da trn hm printf:
printf(format ca kiu d liu cn xut, bin lu);
fprintf(con tr file, format ca kiu d liu cn xut, bin lu);
V d:
int n;
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 77


f=fopen(test.out,w);
if (f==null)
{
printf(khong mo duoc file);
exit(1);
}
fprintf(f,%d,n);
Cch ng file:
Sau khi thao tc trn file xong, chng ta phi ng file li h thng cp
nht. V hm ng file: fclose(con tr file);
V d:
int n;
f=fopen(test.inp,wt);
if (f==null)
{
printf(khong mo duoc file);
exit(1);
}
fprintf(f,%d,n);
fclose(f);
Cch 2: Dng i tng stream trong C++
Yu cu file header:
#include <fstream>
c d liu t file:
Gi s cn c d liu v mng s nguyn lu trong file c cu trc nh sau:
- Dng u ghi s lng phn t n ca mng
- Dng tip theo ghi n s nguyn ca mng, hai s k nhau cch nhau 1
k t khong trng.
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 78


V d: tp tin number.inp c ni dung nh sau
10
4 5 6 3 2 1 6
8 9 12

int a[100]; // Khi to mng a c 100 phn t
int n;
ifstream f;
f.open(number.inp);
f >> n; // c s lng phn t ca mng
for (int i=0;i<n;i++)
f>>a[i];
f.close(); // ng file sau khi c xong
Ghi d liu ln file:
Gi s cn ghi thng tin ca mng a c n phn t ln file number.out c cu
trc tng t nh trn.
ofstream f;
f.open(number.out);
f<<n<<endl; // Ghi s nguyn n v k t xung dng
for (int i=0;i<n;i++)
f<<a[i]<< ; // Ghi s nguyn a[i] ln file, theo sau l mt
k t khong trng.
f.close(); // ng file sau khi ghi xong

Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 79


CHNG 2: BIN N
Bi 2.1. Cho hai s thc a, b. Hy vit chng trnh i ch a, b.
V d:
Trc khi i
ch
Sau khi i
ch
a=5, b=2 a=2, b=5

Bi 2.2. S nguyn t l s t nhin ln hn 1, ch chia ht cho s 1 v chnh
n. S t nhin khng tha mn tnh cht s nguyn t c gi l hp s.
Vit chng trnh nhp vo t bn phm mt s nguyn dng n, hy kim tra
xem n l s nguyn t hay hp s.

Bi 2.3. Lit k cc s nguyn t nh hn n (0<n<100).
Bi 2.4. Cho hai s nguyn dng a, b. Hy vit hm tnh c s chng ln
nht, bi s chung nh nht ca a,b.

Bi 2.5. S t nhin n c gi l hon ho nu tt c cc c t nhin ca n
khng k chnh n bng ng n. v d 6 = 1+2+3. Hy nhp k t bn phm v lit
k cc s hon ho b hn k.

Bi 2.6. Cho s t nhin n. Tm b ba s t nhin x, y, z ( z y x s s ) sao cho
tha mn
3 3 3
z y x n + + = .

Bi 2.7. Cho phn s ) 0 ( = b
b
a
, hy xc nh phn s ) 0 ( = q
q
p
sao cho
q
p
b
a
= ,
vi p v q l hai s nguyn t cng nhau.

Bi 2.8. Tnh n! bng phng php lp v quy.
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 80



Bi 2.9. Tnh
k
n
C ,
k
n
A

Bi 2.11. Tnh tch phn xc nh ca mt hm s.

Bi 2.12. Hai s t nhin c gi l hu ngh nu mi s trong chng bng
tng tt c cc c thc s (k c c l 1) ca s kia. Hy tm cc cp s hu ngh
nh hn n (0<n<200).

Bi 2.13. Phn tch s t nhin n ra thnh cc tha s nguyn t s v a ra
kt qu di dng (m
1
, n
1
)(m
2
,n
2
)....trong m
i
l tha s nguyn t, cn n
i
l s
m. v d: 18 = (2,1)(3,2), 50= (2,1)(5,2).

Bi 2.14. S t nhin c n ch s c gi l s Amstrong nu tng ly tha
bc n ca cc ch s ca n bng chnh n.
V d: 153 = 1
3
+ 5
3
+ 3
3
. Hy tm cc s Amstrong c 2,3,4 ch s.

Bi 2.15. vit chng trnh phn tch mt s nguyn dng n thnh tng cc
s nguyn t khc nhau, in cc phng n ra mn hnh.

Bi 2.16. Mt s t nhin c gi l Palindron nu cc ch s ca n c
vit theo th t ngc li th s to thnh chnh l s ( v d 1221, 131). Hy
tm cc s Palidrom nh nhn n.

Bi 2.17. Trn mt phng ta hai chiu XOY, cho ta bn im A, B, C
v im M. Hy kim tra xem M nm trong tam gic, nm trn mt cnh ca tam
gic hay nm ngoi.

Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 81


Bi 2.18. Mt s t nhin l s p nu tng cc ch s ca n chia ht cho s
ch s. v d 123 l s p v 1+2+3 = 6, 6 chia ht cho 3.
Bi 2.19. Vit chng trnh tnh gi tr ca cc biu thc sau:
n S + + + + = ... 3 2 1
1

n
S
1
...
3
1
2
1
1
2
+ + + + =
n
S
n
1
) 1 ( ...
4
1
3
1
2
1
1
1
3
+
+ + + =
!
...
! 4 ! 3 ! 2
4 3 2
4
n
x x x x
x S
n
+ + + + + =
!
) 1 ( ...
! 4 ! 3 ! 2
1
4 3 2
5
n
x x x x
x S
n
n
+ + + =
) cos(
1
) 2 sin(
6
x
x x
e S
+
=
2 ... 2 2 2
7
+ + + + = S (n du cn)

Bi 2.20. Tnh s vi sai s nh hn epsilon theo cng thc sau:
1 2
1
. ) 1 ( ...
7
1
5
1
3
1
1
4 +
+ + + =
n
n



Bi 2.21. Cho ba s a, b, c bt k c nhp t bn phm. Hy kim tra xem
ba s c phi l di ba cnh ca mt tam gic hay khng.

Bi 2.22. Cho ba s a, b, c l di ba cnh ca tam gic, hy tnh:
a) Din tch tam gic.
b) di cc ng cao
c) di 3 ng trung tuyn
d) di 3 ng phn gic
e) Bn knh ng trn ngoi tip v ni tip

Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 82


Bi 2.23. Cho tam gic ABC vi 3 nh A, B, C c ta l: A(x
a
, y
a
), B(x
b
,
y
b
), C(x
c
, y
c
). Hy tnh:
a) Din tch tam gic
b) Chu vi ca tam gic

Bi 2.24. Tm cc s c ba ch s sao cho tng lp phng cc ch s th
bng chnh n.

Bi 2.24. Gii bi ton trm tru trm c:
trm tru, mt trm c
Tru ng n nm, tru nm n ba
L kh tru gi
ba con mt b
Hi s tru ng, tru nm, tru gia bao nhiu con.

Bi 2.25. Vit chng trnh nhp s nguyn dng n t bn phm, hy hin
th ra mn hnh tng cc ch s ca n.
V d: n =314, hin th ra mn hnh 8;
n =25, hin th ra mn hnh 7

Bi 2.26. Vit chng trnh tnh
y
x vi x v y nhp t bn phm

Bi 2.27. Vit chng trnh tnh
y
x (khng dng hm pow) vi x v y nhp t
bn phm, ch dng php ton nhn. Hy tm cch tnh
y
x sao cho dng t php
ton nhn nht.

Bi 2.28. Gii phng trnh bc nht 0 = +b ax .

Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 83


Bi 2.29. Gii phng trnh bc hai 0
2
= + + c bx ax .

Bi 2.30. Cho s nguyn dng n c nhp t bn phm. Hin th ra mn
hnh s n di dng s nh phn.
V d: n = 255 hin th ra mn hnh l 1111 1111
N = 155 hin th ra mn hnh l 1001 1011
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 84


CHNG 3: MNG MT CHIU
Bi 3.1. Nhp dy s n (0<n<100) phn t v hin th dy s ra mn hnh.

Bi 3.2. Cho dy n s nguyn (0<n<100). Hy thc hin:
a) Tnh tng cc phn t l s chn
b) Tm phn t m ln nht ca dy
c) Hin th ra mn hnh cc s chn
d) Tnh trung bnh cng cc s l

Bi 3.3. Nhp dy n s nguyn (0<n<100), hin th ra mn hnh cc s nguyn
khc nhau v s ln xut hin ca s trong dy.

Bi 3.4. Cho hai dy n s nguyn A ={a
1
, a
2
, , a
n
} v B ={b
1
, b
2
, , b
n
}.
hy kim tra xem dy B c phi l hon v ca dy A hay khng.

Bi 3.5. Cho dy s thc, hy tm s ln th 2 ca dy.

Bi 3.6. Cho dy n s v mt s k bt k, hy vit chng trnh tm hai s
trong dy c tng bng k. Thut ton c phc tp O(nlog
2
n)

Bi 3.7. Cho dy n s a
0
, a
2
,, a
n-1
. Hy:
a) Tm dy con dng lin tip c di ln nht
b) Tm dy con dng lin tip c tng ln nht

Bi 3.8. Cho dy n s a0, a2,, an-1. Hy:
a) Tm dy dan du c di ln nht
b) Tm dy con lin tip c tng ln nht
c) Tm dy con lin tip c tng nh nht.
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 85



Bi 3.9. Tm c s chung ln nht ca n s nguyn dng a
1
, a
2
, , a
n
.

Bi 3.10. Cho dy n s thc (0<n<200), thc hin cc yu cu sau:
a) Tm s ln nht ca dy
b) Tm s ln th hai ca dy

Bi 3.11. Trn mt phng ta hai chiu XOY cho n ng trn, ng trn
th i c xc nh bi b ba s x
i
, y
i
, r
i
, vi x
i
, y
i
l ta tm, r
i
l bn knh. Hy
tnh din tch ca hnh ch nht nh nht cha ton b cc hnh trn cho.

Bi 3.12. Cho . Cho dy n s thc (0<n<200), sp xp dy s theo th t tng
dn theo thut ton:
a) Select sort
b) Insert sort
c) Bouble sort
d) Quick sort (phng php chn phn t u lm cht)
e) Quick sort (phng php chn cht ngu nhin)
f) Heap sort

Bi 3.13. Cho dy n s thc (0<n<200), v s k, hy:
a) Tm k trong dy
b) Xa phn t ti v tr k
c) Xa phn t ti v tr k
d) Xa phn t bng k u tin trong dy
e) Xa tt cc cc phn t bng k

Bi 3.14. Cho dy n s thc (0<n<200) c sp xp theo th t tng dn
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 86


v s k. hy chn k vo dy sao cho khng lm thay i th t sp xp.

Bi 3.15. Cho dy n s nguyn (0<n<200) , hy sp xp dy s sao cho cc s
chn u dy, s l cui dy.

Bi 3.16. Cho dy n s nguyn (0<n<200), hy sp xp dy s sao cho cc s
chn u dy, s l cui dy. Yu cu ch s dng mt vng lp.

Bi 3.17. Cho hai dy s c sp xp theo th t tng dn A = {a
1
a
2

a
n
} c n phn t, B= {b
1
b
2
b
m
} c m phn t. Hy gp hai dy s cho
thnh dy C c n+m phn t sao cho vn m bo th t tng dn m khng cn
sp xp li dy C.

Bi 3.18. Cho hai dy s nguyn, A = {a
1
, a
2
, , a
n
} c n phn t, B= {b
1
,
b
2
, , b
m
} c m phn t, trong cc phn t ca A i mt khc nhau (a
i
a
j
vi
mi ij), cc phn t ca B i mt khc nhau (b
i
b
j
vi mi ij):
a) Tm giao cc phn t hai mng
b) Tm hp cc phn t hai mng

Bi 3.19. Mt s ln lu tr trn mt mng, hy xy dng cc ton t (+, -, *,
/) thao tc trn cc s ln ny.
Bi 3.20. Mt a thc c lu tr y t bng mng HS (h s). Vi HS[i]
lu h s ca phn t c s m i. V d:
a thc a thc c lu tr bng mng HS
7 5 2
3
+ x x
7 5 0 2
Hy vit hm tnh tng v hiu hai a thc.

Bi 3.21. Mt a thc c lu tr bng mng HS. Vi HS[i] lu h s ca
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 87


phn t c s m i (bi 2.20). Vi cch lu tr ny ta thy r yu t lng ph b
nh khi a thc khng y . Hy ci tin cch lu tr a thc sao cho tit kim
b nh.
Bi 3.22. Nam c n ci ko vi trng lng khc nhau, ci ko th i c trng
lng a
i
(a
i
a
j
, ij). Nam mun chia s ko cho Hoa v Lan. Hy vit chng
trnh gip Nam chia s ko thnh hai phn sao cho chnh lch trng lng l t
nht.

Bi 3.23. Cho dy n s nguyn, hy lit k cc b ba a, b, c trong dy sao cho
a=(b+c)/2

Bi 3.24. Cho dy n s, hy tm dy con tng di nht trong trng hp dy
con l:
a) Dy con lin tc gm cc phn t lin nhau
b) Dy con khng lin tc gm cc phn t khng nht thit lin k vi
nhau.

Bi 3.25. Cho dy n im c biu din bi hai dy, dy hong x
1
, x
2
,,
x
n,
v dy tung y
1
, y
2
,, y
n
, vi (x
i
, y
i
) l ta ca im th i. Hy:
a) Tm im xa gc ta nht
b) Tm tam gic c din tch ln nht
c) Tm hai im P(x
p
, y
p
), Q(x
q
, y
q
) xc nh mt hnh ch nht c din
tch nh nht cha n im cho.

Bi 3.26. Cho dy n s thc a
1
, a
2
,...,a
n.
Tnh
n
n
a a a a S + + + + = ...
3
3
2
2 1


Bi 3.27. Cc phn t ca hai tp hp c lu bng hai mng A, B. hy tnh
C=AB, D=AB. Hin C v D ra mn hnh
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 88


CHNG 4: MA TRN
Bi 4.1. To bng cu chng
1
1 = 1
1
2 = 2
1
3 = 3

.
1
9 = 9
21
= 2
22
= 4
23
= 6

.
29
= 18

.
91
= 9
92
= 18
93
= 27

.
99
= 81

Bi 4.2. Hy to ma trn A gm n hng 0<n<10, m ct 0<m<10.
a) Hy nhp cc phn t cho ma trn bng cch sinh cc gi tr nguyn
ngu nhin c gi tr t 0..100.
b) Tnh tng tt c cc phn t nm trn ng cho chnh
c) m xem c bao nhiu phn t ca ma trn ln hn 10 v nh hn 50

Bi 4.3. Cho ma trn vung A
nxn
, hy in ra mn hnh ma trn tam gic di

Bi 4.4. Cho ma trn A
mxn
, 0<n<10, 0<m<10. Hy lp ma trn B l ma trn
chuyn v ca A.

Bi 4.5. Cho ma trn A
nxk
, B
kxm
, Hy tnh C
nxm
= AxB

Bi 4.6. Cho ma trn A hy tnh ma trn B theo quy tc B[i,j] bng tng 8
phn t lng ging ca A[i,j].
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 89



Bi 4.7. Nhp ma trn A c n hng , m ct (1<n,m<50) cc phn t l s
nguyn. Sp xp cc phn t trn cc ct ca ma trn A theo th t khng gim.

Bi 4.8. Cho ma trn A
mxn
, 0<n<10, 0<m<10. Hy tm im yn nga ca
mt ma trn, bit rng A[i][j] l im yn nga ca ma trn A nu n l gi tr nh
nht ca hng i, ng thi cng nh nht trn ct j.

Bi 4.9. Cho ma trn vung A
nxn
, 0<n<10. Hy vit cc phn t ca ma trn
A ra mng B theo th t xoy trn c (hnh 4.9):



(Hnh 4.9 Ma trn c c theo hnh xoy trn c)

Bi 4.10. Cho dy s thc a
0
, a
1
, , a
63
. Hy xy dng ma trn vung cp 8
m cc phn t ca n l cc s a
0
, a
1
, , a
63
v c sp xp theo hnh 4.10:



(Hnh 4.10 Th t cc phn t ca ma trn c to)

Bi 4.11. Cho ma trn vung thc 2n. Hy tm ma trn mi bng cch i ch
cc khi nn tng ng nh hnh v.



(Hnh 4.11 S i ch cc khi ca ma trn)
(a)
(b) (c)
(a)
(b)
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 90



Bi 4.12. Cho ma trn vung A cp n gm cc s thc. Hy xy dng ma
trn B cp n theo quy tc B[i,j] bng tng cc phn t trong phn t m nh hnh
v





(Hnh 4.12-Hnh v m t vng t m trn ma trn A tnh ma trn B)
A[i,j] A[i,j]
A[i,j]
A[j,i]
(a) (b) (c)
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 91


CHNG 5: XU K T
Bi 5.1. Cho xu k t S, hy m s ln xut hin ca cc k t trong xu.

Bi 5.2. Cho xu S, hy to xu S l nghc o ca S. v d: S=TAN,
S=NAT

Bi 5.3. Cho xu k t S1, S2, hy in ra v tr xut hin sau cng ca xu S2
trong S1.

Bi 5.4. Cho mt xu k t ch gm cc k t ( v ) hy kim tra xem xu
k t c l mt biu thc ng hay khng. Bit rng cc biu thc ng c dng
sau: (), (biu thc ng)(biu thc ng), (biu thc ng).

Bi 5.5. Cho hai xu k t S1, S2, hy kim tra xem c th xa i mt s cc
k t ca xu S1 th ta c xu S2 hay khng.

Bi 5.6. Cho h v tn mt sinh vin, hy trch ra tn ca sinh vin . V d:
S=Tran Van Hoa, in ra mn hnh Ten sinh vien: Hoa

Bi 5.7. Mt xu dng chun nu u v cui xu khng c du cch, trong
xu khng c hai du cch lin nhau. Vit chng trnh chun ha mt xu k t

Bi 5.8. Cho mt xu k t S, v k t k, hy m s k t k trong S.

Bi 5.9. Cho mt xu k t S, hy m xem trong xu c bao nhiu t.

Bi 5.10. Cho xu k t S l mt dy cc s nguyn, cc s ny cch nhau bi
t nht mt du cch. Tnh trung bnh cng cc s trong xu .
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 92


V d: S=12 1 452 5 , trung bnh cng cc s ca xu S l 470
Bi 5.11. Cho hai xu S1, S2. Kim tra xem hai xu ny c phi l ng dng
hay khng. Bit rng hai xu c coi l ng dng khi chng c cng di, cc
k t ging nhau nhng c th khc nhau v tr.

Bi 5.12. Mt xu k t c coi l i xng hay Palindrome nu vit xu
the chiu t tri sang phi hay t phi sang tri ta u c chnh xu .
V d: xu S = TAN NAT l xu i xng.
Hy vit chng trnh kim tnh i xng ca mt xu k t.

Bi 5.13. Cho mt xu S <= 1000 k t; tm palindrome di nht l xu con
ca S (Xu con l mt dy cc k t lin tip).

Bi 5.14: Chia mt xu thnh t nht cc Palindrome ( di <=1000).

Bi 5.15. Cho mt xu c di nh hn 120, hi n c bao nhiu xu con l
palindrome, xu con y gm cc k t khng cn lin tip.
Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 93


CHNG 6: CU TRC (struct)
Bi 6.1. Mt im trn mt phng ta c xc nh bng honh v
tung . Hy vit chng trnh to kiu d liu im v thc hin cc yu cu sau:
a) Nhp vo t bn phm ta ca hai im A, B v in ra di on
thng AB.
b) Nhp vo t bn phm ta ca n im (0<n<100), hy tm hai im
c khong cch xa nhau nht.
c) Nhp vo t bn phm ta ca n im (0<n<100), hy tm cc b
ba im thng hng.

Bi 6.2. Phn s
a
b
vi a l t s ( a Z e ), b l mu s (b 0 = hay
*
b Z e ).
Thc hin ci t cc php ton trn phn s sau:
a) Hm nh ngha chng ton t +,-,*,/
b) Hm rt gn phn s

Bi 6.3. Vit chng trnh tnh ton trn s phc.

Bi 6.4. Vit chng trnh nhp vo t bn phm mt danh sch n sinh vin
(0<n<100). Thng tin v mi sinh vin gm h tn, nm sinh, im trung bnh.
a ra mn hnh thong tin ca nhng sinh vin c im trung bnh ln hn 5.

Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 94


CHNG 7: CON TR V D LIU NG
Bi 7.1. Hy to danh sch lin kt n lu tr mt dy n s nguyn
(0<n<100), con tr P tr n u danh sch (hnh v 7.1). Hy thc hin:


(Hnh 7.1- Danh sch lin kt n)
a) Nhp dy n s nguyn (0<n<100)
b) Thm mt phn t c gi tr x vo u danh sch
c) Xa phn t cui danh sch
d) Hin th nhng s phn t ca dy l s chn
e) Sp xp dy s theo chiu tng dn
f) Chn gi tr x vo danh sch sao cho khng lm thay i th t sp
xp

Bi 7.2. Cho danh sch lin kt n c cu trc mt nt c nh ngha nh
sau:
struct Sinhvien /*Kieu khach hang*/
{ char Hoten[30]; /* Ho ten */
int Diem; /* Diem */
Sinhvien *Link; /* tro toi Sinh vien sau */
};
Gi P l con tr tr ti nt u danh sch. Hy vit cc th tc
a. B sung thng tin mt sinh vin vo cui danh sch. Cc gi tr trn cc
trng d liu ca phn t ny c nhp t bn phm.
b. Tm v in ra h tn cc th sinh khng trng tuyn (bit im chun =12).
c. Xo phn t u danh sch.

Bi 7.3. Hy to danh sch lin kt n lu tr mt dy n s thc (0<n<100),
5

7

4

8

2

P

NULL

Bi tp lp trnh c bn


Bi Vn Tn Khoa cng ngh thng tin, trng i hc Kinh t - k thut cng nghip
Trang - 95


con tr P tr n u danh sch (hnh v 7.3). Hy thc hin:


(Hnh 7.3- Danh sch lin kt n)
a) Nhp vo mt anh sch lu n s
b) Cho s k, hy tm k trong danh sch
c) Cho s k , hy xa tt c nhng phn t c gi tr bng k

Bi 7.4. Hy to danh sch lin kt n lu tr mt dy n s nguyn
(0<n<100), con tr P tr n u danh sch (hnh v 7.4). Hy thc hin:


(Hnh 7.4- Danh sch lin kt n)
a) Hy o ngc danh sch cho
b) a ra mn hnh cc b ba s l chiu di ba cnh ca tam gic vung

5

7

4

8

2

P

NULL

5

7

4

8

2

P

NULL

You might also like