8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
1/134
K thut lp tr nh 1
CHNG i I CNG V LP TRNH
I. Khi nim thut ton:I.1.Khi nim:
Thu t ton l tp hp c c quy tc c logic nhm gii mt lp b i ton no -c mt k t qu x c nh.
I.2. Cc t nh cht c tr-ng ca thut ton :
I.2.1. T nh tng qut :
Thut ton -c l p khng ph i ch gi i mt b i ton c th m thi mcn ph i gi i -c mt lp cc b i ton c d ng t-ng t.
I.2.2. T nh gii hn :
Thu t ton gi i mt b i ton phi -c thc hi n qua mt s gii h n c cthao t c t n k t qu .
I.2.3. T nh duy nht :
To n b qu tr nh bi n i, cng nh- tr t t thc hin phi -c xc nhv l duy nh t. Nh- vy khi dng thu t ton cng mt d li u ban u ph i chocng mt k t qu .
I.3.Phn loi:Theo c u trc, ta c th ph n th nh ba lo i thut ton c b n sau :
- Thut ton khng ph n nhnh.- Thu t ton c phn nhnh.- Thut ton theo chu tr nh c b-c lp x c nh v c b-c lp khngxc nh.
II. M t thut ton bng l-u :
II.1. L-u :L-u l mt dng th dng m t qu tr nh t nh ton mt cch c
h thng. Ng-i ta th-ng th hi n thu t ton b ng l-u .
II.2. Cc k hi u trn l-u :
Tn khi K hi u ngh aKhi m u ho c k tthc
Dng m u ho c k tthc ch-ng tr nh
Khi vo ra -a s li u v o hoc in
k t qu
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
2/134
K thut lp tr nh 2
Khi t nh to n Bi u di n cc cng thct nh to n v thay i gitr ca c c bin
Khi i u ki n Dng ph n nh nhch-ng tr nh
Ch-ng tr nh con Dng gi ch-ng tr nhcon
Mi t n Ch h-ng truyn thngtin, li n h cc khi
II.3.Mt s v d biu din thut ton bng l-u
II.3.1. Thut ton khng phn nhnh:
V d 1: T nh A = x2 + y2
Begin
Nhap (x,y)
A = x2 + y2
Xuat (A)
End
V d 2 : T nhyx
CByAxS
22 +
++= ; bi t A,B,C,x,y
Begin
Nhap (A, B, C, x,y)
S = (Ax + By + C) / SQRT (x* x + y*y)
Xuat S
End
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
3/134
K thut lp tr nh 3
II.3.2. Thut ton c phn nhnh:V d 1: T m gi tr max ca ba s thc a,b,c
Begin
Nhap (a, b, c)
Max = a
Xuat (Max)
End
a > b
Max < c
Max = c
S
SMax = b
V d 2: Gi i ph-ng tr nh bc nh t Ax+B =0 vi c c nghi m thc.
Begin
Nhap (a, b)
Xuat (PTV )
End
a = 0
S
SXuat (-b/a)
b = 0 Xuat (PTVN)
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
4/134
K thut lp tr nh 4
V d 3 : Gi i ph-ng tr nh bc hai Ax2+Bx+C =0 vi cc nghim thc.
Begin
Nhap (a, b, c)
Xuat (X1= ,(-b + SQRT(Delta)) / (2*a))Xuat (X2= ,(-b - SQRT(Delta)) / (2*a))
End
a = 0
PTB1 (b, c)
Delta < 0 Xuat ( PTVN )
S
S
Delta = b*b - 4*a*c
Delta = 0 Xuat (-b / (2* a))
S
II.3.3. Thut ton c chu tr nh:
Thu t ton c chu tr nh vi c c b-c lp xc nh th-ng -c th hi nbng l-u sau :
i = giatrban au
Lenh S;Tang i
i
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
5/134
K thut lp tr nh 5
V d 4: T nhS= ii
n
x=
1
, vi c c xi do ta nh p vo.
Begin
Nhap (n)
i = 1S = 0
Nhap (xi)
End
i = i+1S = S+xi
i
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
6/134
K thut lp tr nh 6
- Hp ng (assembly language)
- Ngn ng c p cao (higher-level language)
Do my t nh ch hi u -c ngn ng my, cho n n mt ch-ng tr nh vi t
trong ngn ng c p cao ph i -c bi n dch sang ngn ng m y. Cng c thchi n vic bin dch -c gi l ch-ng tr nh dch.
III.2. Ch-ng tr nh dch:
Ch-ng tr nh dch -c chia ra l m 2 lo i : tr nh bin dch (compiler) v tr nhthng dch (interpreter)
III.2.1. Tr nh bi n dch:l vi c chuyn mt ch-ng tr nh trong ngn ngcp cao no (ch-ng tr nh ngun) sang ngn ng my (ch-ng tr nh ch).
- Thi gian chuyn mt ch-
ng tr nh ngun sang ch-
ng tr nh ch -
cgi l thi gian dch.
- Thi gian m ch-ng tr nh ch thc thi -c gi l thi gian thc thi.
Nh-vy, ch-ng tr nh ngun v d li u ch-ng tr nh thc thi -c xl trong c c thi i m khc nhau, -c gi l thi gian dch (compile time) vthi gian thc thi (run-time)
Chng trnhnguon
Trnh biendch
Chng trnhch
May tnhthc hien Ket qua
Dlieu
H nh I.1. Ch-ng tr nh thc thi theo c ch dch ca tr nh bin dch
III.2.2. Tr nh thng dch: qu tr nh dch v thc thi xy ra cng 1 thigian, dch n u thi hnh lnh n .
Chng trnhnguon Chng trnhthong dch Ket qua
Dlieu
H nh I.2. Ch-ng tr nh thc thi theo c ch dch ca tr nh thng dch
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
7/134
K thut lp tr nh 7
CH-NG 2 LM QUEN VI NGN NG C
* Gii thiu ngn ng CNgn ng C do Dennis Ritchie l ng-i u ti n xut, thit k v c i
t C trong mi tr-ng UNIX. N c ngun gc t ngn ng BCPL do MartinRichards -a ra v o n m 1967 v ngn ng B do Ken Thompson ph t tri n tngn ng BCPL nm 1970 khi vi t h iu hnh Unix.
C l ngn ng l p tr nh a dng, c p cao nh-ng l i c kh nng thc hincc thao tc nh- ca ngn ng Assembly. V th ngn ng C nhanh chng -cci t, s dng tr n my vi t nh v tr th nh mt cng c lp tr nh kh mnh,hin nay ang c khuynh h-ng tr th nh mt ngn ng lp tr nh ch nh cho myvi t nh tr n th gii.
* c i m ngn ng C
Ngn ng C c nhng c i m c bn sau :
- T nh c ng (compact) : Ngn ng C ch c 32 t kho chun, 40 to nt chun m hu h t -c biu din bi cc dy k t ng n gn.
- T nh c u trc (structured) : Ngn ng C c mt t p hp cc ph t bi u l ptr nh cu trc nh- ph t bi u quy t nh ho c l p. Do , n cho php chng ta
vi t ch-ng tr nh c t chc v d hi u.- T nh t-ng th ch (compactable) : Ngn ng C c b l nh ti n x l v
cc th-vi n chu n l m cho cc ch-ng tr nh vi t b ng ngn ng C c th t-ngth ch khi chuyn t my t nh ny sang m y t nh ki u hon to n khc.
- T nh linh ng (flexible) : Ngn ng C l mt ngn ng r t linh ng vng ph p, n c th ch p nhn r t nhi u c ch th hi n m khng c ngn ngkh c nh-Pascal, n gip cho k ch th-c m lnh c th thu gn li ch-ngtr nh thc thi nhanh chng hn.
- Bi n dch : Ngn ng C -c bi n dch b ng nhi u b-c v cho phpbi n dch nhiu tp tin ch-ng tr nh ring r th nh cc t p tin i t-ng (object)v ni c c i t-ng l i vi nhau (link) thnh mt ch-ng tr nh thc thi thngnht.
I. CC KHI NIM C BNI.1. Cu trc c bn ca mt ch-ng tr nh C
[tin x l][Cc h m]
main()
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
8/134
K thut lp tr nh 8
{ [khai bo bi n;][nhp d li u ;][x l ;]
[xu t ;]}
V d : Ch-ng tr nh hi n trn m n h nh cu Chao cac ban
void main()
{ printf(Chao cac ban\n);
}
Mt v i nh n xt quan trng :
- Ch-ng tr nh C bao gi cng c mt hay nhi u h m, trong c mth m ch nh b t buc phi c l hm main(). y ch nh l hm -c thc hi n u ti n trong ch-ng tr nh.
- C p d u { } xc nh mt khi l nh.
- H m printf( Chao cac ban \n) l h m chu n ca C dng xu t c uthng bo Chao cac ban ra m n h nh. K t \n l k t c bi t dng xung dng.
- D u ; ch m dt mt l nh.
- Ch-ng tr nh C c ph n bi t ch th-ng vi ch hoa. a s c c t khoca C -c vi t b ng ch th-ng, cn mt s t -c vi t b ng ch hoa m taph i tun th ch t ch , n u khng th ch-ng tr nh dch s khng hi u.
* Mt vi v d
V d 1: In bng ly tha 2 ca c c s nguy n t10 n 50
/* Ch-ng tr nh in b nh ph-ng cc s t10 n 50*/
#include
void main()
{int n; /*Khai b o bin n kiu nguyn */
n=10; /*G n n=10 */
while (n
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
9/134
K thut lp tr nh 9
V d 2 : T-ng t nh- v d 1 nh-ng vi t c ch kh c :#include #define max 50 /*Ti n x l, nh ngh a max =50*/
void main(){ int n; /*Khai b o bin n kiu nguyn*/
for (n=10; n0;m--) /*L p gim d n t m ti 1*/s=s*n;return s; /*Tr k t qu v */
}void main(){ int n,n2,n3,n4,n5; /*Khai b o bin ki u nguy n*/
for (n=10;n
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
10/134
K thut lp tr nh 10
- Nhng k t c bi t :
K t Tc dng M ASCII
\n Xung h ng mi 10 \t Tab
\b Xa k t b n tr i 8
\r Con tr tr v u h ng 13
\f Sang trang 12
\a Pht ting ci 7
\\ Xut d u cho ng-c 92
\ Xu t du nh y n 39
\ Xu t d u nhy kp 34
\xdd Xu t k t c m ASCII dng Hex l dd
\ddd Xu t k t c m ASCII d ng Dec lddd
\0 K t NULL 0
- Chui nh dng :
% [ flag][width][.prec][FNhl] type
Type : nh ki u ca tham s theo sau chui-nhd ng l y gi tr raType ngh a
d,i S nguy n c s10
u S nguy n c s10 khng d u
o S nguy n c s 8
x S nguy n c s16, ch th-ng(a,b,...,f)
X S nguy n c s16, ch in (A,B,...,F)
f S thc d ng [-]dddd.ddd...e S thc d ng [-]d.ddd e[+/-]ddd
E S thc d ng [-]d.ddd E[+/-]ddd
g,G S thc d ng e(E) hay f ty theo ch nh xc
c K t
s Chui k t tn cng b ng \0
% Du % cn in
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
11/134
K thut lp tr nh 11
Flag : Dng i u ch nh
Flag ngh a
n u khng c in d li u ra vi canh phi- in d li u ra vi canh tr i
+ Lun b t u s bng + hay -
# in ra ty theo type, n u:
0 : Ch n th m 0 ng tr-c gi tr >0
x,X : Chn thm 0x hay 0X ng tr-c s n y
e,E,f : Lun lun c du chm th p ph n
G,g : Nh- tr n nh-ng khng c s 0 i sau
Width : nh k ch th-c in ra
Width ngh a
n Dnh t nh t n k t , in khong tr ng cc k t cn trng
0n Dnh t nh t n k t , in s 0 cc k t cn trng
* S k t t nh t cn in nm tham s t-ng ng
Prec : nh k ch th-c ph n l in ra
Prec ngh a
khng c ch nh x c nh- b nh th-ng
0 d,i,o,u,x ch nh xc nh- c
e,E,f Khng c d u chm th p ph n
n nhiu nh t l n k t (s)
* S k t t nh t cn in nm tham s t-ng ng
Cc ch b sung :
F Tham s l con tr xa XXXX:YYYY
N Tham s l con tr g n YYYY
h Tham s l short int
l Tham s l long int (d,i,o,u,x,X)
double (e,E,f,g,G)
V d 1: char c=A;
char s[]=Blue moon! ;
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
12/134
K thut lp tr nh 12
Dng Thng st-ng ng
Xut Nhn xt
%c c A rng 1
%2c c A rng 2, canh ph i
%-3c c A rng 3, canh tri
%d c 65 M ASCII ca A
%s s Blue moon! rng 10
%3s s Blue moon! Nhi u k t hn cn thit
%.6s s Blue m Ch nh xc 6 k t
%-11.8s s Blue moo Ch nh x c 8, canh tri
V d 2: int i = 123;
float x = 0.123456789;
Dng Thng st-ng ng
Xut Nhn xt
%d i 123 rng 3
%05d i 00123 Th m 2 s 0
%7o i 123 H 8, canh ph i
%-9x i 7b H 16, canh tr i%c i { K t c m ASCII 123
%-#9x i 0x7b H 16, canh tr i
%10.5f x 0.12346 rng 10, c 5 ch s thpphn
%-12.5e x 1.23457e-01 Canh tr i, in ra d-i dngkhoa hc
V d 3: Vi t ch-ng tr nh in h nh ch nh t kp bng cc k t ASCII
C9 CD BB
C8 CD BC
void main()
{ printf(\n\xC9\xCD\xBB);
printf(\n\xC8\xCD\xBC\n);
}
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
13/134
K thut lp tr nh 13
I.2.Kiu d li u c bn
I.2.1.nh ngh a:
Ki u d li u c b n l ki u d li u c gi tr n, khng ph n chia -cna nh- s, k t
I.2.2.Phn loi:
T n ki u ngh a K chth-c
Phm vi
char K t 1 byte -128127unsigned char K t khng d u 1 byte 0255
unsigned short S nguyn ngn khng du 2 bytes 065535enum S nguy n c d u 2 bytes -3276832767short int S nguyn c d u 2 bytes -3276832767int S nguy n c d u 2 bytes -3276832767unsigned int S nguy n khng d u 2 bytes 0 65535long S nguy n d i c d u 4 bytes -2147483648
2147483647
unsigned long S nguy n d i khng d u 4 bytes 04294967295float S thc ch nh xc n 4 bytes 3.4 E-383.4 E+38double S thc ch nh xc kp 8 bytes 1.7 E-308 1.7
E+308
long double S thc ch nh xc hndouble
10 bytes 3.4 E-4932 1.1E+4932
Ch :
1. Ngn ng C khng c kiu logic (boolean nh- Pascal) m quan nim
0 l false ; Kh c 0 l true2. Ngn ng C khng c ki u chui nh- ki u string trong Pascal
3. Cc kiu ng nh t:
int = short int = short = signed int = signed short intlong int = longsigned long int = longunsigned int = unsigned = unsigned short = unsigned short intunsigned long int = unsigned long
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
14/134
K thut lp tr nh 14
I.3.Bin
I.3.1. T n bi n : T n bin l mt chui k t b t u b ng k t ch, k tk ti p l k t ch (du g ch d-i _ -c xem l k t ch) hoc s v khng
-c trng vi c c t kha ca C.Ch : - Ngn ng C phn bit ch th-ng vi ch hoa nn bin ch
th-ng vi ch hoa l khc nhau.
V d : Bien_1 _bien2 l hp lbi&en 2a a b l khng hp l
- Ngn ng C ch ph n bi t hai tn hp l vi nhau b ng n k t u tinca chng. Thng th-ng n=8, nh-ng hin nay nhiu ch-ng tr nh dch cho phpn=32, nh- Turbo C cho php thay i s k t phn bi t t 8-32)
V d :Hai bi n sau b xem l cng t nbien_ten_dai_hon_32_ky_tu_dau_tien_1bien_ten_dai_hon_32_ky_tu_dau_tien_2
I.3.2. Khai bo bin
C c bin ph i -c khai b o tr-c khi s dng nh m gip cho ch-ngtr nh dch c th x l chng.
Khai bo bin c d ng :
Kiudliu tnbin1 [,tenbi n2 ...] ;
V d: int a,b,c;float x,y,delta;char c;
* Khai b o v khi t o bin:
Ki u d li u tnbin = gi tr ;
I.3.3. Hm nhp d li u chun
a) Hm scanf()
C php: scanf(chui-nhd ng,i ch thams1, ich thams2,...)
- Chui-nhd ng ca scanf() gm c ba lo i k t :
+ Chui i u khi n
+ K t tr ng
+ K t khc trng
! Chui i u khi n c d ng :
%[width][h/l] type
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
15/134
K thut lp tr nh 15
Vi type: xc nh ki u ca bin a ch tham s s nh n gi tr nh p vo
Type ngh a
d,i S nguy n c s10 (int)o S nguy n c s 8 (int)
u S nguy n c s10 khng du (unsigned)
x S nguy n c s16 (int)
f,e S thc (float)
c K t (char)
s Chui k t
p Con tr (pointer)
lf S thc (double)
Lf S thc (long double)
Width : x c nh s k t ti a s nh n v o cho vng .
H m scanf() ch nhn cho width k t hoc cho n khi gp k t tr ng u tin. Nu chui nh p v o nhi u hn th ph n cn li s dnh l i cho l n giscanf() k ti p.
V d 1: scanf(%3s,str);
N u nh p chui ABCDEFGth scanf() s nh n ti a 3 k t c t v o m ng str, cn DEFG s -c l y
n u sau c l n gi sanf(%s,str) khc.
V d 2: unsigned long money;
scanf(%lu,&money);
L-u : Nu scanf(%ul, &money) th gi tr nh p v o s khng -c l-utr trong bin money, nh-ng ch-ng tr nh dch khng bo li.
V d 3: Nh p v o t n v b gii h n trong khong [A-Z,a-z]char name[20];printf(Name : ) ;scanf(%[A-Za-z],&name);
Trong tr-ng hp n y, n u ta g sai d ng th name =
!K t tr ng: n u c trong chui-d ng s y u cu scanf() b qua mt haynhi u k t tr ng trong chui nh p v o. K t tr ng l k t kho ng tr ng ( ),tab (\t), xung h ng (\n). Mt k t tr ng trong chui-nhdng s -c hi u
l ch nh p n k t kh c trng ti p theo.
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
16/134
K thut lp tr nh 16
V d 4: scanf(%d ,&num);
Hm scanf() cho ta nh p mt k t kh c trng na th mi thot ra. K t s n m trong vng m v s -c ly bi h m scanf() hoc gets() tip theo.
!K t kh c tr ng: nu c trong chui-nhdng s khi n cho scanf() nhnvo ng k t nh- th.
V d 5: scanf(%d/%d/%d,&d,&m,&y);
Hm scanf() ch nh n mt s nguy n, c t v o d, k n l du /, b d uny i v ch nh n s nguy n k ti p c t v o m. N u khng gp d u / kti p s nguy n th scanf() ch m dt.
Ch : H m scanf() i hi cc tham s ph i l cc a ch ca c c binho c l mt con tr.
* To n t a ch & : L y a ch ca mt bi n
V d 6: int n; bi n n&n; a ch ca nprintf(tr = %d, a ch = %d,n,&n);
b) Hm getch():
Hm getch() dng nh n mt k t do ta nh p trn b n ph m m khngc n g Enter vi c ph p :
ch = getch(); Khng hi n k t nh p tr n mn h nhch = getche(); Hi n k t nh p tr n mn h nh
Vi ch l bi n kiu char.
V d 7:
void main(){ char ch;
printf(Go vao ky tu bat ky : );
ch = getche();printf(\n Ban vua go %c,ch);getch();
}
V d 8: B n nhp v o 1 ch ci. Nu ch c i nhp v o l 'd' th ch-ngtr nh s k t thc, ng-c l i ch-ng tr nh s bo li v b t nhp l i.
#include #include void main()
{ char ch;
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
17/134
K thut lp tr nh 17
printf("\nBan nhap vao 1 chu cai tu a den e: ");while ((ch=getche()) != 'd'){ printf("\nXin loi, %c la sai roi",ch);
printf("\n Thu lai lan nua. \n");}}L-u : Hm getch() cn cho php ta nh p vo 1 k t m rng nh- c c
ph m F1, F2,.., cc ph m di chuy n cursor. C c ph m n y lun c 2 bytes: byteth nht bng 0, cn byte 2 l m scancode ca ph m . nh n bi t ta gph m k t hay ph m m rng, ta c ch-ng tr nh sau:
void main()
{
int c;int extended = 0;
c = getch();
if (!c)
extended = getch();
if (extended)
printf("The character is extended\n");
else
printf("The character isn't extended\n");}
Ph m M scancodeF1 59F2 60F3 61F4 62F5 63
F6 64F7 65F8 66F9 67F10 68
Home 71" 72# 80
$ 75
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
18/134
K thut lp tr nh 18
% 77PgUp 73PgDn 81
End 79Ins 82Del 83
Bng m scancode ca cc ph m m rngc. Hm kbhit(): H m int kbhit() s ki m tra xem c ph m n o -c g
vo hay khng. Nu c, h m kbhit s tr v mt s nguyn kh c 0, v ng-c li.K t m ta nh p v o qua h m kbhit() c th ly -c qua h m getch()
hoc getche().V d:
void main()
{
printf("Press any key to continue:");
while (!kbhit()) /* do nothing */ ;
char kytu=getch();
printf("\nKy tu vua an : %c",kytu);
}
I.4Hng: H ng l c c i l-ng m gi tr ca n khng thay i trong qutr nh ch-ng tr nh thc hin.
I.4.1. Phn loi :
a. Hng s: l cc gi tr s xc nh v khng i.
int unsigned long h 8 h 16 float/double
Dng nnnn
-nnnn
nnnnU/u nnnnL/l
-nnnnl/L
0nnnn 0xnnnn nnnn.nnnn
nnnn.nnnE/ennnV d 4567
-12
123U
12uL
456789L
-1234L
0345 0x1AB 123.654
123.234E-4
Ch :
- C c h ng s vi t khng d u hoc khng s m -c hiu l s nguy n,ng-c l i l double.
- Cc h ng s nguyn ln hn int s -c l-u tr theo kiu long, cn lnhn long th -c l-u tr theo kiu double.
- C c h ng s nguy n d-ng ln hn long s -c l-u tr theo kiu double
- Mt h ng s -c l-u tr theo d ng long nu theo s c k t l (L),
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
19/134
K thut lp tr nh 19
d ng unsigned n u sau c ch u (U), d ng thp lc phn n u tr-c s c 0x v dng bt ph n n u tr-c s c 0
V d: 50000; 10 L; Long
5U, 100u unsigned0x10 h 16 = 16
10
010 h 8 = 810
b. Hng k t: l k t ring bi t -c vi t trong hai d u nhy n : A
Gi tr ca h ng k t l m ASCII ca n.
V d : printf(%c c gi tr l %d,A,A);
% A c gi tr l 65
&H ng k t c th tham gia v o c c php to n nh- mi s nguy n khc.
V d :9-0=57-48=9
& H ng k t c th l cc k t c bi t dng \c1 m ta xt h mprintf() nh- \n,\a,\t ...
c. Hng chui : L mt chui k t n m trong hai d u nh y kp .
V d : Day la mot chuoiHang chuoi co ky tu c bi t nh- \ \n \248
chui rng.Ch :
- Ph n bi t A AHng: Chui K tDng l-u tr :
A \0 A
- Nhn xt: d ng l-u tr, ta th y tn cng ca chui c k t NULL \0m khng c d ng k t . Ch nh v vy m khng c k t rng .
- Mt chui c th -c vi t trn nhi u h ng vi i u kin h ng tr n phic d u \.
V d :Day la mot chuoi duoc viet tren \nhieu hang \n
d. Hng biu thc : L mt bi u thc m trong cc ton h ng u lcc h ng. Khi ch-ng tr nh dch s t nh to n bi u thc tr-c, v kt qu -cl-u tr thng bng mt hng s t-ng -ng.
V d : 8*20-1
3 kt qu l-
u tr l1
73
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
20/134
K thut lp tr nh 20
a -A l 97-65 = 321
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
21/134
K thut lp tr nh 21
{ char cv;int iv = 121;float fv1,fv2;
printf( Chuy n ki u :\n\n);cv = iv;
printf(int -c gn cho char : %d%d (%c)\n\n,iv,cv,cv);fv1 = iv/50;printf( int : %d / 50 = %f \n\n,iv,fv1);fv1 = iv/50.0;printf( float : %d / 50.0 = %f \n\n,iv,fv1);fv1 = 1028.75;fv2 = fv1 +iv ;printf( %f + %d = %f \n\n,fv1,iv,fv2);getch();}
b. Php ton mt ton hng: php tng ++, php gim --
a++ ho c ++a a = a+1a-- hoc --a a = a-1
Ch : Tuy nhi n a++ s khc ++a khi chng ng trong bi u thc (cphp g n).
a++ : Tng a sau khi gi tr ca n -c s dng.++a : T ng a tr-c khi gi tr ca n -c s dng.
V d :
main() a b n
{ int a=4 , b=6, n;n = a + b;n = a++ + b;
n = ++a + b;n = --a + b;n = a-- + b;n = a+ b;
}
445
6544
666
6666
1010
12111110
I.5.3. Php gn phc hp:
C php: bi n op= bi n = bi n op
Vi op l php to n.
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
22/134
K thut lp tr nh 22
C c php g n phc hp : += , -= , *= , /= , %= , =
V d :n = n*(10+x) n *= (10 +x)n = n % 10 n %= 10I = I +3 I += 3
> : l php dch chuyn bit qua ph i .
I.5.4. Php ton quan h :
< : nh hn
> : ln hn
>= : ln hn ho c b ng
6)*(a-6) b = 4c= (a< 5)*(a-5) c = 0
V d: T m s ln nh t trong 3 s nguyn a, b, c
#include #include void main ()
{ int a, b, c, max;printf(Ch-ng tr nh t m s ln nh t trong 3 s);printf(Nhp a, b, c);scanf(%d %d %d , &a, &b, &c);
max = a;if (max
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
23/134
K thut lp tr nh 23
I.5.5.Ton t logic:
Ton t ngh a
NOT ! Ph nhAND && Giao, v
OR || Hi
Th t t nh to n t tr n xung.B ng chn tr:
x ! x x y x && y
true false true true true
false true true false falsefalse true false
false false false
x y x || y
true true true
false true true
false true true
false false falseV d 1: Xt k t c c phi l k s hay khng?
char c;
if (c >= 0 && c =a) and (ch< =z)) or ((ch> =A) and (ch< =Z))
printf(%c l chu cai \n,ch);
V d 3:int a=10, b=5, c=0;
a && b 1a && c 0a | | c 1
V d 4:
int a=10, b=5;
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
24/134
K thut lp tr nh 24
int i=2, j=0;(a>b) && (i= MAX ? 1: 0;printf ( max (a,b) = %d , (a>b) ? a:b);lower = (c > = A && c< = Z) ? c - A + a :c;
I.5.8. Ton t trn bit (bit wise) :
Dng K hi u ngh a
NOT bit ~ l y b 1
AND bit & giaoOR bit | hi
XOR bit ^ hi lo i tr
dch tr i > chia 2
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
25/134
K thut lp tr nh 25
B ng chn tr:
Bit Bit Bit k t qu A B ~ A A & B A | B A ^ B0 0 1 0 0 00 1 1 0 1 11 0 0 0 1 11 1 0 1 1 0
V d:
a= 4564 0001 0001 1101 0100b= 13667 0011 0101 0110 0011a & b 0001 0001 0100 0000a | b 0011 0101 1111 0111a ^ b 0010 0100 1011 0111
ngh a:1. Php AND bit th-ng -c dng ki m tra mt bit c th no trong
th nh ph n d liu x c tr 0 hay 1. Vic n y thc hi n b ng cch s dng mtmt n (mask) vi bit c n quan t m b ng 1 cn cc bit kh c bng 0. Ta ly maskAND vi gi tr x. N u kt qu thu -c b ng mask th l bit c n quan t m l 1,ng-c l i l 0.
V d 1:
void main()
{ unsigned x1; x2;
printf (\n cho 2 s hex(2 s) );
scanf (%x %x , &x1, &x2);
printf (% 02x & % 02x = % 02x\n, x1, x2, x1& x2);
}
V d 2: Ta mun bi t bit th 3 ca s hexa ch l 1 hay 0 :
void main()
{ unsigned char ch, kq;
printf ( \n cho 1 s hex 2 s :);
scanf ( %x, &ch);
kq= ch & 0x08;
if (kq== 0x08) printf (bit 3 = 1);
else printf (bit 3 = 0);
}
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
26/134
K thut lp tr nh 26
2. Php OR dng b t c c bit cn thi t l n cng nh vo mt m t n .Ch ng h n nh- ta mun b t bit th 7 ca bin ch (unsigned char ch) l n 1:
ch = ch | 0x80;
V d 3:
void main()
{ unsigned char x1,x2;
printf (\n cho 2 s hex (ff hay nh hn) :);
scanf (%x %x, &x1, &x2);
printf ( %02x | %02x %02x \n, x1, x2, x1| x2);
}
3. Php XOR dng l t bit ngh a l ho n chuyn 01
V d 4: l t bit 3 ta c ch-ng tr nh:
void main()
{ unsigned char ch;
printf ( nh p 1 s hex < = ff :);
scanf (%x, &ch);
printf (%02x ^ 0x08 = %02x \n , ch, ch ^ 0x08);
}
4. Ton t >> dch sang ph i (chia 2)
V d 5: num = 201 (0x00c9)
num : 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1
num > %d = %02x \n, x1, x2, x1>> x2);}
Ch : Trong php dch ph i C l m theo 2 c ch kh c nhau ty thuc v o
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
27/134
K thut lp tr nh 27
ki u d liu ca ton h ng bn tri.
- N u ton hng bn tri kiu unsigned th php dch s in 0 v o cc bitbn tri.
- N u ton h ng bn tri kiu signed th php dch s in bit du v o c cbit b n tr i
V d 7: unsigned int num;
num = 39470; // 9A2E hexa
num =
num >> 2=
0
1 0 0 1
9867 = 0x268B
0 0 1 0
1 0 1 0
0 1 1 0
0 0 1 0
1 0 0 0
1 1 1 0
1 0 1 1
V d 8 : int num; // 9A2E hexa
num = -26066
num =
num >> 2=
1
1 0 0 1
-6517 = 0xE68B
1 1 1 0
1 0 1 0
0 1 1 0
0 0 1 0
1 0 0 0
1 1 1 0
1 0 1 1
V d 8: Ch-ng tr nh i s hex ra s nh phn :
#include #include void main(){ int num;unsigned int mask;clrscr();printf ("Chuong trinh doi so hexa sang nhi phan\n");printf ("Nhap vao so hexa :");
scanf("%x",&num);mask = 0x8000;printf("\n Dang nhi phan cua so %x la ",num);for (int j=1; j>=1;
}getch();
}
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
28/134
K thut lp tr nh 28
V d 9: Ch-ng tr nh my t nh bitwise
y l ch-ng tr nh gi lp mt m y t nh thc hin c c ton t bitwise.#define TRUE 1
main(){ char op[10];
int x1, x2;while (TRUE){ printf (\n \n Cho biu thc ( vd ffoo & f11) : );
printf (\n);switch ( op[0]){ case &:
pbin (x1); printf (& (and) \n );
pbin (x2);pline (); pbin (x1 & x2);break;
case |:pbin (x1); printf (| \n );pbin (x2);pline (); pbin (x1 | x2);break;
case ^:
pbin (x1); printf (^ \n);pbin (x2);pline (); pbin (x1 ^ x2);break;
case >:pbin (x1); printf ( >>); printf (%d \n ,x2);pline (); pbin (x1 >> x2);break;
case
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
29/134
K thut lp tr nh 29
}pbin (num)int num;
{ unsigned int mask;int j, bit;mask = 0x8000;printf (%04x, num);for(j=0; j> = 1;
} printf (- -);mask >> 1;
}pline (){ printf (- - - - - - - - \n);
}
* S chuy n ki u bt buc:
Trong C c 2 tr-ng hp chuy n kiu: chuy n kiu t ng v chuy n
ki u b t buc.Chuy n ki u b t buc: -c p dng khi chuyn kiu t ng khng -c.
C php: (Type) biu thc
V d: d = (float) (f - 32)int a= 100, b=6;double f;f =a/b // k t qu f=16f= (double) a/ (double)b // k t qu f= 100.0 / 6.0= 16.666.
* Mc -u ti n ca cc php ton:
-u ti n Php ton Th t k t hp
1 () [ ] 2 ! ~ ++ - - (type) * & size of 3 * / % 4 + -
5 >
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
30/134
K thut lp tr nh 30
6 < >= 7 = = != 8 &
9 ^ 10 | 11 && 12 | | 13 ? 14 = + = - = ..
V d1
: 3/4 * 6 # 3*6 /40 * 6 18 /40 4
V d 2: (float) 2 /4 # (float) (2/4)2.0 /4 (float) 00.5 0.0
I.6. Chui
I.6.1. nh ngh a :Chui l mt m ng m cc phn t ca n c ki u k t.
Khai b o mt chui k t cha ti a 49 k tchar chui[50];
*L-u : Tt c c c chui u -c kt thc b ng k t NULL (\0). Do ,nu chui d i 50 th ta ch c th cha ti a 49 k t.
I.6.2. Khi ng tr:
char chui[ ] = {A, N, H, \0};
char chui[ ] = "ANH";
I.6.3.Nhp / xut chui:
a. Nhp chui:gets (chui)
b. Xut chui:puts (chui)
Ch :
- Khi nh p chui th khng -c dng h m scanf v hm scanf khng ch pnh n khong trng.
V d: scanf(%s, chui);// ta nh p vo Nguy n V n i th
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
31/134
K thut lp tr nh 31
// chui = Nguyn v h m scanf c t kho ng tr ng
- Khi dng h m gets trong ch-ng tr nh th khng nn dng h m scanf bt k u d r ng dng hm scanf nhp s m ta nn dng h m gets v hm
atoi, atof nhp s.V :
scanf(%d, &n); // ta nh p s 5 gets (chui); // lc n y chui = (chui rng)
I.6.4. Hm chuy n i s sang chui v ng-c li
sint = atoi (chuis) // chuy n chui s sang s nguynsf = atof (chuis) // chuy n chui s sang s thc
* Hai h m n y n m trong < stdlib .h >
I.6.5.Cc hm v chui: (# include < string. h> )- int strlen(S) : tr v chiu d i chui S.
- int strcmp(S1, S2): so s nh chui S1 vi S2. N u chui S1 ging S2 k tqu bng 0. N u chui S1< S2 k t qu l m, nu chui S1> S2 k t qu > 0.
- int stricmp(S1, S2): so s nh chui S1, S2 khng ph n bi t ch th-nghay ch hoa
- int strncmp(S1, S2, n): ch so snh n k t u ca 2 chui S1, S2 vinhau.
- int strnicmp(S1, S2, n): ch so snh n k t u ca 2 chui S1, S2 vinhau, khng phn bi t ch th-ng, ch hoa
- strcpy(dest, source): chp chui t ngun source sang ch dest
V d: char string[10];
char *str1 = "abcdefghi";strcpy(string, str1);printf("%s\n", string); // "abcdefghi"
- strncpy(dest, source, n): chp chui t ngun sang ch vi nhi u nh t
l n k t.V d:
char string[10];char *str1 = "abcdefghi";strncpy(string, str1, 3); // string = "abcx1zwe12"string[3] = '\0'; // t k t k t thc chui v o cui chui.printf("%s\n", string); // "abc"
- strcat(dest, src): ni chui src v o sau chui dest. Chiu d i ca chui
k t qu b ng strlen(dest) + strlen(src)
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
32/134
K thut lp tr nh 32
V d:
char destination[25];char *blank = " ", *c = "C++", *turbo = "Turbo";
strcpy(destination, turbo); // destination = "Turbo"strcat(destination, blank); // destination = "Turbo "strcat(destination, c); // destination = "Turbo C++"
- strncat(dest, src, n): ni nhi u nh t l n k t ca src vo cui chuidest, sau th m k t null v o cui chui k t qu .
V d:
char destination[25];char *source = " States";
strcpy(destination, "United");strncat(destination, source, 6);printf("%s\n", destination); // destination = "United State"
- char* strchr(s, ch): tr v a ch ca k t ch u ti n c trong chuiS; nu khng c th tr v NULL (th-ng dng l y h)
V d:
char string[15];char *ptr, c = 'r';
strcpy(string, "This is a string");ptr = strchr(string, c);if (ptr)
printf("K t %c v tr : %d\n", c, ptr-string);else
printf("Khng t m th y k t %c\n",c);
- char * strstr(S1, S2): tr v v tr ca chui S2 trong chui S1; n u S2khng c trong S1 th h m strstr tr v tr NULL.
I.6.6.Mng cc chui*Khai bo: Khai b o bin ds cha ti a 50 chui k t , mi chui k t c
ti a 30 k t.
char ds[50] [30];Ch :
- Khng nn gn chui vi chui (s1= s2) m phi dng hmstrcpy(S1,S2)
- Khng -c so s nh 2 chui b ng c c ton t quan h (S1== S2,
S1
>S2, S1
>= S2), m phi dng hm strcmp(S1
,S2).
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
33/134
K thut lp tr nh 33
V d: Vi t ch-ng tr nh t m ki m 1 t trong 1 c u
# include < string.h>
# include < stdio.h>
void main ()
{ char cau[80], t[7], *ptr;
printf(Nh p c u :);
gets(cu);
printf(Nh p t :);
gets(t);
ptr = strstr(c u, t);
if (ptr == NULL) printf(Khng c t);else printf(c t);}
II. Cc cu trc iu khin trong C:
Ngn ng C l ngn ng lp tr nh cp cao c cu trc, gm: cu trc tun t,chn, v lp.
II.1 Cu trc tun t (Sequence) :
Cc lnh trong ch-ng tr nh -c thc hi n tu n t t lnh ny n l nhkh c cho n khi h t ch-ng tr nh.
V du : Vit ch-ng tr nh t nh v in ra di n t ch ca hai -ng trn bn k nhl n l-t l 3m v 4.5m cng vi hiu s ca 2 din t ch.
#define PI 3.14159
#include
#include
void main()
{float r1, r2, hieuso;
clrscr();
printf("\nCHUONG TRINH TINH DIEN TICH 2 HINH TRON VA HIEU SO\n");
printf("Ban kinh hinh tron thu nhat : ");
scanf("%f",&r1);
printf("Ban kinh hinh tron thu hai : ");
scanf("%f",&r2);
printf ("Dien tich hinh tron 1 = %.2f\n",PI*r1*r1);
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
34/134
K thut lp tr nh 34
printf ("Dien tich hinh tron 2 = %.2f\n",PI*r2*r2);
hieuso = PI*r1*r1 - PI*r2*r2;
printf ("Hieu so dien tich 2 hinh tron = %.2f\n",hieuso);
getch();}
II.2. Cu trc chn
K hi u : k l bi u thc Logic
S1, S2 l cc pht biu hay 1 nhm c c pht biu (lnh)
II.2.1. L nh if else:
C php:
if (k) S1;
KNO
YES
S1
if (k) S1;else S2;
K S1
S2
NO
YES
Ch : Cc lnh if else lng nhau
if (k1) S1;
else if (k2) S2;else if (k3) S3;
else S4;
V d 1: T m max(a,b,c)
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
35/134
K thut lp tr nh 35
if (a>b)if (a>c) max=a;else max=c;
else if (b>c) max =b;else max= c;
V d 2: T nh h m f(x) :
f(x) = x2 , n u -2 < = x< 24 , x > = 2
if (x>=-2 && x=2)
fx= 4;else { printf("\n Khong xac dinh") ; exit(0) ;}
II.2.2. L nh chn la: switch_case
C php:
switch (biu thc)
{ case h ng 1: S1;
case h ng 2: S2; break;
.
.
.
case h ng 3: Sn; break;
default: S0;
}
Cch hot ng:
- (bi uthc) c k t qu nguy n
- H ng: k t, s nguyn, bi u thc c s nguy n
- N u k t qu bng h ng I no th n s l m l nh Si v tu n t thc hinh t cc l nh d-i cho n khi h t l nh switch.
- Mun ng t s tu n t tr n th ph i dng lnh break.
V d: Nh p 1 k t s dng hex i ra s th p phn
#include #include
void main()
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
36/134
K thut lp tr nh 36
{unsignedchar ch;int k;
clrscr();printf("Nhap 1 ky tu so hex : ");ch=getche();switch (ch){case '0':case '1':case '2':case '3':
case '4':case '5':case '6':case '7':case '8':case '9': k=ch-'0'; break;case 'A':case 'B':case 'C':
case 'D':case 'E':case 'F':k=ch-'A'+10; break;case 'a':case 'b':case 'c':case 'd':case 'e':case 'f': k= ch-'a'+10; break;
default: k=0;}printf ("\nSo thap phan cua ky tu hexa %c la %d ",ch,k);getch();}
V d: Vi t ch-ng tr nh t o 1 my t nh c 4 php to n + , - , * , /
#include #include void main()
{
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
37/134
K thut lp tr nh 37
float num1, num2;char op;clrscr();
printf ("Go vao so, toan tu, so \n");scanf("%f %c %f", &num1, &op, &num2);switch (op){case '+': printf("= %f",num1+num2);
break;case '-': printf("= %f",num1-num2);
break;case '*': printf("= %f",num1*num2);
break;case '/': printf("= %f",num1/num2);
break;default : printf("Ton t l , khng bi t");}
}
II.3. Cu trc lp
II.3.1. L nh while:
C php:
While (bt)
S;K
NO
YES
S
Ch : Trong ph n thn l nh ph i c bi n i u khi n vng lp.
V d 1: Vi t ch-ng tr nh in ra bng m ASCII
void main (){ int n=0;
while (n
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
38/134
K thut lp tr nh 38
{ printf(%c c m ASCII l %d, n, n);n ++
}
}V d 2: Nhp mt chui k t, v k t thc nh p b ng ESC
#define ESC \ 0x1b#include #include
void main(){ char c;
while (1)
if ((c = getche() ) = ESC ) break;}
V d 3: Vi t ch-ng tr nh in bng cu ch-ng
void main (){ int a, b;
b = 1;while (b < = 9)
{ a = 2;while (a < = 9)
{ printf(%d * %d = %d \t, a, b, a*b);a++;}
b ++;printf(\n);
}}
II.3.2. L nh do while:
C php:
do
S
while (bt);
S
k
NoYes
V d 1: Vi t ch-ng tr nh in bng m ASCII
#include
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
39/134
K thut lp tr nh 39
main (){ int n=0;
do
{ printf(%c c m ASCII %d\n, n, n);n ++;} while (n
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
40/134
K thut lp tr nh 40
void main (){ long gt = 1;
for (int i =1; i
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
41/134
K thut lp tr nh 41
}
3. Lnh goto: dng chuy n iu khi n ch-ng tr nh v mt v tr n o .
C php: Goto nh n;
Lnh goto s chuy n i u khi n ch-ng tr nh ngay l p tc v v tr tnh n.
V d:Again:;..goto Again;
Bi tp:
1. Vit ch-ng tr nh t nh di n t ch
- H nh vung- H nh thang- Tam gic th-ng- Tam gi c vung- H nh trn
2. T nh khong cch mt im (X0, Y0) ti mt -ng th ng Ax + By + C = 0
BA
CByAxS
22
00
+
++= , nhp A, B, C, X0, Y0
3. Cho 3 s thc x, y, z. T m
a. Max(x+y+z, x*y*z)b. Min2 ((x+y+z) / 2, x*y*z) +1
4. Vit ch-ng tr nh t m s ln nh t trong 3 s nguy n a,b, c
5. Gii ph-ng tr nh bc 2 Ax2+Bx+C = 0 trn tr-ng s thc.
6. Vi t ch-ng tr nh t nh di n t ch h nh trn, bit b n k nh r d-ng; Ch-ngtr nh c ki m tra s li u nhp v o, n u r
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
42/134
K thut lp tr nh 42
9. Vit ch-ng tr nh ki m tra 1 bit b t k ca s bng 0 hay 1
10. Vit ch-ng tr nh t nh k t qu ca mt s sau khi dch phi hoc dch tri nln.
11. m s l n xu t hi n ca t mt trong 1 c u
12. Thay th 1 t trong 1 cu bng 1 t kh c.
13.Nh p h tn, tch hoten ra l m 2 ph n h v tn ring.
14.Vi t ch-ng tr nh i c c k t u ca c c t ra ch in, c c k t cn l i rach th-ng.
15.Vi t ch-ng tr nh cho php ta kim tra mt password l ng hay sai (nhpti a password 3 l n).
16.Cho chui s, vi t ch-ng tr nh di chuy n ch t b n tr i qua bn ph i camn h nh t i dng 5. Qu tr nh di chuy n dng l i khi ta n ph m ESC.
17. Bn hy vi t ch-ng tr nh t nh gi tr tng cng ca mt s n ph m c k cthu , bi t r ng t sut thu l 13.6% t nh tr n gi gc. Gi gc ca s n phm-c c v o, v cn in ra:- Ti n thu
- Gi c thu
18. Trong mt k thi cui kha, c c hc vin ph i thi 4 mn : mn I h s 2,
mn II h s 4, mn III h s1, mn IV h s 2, i m c c mn cho ti a l10 i m. Vi t ch-ng tr nh nh p im ca 4 mn v t nh i m trung b nh.
19. Mt ng-i b n r-u bn N chai r-u c n gi l P. Nu tng s ti n v-tqu 5000000 th vi c chuyn ch l mi n ph , n u khng ph chuy n chth-ng -c t nh b ng 1% tng tr gi hng. Vi t ch-ng tr nh nhp v o N, P.In ra c c chi ti t Tng tr gi h ng, ti n chuyn ch, v tng s ti n ph i tr .
20. Mt sinh vi n d tuy n c cc chi ti t sau : h tn, im L1 ca ln 1, imL2 ca l n 2, im thi cui k CK. Vi t ch-ng tr nh x c nh xem mt sinh
vi n c -
c tuy n hay b lo i, bi t r ng s -
c tuy n n u im -
c t nhtheo cng thc sau ln hn hay b ng 7 : Max( (L1+L2+CK)/3, CK).
21. Vi t ch-ng tr nh cho bit tin l-ng hng ng y ca mt ng-i gi tr . C cht nh l 15000/gi cho mi gi tr-c 14 gi v 25000 /gi cho mi gi sau14 gi. Gi b t u v gi k t thc cng vic -c nhp t b n ph m.
22. Cho 3 s thc x, y z
a. Tn t i hay khng mt tam gic c 3 c nh c d i x, y, z ?
b. Nu l tam gi c th n vung, cn, u hay th-ng
23. Gi i h ph-ng tr nh bc nh t:
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
43/134
K thut lp tr nh 43
ax+by = cax+by = cH-ng d n:
D = a b
a b
= ab - ab
Dx= c b
c b
= cb - cb
Dy= a c
a c
= ac - ac
if D!= 0 x= Dx/D; y= Dy/ D
else if (( Dx != 0) | | ( Dy != 0)) pt v nghi melse pt v nh
24. Gi i h ph-ng tr nh 3 n s bc nh t
a1x + b1y + c1z = d1
a2 x + b2 y + c2 z = d2
a3 x + b3 y + c3 z = d3
25. Vi t ch-ng tr nh gi i ph-ng tr nh trng ph-ng ax4 + bx2 + c = 0
26. Ng-
i ta mun l p ha n cho kh ch hng ca Cng ty in lc. Ch s uv ch s cui k s -c cho bi t. Bi t r ng bi u gi -c t nh ty theo innng ti u th.
- N u i n n ng ti u th nh hn 100Kwh, gi mi Kwh l 500.
- N u in n ng ti u th t100Kwh tr ln, th mi Kwh di ra s -c t nhgi l 800
- Ph khu vc l 5000 cho mi khch h ng. Vi t ch-ng tr nh t nh ti nph i tr tng cng gm tin i n, v ph khu vc
27. Bi t 2 s X, Y biu din thi gian t nh theo giy. Ng-i ta mun vi t ch-ngtr nh :
- c 2 s n y v in ra tng ca chng
- Chuy n c c s ny v tng ra d ng gi, ph t, gi y ca chng ri in ra.Ki m xem k t qu ca 2 cch t nh c nh- nhau khng?
28. Vi t ch-ng tr nh in bng cu ch-ng t 2 9 theo h ng ngang
29. In tam gic *, h nh ch nh t *, rng - c
30. V l-u v vi t ch-ng tr nh t nh :
a. 1+2+...+n
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
44/134
K thut lp tr nh 44
b. 1+3+5+...+2n-1
c. 2+4+6+...+2n
d. 12+ 22+ 32+...+n2
e. 1/1+ 1/2+ 1/3+...+ 1/nf. 2+4+8+...+2n
g. 1+ 1/22 + 1/32 +....+ 1/n2
31. Cho epsilon = 0.000001, x c nh c c tng sau y sao cho s hng cuicng ca tng l khng ng k (s h ng cui cng < epsilon )
a. 1/1+ 1/2+ 1/3+1/4+.....
b. 1+ 1/22 + 1/32 +....+...
32. Vi t ch-
ng tr nh in ra bng m
ASCII,1
6 k t trn1
dng.33. V l-u v vi t ch-ng tr nh :
a. Xt mt s c phi l s nguy n t hay khng ?
b. In tr n m n h nh 100 s nguy n t u tin
34. Vi t ch-ng tr nh cho php mt k t ng u nhi n ri trn m n h nh. N ung-i s dng khng kp n ph m t-ng ng v ch m y m n h nh ththua cuc.
35. Cho hm Fibonacci:
Fn = { 1 ; n=0,1Fn-1 + Fn-2 ; n>=2a. T m Fn, vi n do ta nhp
b. In ra N ph n t u tin ca dy Fibonacci
36. Vi t ch-ng tr nh c vo s nguy n N v in ra 1*2*3*..*N cho n khi N
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
45/134
K thut lp tr nh 45
III. Hm - quy:
III.1.Hm:
III.1.1.Mc ch : H m l mt ch-ng tr nh con ca ch-ng tr nh ch nh,vi cc mc ch sau:
* Tr nh vi c l p i l p l i c c on ch-ng tr nh ging nhau, nh , ta sti t kim lc l p tr nh.
* T chc ch-ng tr nh: Dng hm ta s ph n m nh ch-ng tr nh thnhnhng khi nh c l p, mi khi l mt hm thc hin mt cng vic n o .Tng hm s -c lp tr nh, kim tra ho n ch nh; Sau , ta k t l i to ch-ngtr nh ho n ch nh. Nh vy, ch-ng tr nh v sau d hi u v d sa.
* T nh c lp: cho php h m c l p vi ch-ng tr nh ch nh. V d hmc nhng bi n cc b m ch-ng tr nh ch nh v c c h m khc khng th ngti. Do , n u ta c khai bo c c bin trng t n vi c c h m khc th cngkhng s nh h-ng ti c c bin trng tn .
Ch :
- C khng cho php cc h m lng nhau ngh a l cc h m u ngang cpnhau (c th gi l n nhau).
- C khng ph n bi t th tc hay h m, m ch quan tm n k t qu tr vca hm. N u h m khng tr v k t qu g c th c th xem l th tc.
V d: V h nh ch nh t c b ng d u *:#include #include void ve_hcn(int d,int r) // khai b o void cho bi t h m khng tr v trn o c{ int i,j ; // i, j l 2 bin cc b trong h m ve_hcnfor (i=1;i
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
46/134
K thut lp tr nh 46
III.1.2. C php nh ngh a hm
C php:
Kiu tnh m (ds i s){ Khai bo bi n cc b;
lnh;[ return (expr);]
}
- Kiu: L k t qu tr v ca h m. Nu khng ghi ki u, C s t hi u l ki uint. Nu khng mun c k t qu tr v th ghi kiu void.
- Danh sch i s: Li t k cc i s v ki u ca i s gi n hm, cchnhau bi d u ','. N u khng c i s ta ch cn ghi()
- L nh return: c c c d ng sau:
return;
return (expr);
return expr;
V d: H m chuyn ch th-ng sang ch hoa
#include #include
Get_upper(char ch){ return (ch >='a' && ch
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
47/134
K thut lp tr nh 47
#include #include int max (int a,int b)
{ int m= a>b?a:b;a=a*100;b=b*100;return m;
}void main(){ int a,b,c;clrscr();printf("\nChuong trinh tim Max(a,b)\n");
printf("Nhap a b : ");scanf("%d %d",&a,&b);c=max(a,b);printf("\nGia tri lon nhat =%d",c);printf("\nGia tri a =%d",a);printf("\nGia tri b =%d",b);getch();
}
Gi s ta chy ch-ng tr nh tr n:Nhap a b : 12 24Gia tri lon nhat =24Gia tri a =12Gia tri b=24
Nhn xt:
- Ta nhn th y rng gi tr hai bi n a, b tr-c v sau khi v o h m max lkhng thay i (mc d trong h m max, c hai bin a v b u thay i); l
c ch ca s truy n i s theo tr.Li gi hm: tnhm (ds isthc);
- N u truyn i s theo tr th i s thc c th l bi n, ho c c th l bi uthc.
V d: c = max(1000,b);
b.Truy n theo a ch: i s thc l a ch ca bi n
#include
#include
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
48/134
K thut lp tr nh 48
max (int &a,int b){ int m= a>b? a : b;
a=a *100;
b=b*100;return m;
}void main(){ int a,b,c;clrscr();printf("\nChuong trinh tim Max(a,b)\n");printf("Nhap a b : ");scanf("%d %d",&a,&b);c=max(a,b); // a l tham s thc binprintf("\nGia tri lon nhat =%d",c);printf("\nGia tri a =%d",a);printf("\nGia tri b =%d",b);getch();
}
Gi s ta chy ch-ng tr nh tr n:
Nhap a b : 12 24Gia tri lon nhat =24Gia tri a =1200Gia tri b=24
Nhn xt:
- Ta nhn thy r ng gi tr bin a tr-c v sau khi vo h m max thay i; l c ch ca s truyn i s theo a ch .
Li gi hm: tnhm (t nbin);
- N u truyn i s theo a ch th tham s thc bt buc ph i l mt tn bi n.V d: c = max(1000,b); l sai
V d: Vi t h m giaohon ho n i gi tr ca 2 bi n nguy n a,b.
void giaohoan (int &a, int &b){ int tam;
tam = a;a = b;b = tam;
}
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
49/134
K thut lp tr nh 49
void main(){ int a,b;
printf ("a, b = ");
scanf ("%d %d", &a, &b);giaohoan(a, b);}
* Truy n i s l mng gihm (mang)
h m (kiu mang[]) ho c hm(ki u *mang)
V d: Cng th m mt h ng s vo m ng t n l dayso.
#define SIZE 5 // dy s c 5 s#include
#include void add_const(int *a, int n, int con) // int *a int a[]{ for (int i=0; i
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
50/134
K thut lp tr nh 50
{ float a ,b, a1, b1;printf(Nhap a,b,a1,b1:);scanf(%f %f %f %f,&a,&b,&a1,&b1);
printf(Dinh thuc = %f,dinhthuc(a,b,a1,b1);getch();}
III.1.5. Phm vi tn ti ca bin:
a.Bin ton cc : l bi n -c khai b o ngo i c c h m ( k c hm main).N -c php truy nhp n t t t c cc hm trong sut thi gian ch-ng tr nhho t ng.
V d: Khai b o ngo i h m main
Ki u tn bi n; // bi n to n ccvoid main(){}
b.Bin cc b: l bi n -c khai b o trong cc hm, k c trong hmmain. N khng cho php cc hm khc truy nh p n n. N tn t itrong thi gian sng ca h m cha n.
void main()
{ ki u tn bi n; bi n cc b trong h m main()}c.Bi n ngoi : l bi n m cc h m c th truy xu t ti m khng ph iph n phi b nh. N -c dng cc h m trn c c t p tin kh c nhauli n k t l i.
External Ki u tn bin;void main(){
}d.Bi n t nh : l mt bi n cc b ca mt hm nh-ng v n gi gi tr caln gi hm cui cng
void main(){ static Ki u tnbi n;}
e.Bin thanh ghi : l mt bi n s dng cc thanh ghi ca CPU tngtc truy xu t
register Ki u t nbi n ;
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
51/134
K thut lp tr nh 51
III.1.6. Cc dn h-ng ti n x l
III.1.6.1. #define
a.nh ngh a hng:#define t n h ng gi tr
V d: #define PI 3.14#define MAX 100#define THONGBAO H t Gi "#define khoangtrang
b. nh ngh a Macro:
#define t nmacro (i s ) thao tc
V d: #define sqr (x) x*x#define sum (x,y) x+y
a = b * sum (x,y); // a = b * x+y;#define sum (x,y) (x+y)
a = b * sum (x,y); // a = b * (x+y);*Ch : Trong cc thao t c Macro nn s dng cc d u ngo c tr nh d n
ra mt k t qu sai
V d : #define max (a,b) ((a) > (b) ? (a) : (b))#define ho nv (a,b) { int t m =a; a= b; b= t m;}#define error (n) printf ( error %d, n)
D-i y mt s Macro ph n t ch k t, t t c u trong . Ccmacro n y tr v tr kh c 0 nu th nh cng. i vi mi macro, th nh cng -cnh ngh a nh- sau:
Macro K t
isalpha (c) c l k t a z, A Z
isupper (c) c l k t A Zislower (c) c l k t a zisdigit (c) c l k s 0 9isxdigit (c) 0 9, A F, a ziscntrl(c) c l k t xa ho c k t iu khin
(0x7F hoc 0x00 n 0x1F)ispace (c) c l k t space, tab, carriage return,
new line (0x09 n 0x0D, 0x20)
Khai bo: char c;
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
52/134
K thut lp tr nh 52
* Phn bit Macro vi hm:
- Dng Macro: truy xu t nhanh, tn b nh.
- Dng h m: ng-c l i
III.1.6.2. #include
L ti n x l dng k t ni t p trung khai b o trong include vi t p tinang l m vic.
# include < tn tp tin.h># include tn t p tin.h
D ng < > : i t m t p tin.h trong th-mc -c ch nh trong IncludeDirectories.
D ng : t m t p tin.h trong th- mc Source Directories, nu khng c,n i t m trong th- mc -c ch nh trong Include Directories.
III.2. qui (Recursion):
III.2.1.Khi ni m: qui l 1 cng c r t th-ng dng trong khoa hcmy t nh v trong to n hc gi i quy t c c v n . Tr-c h t, chng ta hykho s t th no l mt v n c qui qua v d sau:
T nh S(n) = 1 +2 +3 +4+ ...+n
Ta nh n thy r ng, cng thc tr n c th di n t l i nh- sau:
S(n) = S(n-1) + n, vS(n-1) = S(n-2) + (n-1).....S(2) = S(1) + 2S(1) = 1
Nh-vy, mt vn c qui l vn -c nh ngh a li bng ch nh n.
t nh S(n): ta c k t qu ca S(1), thay n v o S(2), c S(2) ta thay n v oS(3) ...., c nh- vy c S(n-1) ta s t nh -c S(n)
*Mt s v d
1. Hm giai tha:
n! = { 1*2*3*......*(n-1)*n , n>01 , n=0
= { n*(n-1)! , n>01 , n=0
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
53/134
K thut lp tr nh 53
Nhn xt:
- Theo cng thc tr n, ta nh n th y trong nh ngh a ca n giai tha (n!)c nh ngh a l i ch nh n n n h m giai tha c qui.
- Vi n >=0 , iu kin dng t nh hm giai tha l n=1
2. Hm FIBONACCI:
Fn = 1 ; n =0,1
Fn-1 + Fn-2 ; n>1
- Theo nh ngh a tr n, h m Fibonacci c l i gi qui.
- Qu tr nh t nh dng l i khi n= 1
III.2.2. Hm qui trong ngn ng C:
Ngn ng C c trang b c ch gi h m qui. Hm qui l hm gi nch nh hm mt c ch trc tip hay gi n tip.
V d 1: Vit h m qui t nh S(n) = 1 + 2 + 3 +...+n
#include #include int S(int n){ if (n==1) // iu ki n dng
return 1;
else // b-c quireturn (S(n-1) + n);
}void main(){ int n;printf("\n Nhap n = ");scanf("%d",&n);printf("Tong S = 1 + 2 + ...+ %d = %d",n, S(n));getch();
}V d 2 : Vi t h m qui t nh hm giai tha n.
long giaithua(int n){ return ((n==0) ? 1 : n*giaithua(n-1));}
III.2.3. Hm qui v Stack:Mt ch-ng tr nh C th-ng gm c h m main() v cc h m khc. Khi chy
ch-ng tr nh C th hm main() s -c gi chy tr-c, sau h m main() gi
cc hm khc, cc h m n y trong khi chy c th gi c c h m khc na. Khi
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
54/134
K thut lp tr nh 54
mt h m -c gi, th mt khung k ch ho t ca n -c to ra trong b nhstack. Khung k ch ho t n y cha cc bin cc b ca hm v mu tin ho t ngca hm. Mu tin ho t ng cha a ch tr v ca h m gi n v cc tham skhc.
Bi n cc b
a ch tr vMu tin
ho t ng Thng s khcKhung k ch hot
Sau khi hm -c gi thi hnh xong th ch-ng tr nh s thc hin tipdng lnh a ch tr v ca hm gi n, ng thi xa khung k ch ho t ca
hm khi b nh.Gi s ta c c ch gi hm trong mt ch-ng tr nh C nh- sau:
main()
{ ......
A();
.....;
B();
....;}
A()
{.....;
C();
....;
D();
}
B()
{.....;
D();
}
C()
{......;
D();
.....;
}
D()
{........;
........;
}
H nh sau y cho ta thy s chim dng b nh stack khi chy ch-ng tr nhC nh- m t tr n.
b nh
Stack
D
C C C D D
A A A A A A A B B BM M M M M M M M M M M M M
thi gian
T-ng t vi tr-ng hp h m qui, khi gi qui l n nhau th mt lo tcc khung k ch ho t s -c t o ra v np v o b nh Stack. Cp qui c ng caoth s khung k ch ho t trong Stack c ng nhiu, do , c kh nng dn n tr nStack (Stack overflow). Trong nhi u tr-ng hp khi lp tr nh, n u c th -c tann g qui cho cc b i ton.
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
55/134
K thut lp tr nh 55
IV. Structure:C c ki u n gi n t i mt thi i m ch l-u gi -c mt gi tr duy nht.
Cn mt bin kiu m ng dng l-u tr cc gi tr cng kiu d liu vi nhau,
ch ng hn nh-mt dy s, mt d y cc k t ,...Nh-ng trong thc t , i u nyvn ch-a v c c th nh phn m ta l-u gi th-ng l kh c kiu d li u vinhau.
V d : Ta mun l-u gi cc thng tin v mt sinh vi n nh- sau : MASO,HO, TEN, NGAYSINH, NOISINH, PHAI, DIACHI, LOP . Vi c c th nh ph nnh-vy, th r r ng cc th nh phn ca 1 sinh vi n khng th cng kiu m ph ithuc cc kiu khc nhau, c th l :
- MASO, HO, TEN : m ng ch
- NGAYSINH : int ng y , thng , n m ;
- NOISINH : m ng ch
- PHAI : unsigned int;
- LOP : m ng ch;
Do , l-u tr -c c c thnh ph n khc nhau ca mt i t-ng ta ph is dng mt kiu d liu trong C l Structure. (t-ng t nh- record trongPascal)
IV.1.nh ngh a:
Mt bi n c ki u structure -c dng l-u tr mt i t-ng c nhi uth nh ph n. Cc thnh ph n c th thuc c c kiu d liu khc nhau.
IV.2.Khai bo : Mun khai bo ki u hocvien dng l-u tr h, tn, immn TOAN,LY,HOA, TB, X p lo i ca mt hc vi n, ta c :
struct hocvien{ char ho[30];
char ten[7];float toan, ly, hoa , dtb;
char xeploai[10];} ;
- khai bo bi n hv c ki u hocvien :
struct hocvien hv;
- truy xu t ti mt thnh ph n, ta dng d u ch m, v d nh-: hv.ho truy xu t ti h ca hc vin.
* Khai b o k t hp: va khai b o kiu structure va khai bo bin c kiu .
struct hocvien
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
56/134
K thut lp tr nh 56
{ char ho[30];char ten[7];float toan, ly, hoa , dtb;
char xeploai[10];} hv1, hv2; // khai b o 2 bin hv1, hv2 cng kiu hocvien
- Khai b o structure lng nhau:
V d:
void main(){ struct ngaysinh{ unsigned int ngay, thang, nam;};
struct hocvien{ char ho[30];char ten[7];struct ngaysinh ngsinh;float toan, ly, hoa, dtb;char xeploai[10];} ;struct hocvien hv;
}
Trong tr-ng hp n y, truy xu t ti thng sinh ca hc vi n hv, ta vi tnh- sau: hv.ngsinh.thang.
V. FILE:
V.1. File vn bn:
- File vn bn l file -c l-u tr d-i d ng ki u k t
C 2 cch truy xu t theo kiu k t.
- Truy xu t theo tng k t- Truy xu t theo tng dng
V.1.1. Khai bo tp tin:
Khai b o bi n ki u file:FILE *fptr
V.1.2. M tp tin:
fptr = fopen (t n file, kiu);
- Trong "t nfile" , ta c th ch nh mt -
ng dn y nh-
sau
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
57/134
K thut lp tr nh 57
"C:\THU\KTLT\VIDU.TXT". H m fopen n u m file th nh cng s tr v mtcon tr file cho tp tin "t n file", v con tr n y -c ct gi trong bin fptr (binkiu FILE).
Nu khng c file "t n file" tr n d a th hm fopen s tr v tr NULL( n u fptr == NULL ngh a l khng c file )
- Kiu: gm c:
r : c ( file phi c s n, n u khng c file, h m fopen tr v trNULL)
w : ghi ( n u c file s xa file c )a : ni v o cui tp tinr +: c / ghi, tp tin ph i c sn trn d a
a+: c, ghi v o cui tp tin, n u trn d a ch-a c tp tin th n s -cto ra.
V d: m s k t trong file VB.TXT.
#include #include #include void main(){ FILE *fptr;
int dem=0;char ch;if ((fptr = fopen("VB.txt", "r")) == NULL) // m file c{
printf("File nay khong the mo\n");exit(0); //k t thc ch-ng tr nh, hm exit thuc v stdlib.h
}while (!feof(fptr)){ ch=fgetc(fptr); // c 1 k t trong file fptr radem++;
}fclose(fptr);printf("\nSo ky tu trong file VB.TXT =%d",dem);
getch();}
V.1.3. ng file:
fclose (fptr)
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
58/134
K thut lp tr nh 58
V.1.4. c / ghi k t: Cho bi n k t charch;
- c k t t t p tin
ch = getc (fptr)
- Ghi k t l n t p tinputc (ch, fptr)
V d 1: T o 1 file trc tip t bn ph m. Qu tr nh to s dng li khi ta nph m Enter.
#include #include #include void main()
{ FILE *fptr;char tenfile[67];char ch;clrscr();printf("Cho biet ten file :");gets(tenfile);if ((fptr=fopen(tenfile,"w"))==NULL) // m file mi ghi{ printf("Viec tao file co loi\n");
exit(0);}while ((ch=getche()) !='\r')putc(ch,fptr);
fclose(fptr);}
V d 2: In ni dung t p tin ra mn h nh
#include
#include #include void main(){ FILE *fptr;char tenfile[67];char ch;clrscr();printf("Cho biet ten file :");gets(tenfile);
if ((fptr=fopen(tenfile,"r"))==NULL)
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
59/134
K thut lp tr nh 59
{ printf("Viec mo file co loi\n");exit(0);
}
while ((ch=getc(fptr)) !=EOF)printf("%c",ch);fclose(fptr);
}
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
60/134
K thut lp tr nh 60
V d 3: Ch-ng tr nh m s t trong file
#include
#include #include void main(){ FILE *fptr;char tenfile[67];int ch;int dem=0, tu=0;clrscr();printf("Cho biet ten file :");
gets(tenfile);if ((fptr=fopen(tenfile,"r"))==NULL) // m file c{ printf("Viec mo file co loi\n");exit(0);
}while ((ch=getc(fptr)) !=EOF){ if ((ch>='a' && ch ='A' && ch
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
61/134
K thut lp tr nh 61
#include #include #include
#include void main(){ FILE *fptr;char tenfile[67];char chuoi[80];clrscr();printf("Cho biet ten file :");gets(tenfile);if ((fptr=fopen(tenfile,"w"))==NULL) // t o file mi
{ printf("Viec tao file co loi\n");exit(0);}while (strlen(gets(chuoi)) > 0) // h m strlen() trong { fputs(chuoi,fptr);fputs("\n",fptr);
}fclose(fptr);
}
V d 2: c c c chui k t t tp tin, v in n tr n m n h nh.#include #include #include void main(){ FILE *fptr;char tenfile[67];char chuoi[81];clrscr();
printf("Cho biet ten file :");gets(tenfile);if ((fptr=fopen(tenfile,"r"))==NULL){ printf("Viec tao file co loi\n");exit(0);
}while (fgets(chuoi,80,fptr)!= NULL)
printf("%s",chuoi);fclose(fptr); getch();
}
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
62/134
K thut lp tr nh 62
V.1.6. Xa file: L nh remove xo file -c ch nh qua
C php: remove (tn file)
Hm remove tr v 0 : xa th nh cngtr v -1 : c li khi xa file, v lc ny bin errno c 1 trong
2 gi tr sau:ENOENT : khng t m th y file mun xaEACCES : khng cho php xa file m b n ch nh
L-u : File nn ng tr-c khi xa.
V d: Xa file do ta ch nh.
#include
void main(){ char filename[80];/* prompt for file name to delete */printf("File muon xoa: ");gets(filename);
/* delete the file */if (remove(filename) == 0)
printf("Removed %s.\n",filename);else
perror("remove"); // in thng b o li m hm remove g y ra}
V.2.File nh phn (file c cu trc)
File nh phn l file dng l-u tr c c c u trc d-i dng struct ho cunion
V.2.1. Khai bo:
FILE * fptr;
V.2.2. M file:fptr = fopen (tnfile, ki u);
. rb ( b: binary): m ch c
. wb : ghi. N u file c th xa tr-c khi m.
. ab : ni thm; m ghi th m vo cui file, nu file ch-a cth t o mi
. rb+ : m file c cp nht (c/ghi)
. wb+ : t o file mi cho php c/ghi
. ab+ : m ni thm v cui file, cho php c/ghi
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
63/134
K thut lp tr nh 63
V.2.3. ng file:
fclose (fptr)
V.2.4. c/ghi file: H m fread : c s m u tin(c u trc) trong file fptrvo .
fread (& bi n cu trc, sizeof (bin cu trc) , s cu trc, fptr);
Hm fread tr v s c u trc c -c
H m fwrite ghi d liu trong vo file fptr.
fwrite (&bi n cu trc, sizeof (bin cu trc) , s cu trc, fptr);
Hm fwrite tr v s c u trc ghi -c l n file
Ch :
- ki m tra vi c c file ta ki m tra s c u trc -c c. Nu s c u trctr v bng 0 m ta cn c l 1 c u trc th i u chng t h t file.
* Ghi mt mng cu trc ln file
fwrite(tnmng, sizeof (tnmng), 1, fptr);
for (i= 0; i< n; i++)fwrite (&tnm ng[i], sizeof (t nmng[i] , 1, fptr);
V d 1: Ch-ng tr nh ghi l n file nh phn
#include #include #include void main(){ struct hocvien{ char hoten[30];int tuoi;
} hv;FILE *fptr;
char tenfile[67];char tuoi[3];printf("Nhap ten file :");gets(tenfile);if ((fptr=fopen(tenfile,"wb")) == NULL) // m file nh ph n ghi{ printf ("Khong the tao file\n"); exit(0);}do
{ printf("Nhap ho ten hoc vien :");
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
64/134
K thut lp tr nh 64
gets(hv.hoten);if (strlen(hv.hoten) !=0){ printf("Nhap tuoi :");
gets(tuoi);hv.tuoi = atoi(tuoi); // macro doi chuoi qua so nguyenfwrite(&hv, sizeof(hv), 1, fptr) ; // ghi noi dung 1 mau tin trong bien hv
// vao file fptr}
}while (strlen(hv.hoten)!=0);
fclose (fptr);}
V d 2: Ghi d liu m ng vo file nh ph n#include #include #include void main(){ struct hocvien{ char hoten[30];int tuoi;
} hv;struct hocvien table[3];FILE *fptr;char tenfile[67];char tuoi[3];int i=0;printf("Nhap ten file :");gets(tenfile);if ((fptr=fopen(tenfile,"wb")) == NULL){ printf ("Khong the tao file\n"); exit(0);}do{ printf("Nhap ho ten hoc vien :");gets(hv.hoten);printf("Nhap tuoi :");gets(tuoi);hv.tuoi = atoi(tuoi); // macro doi chuoi qua so nguyen
table[i++]=hv;
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
65/134
K thut lp tr nh 65
}while (i
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
66/134
K thut lp tr nh 66
* Con tr file: Mi tp tin u c con tr file sau khi -c m. Con tr filel con tr ch n tng byte trn file. Khi c hay ghi d li u tr n t p tin, ta lm dch chuyn con tr file mt s byte, y ch nh l s byte m ki u d li u chi m. Khi ng ri m t p tin, con tr file lun u t p tin ; ngo i tr tr-nghp ta m b ng ty chn 'a' th con tr file s cui t p tin ghi thm d li uvo cui tp tin. H m fseek cho php ta di chuyn con tr file n v tr mongmun.
C php:
int fseek (FILE * fptr, long nbytes, ki u)
+ nbytes : s bytes t nh t v tr ki u cho n v tr cn ti
+ kiu l s nguyn :
ki u = 0 (t nh t u t p tin)ki u = 1 (t nh t v tr hi n t i)
ki u = 2 (t nh t cui tp tin)
Nu fseek tr v 0 ngh a l n di chuy n ti v tr .
L-u : s th t tr n t p tin t nh t 0.
V d: Vi t ch-ng tr nh truy xu t ng u nhi n mt mu tin theo s th tca n trong file nh ph n
#include #include #include void main(){ struct hocvien{ char hoten[30];int tuoi;
} hv;FILE *fptr;char tenfile[67];int stt, sobytes;
printf("Nhap ten file :");gets(tenfile);if ((fptr=fopen(tenfile,"rb")) == NULL){ printf ("Khong the mo file\n"); exit(0);}
clrscr();
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
67/134
K thut lp tr nh 67
printf("Cho biet so thu tu mau tin can di chuyen den :");scanf("%d",&stt);sobytes = stt * sizeof(hv);
if (fseek(fptr,sobytes,0)!=0){ printf ("Khong the di chuyen con tro file toi vi tri ban chi dinh duoc");exit(0);
}fread(&hv,sizeof(hv),1,fptr) ;printf("\n%-20s",hv.hoten);printf("%3d",hv.tuoi);fclose (fptr);getch();
}V.3.Pht hi n li khi truy xut tp tin
Ph n ln nhng h m xu t, nh p t p tin chun khng thng bo r ni dungca li. Chng h n nh-:
- putc () s tr v EOF khi c li hoc cui t p tin
- fgets () s tr v l NULL khi c h t file ho c khi c l i
Do , pht hi n li khi truy xu t tp tin, ta dng macro ferror (FILE *fptr)
int ferror (file * ptr)Macro ferror tr v mt tr khc 0 n u ph t hi n ra li tr n file fptr.
* xu t cu thng b o li ta dng hm perror ()
void perror (const char * str)
vi str : chui k t cha c u thng bo
* Hai h m ny th-ng -c s dng ngay sau khi s dng cc h m c /ghi file
V d: fwrite (&table, sizeof (table), 1, fptr);if (ferror (fptr) != 0)
{ perror (Loi ghi du lieu);exit (0);
}V d :#include void main(){
FILE *fp;
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
68/134
K thut lp tr nh 68
fp = fopen("perror.dat", "r");if (!fp)
perror("Khng th m file c");
}Khi chy ch-ng tr nh ny, nu tr n d a ch-a c tp tin perror.dat th s hi nthng bo li: Khng th m file c: No such file or directory.
Bi tp
1. To tp tin di n t ch.h
#define Pi 3.14
#define dthv (x) x*x
#define dtht (x) (Pi*x*x)
2. Vi t ch-ng tr nh t nh di n t ch da v o file dientich.h trn
3. Vi t hm qui t nh t ch P(n) = 1 * 2 * 3* ....* n , n>0
4. Vi t hm qui t nh hm m xn, vi n nguyn.
5. Vi t h m qui t nh ph n t th n ca h m Fibonacci.
6. Vi t h m qui gi i quy t b i to n Th p H ni.C 3 ct A, B, C. Ct A hi n ang c n d a k ch th-c khc nhau, d a nh
tr n d a ln d-i. H y di n d a t ct A sang ct C (xem ct B l ct trunggian) vi iu kin mi l n ch -c di 1 d a v d a t tr n bao gi cngnh hn d a t d-i.
7. Vi t ch-ng tr nh m ha v gi i m mt file vn bn sao cho nu ta m ha ri th ch-ng tr nh khng m ha na, v nu file ch-a m ha thkhng -c gi i m .
8. Cho bi t trong mt file v n bn do ta nh p v o c bao nhi u k t, bao nhiut, v bao nhi u dng; bi t rng c c t c ch nhau kho ng tr ng, d u tab, d uchm.
9. Vi t ch-ng tr nh t o mt menu thc hi n cc chc n ng sau trn file v nbn:
- To file mi- c file- Xa file- Ghi ni ui file- Copy file- Di chuyn file t th- mc n y sang th- mc khc
- T m mt t xut hi n bao nhiu ln trong file (khng phn bit ch in, ch
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
69/134
K thut lp tr nh 69
th-ng)- Thay th t n y b ng t khc
10. T o menu thc hi n cc cng vi c sau:
- Nh p danh s ch c ki u hc vin vo mt file tn 'HOSO.TXT', mi hcvin c cc thng tin sau: maso (int), hoten (chui ti a 30 k t), phi(NAM/NU), tui (int).
- Li t k danh s ch hc vi n ra m n h nh theo d ng sau:
M s H v tn Ph i Tui
- Truy xu t ng u nhin theo th t m u tin
- T m kim mt ng-i trong file theo m s
- C p nh t sa i c c m u tin theo m s (Nh p m s, sau hiu ch nh
l i hoten, phai, v tui).- Xa mt ng-i trong file theo m s.
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
70/134
K thut lp tr nh 70
CH-NG 3 CC THUT TON TRN CU TRC D LIU MNG
I. Mng khng sp xp v thut ton tm kim trnmng ch-a c th t
I.1.Mt s khi nim v mng:
I.1.1.nh ngh a:
Mng l 1 d y c c phn t c cng kiu d li u -c sp xp li n tipnhau trong b nh
0100
01
021
int0104 2 Mng n ph n t
n-1
B nh
!!!!Khai bo:
C php: Khai b o mng 1 chiu
Ki u_DL Tnm ng [k ch th-
c]; Kiu_DL : l 1 trong c c kiu d li u c bn, l ki u ca phn t
ca m ng
Tnm ng: l tn ca m ng -c t 1 cch hp l
K ch th-c: l 1 hng nguy n cho bi t s ph n t ti a ca m ng
V d 1: Khai bo 1 mng s nguy n
int n ;int M[n] ; SAI
int M[10] ; ng v k ch th-c m ng ph i l hng khng ph i lbin
#define max 100int M[max] ;
V d 2: Khai bo 1 danh sch h t n hc vin ca 1 lp hc
char dshv[50][30]; // dshv c th cha ti a h t n 50 hc vin,// chiu d i h tn mi hc vi n ti a l 30 k t
C php: Khai b o m ng 2 chi u
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
71/134
K thut lp tr nh 71
Ki u_DL Tnm ng [k ch th-c 1][k ch th-c 2]
Ch : Mt m ng trong C, cc ph n t -c nh s t 0 ti n-1V d: Vi M[10]
th th nh ph n th1 l M[0]thnh ph n cui cng M[9]
* C khng b t b , khng ki m tra xem bin m c v-t ra khi gii h ncho php ca mng ch-a. Do , chng ta ph i ki m tra bi n m trong ch-ngtr nh (ph i nh hn n)
I.1.2. Khi ng tr cho mng:
Ta khi ng -c tr cho mng trong 2 tr-ng hp sau:
Mng -c khai b o l bi n ngo i (main) ngh a l bi n ton cc
Mng -c khai b o cc bV d 1 : int M[3] = {10,11,12}
main(){}
V d 2:main(){ static int M[ ]={10,22,30};
............}
Ta c th gn 1 h ng cho c mng nh- sau:memset (M,0,sizeof(int) *3) ; // g n 0 cho m ng M vi M c 3 phn t
T kha static dng khai b o 1 bi n cc b th-ng trc cho php duytr gi tr ring ca n nhng ln gi h m sau ny.
Khi t o m ng 2 chiu:
int M[2][3]= {{1,2,3},
{0,1,0}};I.1.3.Truy xut thnh phn ca mng: M[ch s]
Truy xut th nh phn th 2 ca m ng 1 chi u: M[1] Truy xu t th nh phn th i ca mng 1 chiu: M[i-1] Truy xu t th nh ph n dng 2, ct 3 ca mng 2 chi u M[1][2]
I.1.4.c (nhp) d li u cho mng:
- nh p d li u cho m ng ta ph i nhp d li u cho tng th nh ph n camng.
V d 1:
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
72/134
K thut lp tr nh 72
int n,i;float M[10];printf("\nCho biet so phan tu cua mang:")
scanf (%d,&n);for ( i=0; i< n; i++){ printf(a[%d]= ,i+1);
scanf (%f,&M[i]);}
V d 2: Nh p v o m ng 2 chi u.int m, n, i, j;float M[10] [10];printf("So dong ="); scanf("%d",&n);
printf("So cot ="); scanf("%d",&m);for(i= 0; i< n; i++)for(j= 0; j
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
73/134
K thut lp tr nh 73
{ char maso[6];char hoten[30];
};
typedef struct danhsach_sv // nh ngh a kiu danhsach_sv{ int tssv;sinhvien sv[MAX_SOSV];
} ;
void Nhap_ds (struct danhsach_sv *psv){ char sosv[4];printf("So sinh vien muon nhap :");gets(sosv);psv->tssv=atoi(sosv);for (int i=0; itssv; i++){ printf("Ma so :");gets(psv->sv[i].maso);printf("Ho ten :");gets(psv->sv[i].hoten);
}
}
void Lietke_ds (struct danhsach_sv *psv){ int i=0;
clrscr();printf (" Ma so Ho & ten \n");while (i < psv->tssv){ printf ("%8s %-s\n", psv->sv[i].maso,psv->sv[i].hoten);i++;
}getch();
} /* Hm Timkiem t m maso trong danhsach *psv */int Timkiem(danhsach_sv *psv, char maso[]){ int i=0;while ((itssv) && (strcmp(psv->sv[i].maso, maso)!=0))i++;
return (i==psv->tssv ? -1 : i) ;
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
74/134
K thut lp tr nh 74
}void main()
{ struct danhsach_sv ds;
char maso[6];int vitri;
Nhap_ds(&ds); // Gi h m Nhap_ds vi tham s l ds
Lietke_ds(&ds);
printf("Ma so sinh vien ban can tim :");
gets(maso);
vitri = Timkiem(&ds, maso);
if (vitri !=-1)
printf("Ho ten cua sinh vien la %s",ds.sv[vitri].hoten);else printf(" Khong co sinh vien voi ma ban nhap vao");
getch();
}
II. Cc thut ton sp xp:
Trong thc t cuc sng cng nh- trong l nh vc l p tr nh, vic qun l d li uth-ng i hi s t m kim c c d li u c n thi t; thun tin cho vic t mki m, d liu th-ng -c s p x p theo mt th t n o .
C r t nhi u ph-ng php s p th t, trong b i gi ng n y ta ch kh o s t haiph-ng php sp xp l Bubble_Sort v Quick_Sort.
thun tin ta gi s m ng l dy s c ti a 100 s, v cc thu t ton d-i y dng s p x p dy s theo th t t ng d n.
II.1. Sp x p theo ph-ng php Bubble_Sort(ph-ng php ni bt)
- Ni dung : Ta cho i duy t dy a[0], .. ,a[n-1]; n u a[i-1] ln hn a[i] th taho n i (a[i-1],a[i]). Lp l i qu tr nh duy t dy ny cho n khi khng c x y
ra vi c i ch ca hai ph n t.V d: Ta s p th t d y s sau : 26 33 35 29 19 12 32
B-c 0 1 2 3 4 5 6
26 12 12 12 12 12 1233 26 19 19 19 19 1935 33 26 26 26 26 2629 35 33 29 29 29 291
9 29 35 33 32 32 32
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
75/134
K thut lp tr nh 75
12 19 29 35 33 33 3332 32 32 32 35 35 35
- Ch-ng tr nh:
#include #include int mang[100]; // bi n to n ccint size ;void Bubble_Sort(int A[100], int n){ int i,j,temp;for (i=1; i=i; j--)
if (A[j-1] > A[j]){ temp = A[j-1];A[j-1] = A[j];A[j] = temp;
}}int Nhap_day_so (int A[]){ int i,n;printf("\nSo phan tu cua mang :"); scanf("%d",&n);for (i=0; i
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
76/134
K thut lp tr nh 76
Bubble_Sort(mang,size);Liet_ke(mang,size);
}
Ta nhn th y ph-ng ph p n y c th -c ci ti n d d ng. N u lnduy t dy n o m khng c c s i ch gia hai ph n t th dy c tht v gii thut k t thc. Trong tr-ng hp ny, ta dng mt c hi u flag ghinhn i u n y, v gi i thut Bubble Sort -c c i tin nh- sau:
#define FALSE 0#define TRUE 1
void Bubble_Sort_Ad(int A[], int n){ int i,temp;
unsigned char flag=TRUE;while (flag){ flag = FALSE ;for (i=0; i A[i+1]){ temp = A[i];
A[i] = A[i+1];A[i+1] = temp;
flag=TRUE;}
}}
II.2. Sp x p theo ph-ng php Quick_Sort
II.2.1.Ni dung: Chn mt ph n t b t k trong danh s ch lm i m chtx, so snh v i ch nhng ph n t trong danh sch ny to ra 3 ph n: ph nc gi tr nh hn x, ph n c gi tr b ng x, v ph n c gi tr ln hn x. L i tip
tc chia 2 ph n c gi tr nh hn v ln hn x theo nguy n t c nh-
tr n; qutr nh chia ph n s kt thc khi mi phn ch cn l i mt phn t, lc n y ta cmt danh s ch c th t .
V d: Xt d y 26 33 35 29 19 12 32
' Ln chia phn th nh t : Chn phn t cht c kha l 29, t l x
26 33 35 29 19 12 32
i% $ j
Dng hai bi n ch s i v j duy t t hai u danh s ch n x. Nu i gp
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
77/134
K thut lp tr nh 77
ph n t ln hn hay b ng x s dng l i, j g p phn t nh hn hay b ng x sdng l i, ri i ch hai ph n t n y; sau ti p tc duy t cho n khi i>j thngng l i.
Lc n y d y s c 3 phn kh c nhau nh- h nh v sau :26 33 35 29 19 12 32
i j26 12 35 29 19 33 32
i j26 12 19 29 35 33 32
ij26 12 19 29 35 33 32
j i' L n chia phn th hai cho dy con 26 12 19, chn cht x=12
26 12 19 % 12 26 19i j j i
Kt thc ta s c hai ph n : 12 ; 26 19
' L n chia ph n th 3 cho d y con 26 19, chn cht x=26
26 19 % 19 26 Kt thc qu tr nh chia nh d y con 26 12 19i j j i
- Ln chia ph n th 4 cho d y con 35 33 32, chn cht x= 33
35 33 32 % 32 33 35 % 32 33 35i j ij j i
K t thc ta s c ba ph n : 32 ; 33 ; 35
n y qu tr nh chia ph n k t thc v t t c cc phn ch c mt ph n t,lc ny ta s c mt danh sch c th t l :
12 19 26 29 32 33 35
II.2.2. Gii thut:
a. Gii thut khng quy:
- Ta t o mt Stack , mi phn t ca Stack c 2 th nh phn l q, r cha chs u v ch s cui ca dy c n s p. Ban u, Stack[0].q = 0 v Stack[0].r =n-1
- Tin h nh ph n hoch dy s gm c c s b t u t ch s q n ch s r
- Sau mi l n chia ph n, ta ki m tra xem ph n c gi tr nh hn cht vphn c gi tr ln hn cht n u c t 2 phn t tr ln th -a v o Stack. Sau
mi ln ph n hoch, ta l i l y d y s mi t Stack ra ph n ho ch ti p.
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
78/134
K thut lp tr nh 78
- Qu tr nh c nh- th cho ti khi Stack rng th k t thc.
* Ch-ng tr nh:
#include #include #include #include int mang[100];int size ;void Quick_Sort(int A[100], int n){ struct Element_Stack // ki u ph n t trong Stack{
int q, r;} ;Element_Stack Stack[50]; // Stack c ti a 50 ph n tint sp=0; // con tr Stack, khi t o sp=0int i,j,x,q,r,temp;Stack[0].q =0 ; // ch s u ca mng cn spStack[0].r =n-1; // ch s cui ca mng cn sp
do{ // L y mt ph n ho ch ra t Stackq = Stack[sp].q ; r =Stack[sp].r ;sp--; // Xa 1 phn t khi Stackdo{ // Ph n on dy con a[q] ,..., a[r]i = q; j =r;x = A[(q+r) / 2] ; // L y phn t gia ca d y c n s p th t l m chtdo
{ while (A[i] < x) i++; //T m phn t u tin c tr ln hn hay bng xwhile (A[j] > x) j--; //T m phn t u tin c tr nh hn hay b ng xif (i
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
79/134
K thut lp tr nh 79
if (i
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
80/134
K thut lp tr nh 80
gi i thu t khng qui, nh-ng ta khng ki m sot Stack m cho qu tr nh gi qui t t o ra Stack.
* Ch-ng tr nh:
void Sort(int A[], int q,int r){ int temp;int i=q;int j=r;int x = A[(q+r) / 2] ; // L y phn t gia ca d y c n s p th t l m chtdo{ // Ph n on dy con a[q] ,..., a[r]while (A[i] < x) i++; //T m phn t u ti n c tr ln hn hay bng x
while (A[j] > x) j--; //T m phn t u ti n c tr nh hn hay b ng xif (i
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
81/134
K thut lp tr nh 81
- Gi i thut:
int Search(int A[], int n, int x)
{ int i=0;while (i
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
82/134
K thut lp tr nh 82
int k=0;int m=n-1;int j;
while (kA[j]) k=j+1; // Ph m vi t m mi l (j+1, m)
else m=j-1; // Ph m vi t m mi l (k, j-1)}return (found ? j : -1) ;
}
III.3.Php t m kim nh phn qui:
- Ni dung: t-ng t nh- trn
! B-c 1: Phm vi t m kim ban u l to n b danh sch (k=0%m=n-1).
! B-c 2: L y phn t ch nh gia ca phm vi t m kim (gi l y) so snhvi x.
Nu x=y th ta t m th y, tr v ch s. Gi i thut k t thcNu x < y th ph m vi t m ki m mi l cc phn t n m ph a tr-c
ca y, n n ta gi qui vi phm vi mi l (k,j-1
)Nu x > y th ph m vi t m kim mi l cc ph n t n m ph a sau ca y,nn ta gi qui vi phm vi mi l (j+1,m )
! i u ki n dng: x=y hoc k > m.
- Gi i thut:
int Binary_Search2(int A[], int k,int m, int x){ int j=(k+m) /2;if (k>m) return -1 ;
else if (A[j]==x) return j ;else Binary_Search2(A, (A[j] x ?j-1:m),x);}
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
83/134
K thut lp tr nh 83
Bi tp:
1. Cho mt dy n s thc A :
a) T m phn t nh nh t ca d
y s Ab) T m phn t ln nht ca d y s A
c) T nh gi tr trung b nh ca dy s A.
2. Hi n ang l-u hnh c c t giy bc 50000, 20000, 10000, 5000, 2000,1000, 500, 200,100. N u c x ng, hi r ng nn chn cc t giy b c n o s l-ng cc t gi y b c l t nh t.
3. Vi t ch-ng tr nh nh p mt ma trn s nguy n c k ch th-c M x N. In ra:
- Tng cc phn t ca ma trn
- S cc phn t d-ng, phn t m, ph n t 0 ca ma trn- Phn t ln nh t, nh nh t ca ma trn
- C c phn t tr n -ng cho ch nh ca ma tr n (vi M = N )
- Tng cc phn t tr n -ng cho ch nh ca ma tr n (vi M = N )
4. Cho 2 ma trn vung A(n,n) v B (n,n) :
- T nh ma tr n tng C = A+ B,
bi t C[i,j] = A[i,j] + B[i,j] , i,j [1,m]- T nh ma tr n t ch D = A * B,
bi t D [i,j] = A i k B k jk
n[ , ]* [ , ]
1; i, j = 1..n
5. T o mt menu thc hi n cc cng vi c sau:
a. Nh p danh sch c ki u hc vin vo mt m ng, mi hc vi n c ccthng tin sau: maso (int), hoten (chui ti a 30 k t), phi(NAM/NU), i m(float), h ng (unsigned char). Qu tr nh nhp s dng l i khi m s nh p v ol 0.
b. Li t k danh sch hc vin ra mn h nh theo d ng sau:M s H v tn Ph i im Hng
c. T m ki m mt hc vi n trong danh sch theo m s, v in ra cc thng tincn l i ca hc vin .
d. Sp xp danh sch hc vin theo im tng dn.
e. Xp hng danh sch hc vin theo qui tc cng im th cng hng, hngca hc vi n sau bng hng ca nhm hc vi n tr-c cng s ng-i ca nhmhc vi n tr-c cng im.
f. Gi s danh sch hc vi n c th t tng dn theo im; Nh p th m 1hc vin sao cho sau khi nhp th danh s ch v n cn c th t.
g. Cp nht sa i cc mu tin theo m s (Nh p m s, sau hiu ch nh
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
84/134
K thut lp tr nh 84
l i hoten, phai, i m).
h. Loi b 1 hc vin ra khi danh s ch da v o m s.
6. a) Vit ch-ng tr nh to ngu nhi n mt dy s 20000 s nguy n c gi tr t
0 n 9999.b) m s ln so s nh ca 2 gi i thu t t m kim tun t (tr n dy s ch-a c
th t) v t m kim nh ph n (tr n d y s -c sp th t).
c) Trong tr-ng hp d y s trn l 200000 s nguy n ph n bi t kh c nhautrong mi n gi tr [1..300000] th ta ti -u gii thu t s p x p v mt khnggian v thi gian nh- th n o? Cho bi t thi gian thc thi ca gi i thutQuick Sort v gi i thu t b n c i t.
7. Cho bi t thi gian thc thi ca 2 gi i thu t Bubble Sort v Quick Sort tr n dys c s ph n t kh ln.
8. Gi s ta c 1 dy s thc A tng dn. Vi t gi i thu t thm 1 s thc x vod y A sao cho sau khi th m x th d y v n t ng dn ?
9. Vi t h m xa t t c cc phn t c tr b ng x trong d y s A.
10. Vit ch-ng tr nh t nh i m ca mt lp:
- Nhp c c thng tin sau cho mi hc vin : hoten, namsinh, trung b nhHK1, trung b nh HK2
- In ra danh sch cc hc vi n ca lp theo th t gi m d n ca TB to nn m
TB to n nm = (TB HK1 + TB HK2)/2theo m u sau:
DANH SCH iM LP ......
STT H & T n TB HK1 TB HK2 TB tonnm
Hng
1
2
3
L-u :- Cc hc vi n cng TB th cng h ng
- In 17 hc vin trn mt trang mn h nh
11. Cho 2 d y s A c n phn t v B c m phn t vi th t t ng dn. Hy trn2 d y s tr n thnh 1 d y mi C sao cho sau khi trn th C cng t ng d n.
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
85/134
K thut lp tr nh 85
CHNG 4 CON TR (POINTER)
I. NH NGHACon tr l mt kiu d li u dng cha a ch . Bin con tr l mt bincha a ch ca mt thc th no , thc th l bi n hoc l hm.
Con tr th-ng -c dng :
- Tr v nhi u tr t h m qua c ch truyn theo tham s theo a ch tronghm (tham s h nh thc bin).
- T o c c c u trc d li u phc t p nh-danh sch li n k t v cy nh ph n.
- Truy n m ng v chui gia c c h m kh thun li.
I.1.Khai bo: Khai bo bin pi l con tr tr n mt s nguy n.int *pi;
Lc n y, pi chi m 2 bytes cha a ch ca s nguy n m n ang ch n, ng thi tr nh bi n dch ca C cng bi t pi ang ch n mt s nguy n(do khai b o). -a mt gi tr nguyn v o vng nh m pi ang tr n, tadng l nh: *pi = 1;
V d:void main()
{ int x=4, y=1
0;int *px, *py ; // px, py l c c bi n con trpx = &x ; // -a a ch ca x,y vo px v pypy = &y;*px = *px + *py; // tng gi tr ca vng nh m px ang tr t i
// th m y , t-ng -ng vi x = x+y}
Minh ha ch-ng tr nh tr n trong b nh:
Bi n int x=4, y=10;
int *px, *py;
px=&x;
py=&y;
*px = *px + *py;
x 950 4 4 14951
y 952 10 10 10953
px 950 950
py 952 952
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
86/134
K thut lp tr nh 86
H nh 7.1. C ch truy xu t gi tr qua bi n con tr .
Tng qu t: Ki u *bin;
I.2. Truy n a ch cho hm: Trong 1 s tr-ng hp ta mun gi a ch ca1 bi n x cho h m. Nh vo c ch truy n theo a ch ny m hm c th tr vnhiu gi tr cho ch-ng tr nh gi.
V d: Hm hon i gi tr ca 2 bi n x, yvoid hoandoi (int *a, int *b){ int tam;
tam = *a;*a = *b;*b = tam;
}void main(){ int x,y;
printf ("x, y = ");scanf ("%d %d", &x, &y);giaohoan(&x, &y); // Truy n a ch ca 2 bin x,y cho h m hoandoi
}
II Cc php ton trn bin con tr:
II.1. Ton t a ch &:
Nu x l bi n thng th-ng, &x s l a ch ca bin xV d: float x, *pf;
x = 50;pf = x; // sai v pf l bi n con tr n n ta vi t pf = & x;x = pf; // sai ; ta vi t x = *pf; { l y ni dung ca pf }
II.2. Ton t ni dung * :
Nu p l pointer th *p l ni dung ca n.
V d : int x,y, *p;x = 50;p = &x; // p cha a ch ca vng nh xy = *p; // y= *p = 50 v p cha a ch ca vng nh x
V d: a =2;p = & a;b = (*p) + + + 3; // b =5, *p = 3, a= 3.
( v p tr ti a ch a n n *p t ng th a t ng)
Tm li: *x l bi n m x gi a ch
&x l a ch ca x n u x l bi n thng th-ng
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
87/134
K thut lp tr nh 87
II.3. Php cng tr bin con tr vi mt s nguyn:
Nu p l bi n pointer th p+n l a ch ca mt bin mi c ch n n bi ntheo chi u tng, cn p-n th ng-c li.
Ch :
- Php cng con tr vi mt s nguy n ch -c p dng tr n mt dy bincng ki u
- Khng -c cng 2 pointer vi nhau
- Khng -c nh n, chia, l y d- bi n con tr vi bt k s n o
V d: Gi s ta c mng nums[]= {10,20,30,40,50}. Vic tham kh o tinums[i] thc ch t l dng dng k hi u con tr, v khi bin dch, tr nh bi n dchs chuy n i k hi u m ng th nh k hiu con tr.
void main(){ static int nums [] = {10,20,30,40,50};for (int i =0; i
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
88/134
K thut lp tr nh 88
*p = 97; // num =97n = *p; // n=97c = (char) *p; // c = a
Ch : a ch ca mt bi n -c xem nh- mt con tr h ng, do nkhng -c php gn, tng hoc gi m.V d: int num, *p, n;
p = & num;p ++; // ng( & num) ++; // saicon tr h ng
II.6. Khai bo mt con tr hng v con tr ch n i t-ng hng:
a. Con tr hng:Kiu * const p = gi tr;
b. Con tr ch n i t-ng hng:
Kiu const *p = gi tr h ng;
ho c Const ki u *p = gi tr h ng;
V d: char *const p2 = ABCDconst char *p1= ABCDp2 + + ; // sai
p1 + + ; // ng; *p1= B ; p1 = "BCD"
III. S t-ng quan gia con tr v mngV d: Ta c mng A nh- sau:
int A[10] , *p;th A = &A[0]Nu p = A th truy xu t ti phn t th i ca m ng A, ta c c c c ch sau:
A[i] *(A + i) *( p + i)
& A[i] (A + i) (p +i )V d: Nh p mng A:int A[10] , *p, i;p = A;for (i = 0; i< 9; i++)
scanf (%d, p+i );Xu t m ng A:
for (i = 0; i< 9;i++)printf (%d, *(p+i));
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
89/134
K thut lp tr nh 89
V d: Sp x p m ng bng cch tham kh o con tr .
const n =10 ;int a[n], *p;
void main(){ int j,temp;clrscr();p=a;printf("\Nhap day so A :\n");for (int i=0; i *(p+j)){ temp = *(p+j);
*(p+j) = *(p+j-1);*(p+j-1) = temp;
}
printf("\n Mang A sau khi sap xep :\n");for ( i=0; i
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
90/134
K thut lp tr nh 90
a[i][j] ni dung ca i.jVi p = a th truy xu tti a[i][j] :
a[i][j] = *(*(p+i) +j)
& a[i][j] = (*(p+i) +j)V d:N u ta c int a[4][5] ={ {1,2,3,4,5}, {2,3,4,5,6}, {3,4,5,6,7} , {4,5,6,7,8}} ;
th :- a l a ch ca to n b mng (gi s l 1000)
- Do a l mng nguy n nn mi ph n t chi m 2 bytes, v mi dng camng s chim 10 bytes.
- Tr nh bi n dch ca C bi t s ct (do khai bo) n n n s hi u a+1 lem 1000 + 10 bytes, k t qu l 1010 l a ch ca dng th 2 trong a.
T-ng t, 1020 l l a ch ca dng th 3 trong a.
a 0 1 2 3 41000 1 2 3 4 51010 2 3 4 5 61020 3 4 5 6 71030 4 5 6 7 8
Lc n y: a[1] hay a+1 l a ch ca dng th 2 trong m ng 2 chiu a.Ta c : *(a+1) == 1010 // a ch ca ph n t u ti n tr n dng 1
*(a+1)+3 == 1016 // a ch ca ph n t c ch s 3 tr n dng1*(*(a+1)+3)==5 // ni dung ca phn t a[1][3]
Tm li: a[i][j] = *(*(a+i)+j)
Ta cn c mt c ch khc truy xu t ti a[i][j] :
N u : Kiu a[n0 ] [n1] ... [nm] , *p;p = a;
th a [i0] [i1]... [im] = *(*(*(p+i0) + i1) + ...im)
Ch :1. S khc nhau gia con tr v mng:
- Bin con tr th c th tng, gim hoc g n cn bi n m ng l mt con trhng do khng th tng, gi m hoc g n.
- Ta c th ly a ch ca con tr nh-ng khng th ly a ch ca m ng vbn thn m ng l a ch .
- Khi ta khai b o mt m ng th ch-ng tr nh dch s cp ph t mt vng nhcho n.
V d1
: Kiu a[50]
Smith Nguyen Studio.
8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio
91/134
K thut lp tr nh 91
Trong b nh :
0 1 2 49
a- Bi n con tr khi -c khai b o th ch -c c p mt nh m ni dung
ca n ch ng bi t ch n u
V d 2: a[1] xc nh thnh ph n th 2
p+1 : ni dung khng xc nh
phi c p = a p ch ti a
- N u ta mun to mt m ng b ng con tr th ta ph i xin cp pht mt vngnh b ng h m malloc ()
V d: int *p;
p = (int) maloc ( 10* sizeof(int));
Trong b nh:
0 1 2 9
p
V d: int *p
Top Related