You are on page 1of 283

Bi tp lp trnh cn bn SGU2010

Trang 1

Li gii thiu
Lp trnh cn bn l hc phn u tin i vi cc sinh vin thuc chuyn ngnh cng ngh thng tin v cng l hc phn ang c ging dy cho sinh vin cc chuyn ngnh khoa hc t nhin v khoa hc k thut. Lp trnh cn bn cng l ni dung quan trng trong khi kin thc cc k thi tt nghip, thi hon chnh i hc, thi cao hc cc chuyn ngnh cng ngh thng tin. Quyn gio trnh bi tp lp trnh cn bn ny trnh by cc ch bi tp lin quan n thut ton, cc cu trc iu khin, chng trnh con, quy, mng, con tr, chui, kiu cu trc, file d liu theo ngn ng C/C++. Mi ch c thit k gm cc phn: Tm tt l thuyt, hng dn gii mt s dng bi tp in hnh v mt s bi tp chn lc. Trong mi ch u c cc v d minh ha, mi v d c trnh by v phng php gii, ton vn chng trnh km theo mt s b test mu. Phn cui ca quyn gio trnh c hng dn gii cho mt s bi tp tiu biu, ng thi b sung mt s bi tp nng cao v b thi mu sinh vin t rn luyn k nng phn tch vn bi ton, rn luyn t duy v phong cch lp trnh. Quyn gio trnh ny c bin son ging dy hc phn lp trnh cn bn h i hc v cao ng. Quyn sch ny cng c th lm ti liu tham kho cho cc gio vin ang ging dy kin thc lp trnh cn bn bc ph thng, v gip cho sinh vin t hc c kt qu. Ty theo hc phn quy nh trong chng trnh o to m gio vin c th chn mt s ni dung ph hp trong quyn gio trnh ny trnh by. Chng ti trn trng gii thiu vi bn c quyn gio trnh Bi tp lp trnh cn bn ny v hy vng rng n s gip cho vic ging dy v hc tp mn lp trnh cn bn c thun li hn. Cui cng, chng ti xin gi li cm n chn thnh n Gio s tin s Trn Vn Ho c nhiu ng gp qu bu, cm n cc ng nghip trong khoa cng ngh thng tin cng chng ti chia s ni dung tp bi ging hc phn lp trnh cn bn ny trong thi gian qua. Thnh ph H Ch Minh, ngy 06 thng 09 nm 2010 CC TC GI

Bi tp lp trnh cn bn SGU2010 Chng 1

Trang 2

THUT TON
A.TM TT L THUYT 1.1.nh ngha Thut ton l mt bng lit k cc ch dn (hay cc qui tc) cn thc hin theo tng bc xc nh nhm gii quyt mt vn , bi ton. i vi mi thut ton phi c cc thng tin d liu u vo, sau l mt dy cc php x l v cui cng l xut kt qu cn tm. 1.2.Cc c trng ca thut ton Tnh xc nh: mi bc cc ch dn phi r rng. Tnh kt thc: Thut ton phi dng sau mt s hu hn bc. Tnh ng n: Thut ton phi cho ra kt qu ng theo yu cu ca bi ton. Tnh tng qut: Thut ton phi p dng c cho cc bi ton cng loi. Nhng thut ton c cc c trng trn c gi l cc thut ton c li gii ng. Trong gii hn ca quyn gio trnh ny, tc gi ch cp n cc thut ton c li gii ng; ngoi ra cn c nhng thut ton cho li gii gn ng nh thut ton xp x, thut ton di truyn, thut ton heuristic, thut ton tham lam, 1.3.Ngn ng biu din thut ton C nhiu cch biu din mt thut ton chng hn nh: ngn ng t nhin, ngn ng s khi, ngn ng m gi, c thi quen lp trnh tt, khi i din vi mt bi ton th sinh vin nn dnh mt lng thi gian thch hp tm ra thut ton y l bc u tin quan trng nht; tip theo l dng mt trong cc cch trn biu din li thut ton trc khi bt tay vo son tho chng trnh. Sau y, tc gi tm tt cch biu din thut ton bng ngn ng s khi v bng ngn ng m gi; i vi nhng thut ton phc tp, di dng th c th biu din bng ngn ng t nhin.

Bi tp lp trnh cn bn SGU2010 1.4.Ngn ng s khi 1.4.1.Tp k hiu ca ngn ng s khi Bt u

Trang 3

Kt thc

Nhp liu

Xut liu

X l

iu kin

1.4.2.Biu din cc cu trc 1.4.2.1.Cu trc r nhnh Dng 1

iu kin ng cng vic

Bi tp lp trnh cn bn SGU2010

Trang 4

M t hot ng Nu <iu kin> ng th s thc hin <cng vic>, nu <iu kin> sai th s khng thc hin <cng vic>. Lu : <iu kin> y c dng l mt biu thc logic, cn <cng vic> c th l mt cng vic n hoc nhiu cng vic n gp li. Dng 2

sai

iu kin

ng

cng vic 2

cng vic 1

M t hot ng Nu <iu kin> ng th thc hin <cng vic 1>, ngc li nu <iu kin> sai th s thc hin <cng vic 2>. Lu :Vi s ny th lun c mt <cng vic i> s c thc hin bt k <iu kin> ng hay sai. 1.4.2.2.Cu trc lp vi s ln lp bit trc biu thc 1

biu thc 2

iu kin ng cng vic

sai

thot

Bi tp lp trnh cn bn SGU2010

Trang 5

M t hot ng u tin s thc hin <biu thc 1>, sau kim tra <diu kin>. Nu <iu kin> ng th s thc hin <cng vic> ri n <biu thc 2>. Sau khi thc hin xong <biu thc 2> th cu trc ny quay tr li kim tra <iu kin> v bt u mt chu k mi,c th vy n khi <iu kin> nhn gi tr sai th cu trc lp ny s kt thc. Lu : <biu thc 1> l php gn cho khi u gi tr ca bin iu khin vng lp, <biu thc 2> thng l php gn thay i gi tr ca bin iu khin vng lp, cn <iu kin> thng l mt php so snh bin iu khin vng lp v s ln lp. 1.4.2.3.Cu trc lp vi s ln lp khng bit trc Dng 1 sai

iu kin

ng

cng vic

thot

M t hot ng Nu <iu kin> ng th s thc hin <cng vic>, sau khi thc hin xong <cng vic> th s quay tr li kim tra <iu kin> v bt u mt chu k mi,c th vy vng lp tip tc n khi no <iu kin> nhn gi tr sai th kt thc. R rng vi cu trc ny th trong <cng vic> phi c mt cng on no sau mt s hu hn ln lp s lm <iu kin> mang gi tr sai vng lp kt thc.

Bi tp lp trnh cn bn SGU2010 Dng 2

Trang 6

cng vic

ng

iu kin

sai

thot

M t hot ng Trc ht <cng vic> s c thc hin, sau thc hin <iu kin>. Nu <iu kin> ng th li bt u mt chu k mi,c nh vy n khi <iu kin> nhn gi tr sai th cu trc lp ny kt thc. Tng t nh s dng 1, sau mt s ln lp th <iu kin> phi mang gi tr sai vng lp kt thc. 1.5. Ngn ng m gi 1.5.1.Tp k hiu (theo ngn ng C/C++) Bt u on lnh: { Kt thc on lnh: } Lnh nhp d liu: cin Lnh xut d liu : cout Lnh x l d liu: = Biu thc iu kin: () 1.5.2.Biu din cc cu trc 1.5.2.1.Cu trc r nhnh Dng 1 if (<iu kin>) <cng vic>; M t hot ng

Bi tp lp trnh cn bn SGU2010

Trang 7

Nu <iu kin> ng th thc hin <cng vic>, nu <iu kin> sai th s khng thc hin <cng vic>. Lu : Nu <cng vic> c t hai cu lnh n tr ln th cn t <cng vic> gia hai du { }. Dng 2 if (<iu kin>) <cng vic1>; else <cng vic2>; M t hot ng Nu <iu kin> ng th s thc hin <cng vic 1>, ngc li nu < iu kin> sai th <cng vic 2> s c thc hin. 1.5.2.2.Cu trc lp vi s ln lp bit trc for (<biu thc 1>; <iu kin>; <biu thc2>) <cng vic>; M t hot ng u tin s thc hin <biu thc 1>, sau kim tra <iu kin>. Nu <iu kin> ng th s thc hin <cng vic> ri n <biu thc 2>. Sau khi thc hin xong <biu thc 2> th cu trc ny quay tr li kim tra <iu kin> v bt u mt chu k mi,c th vy n khi <iu kin> nhn gi tr sai th cu trc lp ny s kt thc. 1.5.2.3.S lp vi s ln lp khng bit trc Dng 1 while (<iu kin>) <cng vic>; M t hot ng Nu <iu kin> ng th s thc hin <cng vic>, sau quay tr li thc hin <iu kin>. Vng lp while ny s kt thc khi <iu kin> sai. Dng 2 do {

Bi tp lp trnh cn bn SGU2010 <cng vic>; } while (<iu kin>);

Trang 8

M t hot ng Trc ht <cng vic> s c thc hin, sau kim tra <iu kin>. Nu <iu kin> ng th quay tr li thc hin <cng vic> v bt u mt chu trnh mi. Vng lp do while kt thc khi <iu kin> nhn gi tr sai. 1.6.S lc v cch xc nh phc tp ca mt thut ton Xc nh phc tp tnh ton ca mt thut ton c th dn ti nhng bi ton phc tp. Tuy nhin trong thc t, i vi mt s thut ton ta c th phn tch c phc tp ca mt thut ton bng mt s quy tc sau y. 1.6.1.Quy tc cng Gi s T1(n) v T2(n) l thi gian thc hin ca hai on chng trnh P1 v P2 m T1(n) = O(f(n)) v T2(n) = O(g(n)), th thi gian thc hin P1 ri tip theo n P2 s l T1(n) + T2(n) = O(max(f(n), g(n)). Chng hn on lnh for (i=1;i<=n;i++) x=x+1; c thi gian thc hin l O(n.1) = O(n). Thut ton c phc tp l O(n), thut ton c phc tp O(n) thng c gi l thut ton c phc tp tuyn tnh. 1.6.2.Quy tc nhn Gi s T1(n) v T2(n) l thi gian thc hin ca hai on chng trnh P1 v P2 m T1(n) = O(f(n)) v T2(n) = O(g(n)), th thi gian thc hin P1 v P2 lng nhau l T1(n) * T2(n) = O(f(n).g(n)) Chng hn on lnh for (i=1;i<=n;i++) for (j=1;j<=n;j++ ) x=x+1; c thi gian thc hin l O(n.n) = O(n2). 1.6.3.Thut ton thi gian a thc v thut ton thi gian khng a thc.

Bi tp lp trnh cn bn SGU2010

Trang 9

Thng thng cc hm th hin phc tp tnh ton ca thut ton c dng a thc nh: hng s, log2n, n, nlogn, n2, n3,... hay c dng hm m nh: 2n, n!, nn, Thut ton vi thi gian thc hin c cp hm a thc th thng l chp nhn c. Vi nhng bi ton c phc tp l a thc th c th tm c li gii ng; cn vi nhng bi ton cha tm c thut ton a thc gii (cc thut ton ny gi l cc thut ton thi gian khng a thc), th nn tip cn theo hng cc thut ton gn ng chng hn nh: thut ton xp x, thut ton ngu nhin, thut ton di truyn, cc thut ton metaheuristic,... 1.7.S lc v kim th phn mm Mc d mt phn mm thng c t ng ha mt phn bi cc cng c phn tch v lp trnh; tuy nhin rt nhiu cng on trong qu trnh sn xut phn mm vn c thc hin bi con ngi, do vn c kh nng xy ra li. Li c th xy ra trong tt c cc giai on ca quy trnh pht trin phn mm: phn tch yu cu, thit k, m ho; do phi kim th chng trnh trc khi chnh thc s dng l yu cu quan trng v hin nhin. Kim th phn mm gip pht hin c li trong chng trnh (nu c), chng minh c phn mm hot ng ng nh thit k v cng gp phn chng minh cht lng ca phn mm. Trong hc phn cn bn ny, khi vit xong mt chng trnh cho mt vn bi ton th cc sinh vin nn kim th li thut ton v c php ca chng trnh qua mt s b test mu; t c th pht hin sai st hoc c th ci tin c mt chng trnh hiu qu hn v mt thi gian hoc khng gian lu tr d liu, Cc b test mu phi c tnh chn lc, c kh nng tm ra li cao, cc b test nn khng qu phc tp cng khng qu n gin. Vic tm ra cc b test mu tt kim th thng l mt nhiu thi gian. Lu : Vic kim th phn mm khng khng nh c phn mm khng cn khim khuyt, ch khng nh c phn mm c li v gip gim thiu li. Ta nn tin hnh kim th phn mm bt u t nhng module ring bit ri sau tch hp cc module li; v thng th vic kim th phn mm

Bi tp lp trnh cn bn SGU2010

Trang 10

c thc hin bi nhng i tng khng tham gia vo qu trnh pht trin phn mm. B.CC DNG BI TP Dng 1: Cu trc r nhnh V d 1-1.Hy biu din thut ton gii phng trnh dng ax2 + bx + c = 0 (s dng ngn ng s khi)
Bt u

a,b,c

ng

a=0
sai d=b2 - 4.a.c sai ng
v nghim

ng

b=0

d<0
sai ng

c=0 x=-c/b
sai ng
v s nghim

x12=-b/(2.a)

d=0

v nghim

sai x1,2=(-b d x1,x2


)/(2.a)

Kt thc

Bi tp lp trnh cn bn SGU2010
Cc b test mu Test test 1 test 2 test 3 test 4 test 5 test 6 H s a 0 0 0 1 1 1 H s b 0 0 2 3 -4 4 H s c 0 1 5 4 4 3 Kt qu Phng trinh v s nghim Phng trinh v nghim

Trang 11

Phng trinh c mt nghim x=-2.5 Phng trinh v nghim Phng trinh c nghim kp x1=x2=2
Phng trinh c hai nghim x1=-1, x2 =-3

V d 1-2.Hy biu din thut ton kim tra n c phi l s chnh phng hay khng ? (s dng ngn ng m gi) y ta p dng nh ngha: n l s chnh phng nu kt qu cn bc hai ca n l mt s nguyn. cin>>n; if (sqrt(n)==int(sqrt(n)) cout<<n la so chinh phuong; else cout<<n khong la so chinh phuong; Lu : y sqrt l hm khai cn bc 2 v int s ly phn nguyn ca s thc sqrt(n).
Cc b test mu: test 1 n kt qu 1 chnh phng test 2 5 khng chnh phng test 3 10 khng chnh phng test 4 100 chnh phng

Dng 2: Cu trc lp vi s ln lp bit trc V d 1-3. Biu din thut ton tnh tng s = 1 + 2 +...+n (s dng ngn ng s khi).

Bi tp lp trnh cn bn SGU2010

Trang 12

Bt u

s=0 i=1

sai i<=n ng s=s+i i=i+1

Kt thc

Cc b test mu:
test 1 test 2 test 3 test 4

N s

0 0

1 1

10 55

100 5050

V d 1-4. Biu din thut ton tnh tng S(n) = 1 + t nhin 1 (s dng ngn ng m gi). cin>>n; s=0;

1 1 1 + + ... + vi n l s 2 3 n

Bi tp lp trnh cn bn SGU2010

Trang 13

for (i=1;i<=n;i++) s=s+1/i; cout<<s; Lu : Khi vit li thut ton ny bng ngn ng C/C++ th cn phi chuyn i 1/n v gi tr thc.
Cc b test mu: test 1 N S 2 1.50 test 2 5 2.28 test 3 10 2.93 test 4 100 5.19

Dng 3: Cu trc lp vi s ln lp khng bit trc V d 1-5. Biu din thut ton tm c s chung ln nht ca 2 s nguyn dng a,b (s dng ngn ng s khi).
Bt u

a,b

r=a mod b;

sai r<>0

ng

a=b; b=r; r=a mod b;

Kt thc

Bi tp lp trnh cn bn SGU2010
Cc b test mu: test 1 a b Kt qu 18 12 6 test 2 4 18 2 test 3 101 103 1

Trang 14

test 4 3 1000000 1

V d 1-6. Hy biu din thut ton tm s nguyn dng n ln nht sao cho tng 1 + 2 + 3+....+n < M vi M l d liu u vo (s dng ngn ng m gi). S dng s dng 1 cin>>M; n=0; s=0; while (s<M) { n++; s=s+n; } cout<<n-1; S dng s dng 2 cin>>M; n=0; s=0; do { n++; s=s+n; } while (s<M); cout<<n-1;
Cc b test mu:

Bi tp lp trnh cn bn SGU2010
test 1 M n 15 4 test 2 20 5 test 3 100 13

Trang 15
test 4 1000 44

Dng 4: Ti u ha cu trc Tiu ch v mt chng trnh tt l chng trnh phi chy tn t thi gian nht, tip theo l cc tiu ch khc nh trong sng, d hiu, d ci tin,... Trong mc ny chng ta hy thc hin vic ti u ha cu trc lp trnh c thut ton c thi gian thc hin nhanh hn. V d 1-7. Gii h phng trnh bc nht hai n sau y:
x + y = 36 2 x + 4 y = 100

Thut ton 1 for (int x=1;x<=36;x++) for (int y=1;y<=25;y++) if (x+y==36 && 2*x+4*y==100) cout<<"x="<<x<<",y="<<y; Thut ton 2 for (int y=1;y<=25;y++) { int x=36-y; if (2*x+4*y==100) cout<<"x="<<x<<",y="<<y; } V d 1-8. Vit chng trnh tnh tng S =1 + x/1!+ x2/2! + x3/3! + . + xn/n! vi x v n cho trc. Thut ton 1 s=1; for (int i=1; i<=n;i++) { p=1;

Bi tp lp trnh cn bn SGU2010 for (int j=1; j<=i;j++) p=p*x/j; s=s+p;

Trang 16

} Thi gian thc hin thut ton ny c nh gi l T(n)=O(n2). Sau y l mt thut ton khc hiu qu hn: Thut ton 2 s=1; p=1; for (int i=1;i<=n;i++) { p=p*x/i; s=s+p; } Thi gian thc hin thut ton ny c nh gi l T(n)=O(n)
Cc b test mu: test 1 x n p 0 1 1 test 2 1 1 2 test 3 5 3 18.4 test 4 100 2 7.389057

C.BI TP Hy biu din thut ton cho cc bi ton sau: BT1-1.Cho s t nhin n. Hy kim tra xem n c phi l s hon thin hay khng? (n c gi l s hon thin nu n bng tng cc c s thc s ca n). BT1-2.Cho s t nhin n. Hy kim tra xem n c phi l s nguyn t hay khng ? BT1-3.Cho s t nhin n. Hy tm n s nguyn t u tin. BT1-4.Cho s t nhin n. Hy tm s nguyn t ln nht khng vt qu s nguyn dng n. BT1-5.Cho n s a0,a1,...an-1. Hy tm c s chung ln nht v bi s chung nh nht ca n s ny.

Bi tp lp trnh cn bn SGU2010

Trang 17

BT1-6.Hy tm tt c cc s nguyn dng x,y,z l nghim ca h phng trnh sau:


x + y + z = 100 z 5 x + 3 y + 3 = 100

BT1-7.Hy tm tt c cc s c 5 ch s sao cho cc ch s ca n l i xng. V d 12321, 22222, l cc s i xng. BT1-8.Trong mt phng ta OXY cho 4 im A, B, C, D ln lt c ta l (xa,ya), (xb,yb), (xc,yc), (xd,yd). Hy kim tra xem ABCD c to thnh mt hnh bnh hnh khng ? BT1-9.Trong mt phng ta OXY cho 3 im A(xa,ya), B(xb,yb), M(xm,ym). Hy kim tra xem M c thuc on AB hay khng ? BT1-10.Trong mt phng ta OXY cho ba im A(xa,ya); B(xb,yb), C(xc,yc) v mt im M(xm,ym). Hy xc nh xem M nm trong, nm ngoi hay nm trn bin ca tam gic ABC ?

Bi tp lp trnh cn bn SGU2010 Chng 2

Trang 18

M U V NGN NG LP TRNH C/C++


A.TM TT L THUYT 2.1.Kiu d liu s 2.1.1.Kiu s nguyn Cc s nguyn thuc tp Z c nh ngha vi cc t kho, kch thc v min gi tr nh sau: T kha unsigned char char unsigned int int unsigned long long Kch thc 8 bits 8 bits 16 bits 16 bits 32 bits 32 bits 0 .. 255 -128 .. 127 0 .. 65.535 -32.768 .. 32.767 0 .. 4.294.967.295 -2.147.483.648 .. 2.147.483.647 Min gi tr

Cc php ton s hc i vi s nguyn ( sp theo u tin) Ton t + * / % 2.1.2.Kiu s thc T kho float double long double Kch thc 32 bits 64 bits 80 bits Min gi tr ca tr tuyt i 3.4 * (10-38) n 3.4 * (1038) 1.7 * (10-308) n 1.7 * (10308) 3.4 * (10-4932) n 1.1 * (104932) ngha cng tr nhn chia ly thng chia ly s d 5/2=2 6%4 = 2 V d

Trn min s thc khng c php ton chia ly d. 2.2.Lnh nhp, xut d liu, lnh gn 2.2.1.Xut d liu vi printf()

Bi tp lp trnh cn bn SGU2010

Trang 19

Xut ra mn hnh gi tr ca cc biu thc theo mt khun mu no . printf (<hng chui nh dng>, <biu thc 1>, <biu thc 2>,. . .); Hng chui nh dng cha m nh dng sau y: %[width].prec type; trong : width khong trng dnh cha biu thc cn xut ra mn hnh. prec nh kch thc ca phn thp phn. type nh kiu ca biu thc theo sau hng chui nh dng d s nguyn h 10 ld s long c k t s chui k t f s thc float lf s thc double chng hn cn xut hai gi tr a v b ln mn hnh trong a l kiu s nguyn v b l kiu s thc th ta c cu lnh sau: printf(%4d %6.2f, a, b); Khi a c dnh cho 4 khong trng ghi gi tr v b c dnh cho 6 khong trng ghi gi tr k c du chm thp phn v 2 ch s phn thp phn. Ch : hng \n thng c s dng a con tr v u dng tip theo lm chng trnh d c. 2.2.2.Lnh gn Lnh gn dng gn gi tr cho cc bin, c php ca lnh gn nh sau: tn bin = <biu thc>; Trong <biu thc> c th l mt hng, mt cng thc hay l mt bin khc c gn gi tr trc . Trong mt php gn, bin c gn phi xut hin bn tri du bng; cn hng, bin hoc biu thc gn th xut hin bn phi ca du bng. Thng thng thi c hai v trong mt cu lnh gn phi c cng kiu. Tuy nhin khi gn mt gi tr nguyn cho mt bin thc, th gi tr nguyn s c chuyn i thnh gi tr thc tng ng, cn khi thc hin php gn mt s thc cho mt s nguyn, th kt qu s c phn nguyn ca

Bi tp lp trnh cn bn SGU2010

Trang 20

s thc ch khng phi l mt php gn sai nh mt s ngn ng lp trnh khc. Chuyn i kiu d liu Khi thc hin cc php tnh ton s hc thng xy ra nhu cu chuyn i kiu cc ton hng tnh ton theo c php chuyn i kiu nh sau: (kiu d liu) biu thc V d: a,b l cc s nguyn. Cn xut gi tr ca phn s a/b th c ba cch chuyn i kiu sau: (float)a/b, float(a)/b, a/float(b); c bit trong trng hp a hoc b l hng s th vic chuyn a hoc b thnh s thc c th thc hin bng cch ghi thm .0 sau hng (v d 1/n ghi thnh 1.0/n). Ch thch trong chng trnh Khi vit chng trnh nn a vo cc dng ch thch chng trnh d c. iu ny cng gip cho vic sa i nng cp chng trnh v sau. C hai cch ghi li ch thch: cch 1: t du // trc dng mun ch thch cch 2: bao on cn ch thch gia hai du /* */ Li ch thch c th t bt k v tr no trong chng trnh, nu chng trnh di phc tp th nn a ch thch vo trc mi on lnh gii thch. 2.2.3.Nhp d liu vi scanf() Nhp cc gi tr t bn phm v lu gi vo ni dung ca cc a ch bin theo c php sau: scanf (<hng chui nh dng>, <a ch bin 1>, <a ch bin 2>,. . .); Hng chui dnh dng cha m nh dng sau y: d nhp s nguyn 10 c nhp k t s nhp chui k t ld nhp vo s long f s thc float xut, nhp d liu chng ta hon ton c th s dng hai lnh trong th vin stdio.h l printf, scanf nh cp cc v d trn. Tuy nhin chng ta

Bi tp lp trnh cn bn SGU2010

Trang 21

cng c th s dng cc lnh cout, cin trong th vin iostream.h vic vit chung trnh c linh hot hn. 2.2.4.Xut d liu vi cout cout << <biu thc1> [ <<biu thc2>] [...] Lnh ny cho php xut gi tr ca cc biu thc ra mn hnh. Cc <biu thc i> cng c th l cc hm, cc hng, Mt s lnh sau y (trong th vin iomanip.h) c th c s dng chung vi lnh cout: int setw(int n); quy nh rng trn mn hnh xut gi tr l n ct. int setprecision(int n); quy nh s lng s l sau du chm thp phn cn xut ra mn hnh l n s l. Tuy nhin c php ny (thng c s dng khi c nhu cu xut d liu kiu s thc) li khng hiu qu nh khi s dng c php ca cu lnh printf nh trn. 2.2.5.Nhp d liu vi cin cin>> <bin 1> [>> <bin 2> ] [...]; Lnh ny cho php nhp t bn phm gi tr cho cc bin, sau mi ln nhp gi tr phi nhn enter hoc phm khong cch. Lu : Khng s dng lnh cin nhp chui. 2.3.Ton t 2.3.1.Ton t so snh ton t < > == <= >= != nh hn ln hn bng nh hn hoc bng ln hn hoc bng khc nhau nh ngha

2.3.2.Ton t logic: Php ph nh

Bi tp lp trnh cn bn SGU2010 Php hi Php tuyn a 0 0 1 1 b 0 1 0 1 !a 1 1 0 0 && || a && b 0 0 0 1 a ||b 0 1 1 1

Trang 22

2.3.3.Ton t tng gim Ngn ng C/C++ a ra hai php ton mt ngi tng v gim cc bin (nguyn v thc). Ton t tng ++ s cng 1 vo ton hng ca n, ton t gim s tr i 1. Chng hn nu n ang c gi tr bng 5 th sau php tnh ++n, n c gi tr 6, cn sau php tnh --n, n c gi tr 4. Du php ton ++ v c th ng trc hoc sau ton hng, nh vy c th vit: ++n, n++, --n, n--. S khc nhau gia ++a v a++ ch: trong khi php n++ th n tng sau khi gi tr ca n c s dng, cn trong php ++n th n c tng trc khi gi tr ca n c s dng. S khc nhau gia n v n-- cng tng ng nh vy. Chng hn on lnh int a=1;b=3; cout <<++a+b++; th kt qu xut l 5 2.3.4.Ton t iu kin (<biu thc iu kin> ? <biu thc 1> : <biu thc 2>) ngha: Nu <biu thc iu kin> l ng th tr v <biu thc 1> ngc li tr v <biu thc 2>. Chng hn tm gi tr ln nht ca 2 s a,b th c th vit on lnh nh sau: max=a>b?a:b; Lu : <biu thc i> y c th l mt on lnh, nhng chng ta khng nn lm dng trnh lm phc tp chng trnh khng cn thit. 2.3.5.Th t u tin ca cc ton t

Bi tp lp trnh cn bn SGU2010

Trang 23

Khi tnh gi tr ca mt biu thc, ngn ng C/C++ quy c th t u tin ca cc ton t t cao n thp nh sau: php gi hm ! / , * , \ , %, && +, -, || < , >, ==, < =, > =, != 2.4.Cu trc ca mt chng trnh C/C++ n gin Khai bo cc th vin c s dng trong chng trnh. nh ngha cc hng s Khai bo cc bin ton cc Khai bo cc tiu hm Chng trnh chnh (void main()) Thit k chi tit tng hm t to (mt chng trnh n gin mu c th xem chng trnh 2-1 sau y, cn mt chng trnh chi tit vi y cu trc nh trn c th xem trong phn hc v chng trnh con). B.CC DNG BI TP Dng 1: S dng cc hm nhp, xut d liu, lnh gn V d 2-1. Trong mt phng ta OXY cho 3 im A,B,C ln lt c ta l (xa,ya), (xb,yb), (xc,yc). Hy tnh chu vi, din tch v ta trng tm ca tam gic ny. Thut ton Gi cv, s ln lt l chu vi v din tch ca ng trn; a,b,c ln lt l chiu di cc cnh BC, AC, AB. p dng cng thc tm khong cch gia hai im ta c:
a = ( xc - xb) 2 + ( yc - yb) 2

b = ( xc - xa) 2 + ( yc - ya) 2
c = ( xb - xa) 2 + ( yb - ya) 2

Chu vi ca tam gic ABC:

Bi tp lp trnh cn bn SGU2010

Trang 24

cv=a + b + c p dng cng thc tm din tch ca tam gic khi bit chiu di 3 cnh ca tam gic, ta c:
S= p( p - a)( p - b)( p - c) vi p l na chu vi ca tam gic ABC: p=cv/2

Gi (xg,yg) l ta trng tm ca tam gic ABC, ta c cng thc: xg=(xa+xb+xc)/3 yg=(ya+yb+yc)/3 Chng trnh 2-1 #include <conio.h> #include <iostream.h> #include <math.h> void main() { clrscr(); int xa,ya,xb,yb,xc,yc; double a,b,c,p,cv,s,xg,yg; //------------------------------------------cout<<"Nhap toa do cua diem A(xa,yx):";cin>>xa>>ya; cout<<"Nhap toa do cua diem B(xb,yb):";cin>>xb>>yb; cout<<"Nhap toa do cua diem C(xc,yc):";cin>>xc>>yc; //------------------------------------------a=sqrt((xb-xc)*(xb-xc)+(yb-yc)*(yb-yc)); b=sqrt((xa-xc)*(xa-xc)+(ya-yc)*(ya-yc)); c=sqrt((xa-xb)*(xa-xb)+(ya-yb)*(ya-yb)); cv=a+b+c; p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c)); xg=(xa+xb+xc)/3.0; // chuyn mu s v s thc yg=(ya+yb+yc)/3.0; //------------------------------------------cout<<"\nChu vi cua tam giac la : "<<cv;

Bi tp lp trnh cn bn SGU2010 cout<<"\nDien tich cua tam giac la: "<<s; cout<<"\nToa do trong tam cua la : "<<xg<<","<<yg; getch(); }
Cc b test mu: Test 1 2 3 A (0;3) (-3;0) (0;4) B (0;-3) (3;0) (4;0) C (4;0) (0;4) (0;0) Chu vi 16 16 13.66 Din tch 12 12 8

Trang 25

Trng tm (1.33;0) (0;1.33) (1.33;1.33)

Dng 2: S dng cc hm lin quan n php chia ly nguyn v chia ly d. V d 2-2. Nhp mt s nguyn dng n c 3 ch s. Hy tnh tng cc ch s ca s . Thut ton Tch cc ch s ca s n. Sau tnh tng cc ch s ca s . cin>>n; Hng n v = n %10 Hng chc = n % 100 /10 Hng trm = n /100 cout<<hangchuc + hangdv + hangtram; Chng trnh 2-2 #include <conio.h> #include <iostream.h> void main() { clrscr(); int n; cin>>n; int hangchuc=n%10; int hangdv=n%100/10; int hangtram=n/100; cout<<hangchuc + hangdv + hangtram;

Bi tp lp trnh cn bn SGU2010 getch(); }


Cc b test mu: test1 n Kt qu 197 17 test2 135 9 test3 111 3

Trang 26

test4 100 1

Dng 3: S dng ton t iu kin V d 2-3.Nhp vo 3 s nguyn a,b,c. Hy tm gi tr ln nht ca 3 s . Thut ton max=a; if (b > max) max=b; if (c > max) max=c; Chng trnh 2-3 #include <conio.h> #include <iostream.h> void main() { clrscr(); int a,b,c; cin>>a>>b>>c; int max=a; max=b>max ? b:max; max=c>max ? c:max; cout<<max; getch(); } Ton t iu kin c th c s dng gii cc bi ton c cu trc r nhnh n gin nh gii phng trnh, h phng trnh,. Tuy nhin li gii s rm r, kh c. Cu trc if else trong chng tip theo s gii quyt vn va nu mt cch trong sng, hiu qu hn.

Bi tp lp trnh cn bn SGU2010

Trang 27

C.BI TP Vit chng trnh hon chnh cho cc bi ton sau y (mi bi tp yu cu sinh vin ghi ch li mt s b test mu kim th chng trnh). BT2-1.Vit chng trnh nhp vo hai s nguyn a, b; sau tnh a + b, a - b. a * b, a / b. BT2-2.Nhp vo 2 s nguyn a,b. Hy hon i gi tr ca hai bin a,b. BT2-3.Trong mt phng ta OXY cho 2 im A, B; im A c ta l (x,y), im B c ta l (z,0) vi x, y, z l cc s dng. Hy tnh din tch tam gic OAB. BT2-4.Trong mt phng ta OXY cho 3 im A,B,C ln lt c ta l (xa,ya), (xb,yb), (xc,yc). Tm din tch v chu vi ca cc ng trn ni tip v ngoi tip tam gic ABC. BT2-5.Vit chng trnh in ln mn hnh su s nguyn ngu nhin trong phm vi t 0 n 9. BT2-6.Nhp vo s giy, hy i s giy ra dng gi pht giy. BT2-7.Dng ton t iu kin, tm gi tr nh nht, gi tr ln nht ca 5 s nguyn a,b,c,d,e. BT2-8.Dng ton t iu kin gii phng trnh bc nht ax + b= 0. BT2-9.Trong mt phng ta OXY cho 3 im A,B,C ln lt c ta l (xa,ya), (xb,yb), (xc,yc). Hy tm ta trc tm ca tam gic, ta tm ng trn ngoi tip, ta tm ng trn ni tip v ta chn ng cao AH. Tm din tch ng trn ni tip, din tch ng trn ngoi tip ca tam gic ABC. BT2-10.a.Tm sin, cosin, tg, cotg ca gc alpha , vi alpha l d liu nhp vo. b.Hy tm ta cc nh (s nguyn) ca mt tam gic ni tip ng trn c tm ti gc ta , bn knh r v gc ca nh th nht so vi phng ngang l 90o.

Bi tp lp trnh cn bn SGU2010 Chng 3

Trang 28

CC CU TRC R NHNH
A.TM TT L THUYT 3.1.Cu trc if else Dng 1 if (<biu thc >) <khi lnh>; M t hot ng Nu <biu thc> ng (c gi tr khc 0) th chng trnh s thc hin <khi lnh>, nu <biu thc> sai (c gi tr bng 0) th chng trnh s b qua < khi lnh > thc hin cc cu lnh tip theo sau . Ch : -<Biu thc> c th l kiu nguyn hay kiu s thc. -Cc <khi lnh > nu c t hai cu lnh n tr ln th phi t trong cp du ngoc {}. Khi khi lnh ch gm mt cu lnh th c th b du ngoc nhn u v cui. Khng c t du chm phy sau du ngoc nhn kt thc khi. Khi lnh tng ng vi cu lnh ring l v mt c php. Ni cch khc, ch no t c mt cu lnh th ta cng c quyn t mt khi lnh. -<Biu thc> sau if thng l dng iu kin v lun c t trong cp du (). Dng 2 if (<biu thc > ) < khi lnh 1>; else < khi lnh 2>; M t hot ng Nu <biu thc> ng th chng trnh s thc hin <khi lnh 1>, nu <biu thc> sai th chng trnh s thc hin <khi lnh 2>. S lng nhau ca cc cu lnh if -Cho php s dng cc cu lnh if lng nhau. iu c ngha l cc khi lnh c th cha cc cu lnh if else khc. Khi s dng nhiu cu lnh if lng nhau

Bi tp lp trnh cn bn SGU2010

Trang 29

th nn s dng cc du ng m khi trnh s hiu nhm. Trong trng hp khng s dng du ng m khi th else s c gn vi if khng c else gn nht trc . - chng trnh r rng, d kim tra v trnh nhm ln, ta nn vit chng trnh theo quy tc sau: th nht, cc cu lnh v khi lnh nm trong mt cu trc iu khin th vit tt vo bn phi; th hai, cc cu lnh v khi lnh cng cp th vit trn cng mt ct; th ba, im u v im cui ca mt khi lnh th cng thng ct. 3.2.Cu trc switch . . . case switch (<biu thc> ) { case hng-1 : < khi lnh 1>; break; case hng-2 : < khi lnh 2>; break; .... case hng-n : < khi lnh n>; break; default : < khi lnh 0>; break; } M t hot ng -Tin hnh so snh gi tr ca <biu thc> vi tng gi tr hng i nm sau cc t kha case. Nu gi tr ca <biu thc> trng vi hng i th <khi lnh i> tng ng s c thc hin, nu sau <khi lnh i> c lnh break th chng trnh s cho php thot ra khi cu trc switch case. Trong trng hp <khi lnh i> bng rng th < khi lnh i+1> s c xem xt tng t. -Khi cu trc c s dng t kha default th nu gi tr ca <biu thc> khng trng vi cc gi tr t hng 1 n hng n th < khi lnh 0> sau default s c thc hin.

Bi tp lp trnh cn bn SGU2010

Trang 30

-Lnh break c tc dng ngt chng trnh, thot khi <khi lnh> cha n. Lu , nu khi mt hoc nhiu cc <khi lnh i> c thc hin nhng khng gp cu lnh break th <khi lnh 0> sau default vn c thc hin. -Cu trc if else mnh hn so vi cu trc switch theo ngha nu on lnh gii c bng cu trc switch th cng s gii c bng cu trc if else. -Theo c php switch (<biu thc>) th biu thc phi l kiu nguyn (s nguyn, k t, gi tr logic). B.CC DNG BI TP Dng 1: Bi tp s dng cu trc if else V d 3-1.Gii h phng trnh:

a1 x + b1 y = c1 a 2 x + b2 y = c2

Thut ton -Tnh nh thc d, dx, dy. -Nu d khc 0 th h phng trnh c nghim duy nht l (dx/d;dy/d). Ngc li (khi d=0) Nu dx khc 0 hoc dy khc 0 th h l v nghim; Ngc li (c d,dx,dy u bng 0). h l v s nghim. Chng trnh 3-1 #include <conio.h> #include <iostream.h> void main() { int a1,b1,c1,a2,b2,c2; cin>>a1>>b1>>c1; cin>>a2>>b2>>c2; float d,dx,dy; d=a1*b2-a2*b1; dx=c1*b2-c2*b1;

Bi tp lp trnh cn bn SGU2010 dy=a1*c2-a2*c1; if (d!=0) cout<<dx/d<<" : "<<dy/d; if (d==0 && (dx!=0 || dy!=0)) cout<<"He pt vo nghiem"; if (d==0 && dx==0 && dy==0) cout<<"He pt vo so nghiem";

Trang 31

} Chng ta trnh by li gii trn bng cch s dng cu trc r nhnh if else dng 1, nu s dng cu trc r nhnh if else dng 2, ta c on chng trnh sau: if (d!=0) cout<<dx/d<<" : "<<dy/d; else if (dx!=0 ||dy!=0) cout<<"He pt vo nghiem"; else cout<<"He pt vo so nghiem";
Cc b test mu Test 1 2 3 4 a1 1 1 1 1 b1 1 3 -1 1 c1 36 5 0 1 a2 2 6 1 2 b2 4 18 -1 2 c2 100 4 -4 2 Kt qu 22;14 V nghim V nghim V s nghim

V d 3-2 Vit chng trnh nhp vo hai s nguyn a,b; sau thc hin mt trong bn php tnh cng, tr, nhn, chia (nu g k t + th thc hin php cng, nu g k t - th thc hin php tr,). Chng trnh 3-2 #include <conio.h> #include <iostream.h> void main()

Bi tp lp trnh cn bn SGU2010

Trang 32

{ clrscr(); float a,b; char pt;// phep toan cout<<"\nChuong trinh thuc hien 4 phep toan so hoc\n"; cout<<"Nhap vao so a = ";cin>>a; cout<<"Nhap vao so b = ";cin>>b; cout<<"\nGo dau + de thuc hien phep cong:"; cout<<"\nGo dau - de thuc hien phep tru :"; cout<<"\nGo dau * de thuc hien phep tich:"; cout<<"\nGo dau / de thuc hien phep chia:"; cout<<"\nHay nhap vao lua chon:"; cin>>pt; if (pt=='+') cout<<"Ket qua la : "<<a+b; else if (pt=='-') cout<<"Ket qua la : "<<a-b; else if (pt=='*') cout<<"Ket qua la : "<<a*b; else if (pt=='/') cout<<"Ket qua la : "<<(float)a/b; else cout<<"Ban da chon khong dung phep toan!"; getch(); } Dng 2: Bi tp s dng cu trc switch case V d 3-3:Nhp 2 gi tr thng, nm ca mt ngy no . Hy cho bit thng c bao nhiu ngy?

Bi tp lp trnh cn bn SGU2010

Trang 33

Lu : cc thng 1,3,5,7,8,10,12 c 31 ngy; cc thng 4,6,9,11 c 30 ngy. Ring thng 2 th c nhng trng hp sau: Trng hp 1: Nu l nm nhun th thng c 29 ngy (nm nhun l nm chia ht cho 4 nhng khng chia ht cho 100 hoc chia ht cho c 400 v 100), trng hp hai: Nu nm khng nhun th thng c 28 ngy. Chng trnh 3-3 #include <iostream.h> void main() { int thang, songay;// so ngay cua thang cin>> thang;; switch (thang) { case 1: case 3: case 5: case 7: case 8: case 10: case 12:songay=31;break; case 4: case 6: case 9: case 11:songay=30;break; case 2:cin>>nam; if ((nam %4==0 && nam %100!=0) ||(nam %400==0 && nam %100==0) songay=29; else songay=28; break;

Bi tp lp trnh cn bn SGU2010 } cout<<songay; }


Cc b test mu Test test 1 test 2 test 3 test 4 test 5 Thng/nm 2/2008 2/2009 1/2009 11/2008 2/2000 S ngy ca thng tng ng 29 28 31 30 28

Trang 34

V d 3-4:(Gii li v d 3-2 theo cu trc switch case) Chng trnh 3-4 #include <iostream.h> void main() { float a,b; char pt; cout<<"Chuong trinh thuc hien 4 phep toan so hoc\n"; cout<<"Nhap vao so a = ";cin>>a; cout<<"Nhap vao so b = ";cin>>b; cout<<"\nGo dau + de thuc hien phep cong:"; cout<<"\nGo dau - de thuc hien phep tru :"; cout<<"\nGo dau * de thuc hien phep tich:"; cout<<"\nGo dau / de thuc hien phep chia:"; cout<<"\nHay nhap vao lua chon:"; cin>>pt; switch (pt) { case '+':cout<<"Ket qua la : "<<a+b;break; case '-':cout<<"Ket qua la : "<<a-b;break; case '*':cout<<"Ket qua la : "<<a*b;break; case '/':cout<<"Ket qua la : "<<(float)a/b;break; default : cout<<"Ban da chon khong dung phep toan!";

Bi tp lp trnh cn bn SGU2010 } }

Trang 35

C.BI TP Vit chng trnh hon chnh cho cc bi ton sau y BT3-1.Nhp vo mt k t ch. Nu ch l k t thng th chuyn qua k t in hoa, nu ch l k t hoa th chuyn qua k t in thng, nu ch l ch s th xut m ASCII ca n, nu ch l mt trong bn php ton s hc th xut ra dng ch phep toan, nu ch l k t khong trng th xut dng ch khoang trang, nu khng thuc cc loi k trn th xut dng ch khong thuoc cac ky tu tren. BT3-2.Vit chng trnh nhp vo 2 s nguyn dng a v b. Nu c a v b u l s chn th xut cu: a va b la 2 so chan Nu trong 2 s a v b ch c mt s chn th xut cu: chi co mot so chan Nu trong 2 s a v b khng c s chn no th xut cu; a, b la hai so le BT3-3.Cho 4 s a,b,c,d khc nhau i mt. Hy tm gi tr ln nh BT3-4.Gii phng trnh dng: ax2 + bx + c = 0 BT3-5.Cho 4 s a,b,c,d khc nhau i mt. Hy xut 4 s ny ra mn hnh theo chiu tng dn. BT3-6.a.Nhp 3 gi tr ngy, thng, nm. Hy tm ngy k sau ca ngy va nhp. b.Nhp 3 gi tr ngy, thng, nm. Hy tm ngy k trc ca ngy va nhp. BT3-7.Trong mt phng ta OXY cho hai ng trn, mi ng trn bit ta tm v bn knh. Hy kim tra xem hai ng trn ny giao nhau, ct nhau hay tip xc vi nhau. BT3-8.Trong mt phng ta OXY cho hai ng thng c phng trnh ln lt l: a1x + b1y + c1 = 0 v a2x + b2y + c2 = 0 (trong ai,bi,ci l cc s thc). Hy kim tra xem hai ng thng ny l trng nhau? song song nhau? ct nhau ? hay va ct nhau va vung gc nhau?

Bi tp lp trnh cn bn SGU2010

Trang 36

BT3-9.Cho mt hnh ch nht c cch cnh song song vi cc trc ta , ta gc di tri l (x1,y1) v ta gc trn phi l (x2,y2). Hy kim tra xem im M(x,y) c nm trong hnh ch nht trn hay khng ? (nm trn cnh c xem nh nm trong). Gi s ta cc im l cc s nguyn. BT3-10.Trong mt phng ta OXY cho 4 im A, B, C, D ln lt c ta l (xa,ya), (xb,yb), (xc,yc), (xd,yd). Hy kim tra xem t gic ABCD c phi l mt hnh bnh hnh khng ?

Bi tp lp trnh cn bn SGU2010 Chng 4

Trang 37

CC CU TRC LP
A.TM TT L THUYT 4.1.Cu trc lp for for (<biu thc 1>; <iu kin>; <biu thc 2>) { <khi lnh> ; } M t hot ng u tin s thc hin <biu thc 1>, sau kim tra <iu kin>. Nu <iu kin> ng th s thc hin <khi lnh> ri n <biu thc 2>. Sau khi thc hin xong <biu thc 2> th cu trc ny quay tr li kim tra < iu kin> v bt u mt chu k mi,c th vy n khi <iu kin> nhn gi tr sai th cu trc lp ny s kt thc. Cng nh cp trong chng trc, <iu kin> l mt biu thc dng logic v s ln lp c biu th tng minh trong <iu kin> ny. 4.2.Cu trc lp while while (<iu kin>) { <khi lnh>; } M t hot ng Nu <iu kin> ng th s thc hin <khi lnh>, sau quay tr li kim tra <iu kin>. Vng lp while ny s kt thc khi <iu kin> nhn gi tr sai. Nhn xt: <khi lnh> trong thn vng lp while c th khng c thc hin ln no. 4.3.Cu trc lp do while do {

Bi tp lp trnh cn bn SGU2010 <khi lnh>; } while <iu kin>;

Trang 38

M t hot ng Trc ht <cng vic> s c thc hin, sau kim tra <iu kin>. Nu <iu kin> ng th quay tr li thc hin <cng vic>. Vng lp ny kt thc khi <iu kin> nhn gi tr sai. Nhn xt: <khi lnh> trong thn vng lp do while c thc hin t nht l mt ln. 4.4.Cu lnh break Khi c nhiu chu trnh lng nhau, cu lnh break s thot ra khi chu trnh lp (hoc switch) bn trong nht cha n. Nh vy, break cho ta kh nng ra khi mt chu trnh (t mt im bt k bn trong chu trnh) m khng cn dng n iu kin kt thc chu trnh. 4.5.Cu lnh continue Tri vi cu lnh break, cu lnh continue dng bt u mt vng lp mi ca chu trnh bn trong nht cha n. Ni mt cch chnh xc hn: Khi gp mt cu lnh continue bn trong thn ca mt cu trc for, my s chuyn ti bc khi u li. Khi gp mt cu lnh continue bn trong thn ca mt cu trc while hoc do while, my s chuyn ti xc nh gi tr biu thc (vit sau t kha while) v sau tin hnh kim tra iu kin kt thc chu trnh. Mt iu kin cn lu thm l: continue ch p dng cho cc chu trnh ch khng p dng cho switch. B.CC DNG BI TP Dng 1:Bi ton vi s ln lp bit trc V d 4-1.Nhp vo mt s nguyn dng n <= 1000000000. Hy cho bit s lng cc c s dng ca n. Thut ton Do n ch c th chia ht cho cc s t 1 n n/2. Ta t bin d l s lng cc c s ca n ti thi im ang xt. Ta c thut ton nh sau:

Bi tp lp trnh cn bn SGU2010 d=1; (hiu php gn u tin d=1 l do c n l c ca n) for (int i=1;i<=n/2;i++) if (n % i==0) d++; Chng trnh 4-1 #include<conio.h> #include<iostream.h> void main() { clrscr(); long n; int d=1; cin>>n; for (long i=1;i<=n/2;i++) if (n % i==0) d++; cout<<"So luong uoc so cua so n :"<<d; getch(); }
Cc b test mu test 1 n Kt qu 1 1 test 2 100 9 test 3 1001 2

Trang 39

test 4 10001 4

V d 4-2.Gi s n 1 v x l s thc. Hy vit hm tnh gi tr ca biu thc sau y :


S (n, x) = x x2 x3 xn + - ... + ( - 1 ) n - 1 1 1 1 1 1 1+ 1 1+ + 1+ + ... + 2 2 3 2 n Bi ton ny thot nhn th cng ri; bi ton ny c ba vn cn gii

quyt nh sau: Th nht l x l biu thc cha hm m t s, th hai l x l chui s mu s, th ba l x l vn an du ca chui. Vic tm ra mt thut ton hay vi phc tp tuyn tnh cho bi ton ny l iu m chng ta cn nhm ti.

Bi tp lp trnh cn bn SGU2010

Trang 40

Ta gii quyt tng vn trn nh sau: Th nht, t s ca s hng ng sau bng t s ca s hng ng lin trc n nhn vi x, do khi tnh t s ca mt s hng ta khng cn tnh li t u; th hai, vic tnh cc tng cho mu s cng c tnh cht tng t; th ba, vic x l vn an du ca chui th ta ch cn lun phin o du ca cc s hng bng cch cho dau =dau vi dau c nhn vo cho tng h s. Chng trnh 4-2 #include <conio.h> #include <iostream.h> void main() { clrscr(); int n; float x; cin>>n>>x; float s=0,tu=1,mau=0,dau=1; for (int i=1;i<=n;i++) { tu=tu*x; mau=mau+1.0/i; s=s+dau*tu/mau; dau=-dau; } cout<<s; getch(); }
Cc b test mu Test n x Kt qu test 1 3 1 0.878788 test 2 1 10 10 test 3 100 1 0.530037 test 4 5 3 79.270622

Dng 2:Bi ton vi s ln lp khng bit trc

Bi tp lp trnh cn bn SGU2010

Trang 41

V d 4-3.Vit chng trnh nhp vo mt s nguyn dng n (0 < n < 1000000000). Hy tnh tng cc ch s ca s . Thut ton Ln lt tm gi tr ca tng ch s ca n v cng dn vo s. ( y n theo bi c th ln n hng t, do cn khai bo bin n thuc kiu unsigned long). Chng trnh 4-3 #include <iostream.h> void main() { long n; cin>>n; int s=0; while (n>0) { s=s+n%10; n=n/10; } cout<<s; }
Cc b test mu Test n Kt qu test 1 1 1 test 2 2010 3 test 3 999111 30 test 4 1010101 4

V d 4-4.Tm c s (thc s) l ln nht ca s t nhin n (c s thc s l c s ca n nhng nh hn n). Thut ton c s thc s ln nht ca n ch c th l n/2, do thut ton s duyt i gim t n/2 n 1, gi tr i no l l v l c ca n th i chnh l kt qu, thut ton kt thc. Chng trnh 4-4 #include <conio.h>

Bi tp lp trnh cn bn SGU2010 #include <iostream.h> void main() { int n; clrscr(); cin>>n; int i=n; while (i%2==0 || n%i!=0) i--; cout<<i; getch() }
Cc b test mu Test n Kt qu test 1 100 25 test 2 16 1 test 3 27 9

Trang 42

test 4 1001 1

V d 4-5. Nhp vo s t nhin n. Hy tm n s nguyn t u tin. Thut ton Cho bin i bt u t gi tr 2, t s lng s nguyn t ban u l d=0. C mi gi tr i th kim tra xem i c phi l s nguyn t hay khng ? Nu i l s nguyn t th tng s d ln 1 n v. Vng lp s kt thc khi tm c n s nguyn t. Chng trnh 4-5 #include <iostream.h> void main() { int n; cout<<"Nhap vao so tu nhien n:"; cin>>n; int demsont=0; int i=2,d; while (demsont<n)

Bi tp lp trnh cn bn SGU2010 { d=0; for (int j=1;j<=i;j++) if (i%j==0) d++; if (d==2) { cout<<i<<" "; demsont++; } i++; } }
Cc b test mu Test Test 1 Test 2 Test 3 n 2 5 8 1 2 2 2 2 3 3 3 5 5 7 7 11 11 13 3 4 5 6

Trang 43

17

19

C.BI TP Vit chng trnh hon chnh cho cc bi ton sau y BT4-1.Hy hin thi ba nhm k t ch ci hoa (A,B,C,), ch ci thng(a,b,c,), ch s (0,1,2,) cng vi m ASCII tng ng vi k t ln mn hnh (phn theo tng nhm trn).

1 1 1 + + ... + vi n l s t nhin 0. 3 5 (2n + 1) 1 1 1 b.Tnh tng S = + + ... + vi n l s t nhin 1. 2 4 2n


BT4-2.a.Tnh tng S = 1 +

x2 x3 xn + + ... + c.Tnh tng S ( x, n) = x + 1+ 2 1+ 2 + 3 1 + 2 + 3 + ... + n


n x2 x3 n x - + ... + (-1) d.Tnh tng S ( x, n) = - x + 2! 3! n!

Bi tp lp trnh cn bn SGU2010

Trang 44

e.Gi s n1 v x l s thc. Hy vit hm tnh gi tr ca biu thc sau y:

x x2 xn n 1+ - ... + ( -1) 1+ 2 2 + 3 n + ( n + 1)
BT4-3. Tnh 1.2 + 2.3.4 +3.4.5.6+...+ n(n+1)...(2n) BT4-4.a.Tnh sinx + sin sinx +....+ sin sin...sin x (n ln sin) b.Tnh cos x + coscos x2 +...+ cos cos...cos cos xn BT4-5. a.Cho tng S=1+3+5+...+(2n+1) vi n0 v s nguyn M. Hy tm gi tr n nh nht sao cho S >M. b.Nhp s nguyn t n. Hy tim s nguyn t k tip sau s n. c.Nhp vo s nguyn n. Hy tm s nguyn t gn n nht. BT4-6.Ngy 01/01/2010 l ngy th Su. Khoa cng ngh thng tin hp ton th gio vin ca khoa vo cc ngy th Su u tin ca thng. Ring cc thng 7,8 th khng hp. Hy in ra cc ngy trong nm 2010 m khoa hp. BT4-7.Cn c 200000 ng t 3 loi giy bc 1000 ng, 2000 ng, 5000 ng. Lp chng trnh tm tt c cc phng n c th. BT4-8.a.Vit chng trnh hin th tt c cc s c 3 ch s sao cho tng cc ch s ca s bng tch ca chng. b.Tm cc s c 5 ch s khc nhau i mt. C bao nhiu s nh vy ? BT4-9.Ta c 3,5,7 l cp s cng bao gm cc s nguyn t. Hy kim tra xem trong cc s t nhin <10000 cn c mt cp s cng no khc gm 3 phn t l s nguyn t na hay khng ? BT4-10.Vit hm kim tra xem mt s nguyn dng cho trc c phi l ton cc ch s nguyn t hay khng ? V d : 23527, 22,

Bi tp lp trnh cn bn SGU2010 Chng 5

Trang 45

CHNG TRNH CON


A.TM TT L THUYT 5.1.Khi nim chng trnh con Khi lp trnh gii quyt mt vn bi ton, thng n gin ha vic vit chng trnh, ngi ta tch chng trnh ln thnh cc on chng trnh nh hn - mi on gii quyt trn vn mt vn c th; mi on nh ny c gi l mt chng trnh con. Chng trnh con trong C/C++ c gi chung l hm. Vic lp trnh theo kiu phn nh nh trn lm cho vic phn tch chng trnh c d dng, vic sa li v nng cp chng trnh cng c thun li, thi gian thc hin ton b chng trnh c rt ngn li. S dng hm cng s lm cho chng trnh trnh lp li cc on cng vic tng t nhau, Bn thn C c nhiu hm (nhng hm ny gi l hm chun), trong chng ny, chng ta s hc cch t vit mt ra mt hm (nhng hm nh vy c gi l hm t to). 5.2.Cch thit k v s dng hm Tham s hnh thc, tham s hnh thc bin, tham s hnh thc tr Cc bin c lit k trong danh sch hm c gi l tham s hnh thc, nu trc cc bin khng c ch dn & th cc bin gi l tham s hnh thc tr (gi tt l tham tr), cc bin c khai bo sau t kha & c gi l tham s hnh thc bin (gi tt l tham bin), danh sch cc bin li gi hm hay th tc gi l tham s thc t. i vi cc s c truyn theo kiu tham tr th gi tr ca cc bin c th thay i trong thn hm cha n, nhng khi ra khi hm gi tr ca bin ging nh gi tr ca bin trc khi vo thn hm, cn nu truyn theo kiu tham bin th mi s thay i trong thn hm s c gi li ngay c khi n ra khi hm . Bin ton cc v bin a phng

Bi tp lp trnh cn bn SGU2010

Trang 46

Cc bin c khai bo trong cc hm - k c hm void main() c gi l cc bin cc b (hay l bin a phng) v n ch c tc dng trong phm vi hm cha n v khi chng trnh con kt thc th cc bin ny cng mt tc dng theo. Cc bin c khai bo ngoi void main() c gi l bin ton cc; cc bin ton cc s nh hng n c chng trnh. Khi lp trnh trnh ti a vic khai bo bin ton cc. Hm c tr tr v, hm khng c tr tr v Khi thit k mt hm th trc ht cn t mt tn hm c tnh gi nh, sau cn phn tch k tr li cc cu hi: hm cn thit k l hm c tr tr v hay khng c tr tr v? Hm cn bao nhiu tham s? Cc tham s ny l tham tr hay tham bin ? Ta s thit k hm c tr tr v khi kt qu ca hm (thng qua li gi hm) cn c s dng cc hm hoc cc biu thc khc na; ngc li ta nn dng hm khng c tr tr v. Lu l nu hm c tr tr v th ch tr v duy nht mt gi tr, do nu hm c nhiu hn mt tr tr v th sao ? Vn ny c th c gii quyt theo nhiu cch. Sau y l hai cch c th chn: th nht l phn r chc nng ca hm thnh nhiu chc nng ring c th nht, mi hm c mt chc nng ring bit v n s tr v ng mt gi tr, th hai l tr v nhiu gi tr thng qua k thut truyn tham bin. Nu hm c tr tr v th trong thn hm phi c lnh return tr v mt kt qu duy nht sau khi thc hin xong hm . B.CC DNG BI TP Dng 1: Thit k hm c tr tr v hm khng c tr tr v. V d 5-1.Vit chng trnh m xem t 1 n 100000 c bao nhiu s nguyn t ? Bao nhiu s chnh phng ? Bao nhiu s hon ho ? Thut ton Ta cn thit k hm nguyento(n) kim tra xem n c phi l s nguyn t hay khng ? Tng t nh i vi s chnh phng, hon ho. C 3 hm ny u phi thit k theo kiu hm c tr tr v (tr v kiu int). Tip theo l thit k hm cho bit s lng ca cc s nguyn t, chnh phng, hon ho (t tn hm l demso). Do mt hm nu c tr tr v th ch

Bi tp lp trnh cn bn SGU2010

Trang 47

tr v duy nht mt gi tr, nhng y c n 3 gi tr cn tr v nn ta cn s dng hm khng c tr tr v - cc gi tr cn tr v c th xut ngay trong thn hm . Chng trnh 5-1 #include <math.h> #include <iostream.h> int nguyento(long n); int chinhphuong(long n); int hoanhao(long n); void demso(long n); void main() { demso(10000); } int nguyento(long n) { if (n<2) return 0; long k=sqrt(n); for (long i=2;i<=k;i++) if (n%i==0) return 0; return 1; } int chinhphuong(long n) { return sqrt(n)==long(sqrt(n)); } int hoanhao(long n) { long k=n/2;

Bi tp lp trnh cn bn SGU2010 long tonguoc=0; for (long i=1;i<=k;i++) if (n%i==0) tonguoc+=i; return tonguoc==n; } void demso(long n) { long demsont=0,demsocp=0,demsohh=0; for (long i=1;i<=n;i++) { if (nguyento(i)) demsont++; if (chinhphuong(i)) demsocp++; if (hoanhao(i)) demsohh++; } cout<<"\nSo luong so nguyen to : "<<demsont; cout<<"\nSo luong so chinh phuong: "<<demsocp; cout<<"\nSo luong so hoan hao : "<<demsohh; }
Cc b test mu: S lng nguyn t Chnh phng Hon ho 10 4 3 1 10000 1229 100 4

Trang 48

50000 5133 223 4

Dng 2: Thit k hm c truyn tham bin V d 5-2. Vit chng trnh nhp vo 2 phn s a/b v c/d. Hy tnh tng ca 2 phn s. Yu cu phn s kt qu phi dng ti gin. V d: 1/2 + 1/6 c kt qu l 2/3. Thut ton Vi v d ny ta thit k cc hm sau: void nhapps(int &tu, int &mau); void xuatps(int tu, int mau); void congps(int tu1, int mau1,int tu2, int mau2, int &tu, int &mau);

Bi tp lp trnh cn bn SGU2010

Trang 49

int uscln(int a, int b); Trong , hm nhapps th cc tham s phi l tham bin do cc phn s u vo cn c s dng hm congps, hm xuatps th cc tham s ch cn l tham tr. Thc cht th hm xuatps cc tham s ghi l tham bin vn khng sai, nhng khng l nn trnh. Do c hai hm nhp phn s v xut phn s ny khng c gi mt hm hoc mt biu thc khc nn tt nht l thit k theo kiu hm khng c tr tr v. Cn hm congps th do kt qu tr v l mt phn s - ngha l c t s v mu s, nn khng th tr v thng qua tn hm do ta cn vit hm khng c tr tr v v khi gi tr tr v c tr v thng qua hai tham bin ca hm. (nu coi phn s nh l mt bin ca kiu struct th c th vit hm c tr tr v cho trng hp ny. Vn ny s c x l trong chng 11). Chng trnh 5-2 #include <iostream.h> void nhapps(int &tu, int &mau); void xuatps(int tu, int mau); void congps(int tu1, int mau1,int tu2, int mau2, int &tu, int &mau); int uscln(int a, int b); void main() { int tu1,mau1,tu2,mau2,tu,mau; nhapps(tu1,mau1); nhapps(tu2,mau2); congps(tu1,mau1,tu2,mau2,tu,mau); xuatps(tu,mau); } void nhapps(int &tu, int &mau) { cout<<"Nhap vao tu so : "; cin>>tu; cout<<"Nhap vao mau so : ";

Bi tp lp trnh cn bn SGU2010 cin>>mau; } void { xuatps(int tu, int mau) int uc=uscln(tu,mau); tu=tu/uc; mau=mau/uc; cout<<"Ket qua: "<<tu<<"/"<<mau<<endl;

Trang 50

} void {

congps(int tu1, int mau1,int tu2, int mau2, int &tu, int &mau) tu=tu1*mau2+tu2*mau1; mau=mau1*mau2;

} int uscln(int a, int b) { int r=a%b; while (r!=0) { a=b; b=r; r=a%b; } return b; }
Cc b test mu test 1 Phn s 1 Phn s 2 Kt qu 1/2 1/6 2/3 test 2 1/1 4/2 3/1 test 3 5/6 6/7 71/42 test 4 10/101 2/103 1232/10403

V d 5-3. Nhp 3 gi tr ngy, thng, nm. Hy tm ngy k sau ca ngy va nhp. Thut ton

Bi tp lp trnh cn bn SGU2010

Trang 51

Ta thit k hai hm sau: int songay(int thang, int nam) void ngaymai(int &ngay, int &thang, int &nam) Hm songay cho bit s ngy ca mt thng no , cn hm ngaymai cho bit ngy k sau ca ngy hin ti. y cn tr v 3 gi tr l ngay, thang, nm nn c 3 gi tr ny cn c tr v thng qua tham bin v hm ny c thit k theo kiu hm khng c tr tr v nh trn. Chng trnh 5-3 #include <iostream.h> int songay(int thang, int nam) { switch (thang) { case 1: case 3: case 5: case 7: case 8: case 10: case 12:return 31; case 4: case 6: case 9: case 11:return 30; case 2:if (nam %4==0 && nam %400!=0) return 29; return 28; } } void ngaymai(int &ngay, int &thang, int &nam) {

Bi tp lp trnh cn bn SGU2010 if (ngay<songay(thang,nam)) ngay++; else { ngay=1; thang++; if (thang>12) { thang=1; nam++; } } } void main() { int ngay,thang,nam; cin>>ngay>>thang>>nam; ngaymai(ngay,thang,nam); cout<<ngay<<" "<<thang<<" "<<nam; }
Cc b test mu Ngy hin ti test 1 test 2 test 3 test 4 test 5 31/12/2009 28//2/2000 28/2/2009 30/11/2009 28//2/2004 Ngy mai 1/1/2010 01/3/2000 1/3/2009 1/12/2009 29/2/2004

Trang 52

C. BI TP Vit chng trnh hon chnh cho cc bi ton sau y BT5-1.Vit chng trnh thc hin cc cng vic sau: a.Tnh tng cc ch s ca s t nhin n. b.Tm ch s u tin ca s t nhin n.

Bi tp lp trnh cn bn SGU2010

Trang 53

c.Tm ch s ln nht ca s t nhin n. d.Tm ch s chn cui cng ca s t nhin n. e.Kim tra cc ch s ca n c tng dn t tri qua phi hay khng ? BT5-2.Nhp vo n. Hy vit chng trnh thc hin cc cng vic sau: a.m s lng s nguyn t nh hn hoc bng n. b.Tm s nguyn t nh nht ln hn n. c.Tm s nguyn t gn n nht (c th ln hn hoc nh hn n). BT5-3.Hy phn tch s t nhin n thnh tch cc s nguyn t V d 90=2 * 3 * 3 * 5. BT5-4.a.Tm tt c cc s l c 4 ch s bit rng khi o trt t ca cc ch s th ta thu c mt s nguyn t cng nhau vi s cho. b.Vit chng trnh hin th tt c cc s <10000 c biu din nh phn l i xng. c.Vit chng trnh tm s nguyn dng nh nht sao cho c th biu din n bng tng lp phng ca 2 s dng (tc l x3+y3) ch ng bng hai cch. BT5-5.a.Mt s nguyn c k ch s c gi l s Amstrong khi n bng tng ly tha k ca tng ch s. Hy in ra cc s Amstrong trong on [1..1000000]. b.S t nhin n c gi l Palindrom nu cch vit thp phn ca s l i xng, v d 2112, 353,Hy in cc s Palindrom < 10000. BT5-6.a.Vit chng trnh nhp s t nhin n. Hy in ra ch s th n ca dy v hn cc s chnh phng 149162536496481100... b.Vit chng trnh kim tra khng nh sau y: 5 ch s cui cng ca s 211781 cng chnh l 1781. c.Giai tha N k hiu l N! l tch tt c cc s nguyn t 1 n N. giai tha N tng rt nhanh, v d 5!=120, 10!=3628800. Mt cch xc nh cc s ln nh vy, ngi ta ch ra s ln xut hin cc s nguyn t trong phn tch ca n ra tha s nguyn t. V d 825 c th xc nh nh sau: (0 1 2 0 1 1) c ngha l 825 = 20. 31.52.70.111 Cho mt s nguyn dng N 1000. Hy tm biu din s N! di dng s ln xut hin cc s nguyn t trong phn tch s N! ra cc tha s nguyn t.

Bi tp lp trnh cn bn SGU2010

Trang 54

BT5-7.Trong biu thc :((((a1?a2)?a3)?a4)?a5) = a6. Hy in vo cc v tr du ? bi mt trong 4 php tan +, - , * , / sao cho gi tr ca biu thc cho hai v bng nhau. Hy tm tt c cc li gii. BT5-8.Trong mt phng ta OXY cho 4 im A, B, C, D ln lt c ta l (xa,ya), (xb,yb), (xc,yc), (xd,yd). Hy kim tra xem hai on thng AB v CD c ct nhau hay khng ? BT5-9.Trong mt phng ta OXY cho ba im A(xa,ya); B(xb,yb), C(xc,yc) v mt im M(xm,ym). Hy xc nh xem M nm trong, nm ngoi hay nm trn bin ca tam gic ABC ? BT5-10.Cho hai hnh ch nht. Hnh ch nht th nht c ta gc di tri l x1,y1 v ta gc trn phi l x2,y2. Hnh ch nht th hai c ta gc di tri l x3,y3 v ta gc trn phi l x4,y4. Gi thit cc ta l cc s nguyn v cc hnh ch nht c cc cnh song song vi cc trc ta . Hy tm din tch hnh c ph bi hai hnh ch nht trn.

Bi tp lp trnh cn bn SGU2010 Chng 6

Trang 55

K THUT LP TRNH QUY


A.TM TT L THUYT 6.1.Khi nim qui Mt hm c gi l c tnh qui nu trong bn thn n c lnh gi li chnh n mt cch trc tip hay gin tip. Mt chng trnh c gi l c tnh qui nu n c cha t nht mt hm qui. Mt hm qui gm c hai phn: Phn c s v phn qui. Phn c s (hay cn gi l phn dng) m t cp gii c ca bi ton, phn quy l phn gi li chnh n nhng vi cp thp hn. Bn cht ca lp trnh qui nh th no? Trong lp trnh qui, khi mt hm (hay th tc) gi qui n chnh n, th mi ln gi ti, my s to ra mt tp cc bin cc b hon ton c lp vi cc tp bin cc b c to ra trong cc ln gi trc , c bao nhiu ln gi ti hm quy th cng c by nhiu ln thot ra khi hm, c mi ln thot ra khi hm th mt tp cc bin cc b s c gii phng, s tng ng gia cc ln gi ti hm v thot ra khi hm c thc hin theo th t ngc, ngha l ln ra u tin ng vi ln vo cui cng v ln ra khi hm cui cng ng vi ln u tin gi ti hm (c ch vo sau ra trc) Cc chng trnh quy thng gp c th thuc trong bn loi sau: quy tuyn tnh, quy nh phn, quy h tng v quy phi tuyn. Trong mc di y, chng ta s ln lt xt cc loi quy k trn, mi loi chng ta minh ha bng mt s v d in hnh. 6.2.Phn loi quy 6.2.1. quy tuyn tnh (cn gi l quy ui) Mt hm c gi l quy tuyn tnh nu mt ln gi hm n ch pht sinh ti a mt li gi quy. 6.2.2. quy nh phn Mt hm c gi l quy nh phn nu mi ln gi hm n pht sinh ti a hai li gi quy.

Bi tp lp trnh cn bn SGU2010

Trang 56

6.2.3. quy h tng Hai hm P,Q c gi l quy h tng nu hm P c li gi n hm Q v ngc li mt cch tng minh hay tim n. 6.2.4. quy phi tuyn ( quy phc) Mt hm c gi l quy phi tuyn nu mi ln gi hm th n pht sinh ra khong n ln gi quy - thng thng li gi quy c t trong vng lp. 6.3.Kh quy Mc d bt k bi ton no cng c th gii bng k thut quy, th nhng chng ta khng nn lm dng quy v nu mt bi ton c li gii khng quy th nn chn li gii khng quy (li gii khng c tnh quy c gi l kh quy). Ci t quy trong my tnh i lc li khng n gin nh pht biu quy, my tnh vn c nhng hn ch v b nh nn khng phi lc no cng c th biu din mt cch hon ho cc pht biu quy. i lc ta cn phi tm cch kh quy lm gim bt phc tp ca chng trnh. Vi quy tuyn tnh v quy nh phn th thng chng ta tm c cch kh quy khng kh lm. Tuy nhin vi cc bi ton dng quy phi tuyn hoc quy h tng th vic kh quy c th l phc tp. B.CC DNG BI TP Dng 1: quy tuyn tnh V d 6.1.Vit chng trnh tnh n!, vi n l mt s nguyn khng m. Giai tha c nh ngha theo kiu quy np nh sau: n! = n*(n-1)! Chng trnh 6-1 #include <iostream.h> long giaithua(int n); void main() { cout<<giaithua(5); } long giaithua(int n)

Bi tp lp trnh cn bn SGU2010 { if (n==0|| n==1) return 1; else return (n*giaithua(n-1)); } Dng 2: quy nh phn V d 6.2.Tnh s hng th n ca dy fibonacci bit f(1)=1, f(2)=1, f(n)= f(n-1) + f(n-2)

Trang 57

Chng trnh 6-2 #include <stdio.h> #include <conio.h> int f(int n); void main() { clrscr(); cout<<f(7); getch(); } int f(int n) { if (n==1 || n==2) return 1; else return f(n-1)+f(n-2); } V d 6.3. Cho mt dy s c nh ngha theo cng thc quy np nh sau (vi n l s nguyn 1) f (1) = 1; f (2) = 2; f (3) = 3.

Bi tp lp trnh cn bn SGU2010

Trang 58

f ( n + 3) = 2 f ( n + 2) + f ( n + 1) - 3 f ( n)
Vit chng trnh tnh f(n). Chng trnh 6-3 #include <iostream.h> long f(int n) { if (n==1||n==2||n==3) return n; return 2*f(n-1) + f(n-2)-3*f(n-3); } void main() { int n; cin>>n ; cout<<f(n); }
Cc b test mu Test n f(n) Test 1 8 13 Test 2 20 -7546 Test 3 30 1338706

Dng 3: quy h tng V d 6-4. Vit hm tnh s hng th n ca hai dy sau: x(0) = 1, y(0) = 0, x(n) = x(n - 1) + y(n - 1) vi mi n > 0, y(n) = 3*x(n - 1) + 2*y(n - 1) vi mi n > 0. Chng trnh 6-4 #include<conio.h> #include<iostream.h> int tinhxn(int n); int tinhyn(int n);

Bi tp lp trnh cn bn SGU2010 void main() { clrscr(); cout<<tinhxn(3)<<endl; cout<<tinhyn(3); getch(); } int tinhxn(int n) { if (n==0) return 1; return tinhxn(n-1)+tinhyn(n-1); } int tinhyn(int n) { if (n==0) return 0; return 3*tinhxn(n-1)+2*tinhyn(n-1); } Dng 4: quy phi tuyn V d 6-5. Bi ton tm tt c cc dy nh phn chiu di n. Chng hn vi n=3 th ta c cc dy nh phn: 000 001 010 011 100 101 110 111 Chng trnh 6-5 #include<iostream.h> #include<conio.h>

Trang 59

Bi tp lp trnh cn bn SGU2010 #include<iomanip.h> int x[1000]; int m,dem=0; void xuat(); void duyetnhiphan(int i); void main() { clrscr(); cout<<"Nhap m = :"; cin>>m; duyetnhiphan(1); getch(); } void xuat() { cout<<++dem<<setw(4); for (int i=1;i<=m;i++) cout<<x[i]<<setw(4); cout<<endl; } void duyetnhiphan(int i) { for (int j=0;j<=1;j++) { x[i]=j; if (i==m) xuat(); else duyetnhiphan(i+1); } }

Trang 60

Bi tp lp trnh cn bn SGU2010 Dng 5: Vn kh quy V d 6-6. Vit chng trnh tnh n! bng cch khng dng quy Chng trnh 6-6 #include <iostream.h> #include <conio.h> long giaithua(int n); void main() { clrscr(); cout<<giaithua(10); getch(); } long giaithua(int n) { long temp=1; for (int i=1;i<=n;i++) temp *=i; return temp; } V d 6.7. Tnh s hng th n ca dy fibonacci F(n) bit f(1)=1, f(2)=1, f(n)= f(n-1) + f(n-2) Chng trnh 6-7 #include <iostream.h> void main() { int f[100]; int n; cout<<Nhap n = "; cin>>n;

Trang 61

Bi tp lp trnh cn bn SGU2010 f[1]=f[2]=1; for (int i=3;i<=n;i++) f[i]=f[i-1]+f[i-2]; cout<<f[n]; } C.BI TP BT6-1.a.Tnh tng S = 1 + 2 ++ n, vi n l s t nhin 0.

Trang 62

b.Hin th cc ch s ca mt s nguyn theo chiu ngc li. BT6.2. a.Cho dy n s nguyn, hy tnh tng cc phn t. b.Cho dy n s nguyn dng, hy m s lng cc s chn.
(sinh vin c th lm bi tp ny sau khi hc n khi nim mng 1 chiu)

BT6-3.Tm c s chung ln nht ca 2 s t nhin. BT6.4.Tnh S (n) = 2 + 2 + ... + 2 + 2 c n du cn BT6-5.Vit chng trnh tnh f(n) (vi n 1, n l s nguyn dng), bit rng f(n) c tnh theo cng thc quy np sau y: f(1) = 1, f(2n) =2f(n), f(2n+1)= 2f(n) + 3f(n+1) a.Tnh f(5) b.Tnh f(n). BT6-6.Vi mi n 1, s Yn c tnh nh sau : Y1=1, Y2=2, Y3=3, Yn=Yn-1 + 2Yn-2 + 3Yn-3 nu n 4 a.Tnh Y5 b.Vit hm tnh Yn bng phng php quy. c.Vit hm tnh Yn khng dng quy cng khng dng bin mng lu gi tr tm. BT6-7.Vit hm tnh A(m,n) bit:

n + 1, khi m = 0 A( m, n) = A(m - 1,1), khi n = 0 A(m - 1, A( m, n - 1))

Bi tp lp trnh cn bn SGU2010

Trang 63

BT6-8.Cho dy xn c nh ngha nh sau: x0=1, x1=2, xn=nx0+(n-1)x1++xn-1 Vit hm quy tnh xn (vi n 0). BT6-9.Vi mi n 1, s Xn c tnh nh sau : X1=1, X2=1 Xn=Xn-1 + (n-1)Xn-2 vi n 3 a.Vit hm tnh Xn bng phng php quy. b.Vit hm tnh Xn khng dng quy cng khng dng bin mng lu gi tr tm. BT6-10.Bi ton thp H Ni. Gi s c 3 cc A, B, C. Ban u ti A t mt s a vi th t a trn nh a di to - nh hnh v di y.

Yu cu ca bi ton l chuyn ton b s a trn sang cc C, trong qu trnh chuyn c php s dng cc C, mi ln chuyn ng 01 a v lun bo m nguyn tc a nh nm trn a ln trong sut qu trnh chuyn.

Bi tp lp trnh cn bn SGU2010 Chng 7

Trang 64

MNG MT CHIU
A.TM TT L THUYT 7.1.nh ngha mng Mt bin ch c th biu din c mt gi tr ti mt thi im. biu din mt dy s hay mt bng s ta c th dng nhiu bin ri rc, tuy nhin cch ny khng tin li. Vic s dng mng l cch tt nht v l bt buc trong nhiu trng hp x l vn bi ton. Mng c th hiu l mt s hu hn cc phn t c cng mt kiu gi tr v c chung mt tn. Mi phn t biu din c mt gi tr. S phn t ca mng c xc nh ngay t khi nh ngha mng. Mi phn t ca mng c truy cp trc tip thng qua tn mng cng vi ch s ca mng (cc ch s ny c t trong cp du []). C cho php lm vic vi mng mt chiu, hai chiu hoc nhiu chiu. 7.2.Khai bo mng 1 chiu < kiu d liu> tnmng[const n]; V d khai bo mng mt chiu c tn l a gm 10 phn t thuc kiu s nguyn ta thc hin cu lnh nh sau: int a[10]; Vic truy xut n tng phn t ca mng mt chiu: Phn t ca mng mt chiu s c truy xut thng qua tn mng[ch s], chng hn truy xut phn t th i ca mng mt chiu c tn l a ta c th cu lnh a[i]. Lu : Ch s u tin ca mng l 0, tuy nhin ty theo vn bi ton ang biu din m nn s dng ch s u tin ca mng l 0 hay l 1. 7.3. Nhp/xut mng mt chiu Nhp mng n s nguyn nhp t bn phm void nhapmang(int a[], int &n) { cout<<"Nhap vao so n: ";cin>>n;

Bi tp lp trnh cn bn SGU2010 for (int i=0;i<n;i++) cin>>a[i]; } Xut mng n s nguyn nhp t bn phm void xuatmang(int a[], int n) { cout<<endl; for (int i=0;i<n;i++) cout<<a[i]<<" "; } 7.4.Mt s k thut lp trnh n gin trn mng mt chiu Dng 1: K thut tnh tng cc phn t tng=0; for (int i=0;i<n;i++) if (a[i] tha mn iu kin bi ton) tng=tng+a[i]; Dng 2: K thut m m=0; for (int i=0;i<n;i++) if (a[i] tha mn iu kin bi ton) m++;

Trang 65

Dng 3: K thut t lnh canh Phn t lnh canh c th hiu l mt v tr no ca mng, hoc l mt gi tr no ca mng hoc cng c th l mt gi tr ty theo tng yu cu c th ca bi ton, Sau tin hnh duyt cc phn t ca mng, nu c phn t no tha iu kin ca bi ton th tin hnh thay i v tr lnh canh (hoc gi tr canh. V tr canh (hoc gi tr canh) ny chnh l thng tin cn tm. Tuy nhin ty thng tin cn c ca vn bi ton m nh thng tin v phn t lnh canh cho ph hp. Dng 4: K thut t c hiu flag=0;

Bi tp lp trnh cn bn SGU2010 for (int i=0;i<n;i++) if (a[i] tha mn iu kin bi ton) t flag=1 v kt thc vng lp Gi tr tr v l flag.

Trang 66

K thut ny c th s dng vng lp while hoc do while th cu trc s t nhin hn. Nu s dng chng trnh con thit k cc hm thuc loi ny th khng cn phi s dng cc bin flag m c th s dng ngay gi tr tr v ca chng trnh con lm gi tr c hiu. Dng 5: K thut sp xp Sp xp l mt ni dung quan trng ca hc phn cu trc d liu, y chng ta ch xt n mt phng php sp xp n gin nht l phng php sp xp i ch trc tip. Xt mt mng n s a0, a1,.., aN-1. Nu c i < j v ai > aj, th ta gi l mt nghch th. Mng cha sp xp s c nghch th, v ngc li mng c th t s khng cn cha nghch th. sp xp mt mng, ta c th tm cch lm gim s cc nghch th trong mng ny bng cch hon v cc phn t ai,aj nu c i < j v ai > aj theo mt quy lut no no . Nh cp trn, sp xp mt dy s, ta c th xt cc nghch th c trong dy v lm trit tiu dn chng i. tng chnh ca gii thut l xut pht t u dy, tm tt c nghch th cha phn t ny, trit tiu chng bng cch i ch phn t ny vi phn t tng ng trong cp nghch th. Lp li x l trn vi cc phn t tip theo trong dy. on m th hin tng sp xp i ch trc tip nh sau: for (i=0; i<n-1;i++) for (j=i+1;j<n ;j++) if (a[i]>a[j]) hoanvi(a[i],a[j]); Dng 6: K thut x l mng

Bi tp lp trnh cn bn SGU2010

Trang 67

Cho mng chiu a gm n phn t. Hy xa phn t ti v tr k ca mng. Thut ton Cc phn t bt u t v tr th k + 1 n cui mng c dch chuyn qua tri mt v tr. Sau khi xa xong th cn cp nht li s lng phn t ca mng (n = n-1). Cho mng chiu a gm n phn t. Hy chn phn t x vo v tr k ca mng. Thut ton Cc phn t bt u t v tr th k + 1 n cui mng c dch chuyn qua phi mt v tr. Sau chn phn t x vo v tr k. Sau khi chn xong th cn cp nht li s lng phn t ca mng (n = n+1). B.CC DNG BI TP V d 7-1.Cho mng mt chiu a cha n s nguyn. Hy thc hin cc cng vic sau: a.Tim tng cc phn t ca mng b.Tim gi tr ln nht ca mng c.m s lng gi tr i xng trong mng. Chng trnh 7-1 #include <iostream.h> #include <conio.h> void nhapmang(int a[], int &n); void xuatmang(int a[], int n); void tinhtong(int a[], int n); int giatrilonnhat(int a[], int n); int demdoixung(int a[], int n); void main() { clrscr(); int a[1000],n; nhapmang(a,n);

Bi tp lp trnh cn bn SGU2010

Trang 68

xuatmang(a,n); tinhtong(a,n); cout<<"\nGia tri lon nhat : "<<giatrilonnhat(a,n); cout<<"\nSo luong cac phan tu doi xung: "<<demdoixung(a,n); getch(); } void nhapmang(int a[], int &n) { cout<<"Nhap vao so n: ";cin>>n; for (int i=0;i<n;i++) cin>>a[i]; } void xuatmang(int a[], int n) { for (int i=0;i<n;i++) cout<<a[i]<<" "; } void tinhtong(int a[], int n) { int s=0; for (int i=0;i<n;i++) s=s+a[i]; cout<<"\nTong cac phan tu cua day : "<<s; } int giatrilonnhat(int a[], int n) { int max=a[0]; for (int i=1;i<n;i++) if (a[i]>max) max=a[i]; return max;

Bi tp lp trnh cn bn SGU2010 } int demdoixung(int a[], int n) { int dem=0; for (int i=0;i<n/2;i++) if (a[i]==a[n-i-1]) dem++; return dem; }
Cc b test mu n Cu a Test 1 Test 2 Cu b Test 1 Test 2 Cu c Test 1 Test 2 Test 3 Test 4 Test 5 6 5 6 1 2 1 1 1 1 1 2 2 2 2 3 3 3 3 2 4 2 1 2 1 1 6 5 -3 6 -7 7 -5 8 -10 2 -5 111 -2 22 5 6 1 -3 2 -7 3 -5 4 -10 5 -5 30 a0 a1 a2 a3 a4 a5

Trang 69

Kt qu 15 0 -2 111 3 2 2 0 0

V d 7-2. Cho mng mt chiu cha n s nguyn a0, a1, a2,,an-1. Hy vit hm tm v tr ca s dng l ln nht ca mng. Nu khng tm thy th tr v gi tr -1.
Test 1 Input n=6 4 -100 -20 16 20 -97 Output: -1 Input n=8 1000 7 6 2 -5 -1001 93 100 Output: 6 Test 2

int soduonglelonnhat(int a[],int n) { int vitri=-1,max=0;//hoac la max=-MAXINT;MAXINT trong thu vien values.h

Bi tp lp trnh cn bn SGU2010

Trang 70

for (int i=0;i<n;i++) if (a[i]%2!=0 && a[i]>0 && a[i]>max) { max=a[i]; vitri=i; } return vitri; } V d 7-3. Cho mng mt chiu cha n s nguyn dng a0, a1, a2,,an-1. Hy vit hm kim tra trong mng c cha s nguyn t no c ng hai ch s hay khng ? Nu c th tr v gi tr 1, nu khng c th tr v gi tr 0.
Test 1 n=6 2 21 15 37 49 105 Output: 1 n=8 1001 101 62 63 39 5 231 15 Output: 0 Test 2

int nguyento(int n) { if (n<2) return 0; for (int i=2;i<n;i++) if (n%i==0) return 0; return 1; } int songuyentohaichuso(int a[],int n) { for (int i=0;i<n;i++) if (nguyento(a[i]) && 10<=a[i] && a[i]<=99) return 1; return 0; }

Bi tp lp trnh cn bn SGU2010

Trang 71

V d 7-4. Sp xp cc s nguyn t trong mng tng dn, cn cc s khc khc th gi nguyn gi tr v v tr. void sapxepnguyento(int a[], int n) { for (int i=0;i<n-1;i++) for (int j=i+1;j<n;j++) if (nguyento(a[i]) && nguyento(a[j]) && a[i]>a[j]) hoanvi(a[i],a[j]); } void hoanvi(int &a, int &b) { int temp=a; a=b; b=temp; }
n Test 1 Kt qu Test 2 Kt qu 6 10 a0 4 5 4 5 6 6 a1 6 3 6 7 19 2 a2 15 8 15 8 4 4 a3 7 2 2 19 3 3 2 5 5 19 16 3 a4 16 a5 19 Kt qu

V d 7-5. Cho dy n s nguyn dng a1, a2,..., an. Hy vit hm tm chiu di ca on con lin tip di nht cha ton s chn. Nu khng c th tr v gi tr 0.
Test 1 Input n=12 1 4 12 22 18 21 68 42 16 82 10 5 Output 5 Test 2 Input n=6 1 105 223 15 93 101 Output 0

Bi tp lp trnh cn bn SGU2010

Trang 72

int doansochandainhat(int a[], int n) { int d=0,max=0; for (int i=0;i<n;i++) if (a[i]%2==0) d++; else { if (d>max) max=d; d=0; } return (d>max?d:max); } V d 7-6. Cho mng mt chiu a cha n s nguyn dng. Vit hm xa tt c cc s nguyn t trong mng. void xoaphantu(int a[], int &n, int k) { for (int i=k;i<n;i++) a[i]=a[i+1]; n--; } void xoasonguyento(int a[], int &n) { for (int i=0; i<n;i++) if (nguyento(a[i])) { xoaphantu(a,n,i); i--; } }

Bi tp lp trnh cn bn SGU2010

Trang 73

C.BI TP Vit chng trnh hon chnh cho cc bi ton sau y BT7-1.Cho mng mt chiu a cha n s nguyn dng. a.Tm s nguyn t nh nht ln hn mi gi tr c trong mng. b.Kim tra mng c tng dn hay khng ? Nu c th tr v gi tr 1 nu khng c th tr v gi tr 0. c.Kim tra mng c tn ti gi tr chn nh hn 2010 hay khng ? Nu c th tr v gi tr 1 nu khng c th tr v gi tr 0. d.Kim tra cc phn t trong mng c lp nn mt cp s cng khng ? Nu c hy ch ra cng sai d. e.Tm gi tr chn u tin, nu khng c th tr v gi tr -1. f.m s lng cc gi tr ln nht. g.Tm gi tr ln th k ca mng. BT7-2.Cho mng mt chiu a cha n s nguyn. Vit hm m tn s xut hin ca cc phn t. BT7-3.Cho mng mt chiu cha n s nguyn dng. Hy tm cc cp s nguyn t cng nhau. BT7-4.a.Vit hm tm k gi tr khc nhau ln nht ca mng. b.Vit hm hy a cc s chn v u mng, cc s l v cui mng, cn cc s 0 gia. c.Vit hm sp xp cc cc s trong mng sao cho cc s dng c sp xp tng dn, cc s m c sp xp gim dn, cn cc s 0 th gi nguyn v tr. d.Cho mng mt chiu a cha cc s nguyn dng. Hy xut cc s nguyn t trong mng a theo chiu tng dn. BT7-5.Cho mng mt chiu a cha n s nguyn dng. a.Tm bi s chung nh nht ca n s trn. b.Tm c s chung ln nht ca n s trn. BT7-6.Cho dy n+1 s nguyn a0,a1,,an-1, anv mt s nguyn x. Hy tnh gi tr ca biu thc P(n,x) = anxn+an-1xn-1 ++a1x+a0.

Bi tp lp trnh cn bn SGU2010

Trang 74

BT7-7.Cho hai mng mt chiu a v b. Hy kim tra xem tt c cc phn t ca mng a c nm trong mng b hay khng ? BT7-8.Vit chng trnh in ln mn hnh 100 s nguyn ngu nhin trong phm vi t 100 n 999. BT7-9.Cho hai mng mt chiu a v b, cc s trong mng c sp tng dn. Hy trn hai mng ny c mt mng c cng c sp tng dn. BT7-10.Cho dy n s nguyn {a} Dy con lin tip l dy m thnh phn ca n l cc thnh phn lin tip nhau trong {a}. Ta gi tng ca dy con l tng tt c cc thnh phn ca n. Tm tng ln nht trong tt c cc tng ca cc dy con ca {a}. V d nu n = 7 v dy s nh sau: 4 5 6 4 2 3 -7 th kt qu tng l 7.

Bi tp lp trnh cn bn SGU2010 Chng 8

Trang 75

MNG HAI CHIU


A.TM TT L THUYT 8.1.Khai bo mng Mng hai chiu c khai bo nh sau: < kiu d liu> tn mng[const m][const n]; V d sau khai bo mt mng hai chiu c tn l a gm 10 dng, 10 ct, cc phn t l cc s nguyn. int c[10][10]; Phn t ca mng c truy xut thng qua tn mng[ch s dng][ch s ct], chng hn truy xut phn t ti dng th i ct th j ca mng a, ta ghi a[i][j]. Mng hai chiu m dng n ct c xem nh l mt bng hnh ch nht cha m*n phn t cng kiu d liu. Bng sau y l mt mng hai chiu 3 dng, 4 ct cha cc s nguyn. ct 0 dng 0 dng 1 dng 2 2 3 3 ct 1 3 8 1 ct 2 4 4 2 ct 3 6 7 5

8.2.Nhp/xut mng hai chiu Nhp cc phn t cho mng hai chiu cc s nguyn void nhapmang(int a[maxm][maxn], int &m, int &n) { cout<<"Nhap vao so dong: ";cin>>m; cout<<"Nhap vao so cot : ";cin>>n; for (int i=0;i<m;i++) for (int j=0;j<n;j++) cin>>a[i][j]; } Xut cc phn t cho mng hai chiu cc s nguyn

Bi tp lp trnh cn bn SGU2010 void xuatmang(int a[maxm][maxn], int m, int n) { for (int i=0;i<m;i++) { for (int j=0;j<n;j++) cout<<a[i][j]<<" "; cout<<endl; } }

Trang 76

B.CC DNG BI TP Dng 1: K thut tnh tng cc phn t Cho mng hai chiu m dng, n ct; cc phn t l cc s nguyn. Hy vit hm tnh tng cc phn t ca mng. void tinhtong(int a[maxm][maxn], int m, int n) { int s=0; for (int i=0;i<m;i++) for (int j=0;j<n;j++) s=s+a[i][j]; cout<<"Tong cac phan tu cua mang la : "<<s; } Dng 2: K thut m Cho mng hai chiu m dng, n ct; cc phn t l cc s nguyn. Hy m xem mi dng c bao nhiu s nguyn t. void demsonttrendong(int a[maxm][maxn], int m, int n) { for (int i=0;i<m;i++) { int dem=0; for (int j=0;j<n;j++) if (nguyento(a[i][j]))

Bi tp lp trnh cn bn SGU2010 dem++; cout<<dem<<endl; } }

Trang 77

Dng 3: K thut t lnh canh Cho mng hai chiu m dng, n; ct cc phn t l cc s nguyn. Hy tm s chnh phng ln nht, nu khng tm thy tr v gi tr 0. int chinhphuongln(int a[maxm][maxn], int m, int n) { int cpmax=0; for (int i=0;i<m;i++) for (int j=0;j<n;j++) if ((sqrt(a[i][j])==int(sqrt(a[i][j]))) && (a[i][j]>cpmax)) cpmax=a[i][j]; return cpmax; } Dng 4: K thut t c hiu Cho mng hai chiu m dng, n ct; cc phn t l cc s nguyn. Hy kim tra xem mng c cha dng no tng dn hay khng? Nu c tr v gi tr 1; nu khng c tr v gi tr 0. int kiemtradongtang(int a[maxm][maxn], int m, int n) { int flag; for (int i=0;i<m;i++) { flag=1; for (int j=0;j<n-1;j++) if (a[i][j]>a[i][j+1]) flag=0; if (flag==1) return 1; } return 0; }

Bi tp lp trnh cn bn SGU2010

Trang 78

Dng 5: K thut sp xp (sp xp i ch trc tip) Cho mng hai chiu m dng, n ct; cc phn t l cc s nguyn. Hy thc hin cc cng vic sau y: a.Sp xp cc phn t tng dn trn mi dng (t tri qua phi). b.Sp cc phn t tng dn trn mi dng (t tri qua phi) v tng dn trn mi ct (t trn xung di, mi phn t ca dng di phi ln hn tt c cc phn t ca dng trn). Thut ton Cu a. Xem mi dng nh l mt mng mt chiu, p dng thut ton sp xp mng mt chiu (nh trong chng trc) ta s c mng tng dn trn tng dng nh on chng trnh sau: void sapdong(int a[maxm][maxn], int m, int n) { for (int i=0;i<m;i++) for (int j=0;j<n-1;j++) for (int k=j+1;k<n;k++) if (a[i][j]>a[i][k]) hoanvi(a[i][j],a[i][k]); } Cu b. Cch 1:Dng mng ph Chuyn d liu t mng hai chiu a sang mng mt chiu b, sau sp xp cc phn t tng dn trn mng mt chiu b v cui cng chuyn d liu t mng mt chiu b qua li mng hai chiu a. Cch 2:Khng dng mng ph void sapxep(int a[maxm][maxn], int m, int n) { for (int i=0;i<m*n-1;i++) for (int j=i+1;j<m*n;j++) if (a[i/n][i%n]>a[j/n][j%n]) hoanvi(a[i/n][i%n],a[j/n][j%n]);

Bi tp lp trnh cn bn SGU2010 }
Cc b test mu m=3; n=5 4 2 12 7 3 3 34 1 11 3 17 4 2 7 2 1 3 7 2 3 11 2 4 12 2 4 17 3 7 34

Trang 79

Dng 6: K thut x l mng Cho mng hai chiu m dng, n ct; cc phn t l cc s nguyn. a.Hon v hai dng k,l ca mng. b.Dch xung xoay vng cc dng mt v tr. a. void hoanvidong(int a[maxm][maxn], int m, int n, int k, int l) { for (int i=0;i<n;i++) hoanvi(a[k][i],a[l][i]); } b. void xoayvong(int a[maxm][maxn], int m, int n) { for (int i=m-1;i>0;i--) hoanvidong(a,m,n,i,i-1); } C.BI TP Vit chng trnh hon chnh cho cc bi ton sau y BT8-1.Cho mng hai chiu m dng, n ct; cc phn t l cc s nguyn. Hy thc hin cc cng vic sau y: a.Tnh tng cc phn t nm trn cc ng bin ca mng. b.Lit k ch s dng c cha gi tr nguyn t. c.Lit k ch s dng cha ton gi tr nguyn t. d.Kim tra xem mng c tn ti s hon thin no hay khng?

Bi tp lp trnh cn bn SGU2010

Trang 80

e.Tm tn s xut hin ca cc s. BT8-2.Cho mng hai chiu n dng, n ct (gi l ma trn vung). Hy thc hin cc cng vic sau y: a.Tnh tng cc phn t nm trn ng cho ph. b.Kim tra ma trn vung c i xng qua ng cho chnh hay khng ? c.Kim tra xem ng cho chnh c tng dn t trn xung di hay khng ? d.m s lng gi tr chn trong ma trn tam gic trn. e.Tnh tng cc phn t thuc ma trn tam gic di. f.Hy tm gi tr ln nht trong ma trn tam gic trn. BT8-3.Cho mng hai chiu n dng, n ct. Hy thc hin cc cng vic sau y: a.Xa mt dng ca mng. b.Hon v hai ct k,l ca mng. c.o ngc cc ct (ct u tin v ct cui, ct th 2 v ct gn cui,...) d.Dch qua phi mt v tr cho tt c cc ct. e.Dch xung k v tr cho tt c cc dng. BT8-4.Vit chng trnh nhp vo ma trn a cc s nguyn kch thc m x n (0< m 6, 0<n 8). Tnh v xut ma trn b c cng kch thc vi a sao cho b[i][j] = trung bnh cng ca cc phn t k vi phn t a[i][j] trong ma trn a theo 8 hng (khng tnh a[i][j]). BT8-5.Hy in tam gic Pascal vi chiu cao h. V d vi h=5 th kt qu l: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1

Bi tp lp trnh cn bn SGU2010

Trang 81

BT8-6.Cho ma trn vung cp n c 2n-1 ng cho song song vi ng cho ph c t tn l 0 n 2*n-2. Hy cho bit ng cho no c tng ln nht ? BT8-7.Cho ma trn vung cp n (n>1). Hy in cc phn t ca ma trn trn theo th t ng xon c t ngoi vo trong.

BT8-8.Hy in cc s t 1 n n*n vo bng sau theo quy lut c m t vi nhng trng hp c th (n = 5,6) nh sau: n=5 11 10 4 3 1 19 12 9 5 2 20 18 13 8 6 24 21 17 14 7 25 23 22 16 15 n=6 1 2 6 7 15 16 3 5 8 14 17 26 4 9 13 18 25 27 10 12 19 24 28 33 11 22 23 29 32 33 21 22 30 31 35 36 Hy nhp n t bn phm (1 < n <20) v in bng ln mn hnh theo quy lut trn. BT8-9.Hy lp trnh xut bng s c kch thc l n vi 7<n<25 theo quy lut c nhn bit t cch biu din vi cc trng hp c th sau: Vi n=5 9 7 5 3 1

Bi tp lp trnh cn bn SGU2010 7 5 3 1 5 3 1 2 3 1 2 4 1 2 4 6 2 4 6 8

Trang 82

Vi n=6 11 9 7 5 3 1 9 7 5 3 1 2 7 5 3 1 2 4 5 3 1 2 4 6 3 1 2 4 6 8 1 2 4 6 8 10

Vi n=7 13 11 9 7 5 3 1 11 9 9 7 5 3 1 2 7 5 3 1 2 4 7 5 3 1 2 4 6 5 3 1 2 4 6 8 3 1 2 4 6 8 1 2 4 6 8 10

10 12

BT8-10.Bi ton ma phng. a.Bi ton ma phng l Ma phng l l mt bng hnh vung c n ct, n hng cha cc s nguyn t 1 n n2 sao cho tng cc s trong cc hng, cc ct v hai ng cho ln u bng nhau v bng n(n2 +1)/2. Vi mi n 3 u c th xy dng c ma phng. Ngay t thi trung c, ngi ta bit cch xy dng ma phng vi cc n l. Vi n c nh, hin nay ngi ta vn cha bit c l c

Bi tp lp trnh cn bn SGU2010

Trang 83

th xy dng c bao nhiu ma phng khc nhau. Ma phng c ngha l "hnh vung mu nhim", v ngi ta cho rng c iu g thn b n cha trong . Ma phng gi l chun khi n2 s ca ma phng l n2 s nguyn dng u tin. Thut ton -u tin t s 1 vo chnh gia ca dng cui. i=n; j=(n/2) + 1; a[i][j]=1; -Khi in s k ta ti i,j th tin hnh in s tip theo l (k+1) theo hng ng-Nam (hng chnh). -Vic tm v tr ca in gi tr k+1 (v tr i=i+1,j=j+1) c th gp nhng s c sau y: o Nu (j>n) v (i<=n) ngha l ang xt c ct vt ra ngoi bng th gn j=1 ngha l y s k + 1 qua cc tri ca bng. o Nu (i>n) v (j<=n) ngha l ang xt c dng vt ra ngoi bng th gn i=1 ngha l y s k+1 ln dng u tin ca bng. o Nu (i>n) v (j>n) ngha l ang xt c c dng v ct vt ra ngoi bng th gn i=i-2; j=j-1; o Nu a[i,j]<>0 ngha l ti ang xt c in s ri th gn i=i-2; j=j-1; V d vi n =5 th c ma phng sau: 11 10 4 23 17 18 12 6 5 24 25 19 13 7 1 2 21 20 14 8 9 3 22 16 15

b.Bi ton ma phng chn -in cc s t 1 n n2 vo bng theo th t tng dn t tri qua phi v t trn xung di:

Bi tp lp trnh cn bn SGU2010

Trang 84

for i=1;i<=n;i++; for j=1;j<=n;j++; a[i][j]=(i-1)*n+j; -Vic tp xu mu: Gn cho chui s bng k/2 k t T vi k=n/2. Nu k l s l th thm hai k t DN vo cui chui s. Nu s vn cha k k t th thm k t B vo cui chui thm n khi no s c k k t th dng. -To bng bng cc k t trong xu mu trn theo quy tc c cho trong on m gi sau: for i=1;i<=k;i++ { for j=1;j<=k;j++ { b[i][j]=nhn k t th j ca chui s. //lu y ang xt chui s bt u t v tr s[1]) b[n-i+1][n-j+1]=b[i][j]; // i xng qua tm b[i][n-j+1]=b[i][j]; // i xng theo chiu dc b[n-i+1][j]=b[i][j]; // i xng theo chiu ngang } Tin hnh chuyn k t cui ca xu mu v v tr u tin ca xu mu. } cc v tr ngoi hnh vung k x k trn, nu gi tr ca i,j l khc k t T th cho c gi tr bng k t B. -Giai on han i gi tr ca cc ( c ma phng) theo quy tc sau: for i=1;i<=n;i++ for j=1;j<=n;j++ if (a[i][j]=(i-1)*n+j) // nu i,j l cha c han i. { if ( b[i][j]='T') // i xng qua tm swap(a[i][j],a[n-i+1][n-j+1]);

Bi tp lp trnh cn bn SGU2010

Trang 85

if (b[i][j]='D') // i xng qua chiu dc swap (a[i][j],a[i][n-j+1]); if (b[i][j]='N' ) // i xng theo chiu ngang swap (a[i][j],a[n-i+1][j]); } V d vi n = 4 th c ma phng sau: 16 5 9 4 2 11 7 14 3 10 6 15 13 8 12 1

Bi tp lp trnh cn bn SGU2010 Chng 9

Trang 86

CON TR
A.TM TT L THUYT 9.1.a ch v con tr 9.1.1.a ch nh Lin quan n mt bin ta c cc khi nim: tn bin, kiu ca bin, gi tr ca bin. V d vi khai bo: float x; // x l bin kiu float x=12.5; //x c gi tr l 12.5 v lc ny, bin x chim mt s nh lin tip trong b nh, mi nh c kch thc 1 byte (nhc li rng mt bin kiu int chim 2 byte, mt bin kiu float chim 4 byte,). Ch : a ch ca hai bin kiu int lin tip cch nhau 2 byte, a ch ca hai bin kiu float lin tip cch nhau 4 byte, 9.1.2.con tr Con tr l mt kiu d liu c bit dng qun l a ch ca cc nh. Mt con tr qun l cc a ch m d liu ti cc a ch ny c kiu T th con tr c gi l con tr kiu T. Con tr kiu T ch c dng cha a ch ca bin kiu T; ngha l con tr kiu int ch c dng cha a ch ca bin kiu int, con tr kiu float ch c dng cha a ch ca cc bin kiu float. 9.1.3.khai bo con tr [type] *< pointer_var_name > Chng hn vi khai bo int x, *px; // x l bin int, cn px l con tr kiu int. 9.1.4.php ly a ch ca mt bin C php: &< var_name > v d &a ln lt l a ch ca cc bin a Chng hn vi khai bo int a;

Bi tp lp trnh cn bn SGU2010

Trang 87

Mun bit a ch ca bin a ta dng cch lm sau: cout<<&a<<&b; Lu : -Khi mt con tr cha tr ti bt k mt a ch no, th con tr c gi l con tr NULL. -Con tr NULL c a ch l 0000. 9.1.5.php ton ly gi tr ti mt a ch m mt con tr ang tr ti. C php: * < pointer_var_name > chng hn vi khai bo int a=10; // bin a c gi tr l 10 int px=&a; // px l con tr tr n a ch ca bin a th lc ny ni dung ti a ch m con tr px tr n (tc l gi tr ca bin a) l 10. Cn ch rng vic thay i gi tr ca *px s lm cho gi tr ca a thay i theo v ngc li. Chng hn vi khai bo int a=10; int *px=&a; *px=*px+2 s lm bin a c gi tr l 12. 9.2.Quy tc s dng con tr trong cc biu thc S dng tn con tr Con tr cng l mt bin, nn khi tn ca n xut hin trong mt biu thc th gi tr ca n s c s dng trong biu thc ny. Lu : gi tr ca mt con tr l a ch ca mt bin no . Trong php gn m con tr ng bn tri th gi tr bn phi l mt a ch. Ni dung ca mt con tr cng c th c thay i. S dng dng khai bo ca con tr. Nu px l con tr tr ti bin x th cc cch vit x v *px l tng ng nhau.

Bi tp lp trnh cn bn SGU2010

Trang 88

Khi bit c a ch ca mt bin th chng nhng chng ta c th s dng gi tr ca n m cn c th gn cho n mt gi tr mi (lm thay i ni dung ca n); iu ny s c p dng khi cn nhn bit kt qu ca hm thng qua cc tham bin. 9.3.Cc thao tc trn con tr 9.3.1.Php ton cng/tr cc a ch C php : < pointer_var_name > + s kiu int < pointer_var_name > - s kiu int int x,*px; px=&x; cout<<px<<endl; //neu dia chi cua px la fff4 px=px+2; cout<<px<<endl; //neu dia chi cua px la fff8 px=px-1; cout<<px<<endl; //neu dia chi cua px la fff6 9.3.2.cp pht ng b nh +Ton t new Dng 1: <pointer_var_name>=new <type>; Cp pht sizeof (<type>) bytes nh trong khi nh heap. Nu cp pht thnh cng, hm tr v a ch u ca khi nh cp pht c cho con tr pointer_var_name. Nu khi nh heap khng cp pht hm tr v con tr NULL. Dng 2: <pointer_var_name>=new <type>[N_blocks]; Tng t nh trn, cu lnh dng ny cp pht N_blocks*sizeof (<type>) bytes nh. Chng hn vi khai bo char *pc; pc=new char[10]; // cp pht 10 khi nh 1 byte v cho con tr pc tr ti a ch ca khi nh u tin ca khi nh ny. Lu : Cn kim tra xem vic cp pht c thnh cng hay khng. Nu cp pht thnh cng, con tr mi bt u tr ti a ch u ca khi nh c cp pht

Bi tp lp trnh cn bn SGU2010

Trang 89

v lc ny chng ta mi c th thc hin cc thao tc trn con tr ny. Chng hn xem on chng trnh sau: int *pi; pi= new int; if (pi==NULL) { cout<<"khong du bo nho"; exit(0); } +T kha sizeof C php: sizeof(<type>) hoc sizeof(<expression>) Cho bit kch thc lu tr cc gi tr c kiu d liu <type> hoc ca kiu d liu ca gi tr biu thc expression. Chng hn vi on chng trnh sau: cout<<sizeof(char); cout<<sizeof(int); cout<<sizeof(float); cout<<sizeof(double); cout<<sizeof(long double); th kt qu l 1 2 4 8 10 hoc vi on chng trnh cout<<sizeof('c'); cout<<sizeof(2003); cout<<sizeof(54321); cout<<sizeof(200.3); th kt qu l 1 2 4 8 9.3.3.Gii phng khi nh c cp pht -Hm delete void delete <pointer_var_name> Tc dng: Gii phng khi nh c cp pht bng ton t new m khi nh ny ang c qun l bi con tr <pointer_var_name >

Bi tp lp trnh cn bn SGU2010 V d delete pc;

Trang 90

-hm free C php: void free (<pointer_var_name>) Tc dng: Gii phng khi nh c cp pht bng hm malloc, calloc m khi nh ny ang c qun l bi con tr <pointer_var_name>. B.CC DNG BI TP Dng 1 : S dng hm c i con tr. V D 9-1.Hon i gi tr ca hai bin x,y. cc chng trc, chng ta bit cch thit k hm hon v ny ri. Sau y l s dng hm c i con tr. Chng trnh 9-1 #include<conio.h> #include<iostream.h> void hoanvi(int *x,int *y); void main() { clrscr(); int a=1, b=2; hoanvi(&a,&b); cout<<a<<b; getch(); } void hoanvi(int *x,int *y) { int temp=*x;*x=*y;*y=temp; } Dng 2: Con tr vi mng 1 chiu Trong C, tn ca mt mng l mt hng con tr tr ti a ch ca phn t u tin ca mng. Chng ta c th truy cp ti cc phn t ca mng thng qua a ch ca n bng cch xut pht t a ch phn t ca u tin.

Bi tp lp trnh cn bn SGU2010

Trang 91

Nu a l mng mt chiu th trong mi ng cnh cc cch vit sau l tng ng: a, &a[0]; a+i, &a[i] *(a+i), a[i]; Sau y l mt s v d, y chng ta gii quyt theo hng c cp pht vng nh ng. V d 9-2. Tm s ln nht ca mt dy n s nguyn nhp t bn phm Chng trnh 9-2 #include <alloc.h> #include <iostream.h> #include <conio.h> void nhap(int *a, int n); void timgiatriln(int *a, int n); void main() { clrscr(); int *a,n; cout<<"Nhap so phan tu cua mang :";cin>>n; a=new int [n]; nhap(a,n); timgiatriln(a,n); getch(); } void nhap(int *a, int n) { for (int i=0;i<n;i++) cin>>*(a+i); } void timgiatriln(int *a, int n) {

Bi tp lp trnh cn bn SGU2010 int max=*a; for (int i=1;i<n;i++) if (*(a+i)>max) max=*(a+i); cout<<"Gia tri lon nhat la : "<<max; }

Trang 92

Dng 3: Con tr vi mng hai chiu Nh chng ta ni trong phn mng mt chiu vi con tr. Tn ca mng l mt hng con tr tr n phn t u tin ca mng, da vo phn t u tin ny m c th truy cp n cc phn t khc trong mng. Tuy nhin cn ch rng. Vi mng mt chiu *a=1; *(a+1)=2;*(a+2)=3;*(a+3)=4; v php truy xut a[2] l hp l, tuy nhin ta khng th truy xut a[i][j], m khi phn t dng i ct j ca mng a c truy xut bi *(a+n*i+j). ct 1 dng 0 dng 1 dng 2 2 a0 3 a4 3 a8 ct 1 3 a1 8 a5 1 a9 ct 2 4 a2 4 a6 2 a10 ct 3 6 a3 7 a7 5 a11

Vic cp pht vng nh ng lu tr d liu mng lm trnh lng ph b nh. Chng hn vi khai bo int a[20][50] th my cp pht ng 20*50 = 1000 khi nh 2 byte cho mng a v nu thc t m, n l mt s rt b th mng a vn chim ht 1000 khi nh 2 byte. Vn ny s c khc phc bng cch dng con tr. V d 9-3. Vit chng trnh nhp mng hai chiu, cc phn t l cc s nguyn v mt s nguyn x. Hy m xem trong mng c bao nhiu s bng x? Chng trnh 9-3 #include<conio.h> #include<iostream.h>

Bi tp lp trnh cn bn SGU2010 #include<stdio.h> #include<alloc.h> void nhap(int *a,int m, int n); void demsobangx(int *a, int m, int n, int x); void main() { int *a,m,n,x; clrscr(); cout<<"Nhap vao so dong:"; cin>>m; cout<<"Nhap vao so cot:"; cin>>n; a=new int [m*n]; nhap(a,m,n); demsobangx(a,m,n,x); getch(); } void nhap(int *a, int m, int n) { for (int i=0;i<m;i++ ) for (int j=0;j<n;j++ ) cin>>*(a+n*i+j); } void demsobangx(int *a, int m, int n, int x) { cout<<"Nhap vao so x can kiem tra :"; cin>>x; int d=0; for (int i=0;i<m;i++ ) for (int j=0;j<n;j++ ) if (x==*(a+n*i+j))

Trang 93

Bi tp lp trnh cn bn SGU2010 { d++; cout<<i<<" "<<j<<endl; } cout<<"So lan xuat hien cua x la : "<<d; }

Trang 94

C.BI TP BT9-1.Vit cc hm tnh tng, hiu, tch, thng hai s nguyn a,b. Yu cu c s dng i s hm dng con tr. BT9-2.Nhp vo n s nguyn t bn phm.Hy xut ra mn hnh ln lt u tin l cc s chn, sau l cc s l. BT9-3.Nhp vo ma trn m dng n ct. Hy tm dng c tng ln nht. BT9-4.Nhp vo ma trn m dng n ct. Hy sp xp cc ct theo chiu gim dn. BT9-5.Nhp vo ma trn m dng n ct. Hy dch cc ct ca ma trn qua phi 1 v tr. BT9-6.Nhp vo ma trn m dng n ct. Cc phn t l cc s nguyn. a.Hy tnh tng cc phn t trn tng dng b.Hy sp cc dng theo chiu tng dn c.Hy sp xp mng theo chiu tng t tri sang phi v t trn xung di.

Bi tp lp trnh cn bn SGU2010 Chng 10

Trang 95

CHUI
A.TM TT L THUYT 10.1.k t v chui k t K t c t gia hai du nhy n. Chui k t l mt dy cc k t lin tip kt thc bng k t NULL(\0), trn mn hnh s khng nhn thy k t kt thc ny cn trong b nh th n s chim mt byte. Chui k t t trong du nhy kp. Chng hn khai bo bin k t ch v gn k t A cho ch ta lm nh sau: char ch=A; . khai bo bin chui k t ta c th lm nh sau: char* st1=Thanh Pho Ho Chi Minh; hoc char st2[30]=Thanh Pho Ho Chi Minh; 10.2.Nhp xut k t Hm getchar() Dng c mt k t t bn phm v tr v k t . Hm ny lun ch cho n khi gp k t xung dng mi tr v, v vy khi s dng lun phi g thm phm ENTER v s lm pht sinh thm mt k t na vo b nh m bn phm. Khi gi getchar() ln na th s ly k t trong vng m ny. Hm getch() C cng chc nng nh hm getche(), nhng getch() nhp k t m khng hin ra mn hnh, trong khi getche() nhp k t v k t c hin ra mn hnh. Hm putchar() Dng xut mt k t ra mn hnh. 10.3.Nhp/xut chui k t Hm gets(s)

Bi tp lp trnh cn bn SGU2010

Trang 96

Cho nhp t bn phm mt chui k t cho n khi gp k t xung dng th a chui ny vo bin s v thay k t xung dng bng k t NULL (\0) Hm puts(s) Xut chui k t s ra mn hnh. B.CC DNG BI TP V d 10-1. Nhp t bn phm mt chui. Hy vit cc hm thc hin cc cng vic sau (cc cng vic l c lp vi nhau; gi thit thm rng chui khng c khong trng d tha u v cui chui). a.Hy tch mt t bn phi (bn tri) ca chui ?. b.Hy a cc k t u ca mi t thnh ch hoa, cn cc k t khc thnh ch thng. c.m xem chui c bao nhiu t ? Chng trnh 10-1 #include <iostream.h> #include <conio.h> #include <string.h> #include <ctype.h> char *tachtutrai(char *s); char *tachtuphai(char *s); char *chuanhoatu(char *s); int demsotu(char *s); void main() { clrscr(); char *s; s="thanH pHO Ho Chi Minh"; cout<<tachtuphai(s); cout<<chuanhoatu(s); cout<<demsotu(s); getch();

Bi tp lp trnh cn bn SGU2010 } char *tachtutrai(char *s) { return strlen(strrev(strrchr(strrev(s),' ')+1); } char *tachtuphai(char *s) { return strrchr(s,' ')+1; } char *chuanhoatu(char *s) { strlwr(s); for (int i=0;i<strlen(s);i++) if (s[i]==' ' && s[i+1]!=' ' ) s[i+1]=toupper(s[i+1]); if (s[0]!=' ') s[0]=toupper(s[0]); return s; } int demsotu(char *s) { int l=strlen(s),d=0; for (int i=0;i<l;i++) if (s[i]==' ' && s[i+1]!=' ') d++; return d; }

Trang 97

Lu : Vn tch mt t bn tri chui s s c gii quyt nu xc nh c v tr cui +1 ca t bn tri; xc nh c v tr c th s dng vng lp tm hoc cng c th s dng c php sau: strchr(s, ) - s

Bi tp lp trnh cn bn SGU2010

Trang 98

V d 10-2.Cho chui s gm cc t, mi t cch nhau ng mt khong trng (gi s u v cui chui khng c khong trng no d tha, cu ny ch cha cc k t ch ci). Hy vit hm m xem chui s c bao nhiu t c ng hai k t ?
Test 1 Input S=ta ve ta tam ao ta Output: 5 Input S=Dat nuoc toi thon tha giot dan bau Output: 0 Test 2

int demtu2kytu(char *s) { int sotu=0; int demkytu=0; for (int i=0;i<strlen(s);i++) if (s[i]!=' ') demkytu++; else { if (demkytu==2) sotu++; demkytu=0; } if(demkytu==2) sotu++; return sotu; } Cch khc: int demtu2kytu(char s[]) { int l=strlen(s),d=0; for (int i=0;i<l;i++) if (s[i]==' ' && s[i+3]==' ') d++; if (s[2]==' ' || s[2]=='\0') d++; // X l cho t u tin ca chui

Bi tp lp trnh cn bn SGU2010

Trang 99

if (s[l-3]==' ' && s[l]=='\0') d++;// X l cho t cui cng ca chui return d; } V d 10-3.Cho chui s gm cc t, mi t cch nhau ng mt khong trng (gi s u v cui chui khng c khong trng no d tha). Hy vit hm m xem chui s c bao nhiu t bt u bng k t nguyn m ? (cc k t a, u, i, o, e l cc nguyn m).
Test 1 S=ngay xua hoang thi Output: 0 Output: 2 Test 2 S=ao anh sut chi duong ta

int demtu(char s[]) { int l=strlen(s),d=0; for (int i=0;i<l;i++) if (s[i]==' ' && (s[i+1]=='a' ||s[i+1]=='u' || s[i+1]=='i' || s[i+1]=='o' || s[i+1]=='e')) d++; // Kim tra k t u tin if (s[0]=='a' ||s[0]=='u' || s[0]=='i' || s[0]=='o' || s[0]=='e') d++; return d; } VD10-4.Cho bit tn s xut hin ca cc ch ci trong chui (khng k k t trng). Input: Nu nhp vo chui l: abcabdca Ouput: K t a xut hin 3 ln, k t b xut hin 2 ln, k t c xut hin 2 ln, k t d xut hin 1 ln. Chng trnh 10-4 #include <conio.h> #include <iostream.h> #include <string.h> #include <stdio.h> void main()

Bi tp lp trnh cn bn SGU2010 {

Trang 100

char s[255]; gets(s); int l=strlen(s); int d[255]; for (int i=0;i<l;i++) d[s[i]]=0; for (i=0;i<l;i++) d[s[i]]++; for (i=0;i<l;i++) if (d[s[i]]!=0) { cout<<s[i]<<" xuat hien "<<d[s[i]]<<" lan" <<endl; d[s[i]]=0; }

} C.BI TP Vit chng trnh hon chnh cho cc bi tp sau y BT10-1.Cho mt chui S bao gm cc ch ci thng t a n z v k t khong trng (chui S to thnh cc t). Hy vit cc hm thc hin cc cng vic sau: a.m xem trong chui c bao nhiu nguyn m a i o u e ? Bao nhiu ph m ? b.Xut bng m ASCII ca tng k t (khc k t khong trng) trong chui (v d nu chui S l AB CD th kt qu l 65 66 67 68). c.In s lng k t ca mi t trong chui. BT10-2.Vit chng trnh nhp vo mt chui, kim tra xem chui c i xng hay khng? (v d: abccba hay ahdha l cc chui i xng). BT10-3.a.Nhp vo mt cu gm cc t; mi t cch nhau ng mt khong trng. a.Hy tm cc t c di ln nht. b.Hy xut cc t theo chiu o ngc. BT10-4.a.Vit chng trnh nhp mt chui k t. Hy loi b cc khong

Bi tp lp trnh cn bn SGU2010

Trang 101

trng bn tri, cc khong trng bn phi v gia cc t ch gi li ng mt k t khong trng. b.Xut chui S ra mn hnh sao cho mi tng nm trn mt dng v khng c khong trng ng trc t. c.Cho chui S. Hy kim tra xem S c cha k t no khc ngoi cc k t a-z, A-Z v khong trng khng ? Nu c hy xa cc k t ra khi S. BT10-5.a.Sao chp ni dung chui s2 thnh chui s1 (khng s dng cc hm sao chp chui ca C/C++. b.Nhp chui s. Hy xa n k t trong chui s k t v tr th k ca chui s. c.Nhp chui s1, s2. Hy chn s2 vo v tr th k ca s1 BT10-6.Chuyn i s gia cc h m sau: a.H m thp phn v h m La m b.H m thp phn v h m thp lc phn c.H m nh phn v h m thp phn. BT10-7.Cho hai chui s1 v s2. Kim tra xem tt c cc k t ca chui s1 u thuc v chui s2 hay khng ? BT10-8*.Cho hai chui s1 v s2.Tm chui con chung di nht ca s1 v s2 (xu con ny khng nht thit phi l cc k t l lin tip). BT10-9.Hy c ting vit khng du mt s nguyn 0. V d: Input: 2010 Ouput : Hai nghin khong tram muoi. BT10-10.Cho s nguyn khng m < 1000 t. Hy lp du chm (.) phn cch gia cc lp. V d: Input: s=2010101090 Output : 2.010.101.090

Bi tp lp trnh cn bn SGU2010 Chng 11

Trang 102

KIU CU TRC
A.TM TT L THUYT 11.1.Kiu d liu cu trc Kiu d liu cu trc l kiu cu trc do ngi dng nh ngha, c cu trc l mt mng nhiu phn t; mi phn t c th c nhiu thnh phn, mi thnh phn ny thuc v mt kiu d liu no , kiu d liu ny c th l kiu d liu chun hay cng c th l kiu d liu cu trc m ngi lp trnh nh ngha trc . V d v mt bng tnh lng n gin TT 1 2 3 H v tn Nguyn Vn Thnh Bi Phng Tho L Tun Ngy sinh 12/10/1972 01/01/1981 11/12/1983 Lng c bn 960000 780000 750000 thng 1200000 1200000 1200000 Thc lnh 2160000 1980000 1950000

Nhn vo bng ny, ta thy rng d liu gm nhiu phn t (dng), mi dng l tp hp nhiu thnh phn con, mi thnh phn ny thuc v mt kiu d liu no . Nh th ta c th ni rng:kiu d liu cu trc l mt s m rng ca kiu d liu mng m mi phn t ca mng lc ny c nhiu thnh phn. 11.2.Khai bo cu trc- Khai bo bin cu trc inh ngha mt kiu d liu c cu trc mi struct tn_kiu_cu_trc { //khai bo cc thnh phn ca cu trc <kiu d liu> <tn thuc tnh 1> <kiu d liu> <tn thuc tnh 2> <kiu d liu> <tn thuc tnh 3> } [tn bin cu trc];

Bi tp lp trnh cn bn SGU2010

Trang 103

Trong struct l t kha, tn_kiu_cu_trc l mt tn bt k do ngi lp trnh t t, thnh phn ca cu trc c th l : bin, mng,. . . hoc mt cu trc khc m kiu ca n c nh ngha t trc. chng hn sau y l cu trc ca bng lng trn struct HOSO { char hoten [30]; struct ngaysinh long luongcoban long thuong; long thuclanh; }; thnh phn ca cu trc c th c kiu l mt cu trc c nh ngha trc. Chng hn v d sau: struct NGAY { int ngay; int thang; int nam; }; struct HOSO { char hoten [30]; struct NGAY ns; long LCB; long thuong; long thuclanh; }; Khai bo bin c cu trc <kiu cu trc> <tn bin cu trc>

Bi tp lp trnh cn bn SGU2010 Chng hn: hoadon hoadon

Trang 104

temp; * mh;

11.3.Truy xut n tng thnh phn ca cu trc 11.3.1.Bin cu trc c khai bo tnh Vi cu trc n tn bin cu trc.tn thnh phn V d: nv[i].hoten; nv[i].thuong; Vi cu trc kp Tn bin cu trc.tn bin cu trc.tn thnh phn c dng khi bin hoc mng l thnh phn trc tip ca mt cu trc m bn thn cu trc ny li l thnh phn ca mt cu trc ln hn. nv[i]. ns.ngay; nv[i]. ns.thang; nv[i]. ns.nam; 11.3.2.Bin cu trc c khai bo ng tn bin cu trc tn thnh phn. Nu dng con tr kiu cu trc (mh+i))->mahang; (mh+i)->dongia; B.CC DNG BI TP Dng 1.Mt s bi ton hnh hc V d 11-1. Trong mt phng ta OXY cho 3 im O,A,B. trong O c ta (0;0), A c ta (x,y) vi x,y l hai s nguyn dng v B c ta (z;0) vi z l s nguyn dng. Vit chng trnh m s im c ta nguyn nm bn trong tam gic OAB khng m cc im trn cnh. Thut ton

Bi tp lp trnh cn bn SGU2010

Trang 105

Tm hnh ch nht nh nht bao tam gic OAB; hnh ch nht ny c cc cnh song song vi cc trc ta v c nh di tri l (0,0) v nh trn phi l (max(x,z),y). Sau duyt tng dim trong hnh ch nht ny, im no nm trong tam gic OAB th s c m tng l 1. Lu : im M nm trong tam gic OAB, nu SDMOA + SDMOB + SDMAB = SDOAB. Chng trnh 11-1 #include <math.h> #include <iostream.h> struct toado { int x; int y; }; void nhap(toado &A,toado &B, toado &O); double kc(toado A, toado B); double dientich(toado A, toado B, toado C); int diemnamtrong(toado A, toado B, toado O, toado M); int max(int x, int y); void dem(toado A, toado B, toado O); void main() { toado A,B,O; nhap(A,B,O); dem(A,B,O); } void nhap(toado &A,toado &B, toado &O) { cout<<"\nNhap toa do diem A : ";cin>>A.x>>A.y; cout<<"\nNhap hoanh do diem B: ";cin>>B.x;\

Bi tp lp trnh cn bn SGU2010 cout<<"\nTung do diem B la 0"; cout<<"\nToa do diem O la (0,0)"; B.y=0; O.x=0; O.y=0;

Trang 106

} double kc(toado A, toado B) { return sqrt((B.x - A.x)*(B.x-A.x) + (B.y - A.y)*(B.y - A.y)); } int thuoccanh(toado A, toado B, toado M) { return fabs(kc(A,M)+kc(B,M)-kc(A,B))<=1.E-6; } double dientich(toado A, toado B, toado C) { double a=kc(B,C); double b=kc(A,C); double c=kc(A,B); double p=(a+b+c)/2; double s=sqrt(p*(p-a)*(p-b)*(p-c)); return s; } int diemnamtrong(toado A, toado B, toado O, toado M) { if (!thuoccanh(O,A,M) && !thuoccanh(O,B,M) && !thuoccanh(A,B,M)) if (fabs(dientich(M,A,B)+dientich(M,A,O)+dientich(M,B,O)dientich(A,B,O))<=1.E-6) return 1; return 0; }

Bi tp lp trnh cn bn SGU2010

Trang 107

int max(int x, int y) { return x>y?x:y; } void dem(toado A, toado B, toado O) { toado M; int maxx=max(A.x,B.x); int d=0; for (int i=0;i<=maxx;i++) for (int j=0;j<=A.y;j++) { M.x=i;M.y=j; if (diemnamtrong(A,B,O,M)) d++; } cout<<"\nSo diem co toa do nguyen nam trong tam giac OAB la : "<<d; }
Cc b test mu Test 1 2 3 x 0 5 10 y 4 4 9 z 4 4 1 Kt qu 3 6 0

V d 11-2.Cho mng mt chiu gm n ta im, ta im l cc s nguyn. a.Hy tm mt im trong mng xa gc ta nht. b.Hy tm ta hai im gn nhau nht. V d n = 5 v ta 5 im l: (0,0); (0,3); (3,3); (4,1); (4,4). Th kt qu cu a l im (4,4) v kt qu cu b l (3,3) v (4,4) Chng trnh 11-2 #include <conio.h> #include <math.h>

Bi tp lp trnh cn bn SGU2010 #include <iostream.h> #include <stdio.h> struct toado { int x; int y; }; void nhap(toado diem[], int &n); float khoangcach(int xa, int ya, int xb, int yb); void diemxagoc(toado diem[], int n); void haidiemgannhau(toado diem[], int n); void main() { clrscr(); int n; toado diem[100]; nhap(diem,n); diemxagoc(diem,n); haidiemgannhau(diem,n); getch(); } void nhap(toado diem[], int &n) { cout<<"\nNhap so diem :";cin>>n; for (int i=0;i<n;i++) { cout<<"nhap hoanh do : ";cin>>diem[i].x; cout<<"nhap tung do : ";cin>>diem[i].y; } } float khoangcach(int xa, int ya, int xb, int yb)

Trang 108

Bi tp lp trnh cn bn SGU2010 { return sqrt((xb-xa)*(xb-xa)+(yb-ya)*(yb-ya));

Trang 109

} void diemxagoc(toado diem[], int n) { toado M; float kc=0; for (int i=0;i<n;i++) if (khoangcach(diem[i].x, diem[i].y,0,0)>kc) { kc=khoangcach(diem[i].x, diem[i].y,0,0); M.x=diem[i].x; M.y=diem[i].y; } cout<<"\nDiem xa goc toa do nhat co toa do:"<<M.x<<","<<M.y; } void haidiemgannhau(toado diem[], int n) { float kc=32767; toado M,N; for (int i=0;i<n-1;i++) for (int j=i+1;j<n;j++) if (khoangcach(diem[i].x, diem[i].y,diem[j].x, diem[j].y)<kc) { kc=khoangcach(diem[i].x, diem[i].y,diem[j].x, diem[j].y); M.x=diem[i].x; M.y=diem[i].y; N.x=diem[j].x; N.y=diem[j].y; }

Bi tp lp trnh cn bn SGU2010

Trang 110

cout<<"\nHai diem gan nhau nhat la: "<<M.x<<","<<M.y<<" va "<<N.x<<","<<N.y; } V d 11-3.Vit chng trnh cng hai phn s. Yu cu phn s kt qu phi dng ti gin. Chng trnh 11-3 #include <iostream.h> #include <conio.h> struct phanso { int tu; int mau; }; void nhapps(phanso &ps); void xuatps(phanso ps); phanso congps( phanso ps1, phanso ps2); int uscln(int a, int b); void main() { clrscr(); phanso ps1,ps2; nhapps(ps1); nhapps(ps2); xuatps(congps(ps1,ps2)); getch(); } void nhapps(phanso &ps) { cout<<"Nhap vao tu so : "; cin>>ps.tu;

Bi tp lp trnh cn bn SGU2010 cout<<"Nhap vao mau so : "; cin>>ps.mau; }

Trang 111

void xuatps(phanso ps) { int uc=uscln(ps.tu,ps.mau); ps.tu=ps.tu/uc; ps.mau=ps.mau/uc; cout<<"Ket qua: "<<ps.tu<<"/"<<ps.mau<<endl; } phanso congps( phanso ps1, phanso ps2) { phanso ps; ps.tu=ps1.tu*ps2.mau+ps2.tu*ps1.mau; ps.mau=ps1.mau*ps2.mau; return ps; } int uscln(int a, int b) { int r=a%b; while (r!=0) { a=b;b=r;r=a%b; } return b; } V d 11-4.Cho mng 1 chiu cc phn s (t s v mu s l cc s nguyn). a.Hy tm phn s c gi tr ln nht. b.Sp xp cc phn s theo chiu tng dn Chng trnh 11-4 #include <conio.h> #include <math.h>

Bi tp lp trnh cn bn SGU2010 #include <iostream.h> #include <stdio.h> struct phanso { int tu; int mau; }; void nhapmangps(phanso ps[], int &n); void xuatmangps(phanso ps[], int &n); int sosanhps(phanso ps1, phanso ps2); void timpslonnhat(phanso ps[], int n); void hoanvi(phanso &ps1, phanso &ps2); void sapxepmangps(phanso ps[], int n); void main() { clrscr(); phanso ps[100];int n; nhapmangps(ps,n); timpslonnhat(ps,n); sapxepmangps(ps,n); xuatmangps(ps,n); getch(); } void nhapmangps(phanso ps[], int &n) { cout<<"Nhap so luong phan so n = ";cin>>n; for (int i=0; i<n;i++) { cout<<"Nhap phan so thu "<<i<<":"<<endl; cin>>ps[i].tu; cin>>ps[i].mau;

Trang 112

Bi tp lp trnh cn bn SGU2010 }

Trang 113

} void xuatmangps(phanso ps[], int &n) { cout<<endl; for (int i=0; i<n;i++) cout<<ps[i].tu<<"/"<<ps[i].mau<<";"; } int sosanhps(phanso ps1, phanso ps2) { if (ps1.tu*ps2.mau>ps2.tu*ps1.mau>0) return 1; else if (ps1.tu*ps2.mau>ps2.tu*ps1.mau<0) return -1; else return 0; } void timpslonnhat(phanso ps[], int n) { phanso psmax; psmax.tu=ps[0].tu; psmax.mau=ps[0].mau; for (int i=1; i<n;i++) if (sosanhps(ps[i],psmax)>0) psmax=ps[i]; cout<<"\nPhan so lon nhat la : "<<psmax.tu<<"/"<<psmax.mau; } void sapxepmangps(phanso ps[], int n) { for (int i=0;i<n-1;i++)

Bi tp lp trnh cn bn SGU2010 for (int j=i+1;j<n;j++) if (sosanhps(ps[i],ps[j])>0) hoanvi(ps[i],ps[j]);

Trang 114

} void hoanvi(phanso &ps1, phanso &ps2) { phanso temp; temp=ps1; ps1=ps2; ps2=temp; } V d 11-5. Cho mt danh sch lu thng tin ca cc th sinh khi thi tuyn vo lp 10 vi ba mn thi l Ton, Vt L v Anh Vn, thng tin gm : - S bo danh (chui, ti a 8 k t) - H tn (chui, ti a 20 k t) - im mn Ton (s nguyn) - im mn Vt l (s nguyn) - im mn Anh Vn (s nguyn) Hy thc hin yu cu sau: a.Hy in ln mn hnh nhng th sinh c im tng 18 v khng c mn no di im 5; danh sch ny phi c sp theo th t im tng gim dn. b.Xa h s th sinh c s bo danh l x. c.Cp nht im thi ca mt th sinh c s bo danh l y (l chui k t) theo cc gi tr mi nhp t bn phm. Chng trnh 11-5 #include <iostream.h> #include <string.h> #include <stdio.h> #include <conio.h> struct diem {

Bi tp lp trnh cn bn SGU2010 char char int int int int sobd[8]; hoten[20]; toan; ly; anhvan; tong;

Trang 115

}; void nhap(diem hs[], int &n); void xuat(diem hs[], int n); void sapxep(diem hs[], int n); void xuatkq(diem hs[], int n); void xoahoso(diem hs[], int &n); void capnhathoso(diem hs[], int n); void main() { diem hs[100]; int n; nhap(hs,n); xuat(hs,n); sapxep(hs,n); xuatkq(hs,n); xoahoso(hs,n); xuat(hs,n); capnhathoso(hs,n); xuat(hs,n); } void nhap(diem hs[], int &n) { cin>>n; for (int i=0;i<n;i++) {

Bi tp lp trnh cn bn SGU2010 cout<<"So bao danh: "; flushall(); gets(hs[i].sobd); cout<<"Ho va ten: "; flushall(); gets(hs[i].hoten); cout<<"Diem toan:";cin>>hs[i].toan; cout<<"Diem ly:";cin>>hs[i].ly; cout<<"Diem anh van:";cin>>hs[i].anhvan; hs[i].tong=hs[i].toan+hs[i].ly+hs[i].anhvan; cout<<endl; }

Trang 116

} void xuat(diem hs[], int n) { cout<<"\nBang diem:\n"; for (int i=0;i<n;i++) cout<<hs[i].sobd<<hs[i].hoten<<hs[i].toan<<hs[i].ly<<hs[i].anhva n<<endl; } void sapxep(diem hs[], int n)// cau 1 - Sap xep { for (int i=0;i<n-1;i++) for (int j=i+1;j<n;j++) if (hs[i].tong<hs[j].tong) { diem temp=hs[i]; hs[i]=hs[j]; hs[j]=temp; } }

Bi tp lp trnh cn bn SGU2010

Trang 117

void xuatkq(diem hs[], int n)//cau 1 - Xuat ket qua { cout<<"\nBang diem da sap xep:\n"; for (int i=0;i<n;i++) if (hs[i].tong>=18 && hs[i].toan>=5 && hs[i].ly>=5 && hs[i].anhvan>=5) cout<<hs[i].sobd<<hs[i].hoten<<hs[i].toan<<hs[i].ly<<hs[i].anhva n<<endl; } void xoahoso(diem hs[], int &n)// cau 2 { char *x; cout<<"Nhap so bao danh can xoa :"; gets(x); int k=0; while (k<n && strcmp(hs[k].sobd,x)!=0) k++; for (int i=k;i<n-1;i++) hs[i]=hs[i+1]; n--; } void capnhathoso(diem hs[], int n)// cau 3 { char *y; cout<<"Nhap so bao danh can sua :"; gets(y); int k=0; while (k<n && strcmp(hs[k].sobd,y)!=0) k++; cout<<"Diem toan:";cin>>hs[k].toan; cout<<"Diem ly:";cin>>hs[k].ly; cout<<"Diem anh van:";cin>>hs[k].anhvan; hs[k].tong=hs[k].toan+hs[k].ly+hs[k].anhvan; }

Bi tp lp trnh cn bn SGU2010
Cc b test mu Sobd 09001 09002 09003 09004 Kt qu: a. sobd 09002 09001 hoten Le Thi Binh Nguyen Van Thanh toan 6 6 ly 5 7 hoten Nguyen Van Thanh Le Thi Binh Nguyen Van An Tran Van Giau toan 6 6 9 5 ly 7 5 8 5

Trang 118

Hoa 5 10 4 5

Hoa 10 5

b.Nhp s bo danh cn xa l: 09003, ta c kt qu l: sobd 09002 09001 09004 hoten Le Thi Binh Nguyen Van Thanh Tran Van Giau toan 6 6 5 ly 5 7 5 Hoa 10 5 5

c.Nhp s bo danh cn sa l: 09004, v sa cc im thi ca th sinh ny ln lt l 6 6 5 ta c kt qu l: sobd 09002 09001 09004 hoten Le Thi Binh Nguyen Van Thanh Tran Van Giau toan 6 6 6 ly 5 7 6 Hoa 10 5 5

C.BI TP Vit chng trnh hon chnh cho cc bi ton sau y BT11-1.Trong mt phng ta OXY cho n im xi,yi (i=1..n). a.Hy cho bit tn s xut hin ca cc im. b.Hy cho bit c bao nhiu im nm trong phn t th nht. BT11-2.Cho ma trn m dng, n ct mi phn t l mt phn s ( t s v mu s l cc s nguyn). a.Hy tm phn s c gi tr ln nht. b.m s lng phn s ti gin c.In danh sch cc phn s c gi tr ln hn 0 v nh hn 1.

Bi tp lp trnh cn bn SGU2010

Trang 119

BT11-3.Trong mt phng ta OXY, cho mng mt chiu gm n ng thng. a.Hi n ng thng ny c song song vi nhau hay khng ? b.Cho im P, hy tm cc ng trn gn im P nht. BT11-4.Cho ma trn m dng, n ct cc phn t l cc phn s c t s v mu s l cc s nguyn. Hy sp xp ma trn theo chiu tng dn t trn xung di v t tri qua phi. BT11-5a.Trong mt phng ta OXY cho 4 im A, B, C, D ln lt c ta l (xa,ya), (xb,yb), (xc,yc), (xd,yd). Hy kim tra xem hai on thng AB v CD c ct nhau hay khng ? BT11-5.b.Trong mt phng ta OXY cho ba im A(xa,ya); B(xb,yb), C(xc,yc) v mt im M(xm,ym). Hy xc nh xem M nm trong, nm ngoi hay nm trn bin ca tam gic ABC ? BT11-6.Cho n hnh ch nht c cc cnh song song vi cc trc ta , mi hnh ch nht bit to di tri, trn phi l x1[i],y1[i],x2[i],y2[i] (i=1..n). Hy tnh din tch ca hnh c ph bi N hnh trn. BT11-7.Cho mt danh sch lu thng tin ca cc nhn vin trong mt cng ty, thng tin gm : - M nhn vin (chui, ti a l 8 k t) - H v tn (chui, ti a l 20 k t) - Nm sinh (s nguyn) - Phng ban (chui, ti a 10 k t) - Lng c bn (s nguyn) - Thng (s nguyn) - Thc lnh (s nguyn, trong thc lnh = lng c bn + thng ) Hy thc hin yu cu sau: a.Tnh tng thc lnh thng ca tt c nhn vin trong cng ty. b.In danh sch nhng nhn vin c mc lng c bn thp nht. c.m s lng nhn vin c mc thng >= 1200000. d.In danh sch cc nhn vin tng dn theo phng ban, nu phng ban trng nhau th gim dn theo m nhn vin.

Bi tp lp trnh cn bn SGU2010

Trang 120

e.Cp nht tng lng ca tt c cc nhn vin ln 5% BT11-8. Vit chng trnh thc hin cc cng vic sau: a.Nhp thng tin v mt ho n bn hng vi cc thng tin: m mt hng, tn mt hng, n gi, s lng. b.Hy in ho n vi cc thng tin: m mt hng, tn mt hng, n gi, s lng., thnh tin, trong ct thnh tin = n gi*s lng. c.Hy tm nhng mt hng c n gi cao nht. d.Hy sp xp mt hng theo chiu tng dn ca ct tn hng. BT11-9.Vit chng trnh thc hin cc cng vic sau: a.Nhp vo h s ca n nhn vin vi cc thng tin: H v tn, ngy sinh, lng c bn, thng, thc lnh, trong thc lnh = lng c bn + thng b.In danh sch nhn vin theo bc lng gim dn BT11-10.Vit chng trnh nhp vo h v tn (chui khng qu 35 k t) v im s (s nguyn t 0 n 10) ca N th sinh (10<N<=300). Tnh v xut bng xp hng (gm 3 ct: h v tn, im s v hng) cc th sinh theo 2 cch xp hng sau: Quy tc chung cho c 2 cch xp hng: -Cc th sinh c cng im s s c cng hng -Nu th sinh A c im s cao hn th sinh B th hng ca th sinh A cao hn hng ca th sinh B (c s th t nh hn). Xp hng theo cch 1:Hng c nh lin tc t 1 n k vi k l s nhm cc th sinh c cng im s. Xp hng theo cch 2:Hng c nh t 1 n N (khng nht thit lin tc) theo quy tc: nu c m th sinh hng k th hng k tip l m+k (k>=1).

Bi tp lp trnh cn bn SGU2010 Chng 12

Trang 121

FILE
A.TM TT L THUYT 12.1.Khi nim Cc d liu ta kho st iu hin din trong b nh ram khi khi ng chng trnh, nhng khi chm dt chng trnh cc d liu b xo mt, v vy vic lu tr lu di hoc s dng li d liu khng thc hin c. Chng ny s trnh by cc thao tc cn thit nht i vi cc loi file vn bn v file nh phn gii quyt c vn . Chng ny rt hu ch cho cc vn bi ton cn x l d liu vo/ra t file nh cc thut ton trong cc hc phn cu trc d liu, h iu hnh, tr tu nhn to,... 12.2. Khai bo con tr file Khi thao tc vi cc file d liu, chng ta thng khng thao tc trc tip ln cc file d liu m thng qua mt vng m ca file l mt phn ca b nh. qun l cc vng m ca cc file d liu ny th C s dng cc con tr kiu FILE. Cch khai bo cc con tr qun l file nh sau: FILE * <filepointer>; Trong filepointer l tn bin con tr kiu FILE. 12.3.Mt s hm x l file vn bn thng dng 12.3.1.M tp tin FILE *fopen (const char * filename, const char *mode); Lnh ny c tc dng m mt file c tn l filename theo cch thc quy nh trong mode. Trong : -filename l mt chui gm y c ng dn, tn tp tin v phn m rng (nu khng c ng dn th ng dn mc nhin l th mc hin hnh. Khi nh ng dn cn dng hai du \\) -mode nhn cc gi tr l wt khi cn m file mi ghi theo kiu vn bn (nu file tn ti n s b xo) cn rt cho bit m mt file c theo kiu vn bn.

Bi tp lp trnh cn bn SGU2010

Trang 122

12.3.2.ng tp tin void fclose (FILE * filepointer); Lnh ny c tc dng ng file vn bn tng ng vi filepointer. Lnh ny thng c s dng sau khi kt thc vic c hoc ghi file. 12.3.3.a d liu vo tp tin void fprintf (FILE * filepointer,const char formattext, varname ); Lnh ny c tc dng a d liu varname - ng vi nh dng formattext vo file ang m c qun l bi con tr file c tn l filepointer. Chng hn nu mun ghi s nguyn x vo file c filepointer l f ta thc hin cu lnh nh sau: fprintf(f,%d,x); Nu mun ghi mt dng trng vo file c filepointer l f th ta thc hin cu lnh nh sau: fprintf(f,"\n"); 12.3.4.c d liu t tp tin void fscanf (FILE *filepointer, &varname); Lnh ny c d liu ti v tr con tr file v a gi tr vo varname. Nu c nhiu varname, th chng cch nhau bi mt du phy. int feof (filepointer); Lnh ny nhn gi tr l khc 0 khi con tr file filepointer cha c t cui file. B.CC DNG BI TP Dng 1: File vn bn vi mng mt chiu cc s nguyn V d 12-1.Vit chng trnh ghi n s nguyn ngu nhin vo file c tn l songuyen.inp, mi dng 10 s. Sau c file ny v a cc s nguyn vo mng mt chiu. Chng trnh 12-1 #include<stdio.h> #include<conio.h> #include<stdlib.h> void ghi_file(int n)

Bi tp lp trnh cn bn SGU2010 { FILE *f; int i,d=0; randomize(); f=fopen("songuyen.inp","wt"); for (i=1;i<=n;i++) { fprintf(f,"%6d",rand()); d++; if (d % 10==0) fprintf(f,"\n"); } fclose(f); } void doc_file() { FILE *f; int n=0; int a[10000]; f=fopen("songuyen.inp","rt"); while (!feof(f)) { n++; fscanf(f,"%d",&a[n]); } fclose(f); printf("%d",n); } void main() { clrscr();

Trang 123

Bi tp lp trnh cn bn SGU2010 int n; cin>>n; ghi_file (n); doc_file(); getch(); }

Trang 124

Dng 2:File vn bn vi mng hai chiu cc s nguyn V d 12-2.Vit chng trnh to file vn bn c tn l matran.inp c cu trc nh sau: -Dng u ghi hai s m,n. -Trong m dng tip theo mi dng ghi n s cc s cch nhau t nht mt khong trng. Hy kim tra xem trong file c bao nhiu s nguyn t? kt qu cn ghi vo file matran.out vi ni dung l mt s nguyn duy nht l s lng cc s nguyn t trong file matran.inp. Chng trnh 12-2 #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <iostream.h> #define max 20 void docfile(); void ghiramang(); int ktsnt(int n); void demsont(); void ghirafile(); int a[max][max],m,n; int slnt=0; void main() { docfile();

Bi tp lp trnh cn bn SGU2010 ghiramang(); demsont(); ghirafile(); } //tao file ngau nhien void docfile() { clrscr(); file *f; f=fopen("matran.inp","wt"); cout<<"nhap vao so dong m="; cin>>m; cout<<"nhap vao so cot n="; cin>>n; randomize(); fprintf(f,"%4d%4d\n",m,n); for (int i=0;i<m;i++) { for (int j=0;j<n;j++) fprintf(f,"%4d",random(100)); fprintf(f,"\n"); } fclose(f); } //ghi file ra mang void ghiramang() { file *f; f=fopen("matran.inp","rt"); fscanf(f,"%d%d",&m,&n); for (int i=0;i<m;i++)

Trang 125

Bi tp lp trnh cn bn SGU2010 for (int j=0;j<n;j++) fscanf(f,"%4d",&a[i][j]); fclose(f); } int ktsnt(int n) { // hm ny c cc chng trc } void demsont() { for (int i=0;i<m;i++) for (int j=0;j<n;j++) if (ktsnt(a[i][j])) slnt++; } void ghirafile() { file *f; f=fopen("matran.out","wt"); fprintf(f,"%4d",slnt); fclose(f); }

Trang 126

Dng 3:File vn bn vi cc k t Hm fputc(int ch, FILE *filepointer) ; ch l mt gi tr nguyn, filepointer l con tr file. Hm ny ghi ln file filepointer mt k t c m bng m=ch%255. Trong ch c xem l mt s nguyn khng du. Nu thnh cng hm cho m k t c ghi, tri li hm cho gi tr EOF. V d 12-3.Chng trnh to mt file s nguyn cha 255 k t ch ci ngu nhin (k t ch thng) mi dng 10 k t. Chng trnh 12-3 #include <stdio.h>

Bi tp lp trnh cn bn SGU2010

Trang 127

#include <stdlib.h> void main() { FILE *f; char ch; randomize(); f=fopen("filechar.inp","wt"); for (int i=1;i<=255;i++) { fputc(random(25)+97,f); fputc(' ',f); if (i%10==0) fprintf(f,"\n") ; } fclose(f); } Lu khi f c m theo kiu vn bn th th k t xung dng \n c ghi thnh 2 m 13 v 10. Do vi v d trn, khi ch x cc k t khc k t khong trng v tt nhin c k t cui mi dng th iu kin l: ch!=32 && ch!=13 && ch!=10 Hm fgetc(FILE *filepointer) Hm c mt k t t file filepointer. Nu thnh cng hm cho m c c(c gi tr t 0 n 255). Nu gp cui file hay c li hm cho gi tr EOF. V d 12-4.c tng k t trong file v xut ra mn hnh Chng trnh 12-4 #include <stdio.h> void main() { FILE *f; char ch; f=fopen("filechar.inp","rt"); while (!feof(f))

Bi tp lp trnh cn bn SGU2010 { ch=fgetc(f); putchar(ch); } fclose(f); }

Trang 128

Dng 4:File vn bn vi chui k t int fputs(const char*s, FILE * filepointer); Trong : -s l con tr tr ti a ch u ca mt chui k t kt thc bng \0 -filepointer l con tr file. Lnh ny c tc dng ghi chui s ln file filepointer (du \0 khng ghi ln file). Khi thnh cng, hm ny tr v k t cui cng c ghi ln file. Khi c li hm s cho gi tr EOF. Thng khi ghi nhiu dng, mi phn t trn mi dng th vic ghi mt du kt thc dng c th s dng lnh fputc (10,f) hoc c php fprintf(f,\n) nh c trnh by trong nhng phn trc. V d 12-5.To mt file cha n chui, mi chui c ghi trn mt dng. Chng trnh 12-5 #include <conio.h> #include <iostream.h> #include <stdio.h> void main() { clrscr(); char *s; FILE *f; int n; f=fopen("chuoi.inp","wt"); cin>>n; for (int i=1;i<=n;i++) {

Bi tp lp trnh cn bn SGU2010 gets(s); fputs(s,f); fprintf(f,"\n"); } fclose(f); getch(); }

Trang 129

char *fgets(char *s, int n, FILE *filepointe) Trong : -s l con tr kiu char tr ti mt vng nh ln cha chui k t c t file -n l s nguyn xc nh di cc i ca dy cn c. Lnh ny c tc dng c mt dy k t t file filepointe cha vo vng nh s. Vic c s kt thc khi: hoc c n-1 k t hoc gp du xung dng (cp m 13 v 10). Khi m 10 c a vo chui kt qu hoc l kt thc file. Chui kt qu s c b sung thm du hiu kt thc chui \0. Khi thnh cng, hm tr v a ch vng nhn kt qu. Khi c li hoc gp cui file hm cho gi tr NULL. V d 12-6. c mt file chuoi.inp cha mi chui trn mt dng. Chng trnh 12-6 #include <conio.h> #include <stdio.h> void main() { clrscr(); char *s; FILE *f; f=fopen("chuoi.inp","rt"); while (!feof(f)) { fgets(s,80,f);

Bi tp lp trnh cn bn SGU2010 puts(s); } fclose(f); getch(); }

Trang 130

Dng 5:File nh phn cha cc s nguyn Hm putw: ghi mt s nguyn int putw(int n, FILE *filepointe); Trong : n l gi tr nguyn Cng dng: Ghi gi tr n ln file filepointe, nu thnh cng hm tr v s nguyn c ghi, khi c li hm tr v EOF. Hm getw: c mt s nguyn int getw(FILE *filepointe); Cng dng: c mt s nguyn t file filepointe, nu thnh cng hm tr v s nguyn c c, khi c li hoc gp cui file hm tr v EOF. V d 12-7.S dng hm putw ghi 100 s nguyn t 1 n 100 ln file songuyen.inp v sau s dng hm getw c file songuyen.inp v in cc s nguyn ln mn hnh. Chng trnh 12-7 #include <stdio.h> void main() { FILE *f; f=fopen("songuyen.inp","wb"); for (int i=1;i<=100;i++) putw(i,f); fclose(f); f=fopen("songuyen.inp","rb"); while ((i=getw(f))!=EOF) printf("%4d",i) ; }

Bi tp lp trnh cn bn SGU2010

Trang 131

Dng 6:File nh phn vi d liu c cu trc Hm fwrite ghi cc mu tin ln file int fwrite(void *ptr, int size, int n, FILE *filepointer); Trong : ptr l con tr tr ti vng nh cha d liu cn ghi, size l kch thc ca mu tin theo byte, n l s mu tin cn ghi, filepointer l con tr file/ Cng dng : Ghi n mu tin kch thc size byte t vng nh ptr ln file filepointer. Hm tr v mt gi tr bng s mu tin thc s ghi c. Hm fread : c cc mu tin t file int fwrite(void *ptr, int size, int n, FILE *filepointer); Trong : ptr l con tr tr ti vng nh cha d liu c c, size l kch thc ca mu tin theo byte, n l s mu tin cn c, filepointer l con tr file Cng dng : c n mu tin kch thc size byte t file filepointer vo vng nh ptr. Hm tr v mt gi tr bng s mu tin thc s c c. Cc hm fwrite, fread thng c s dng c v ghi cc i tng d liu c cng ln nh cu trc, s thc. V d 12-8.To mt file cha n phn s (c t s v mu s l cc s nguyn), sau c cc phn s v xut ln mn hnh. Chng trnh 12-8 #include <stdio.h> #include <iostream.h> #include <stdlib.h> #include <conio.h> struct phanso

Bi tp lp trnh cn bn SGU2010 { int tuso; int mauso; }; phanso ps; void main() { clrscr(); FILE *f; f=fopen("phanso.inp","wb"); int n; cin>>n; for (int i=1;i<=n;i++) { cin>>ps.tuso>>ps.mauso; fwrite(&ps,sizeof(ps),1,f); } fclose(f); f=fopen("phanso.inp","rb"); while (fread(&ps,sizeof(ps),1,f)) printf("\n%d/%d",ps.tuso,ps.mauso); fclose(f); }

Trang 132

C.BI TP BT12-1.a.Cho mt file cha cc k t; mi k t cch nhau ng mt khong trng. Hy to ra file cha m ASCII ca tng k t , mi dng ghi 10 s. b.Cho file cha n chui, mi chui trn mt dng. Hy to file cha cc dng (chui) cha 2 t Sai Gon. c.Cho file cha n s thc <1000. Mi s thc c ng 2 s phn thp phn. Hy a vo file khc cc s thc l s chnh phng. d..S chnh phng

Bi tp lp trnh cn bn SGU2010

Trang 133

Vit chng trnh to mt file vn bn c tn l SONGUYEN.INP cha 10000 s nguyn ngu nhin trong khong t 1 n 32767, mi dng ghi 10 s. Hy lu cc s chnh phng trong file SONGUYEN.INP vo file vn bn SONGUYEN.OUT. e.Cho mt file cha cc k t, mi k t cch nhau t nht mt khong trng. Hy cho bit tn s xut hin ca cc k t. BT12-2.Dy s Vit chng trnh to mt file vn bn c tn l DAYSO.INP c cu trc nh sau: -Dng u tin ghi n (n l s nguyn dng nhp t bn phm). -Trong cc dng tip theo ghi n s nguyn ngu nhin trong phm vi t 0 n 100, mi dng 10 s (cc s cch nhau t nht mt du cch). Hy c/lu d liu ca file DAYSO.INP vo mng mt chiu a v thc hin cc cng vic sau y: a.Tm gi tr ln ln nht ca mng A. b.m s lng s chn, s lng s l ca mng A. c.Hy sp xp sao cho cc s nguyn t trong mng tng dn, cc s khc gi nguyn gi tr v v tr. Hy ghi cc kt qu trn vo file vn bn c tn l DAYSO.OUT theo mu sau:

DAYSO.INP 18 87 39 78 19 89 4 40 98 29 65 20 43 1 99 38 34 58 4

DAYSO.OUT Cau a: 99 cau b: 9 9 cu c: 87 39 78 19 29 4 40 98 43 65 20 89 1 99 38 34 58 4

BT12-3.Ma trn Vit chng trnh to file vn bn c tn l MATRAN.INP c cu trc nh sau: -Dng u tin ghi hai s m v n (m, n l cc s nguyn dng nhp t bn phm)

Bi tp lp trnh cn bn SGU2010

Trang 134

-Trong m dng tip theo mi dng ghi n s nguyn ngu nhin trong phm vi t 0 n 50 (cc s cch nhau t nht mt du cch) Hy c d liu ca file MATRAN.INP v lu vo mng hai chiu a Hy thc hin cc cng vic sau: a.Hy cho bit cc dng c cha s nguyn t (cc dng c nh s t 0 n m-1. b.Hy tnh tng cc phn t trn mi dng.. Hy ghi cc kt qu trn vo file vn bn c tn l MATRAN.OUT theo nh mu trong v d sau: MATRAN.INP MATRAN.OUT

6 6 40 16 33 24 12 1 44 24 23 49 5 24 33 20 17 25 33 19 0 48 45 48 41 32 10 24 36 19 19 24 30 4 24 26 27 36

Cau a: 1,2,3,4 Cau b: 126 169 147 214 132 147

BT12-4.Chui i xng Mt chui c gi l i xng nu n khng t hn mt k t v nu ta c t tri sang phi hay t phi sang tri u c kt qu ging nhau. V d:A ; TET ; CAOOAC l cc chui i xng. Vit chng trnh nhp vo mt chui k t S, c chiu di n (1 n 1000). Hy cho bit chiu di chui con i xng di nht. Chui con ca S l chui gm mt s k t lin tip nhau trong S c di nh hn hoc bng n. D liu vo c cho trong tp tin vn bn CHUOI.INP gm 2 dng. -dng u ghi s n -dng sau ghi n k t lin tip gm cc ch ci in hoa (A Z) D liu ra cn c ghi vo tp tin vn bn CHUOI.OUT gm mt s duy nht l di ca chui con i xng di nht. V d:

Bi tp lp trnh cn bn SGU2010 CHUOI.INP 18 IKACOBEGIGEBOCAHTM CHUOI.OUT 13 CHUOI.OUT 19

Trang 135

IKACOBEGIGEMHBEGIGE CHUOI.OUT 5

BT12-5. Tnh tin in Theo quy nh, phn bit 3 loi in trong thanh ton: in tiu dng (loi 1), in sn xut (loi 2) v in kinh doanh (loi 3). Mi loi c mt cch thanh ton ring. i vi loi in tiu dng 50 KWh u tin mi KWh tnh vi gi A1 ng, t KWh th 51 ti KWh th 150 c tnh vi gi B1, cn t KWh th 151 tr i mi KWh tnh vi gi C1 ng. i vi loi in sn xut 200 KWh u tin mi KWh tnh vi gi A2 ng, t KWh th 201 ti KWh th 1000 c tnh vi gi B2 cn t KWh th 1001 tr i mi KWh tnh vi gi C2 ng. i vi loi in kinh doanh 100 KWh u tin mi KWh tnh vi gi A3 ng, t KWh th 101 ti KWh th 200 c tnh vi gi B3, cn t KWh th 201 tr i mi KWh tnh vi gi C3 ng. Cng ty Alpha c 3 ng h in tng ng vi 3 loi. Ch s ca ng h u thng cui thng i vi loi 1 ln lt l l X1 v Y1, loi 2 l X2 v Y2, loi 3 l X3 v Y3. Yu cu : Tnh tng s tin T m cng ty phi tr trong thng. D liu: vo t file vn bn PAY.INP: - Dng u ghi 6 s nguyn X1, Y1, X2, Y2, X3 v Y3 (0 X2 Y2 107, 0 X3 Y3 107, 0 X1 Y1 107). - Dng th hai ghi 9 s nguyn A1, B1, C1, A2, B2, C2, A3, B3 v C3 (0 A1,B1,C1, A2, B2, C2, A3, B3, C3 1000). Cc s trn mt dng c ghi cch nhau bi t nht mt du cch. Kt qu: Ghi ra file vn bn PAY.OUT s nguyn T. V d:

Bi tp lp trnh cn bn SGU2010

Trang 136

BT12-6.Meeting Cho mng k nim 100 nm ngy thnh lp trng, nh trng t chc mt cuc hp mt thn mt gia cc th h cu hc sinh sinh vin n li truyn thng v vang ca nh trng. Mi cu hc sinh sinh vin khi v d l u c thng bo vi ban t chc v s hiu kha hc ca mnh. Bit s lng ca cc cu hc sinh sinh vin v tham d v s hiu kha hc ca mi cu hc sinh sinh vin. Hy lp trnh tm ra cc kha hc c s lng cu hc sinh sinh vin v tham d l ng nht.(trong trng hp c nhiu kha hc c cng s lng cu hc sinh sinh vin v tham d l ng nht th in ht s hiu ca cc kha hc ). D liu vo c nhp vo t bn phm. Trc ht nhp mt s nguyn dng n (ch s lng ngi tham d bui l), tip theo l nhp n s nguyn dung, s th i theo th t ch s hiu kha hc ca cu hc sinh sinh vin th i. Kt qu xut ra mn hnh l cc s hiu kha hc c nhiu cu hc sinh sinh vin v tham d nht. V d: D liu nhp t bn phm D liu xut ra mn hnh n=10 1945 1967 1970 1945 1945 1960 1952 952 1952 1980 1952 1945 BT12-7.D tr nc min Trung thng nm no cng c nhng t hn hn nn ng Nam c nhng thng d tr nc. Do mua lm nhiu t nn N (1 N 1000) thng cha nc ca ng Nam c kch thc khc nhau, mi thng c sc cha Ci (1 Ci 10000, 1 i N). D on rng nm nay s c t hn hn ln nn ng Nam mun

Bi tp lp trnh cn bn SGU2010

Trang 137

y nc ht cc thng d tr. Sau khi kim tra ng Nam thy rng c mt s thng vn cn y, mt s khc th vi i mt phn, cn mt s th ht. ng quyt nh cc thng no cha y th s ch i y nc. Nhng do ni ly nc rt xa, v mi ln ch ch i c 1 thng nn ng quyt nh s san nc gia cc thng vi nhau s thng phi ch i l t nht. Yu cu: Cho dung lng nc hin c ca thng th i l Bi (0 Bi Ci, 1 i N), hy gip ng Nam xc nh s lng thng t nht phi mang i. D liu: vo t file vn bn WATER.INP c dng sau: -Dng th nht ghi mt s t nhin N l s lng cc thng nc. -Dng th i trong N dng tip theo mi dng c 2 s nguyn Bi v Ci (0 Bi Ci) m t thng tin thng th i, vi Bi l nc cn trong thng v Ci l sc cha ca thng, cc s cch nhau t nht mt khong trng. Kt qu: ghi ra file vn bn WATER.OUT cha mt s l s lng t nht cc thng nc tm c. V du: WATER.INP 4 01 45 02 12 WATER.OUT 1

BT12-8.Sp xp qun l nhn s mt tnh n c khong 1 triu ngi, hy sp xp tui ca dn c y theo th t t nh n ln. Bit rng tui y ch nm trong khong t 1 n 100. Tui ca dn c c cho vo t file AGE.INP vit lin tip nhau, cch nhau t nht mt du cch hoc mt du xung dng. Kt qu a ra file AGE.OUT cu trc nh file vo nhng c sp xp.

Bi tp lp trnh cn bn SGU2010 V d: AGE.INP AGE.OUT 1 2 20 4 45 62 3 2 4 55 2 4 5 1 2 2 2 3 4 4 4 5 20 45 100 55 62 100 BT12-9.Squares

Trang 138

Cho li vung n x n (n 100), cc nt li l cc s 0 hoc 1. Ngi ta cn chn ra cc hnh vung c bn nh l cc s 1. Cc hnh vung ny c th c chung nhiu nht l hai nh. Yu cu: m s lng hnh vung c bn nh l cc s 1. D liu vo c ghi trong tp tin SQUARES.INP c dng u cha s nguyn n (n 100). n dng tip theo m t n dng ca li vung gm cc k t 0,1. D liu ra cn c ghi vo tp tin SQUARES.OUT cha s lng hnh vung tm c. V d: SQUARES.INP 10 0100111111 0111101001 1000001110 0010110100 1011101100 1011011000 1001010110 1000100100 1010110001 1000111111 SQUARES.OUT 16

BT12-10.Mt khu Mt nhm gm k sinh vin gp tin mua mt phn mm dng chung. Khi ci t phn mm ny, ngi s dng cn phi nhp vo mt mt kh Khi bit khch hng ca mnh l cc sinh vin say m tin hc, ch ca hng thay v a

Bi tp lp trnh cn bn SGU2010

Trang 139

mt khu a cho mi bn mt con s v ni rng: Mt khu ci t phn mm l s nguyn dng nh nht gm khng qu tm ch s chia ht cho bt c s no trong cc s ti a cho cc bn. Yu cu: Bit tt c cc s m ch ca hng a cho cc hc sinh, hy tm mt khu ci t phn mm. D liu vo t file vn bn MATKHAU.INP: - Dng u tin cha s hc sinh k (k 100). - Dng th hai cha k s nguyn dng m ng ch ca hng a cho cc hc sinh, hai s lin tip cch nhau bi du cch. Kt qu ghi ra file vn bn MATKHAU.OUT mt khu tm c. V d: MATKHAU.INP 3 463 MATKHAU.OUT 12

Bi tp lp trnh cn bn SGU2010

Trang 140

Bi tp nng cao
BT13-1.a.t 8 qun hu ln bn c vua sao cho chng khng khng ch ln nhau. Tm tt c mi li gii. b.Bi ton con m i tun. Cho bn c kch thc 8 x 8.hy di chuyn qun m trn khp bn c sao cho mi ch i qua ng 1 ln. BT13-2.Cho n phn t {1,2,,n}. a.Tm cc hon v ca n phn t. b.Tm cc t hp chp k ca n phn t. c.Tm cc chnh hp khng lp chp k ca n phn t. BT13-3.Ngi Vit Nam vn theo truyn thng lch m t lu i, nn ngy nay tuy chnh thc dng dng lch trong tt c cc hot ng giao tip vn ho, x hi, chnh tr. Nhng vic mun bit nm thng dng lch tng ng vi m lch vn cn l mt thi quen trong tm thc ca phn ng x hi. nht l trong mi dp xun v, chng ta thng hay nhc ti tui ca nhau l sinh nm Con g ? Can g ? Vy phng php tnh nm m lch nh th no ? 1 2 3 4 5 6 7 8 9 10 11 12 13 Can Gip t Bnh inh Mu K Thn T Canh Tn Nhm Qu Ng Mi Thn Du Tut Hi

Chi T Su Dn Mo

Trc ht, bn phi nm tht k bng Thin can v a chi nh sau: Cch tnh: - Tm Can: Ly nm dng lch mun i tr i 3. Ly s hng n v tm c, tnh Can theo bng Thin can. Nu s hng n v l 0 th ng vi Qu. V d: Tm Can ca nm 1954 1954-3=1951. S hng n v l 1, tng ng vi can Gip. - Tm Chi: Ly nm mun i tr i 3, ri chia cho 12. Ly s d tm c tnh cho Chi, theo bng a chi, nu s d l 0 th ng vi Hi. V d: Tm chi ca nm 1954

Bi tp lp trnh cn bn SGU2010

Trang 141

1954-3=1951; 1951:12=162 d 7. S d l 7 tng ng vi chi Ng. Vy nm 1954 l nm Gip Ng. Chng trnh t ra y l: Nhp vo nm dng lch, hy cho bit nm m lch tng ng ? V d: - Nm 1010, Vua L Thi T di kinh t Hoa L thnh i La v i tn thnh Thng Long, tnh theo nm m lch l nm Canh Tut. - Nm 1901, m u th k XX l nm Tn Su. - Nm 2000, kt thc th k XX l nm Canh Thn. - Nm 2010, th k XXI l nm. Canh Dn BT13-4.a.Cho mt li hnh ch nht m dng n ct. Mi ca li cha mt mu trong cc mu: Xanh, ,tm, vng, en, trng v mi mu t nht c dng 2 ln. Hy sp xp li cc ca li sao cho trn mi dng hoc mi ct c t nht 2 cng mu b.Cho mt li hnh ch nht n dng m ct. Trn mi ca li c cha mt s nguyn khng m biu din cho s khi vung c t chng ln nhau trn v cc khi vung to thnh cc ct. V d a[3,2]=4 cho bit ti dng 3 ct 2 c t 4 khi vung Ngi ta tin hnh sn tt c cc mt nhn thy c ca cc ct. Hy tnh tng s n v din tch cn sn D liu vo c cho bi tp vn bn c tn l Mang7.INP c cu trc nh sau: -Dng u ghi 2 s n,m -Trong n dng tip theo mi dng ghi m s .cc s trn mi dng cch nhau mt du cch. BT13-5.Super Market qun l cc mt hng ca mnh, siu th ABC nh s cc mt hng bi mt dy cc con s t 0 n 9 (gi l m s mt hng). Cc m hng c di l n. Hai mt hng c m s X,Y c xem l cng nhm hng nu X v Y c cng s lng ch s v v tr cc ch s lp l nh nhau, v d 2 mt hng c m s

Bi tp lp trnh cn bn SGU2010

Trang 142

123435 v 416563 l cng mt nhm hng, 2 mt hng c m s 12342, 56767 khng cng mt nhm hng. Yu cu: nhp vo n l di m v 2 m X,Y. 1. Hy kim tra xem X,Y c cng mt nhm hng hay khng? Xut ra mn hnh nh sau: 1:nu X,Y cng nhm hng. 0:nu X,Y khc nhm hng. 2. Hy a ra s lng m hng cng nhm hng vi X. V d: Test 1 n=4,X=1 2 3 2,Y = 1 2 3 4 Cu 1: 0 Cu 2: 720 Test 2 N=6, X=1 2 1 2 6 7, Y= 3 4 3 4 8 6 Cu 1: 1 Cu 2: 5040

BT13-6.Tm nh c trng Mt nhm nghin cu x l nh ca trng H Khoa hc t nhin, HQG Tp.HCM ang gii quyt bi ton nhn dng mt ngi trong nh. nh chp mt ngi sau khi x l l mt bng vung A kch thc N x N (10 N 800) vi mi (I,J) (1 I, J N) c gi tr t 0 n 255 l mc xm ca nh ti ny (trong 0 l mu nn). xc nh v tr c th l mt ngi, nhm cn thng k cc c trng c dng hnh vung kch thc K x K (1 K 40) trong tt cc cc gi tr trong hnh vung u phi khc 0. Yu cu : T mt nh chp mt ngi, hy gip nhm nghin cu m tt c cc c trng c trong nh . D liu : Vo t file vn bn FEATURE.INP trong : Dng u cha hai s N v K Dng th I trong N dng tip theo cha tng ng dng th I ca bng A. Cc s ghi trn mt dng c ghi cch nhau bi t nht mt khong trng. Mi dng c N s nguyn. Dng th I l cc gi tr ca N phn t trong dng th I-1 trong bng vung A Kt qu : Ghi ra file vn bn FEATURE.OUT s lng c trng tm c. V d:

Bi tp lp trnh cn bn SGU2010 FEATURE.INP 62 0 12 15 0 33 30 17 19 23 15 16 0 11 12 0 14 14 0 0 10 11 8 10 0 0 8 7 12 0 0 0 0 11 13 0 0 FEATURE.OUT 7

Trang 143

BT13-7.CTIT Cng ty CTIT cn tuyn sinh vin IT trng X v thc tp ti cng ty ca mnh. V s lng tuyn hn ch nn cng ty a ra 1 bi test nh sau: trn t giy A4 k 1 li hnh ch nht gm m dng v n ct, trn mi ca li in sn 1 s nguyn. Mt hnh vung tng l hnh vung 2x2 sao cho gi tr cc trong hnh vung tng dn theo chiu kim ng h ([i][j]<[i][j+1]<[i+1][j+1]<[i+1][j]). Cng ty s tuyn mt s ng vin xc nh ng v nhanh nht s lng vung nh vy trong li ch nht trn. Yu cu: Nhp m, n v mng 2 chiu a t bn phm biu din li hnh ch nht trn. Lp trnh a ra s hnh vung tng c trong mng a. V d: m=3,n=4 1 5 1 Kt qu: 2. BT13-8.a gic Cho n a gic li tho cc tnh cht sau: +Vi hai a gic bt k lun c mt a gic m mi im ca n nm trong a gic kia. +Cc cnh ca chng khng c im chung. 2 4 3 3 7 10 4 8 9

Bi tp lp trnh cn bn SGU2010

Trang 144

Bi ton t ra l: Vi mi a gic i, c bao nhiu a gic bao n ? (a gic i nm trong bao nhiu a gic ?) Yu cu: D liu vo c ghi trong tp tin vn bn DAGIAC.INP Dng u tin ghi s t nhin n (3 n 1000) Trong n dng tip theo: Dng th i+1 ghi thng tin v a gic c s hiu th i. Bao gm s u tin Si l s nh ca a gic (Si 3); Si cp s nguyn tip theo ln lt l honh v tung cc nh ca a gic. Cc s trn cng dng cch nhau bi t nht mt khong trng. D liu ra cn c ghi trong tp tin vn bn DAGIAC.OUT gm N dng, trong dng th i ghi s lng a gic bao a gic i. V d: DAGIAC.INP 4 4 4 4 3 1 9 3 8 1 3 2 4 15 1 15 8 1 8 9 6 4 6 4 3 11 2 11 7 3 7 8 5 6 5 DAGIAC.OUT 0 2 1 3

BT13-9.Cp s cng Dy s a1, a2, ..., an c gi l mt cp s cng nu tn ti mt s d khng m sao cho : ai=ai-1 + d vi mi i=2,3,...,n. Yu cu : Cho mt dy n s nguyn a1, a2,...,an. Hy kim tra xem c th sp li dy nhn c mt cp s cng hay khng? D liu : Vo t file vn bn SERIES.INP bao gm : Dng u cha s t nhin N (N20 000) Dng th i trong n dng tip theo cha s ai (-1 000 000ai1

000 000) Kt qu : a ra file vn bn SERIES.OUT mt dng duy nht cha duy nht s -1 nu dy khng th sp li thnh cp s cng. Trong trng hp c th sp dy thnh mt cp s cng : Dng th i cha s th i trong dy sp xp.

Bi tp lp trnh cn bn SGU2010 V d : SERIES .INP 7 10 30 20 50 70 60 40 SERIES.OUT 10 20 30 40 50 60 70

Trang 145

BT13-10.Nhn dng nh Cho s nh l mt mng hai chiu m hng n ct cha cc s 1(bt c nh), s 0(bt khng c nh). nh l cc s 1 lin tip nhau trong s . Hy nhn dng ch T kch thc 3 x 3 trong s nh bit rng nh ch T c trong 4 dng sau: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Bi tp lp trnh cn bn SGU2010

Trang 146

Mt s thi mu
MN: C S LP TRNH ( S 1) Thi gian lm bi: 90 pht, khng k thi gian pht Cu I (3 im) Vit chng trnh nhp vo mt s nguyn dng n (0 < n < 1000000000). Hy tnh tng cc ch s ca s . Cu II (3 im) Vit chng trnh nhp vo mt chui k t s. 1.Hy cho bit t di nht trong chui c bao nhiu k t. 2.Hy cho bit tn s xut hin ca cc k t trong chui. Cu III (4 im) Vit chng trnh nhp vo mt s nguyn dng n v mt dy n s nguyn dng.Hy thc hin cc yu cu sau y: 1.Tm gi tr nh nht ca dy. 2.S hon thin l s bng tng cc c s thc s ca n (chng hn 6 l s hon thin v 6 = 1 + 2 + 3). Hy m xem trong dy c bao nhiu s hon thin ? 3.Tm s nguyn dng ln nht l c s ca tt c cc s ca dy. --------------------------------------------------Ht-----------------------------------------

Bi tp lp trnh cn bn SGU2010

Trang 147

MN: C S LP TRNH ( S 2) Thi gian lm bi: 90 pht, khng k thi gian pht CU I (3 im) Ci t hm kim tra tnh cht sp th t ca mt mng mt chiu gm n s nguyn vi kt qu tr v l: -1: mng c th t gim nghim ngt . 1: mng c th t tng nghim ngt. 0: mng khng c th t tng m cng khng c th t gim nghim ngt. CU II (3 im) Vi mi n 1, s Yn c nh ngha nh sau : Y1= 1, Y2 = 2, Y3 = 3. Yn = Yn-1 + 2Yn-2 + 3Yn-3 vi mi n 4 1.Tnh Y5. 2.Vit hm tnh Yn bng phng php quy. 3.Vit hm tnh Yn khng dng quy cng khng dng bin mng lu gi tr tm. CU III (4 im) Ngy hin ti c lu vo ba bin nguyn: dd/mm/yy. Gi s cc gi tr ny l hp l - khng cn kim tra. Hy vit hm xc nh ngy mai (tc l ngy k sau ca ngy dd/mm/yy) --------------------------------------------------Ht-----------------------------------------

Bi tp lp trnh cn bn SGU2010

Trang 148

MN: C S LP TRNH ( S 3) Thi gian lm bi: 90 pht, khng k thi gian pht CU I (3 im)

x2 x3 xn + + ... + Tnh tng S ( x, n ) = x + 1+ 2 1+ 2 + 3 1 + 2 + 3 + ... + n


CU II (3 im) Cho mng mt chiu cha n s nguyn a0, a1, a2,,an-1. 1.Hy vit hm tm v tr ca s chn nh nht ca mng. Nu khng tm thy th tr v gi tr -1. 2.Tm s hng c gi tr ln th k ca mng. CU III (4 im) Vit chng trnh nhp vo mt chui S bao gm cc ch ci thng t a n z v k t khong trng (to thnh cc t). Hy thc hin cc cng vic sau: 1.m xem trong chui c bao nhiu nguyn m a i o u e ? Bao nhiu ph m ? 2.Xut bng m ASCII ca tng k t trong chui (v d k t A tng ng vi s 65). --------------------------------------------------Ht-----------------------------------------

Bi tp lp trnh cn bn SGU2010

Trang 149

MN: C S LP TRNH ( S 4) Thi gian lm bi: 90 pht, khng k thi gian pht CU I (3 im) Gi s n 1 v x l s thc. Hy vit hm tnh gi tr ca biu thc sau y :
S ( x, n ) = - x + x2 x3 xn + ... + (-1) n 1+ 2 1+ 2 + 3 1 + 2 + 3 + ... + n

CU II (3 im) Ci t hm tnh khong cch gia hai ngy trong cng mt nm. CU III (4 im) Vit chng trnh nhp vo t bn phm ma trn 2 chiu c m dng, n ct cc phn s (0 < m,n < 6) v thc hin cc cng vic sau: 1.Xut phn s ln nht trong s cc phn s c gi tr nh hn 1 ca mng. 2.Sp th t ma trn sao cho trn mi dng cc phn s c sp tng dn t tri qua phi v trn mi ct cc phn s c sp tng dn t trn xung di. --------------------------------------------------Ht-----------------------------------------

Bi tp lp trnh cn bn SGU2010

Trang 150

MN: C S LP TRNH ( S 5) Thi gian lm bi: 90 pht, khng k thi gian pht CU I (3 im) Cho dy n s nguyn dng a1, a2,..., an. Hy vit hm tm chiu di ca on con lin tip di nht cha ton s nguyn t. Nu khng c th tr v gi tr 0. CU II (3 im) Cho mt dy s c nh ngha theo cng thc quy np nh sau (n l s nguyn, n1): f (1) = 1; f (2) = 2; f (3) = 3.

f ( n + 3) = 2 f ( n + 2) + f ( n + 1) - 3 f ( n )
1.Tnh f(9). 2.Hy vit hm tnh f(n) bng phng php quy. CU III(4 im) Cho mng mt chiu gm n ta im, ta im l cc s nguyn. 1.Hy tm mt im trong mng xa gc ta nht. 2.Hy tm ta hai im gn nhau nht. V d n = 5 v ta 5 im l: (0,0); (0,3); (3,3); (4,1); (4,4). Th kt qu cu a l im (4,4) v kt qu cu b l (3,3) v (4,4) --------------------------------------------------Ht-----------------------------------------

Bi tp lp trnh cn bn SGU2010

Trang 151

MN: C S LP TRNH ( S 6) Thi gian lm bi: 90 pht, khng k thi gian pht CU I (3 im) Tm cc s nh hn 100000 sao cho cc ch s ca n l i xng nhau. CU II (3 im) Trong mt phng ta Oxy cho hai hnh ch nht c cnh song song vi cc trc ta , hnh ch nht th nht c ta gc di tri l (x1,y1) v ta gc trn phi l (x2,y2). Hnh ch nht th hai c ta gc di tri l (x3,y3) v ta gc trn phi l (x4,y4). Hy tm din tch giao nhau gia hai hinh ch nht trn? CU III (4 im) Cho mng mt chiu gm n phn t l cc s nguyn dng. 1.Tm s nguyn t nh nht ln hn tt c cc gi tr c trong dy. 2.Tm s chnh phung l ln nht. 3.Tm gi tr nguyn t nh nht c 3 ch s; nu khng c th tr v gi tr 0. --------------------------------------------------Ht-----------------------------------------

Bi tp lp trnh cn bn SGU2010

Trang 152

MN: C S LP TRNH ( S 7) Thi gian lm bi: 90 pht, khng k thi gian pht CU I (3 im) Vit chng trnh nhp mt thng tin ngy (ngy/thng/nm) - l cc s nguyn dng). Hy cho bit ngy l ngy th bao nhiu trong nm ? V d: Ngy 3/2/2009 l ngy th 34 trong nm. CU II (3 im) Cho mng mt chiu gm n phn s, trong t s v mu s l cc s nguyn. 1.Hy tm phn s c gi tr ln nht 2.Hy sp xp cc phn s theo chiu tng dn. CU III (4 im) Cho ma trn vung gm n dng, n ct; cc phn t l cc s thc. Hy vit cc hm thc hin cc cng vic sau y: 1.Tm gi tr ln nht ca ma trn. 2.Tnh tng cc phn t nm trn ng cho ph. 3.Kim tra xem cc phn t nm trn ung cho chnh c tng dn hay khng ? (tng dn theo chiu t gc trn bn tri xung gc di bn phi). --------------------------------------------------Ht-----------------------------------------

Bi tp lp trnh cn bn SGU2010

Trang 153

MN: C S LP TRNH ( S 8) Thi gian lm bi: 90 pht, khng k thi gian pht CU I (3 im) Cho mng mt chiu a cha n s nguyn v mt s nguyn x. Hy tm mt gi tr trong mng xa x nht. CU II (3 im) Cho mt ma trn vung n dng n ct cha cc gi tr 0 hoc 1. 1.Hy vit hm m s lng gi tr 1 trn mi dng. 2.Hy vit hm kim tra ma trn c i xng nhau qua ng cho chnh hay khng? CU III (4 im) Vi mi n 1, s Yn c nh ngha nh sau : Y1= 1, Y2 = 2, Y3 = 3. Yn = Yn-1 + 2Yn-2 + 3Yn-3 vi mi n 4 1.Tnh Y7. 2.Hy vit hm tnh Yn bng phng php quy. --------------------------------------------------Ht-----------------------------------------

Bi tp lp trnh cn bn SGU2010

Trang 154

MN: C S LP TRNH ( S 9) Thi gian lm bi: 90 pht, khng k thi gian pht CU I(3 im) Vit hm tnh A(m,n) bit:

n + 1, khi m = 0 A( m, n) = A(m - 1,1), khi n = 0 A(m - 1, A( m, n - 1))


CU II (3 im) Cho chui s gm cc t, mi t cch nhau ng mt khong trng (gi s u v cui chui khng c khong trng no d tha). Hy vit hm m xem chui s c bao nhiu t bt u bng k t nguyn m ? (cc k t a, u, i, o, e l cc nguyn m). Test 1 S=ngay xua hoang thi Output: 0 Output: 2 Test 2 S=ao anh sut chi duong ta

CU III (4 im) Cho mng mt chiu cha n s nguyn dng a0, a1, a2,,an-1. Hy vit hm kim tra trong mng c cha s chnh phng no c ng ba ch s khng ? Nu c th tr v gi tr 1, nu khng c th tr v gi tr 0. --------------------------------------------------Ht-----------------------------------------

Bi tp lp trnh cn bn SGU2010

Trang 155

MN: C S LP TRNH ( S 10) Thi gian lm bi: 90 pht, khng k thi gian pht CU I (3 im) Gi s n 1. Hy vit hm tnh gi tr ca biu thc sau y :
S ( n) = 1 + 1 1 1 + + 1 + 2 1 + 2 + 3 1 + 2 + 3 + ... + n

CU II (3 im) Cho mng mt chiu a cc s nguyn c n phn t (n <10000). Vit cc hm thc hin cc thao tc sau: 1.Kim tra xem mng c cha s nguyn l l bi ca c 3 s 3, 5, 7 no khng ? 2.Hy cho bit c bao nhiu gi tr phn bit trong mng a ? CU III (4 im) Cho trc ma trn a cc s nguyn c m dng v n ct (0 < m,n < 150). Vit hm thc hin cc thao tc sau: 1.In ra ch s cc dng c cc phn t c sp tng dn. 2.Tm phn t m c gi tr ln nht. --------------------------------------------------Ht-----------------------------------------

Bi tp lp trnh cn bn SGU2010

Trang 156

MN: C S LP TRNH ( S 11) Thi gian lm bi: 90 pht, khng k thi gian pht CU I (3 im) Tnh tng S =

2 2+4 2+4+6 2 + 4 + 6 + ... + 2n + + + ... + vi n > 0 3 3+5 3+5+7 3 + 5 + ... + ( 2 n + 1)

V d : Nu n = 1 th kt qu S=0.67 Nu n = 3 th kt qu S=2.22 CU II (3 im) Ci t hm tm ch s ca phn t dung nh nht trong mng mt chiu a cc s nguyn kch thc n (nu mng khng c s dng tr v -1) CU III (4 im) Cho ma trn 2 chiu M x N phn t (M<100, N<100), cc phn t l cc s nguyn dng (dng v ct bt u bng 0). 1.Tm phn t nguyn t ln nht. 2.Nhp vo mt s nguyn y, hy cho bit cc dng c tng dng nh hn y. 3.Sp xp ma trn li theo quy tc sau: ct c ch s l gim dn v ct c ch s chn tng dn. --------------------------------------------------Ht-----------------------------------------

Bi tp lp trnh cn bn SGU2010

Trang 157

MN: C S LP TRNH ( S 12) Thi gian lm bi: 90 pht, khng k thi gian pht CU I (3 im) Vit chng trnh nhp chui k t S. Hy thc hin cc thao tc sau: 1.i tt c cc k t u mi t trong S (cc t phn bit bng khong trng) thnh k t hoa. 2.In s lng k t ca mi t trong chui. Cu Ii (3 im) Cho mng vung n dng, n ct ; cc phn t l cc s 0 hoc 1. Hy tm hnh ch nht ln nht cha ton gi tr 1. CU IiI (4 im) 1.m s lng cc gi tr phn bit trong mng mt chiu a cc s nguyn kch thc n. 2.Bin i tng phn t ca mng thnh s chnh phng nh nht ln hn hoc bng n. --------------------------------------------------Ht-----------------------------------------

Bi tp lp trnh cn bn SGU2010

Trang 158

MN: C S LP TRNH ( S 13) Thi gian lm bi: 90 pht, khng k thi gian pht CU I (2im) Cho tng S=1+3+5+...+(2n+1) vi n0 v s nguyn M. Hy tm gi tr n nh nht sao cho S >M. V d M=20 th n = 4 CU II (3 im) Cho f(0)=0;f(1)=1;f(2)=1; v f(n)=3*(n-3)+ 2*f(n-2) +f(n-1) vi mi n>2. 1.Hy tnh f(7) 2.Hy vit hm tnh f(n). 3.Vit hm tnh f(n) khng dng quy cng khng dng bin mng lu gi tr tm. Cu III (5 im) Cho mng gm n s nguyn dng. Hy thc hin cc yu cu sau: 1.Kim tra xem trong mng c tn ti s chnh phng no hay khng ? Nu c tr v gi tr 1, nu khng c tr v gi tr 0. 2.Tm k gi tr khc nhau ln nht ca mng. 3.Hy tm hng ca cc phn t. --------------------------------------------------Ht-----------------------------------------

Bi tp lp trnh cn bn SGU2010

Trang 159

MN: C S LP TRNH ( S 14) Thi gian lm bi: 90 pht, khng k thi gian pht CU I (3 im) Nhp vo s nguyn n. Hy tm s nguyn t gn n nht. V d : Nu n=25 th kt qu l 23, nu n=37 th kt qu l 41. CU II (3 im) Cho hai hnh ch nht. Hnh ch nht th nht c ta gc di tri l x1,y1 v ta gc trn phi l x2,y2. Hnh ch nht th hai c ta gc di tri l x3,y3 v ta gc trn phi l x4,y4. Gi thit cc ta l cc s nguyn v cc hnh ch nht c cc cnh song song vi cc trc ta . Hy tm din tch hnh c ph bi hai hnh ch nht trn. Cu III (4 im) Cho mng vung n dng, n ct. Cc phn t l cc s nguyn dng. 1.Tm gi tr ln nht trn tng dng 2.Hy sp sao cho cc s ln nht nm trn ng cho chnh 3.Hy sp xp cc s nguyn t tng dn trn tng dng cn cc s khc gi nguyn gi tr v v tr. --------------------------------------------------Ht-----------------------------------------

Bi tp lp trnh cn bn SGU2010 MN: C S LP TRNH ( S 15) Thi gian lm bi: 90 pht, khng k thi gian pht

Trang 160

CU I (3 im) Mt s nguyn c k ch s c gi l s Amstrong khi n bng tng ly tha k ca tng ch s. Hy vit ham in ra cc s Amstrong nh hn 10000. V d: 153=13+53+33 Cu II (3 im) Ngy 01/01/2010 l ngy th Su. Hy vit hm in ra cc ngy th Su cui cng ca mi thng trong nm 2010. V d: 29/1/2010 26/2/2010 26/3/2010 ... 31/12/2010 CU III (4 im) 1.Hy vit hm m s cc on con lin tip tng ca mng mt chiu a cha n phn t. V d: n = 9 4 7 7 2 21 34 56 7 9 Th kt qu l 3 2.Hy vit hm tm chiu di dy con lin tip tng di nht ca mng mt chiu a cha n phn t. V d: n = 9 4 7 7 2 21 34 56 7 9 Th kt qu l 4 --------------------------------------------------Ht-----------------------------------------

Bi tp lp trnh cn bn SGU2010 MN: C S LP TRNH ( S 16) Thi gian lm bi: 90 pht, khng k thi gian pht

Trang 161

CU I (3 im) Gi s n1 v x l s thc. Hy vit hm tnh gi tr ca biu thc sau y:


n x x 2 x3 n x + - ... + ( -1) 1! 2! 3! n! CU II(3 im) Cho chui s gm cc t, mi t cch nhau ng mt khong trng (gi s u v cui chui khng c khong trng no d tha). T c k k t gi l t loi k; k c th l 1,2,3,4,5,6,7. Hy tm t loi xut hin nhiu ln nht. V d chui s l Thanh Pho Ho Chi Minh Gia Dinh th kt qu l t loi 3. CU III (4 im)

Cho ma trn vung a cc s nguyn dng kch thc n (1 n 8). Mi v tr (i,j) ca mng lu tr 4 s nguyn c mt ch s. Cc dng, ct c nh s t 1 n n. Khi nhp liu th nhp theo tng 4 s cho mi phn t a[i][j] v d nh bng di y (bng bn tri) th cc s ln lt c nhp vo l 1,2,3,4. 1.Tm ma trn b c cng kch thc vi ma trn a bit b[i][j] tng ca 4 phn t ti v tr i,j ca mng a. 2.Tm mt v tr (i,j) ca mng a cha c 4 gi tr chn v c tng ca 4 gi tr ny l ln nht. Nu khng tm thy tr v gi tr 0.

V d: n=4 1 2 3 2 4 3 1 2 1 4 4 3 4 3 3 2 3 4 9 4 2 3 5 6 5 5 1 5 4 7 7 8 7 4 4 8 6 7 2 4

4 4 6 8 5 6 2 2

2 9 8 8 1 1 7 8

3 3 8 7 2 2 9 8 20 25 10 32 10 25 24 6 9 14 26 31 10 10 16 17

(Ghi ch: Vi d liu bng bn tri th kt qu cu a l d liu bng bn phi v kt qu cu b l v tr (2,3)).

--------------------------------------------------Ht-----------------------------------------

Bi tp lp trnh cn bn SGU2010

Trang 162

MN: C S LP TRNH ( S 17) Thi gian lm bi: 90 pht, khng k thi gian pht CU I (3 im) Ngy hin ti c lu vo ba bin nguyn: dd/mm/yy. Gi s cc gi tr ny l hp l - khng cn kim tra. Hy vit hm xc nh ngy hm qua (tc l ngy k trc ca ngy dd/mm/yy) CU II (3 im) Vi mi n 1, s Yn c nh ngha nh sau : Y1= 1, Y2 = 2, Y3 = 3. Yn = Yn-1 (5Yn-2 + 6Yn-3) vi mi n 4 1.Tnh Y5. 2.Vit hm tnh Yn bng phng php quy. 3.Vit hm tnh Yn khng dng quy cng khng dng bin mng lu gi tr tm. CU III (4 im) Cho mt mng 2 chiu A cc s nguyn kch thc n x n (2<n<100). Hy vit hm thc hin vic to ra mng B c cng thc t mng A cho theo cng thc sau: B[i][j]=Trung bnh cng ca 8 phn t k vi A[i][j] trong mng A nu 0<i,j<n-1. B[i][j]= A[i][j] trong cc trng hp cn li. --------------------------------------------------Ht-----------------------------------------

Bi tp lp trnh cn bn SGU2010

Trang 163

MN: C S LP TRNH ( S 18) Thi gian lm bi: 90 pht, khng k thi gian pht CU I (3 im) Tm cc b ba s t nhin x,y,z tha 1 x,y,z 10000 v tha mn x2 + y2 = z2. CU II (3 im) Cho hai 2 ma trn vung A,B cp n. Hy thc hin cc cng vic sau: 1.Tnh tng ca hai ma trn trn. 2.Tnh tch ca hai ma trn trn. 3,To ma trn mi bng cch nhn cc phn t ca mi dng ca ma trn A vi gi tr ln nht ca dng tng ng ca ma trn B CU III (4 im) Vi mi han v A(a1,a2,a3,aN) ca N s t nhin u tin, ta k hiu b=(b1,b2,,bN) l mt mng m bi bng s cc phn t ng trc s i v ln hn i (1<= i <=n). Mng B c gi l mng nghch th ca mng A. V d : Nu A l mt han v ca 9 s t nhin u tin 5 9 1 8 2 6 4 7 3 Th mng nghch th s l: 236402210 Vit chng trnh cho mt han v tm nghch th tng ng --------------------------------------------------Ht-----------------------------------------

Bi tp lp trnh cn bn SGU2010

Trang 164

MN: C S LP TRNH ( S 19) Thi gian lm bi: 90 pht, khng k thi gian pht CU I (3 im) Vit cc hm thc cc cng vic sau: 1.Tm cc s nguyn t c 4 ch s 2.Tm 100 s nguyn t u tin ln hn 1000. CU II (3 im) Hy kim tra xem ngy 1/1/1 (ngy u tin sau cng nguyn) l ngy th my? CU III (4 im) Vi mi han v A(a1,a2,a3,aN) ca N s t nhin u tin, ta k hiu b=(b1,b2,,bN) l mt mng m bi bng s cc phn t ng trc s i v ln hn i (1<= i <=n). Mng B c gi l mng nghch th ca mng A. V d : Nu A l mt han v ca 9 s t nhin u tin 5 9 1 8 2 6 4 7 3 Th mng nghch th s l: 236402210 Vit chng trnh cho mt nghch th tm han v tng ng (nu c) --------------------------------------------------Ht-----------------------------------------

Bi tp lp trnh cn bn SGU2010

Trang 165

MN: C S LP TRNH ( S 20) Thi gian lm bi: 90 pht, khng k thi gian pht CU I (3 im) Trong mt phng ta OXY cho 3 im A(xa;ya), B(xb;yb), C(xc;yc). 1.Hy tm ta im D(xd,yd) t gic ABDC l hnh bnh hnh. 2.Tm khong cch t nh A n cnh BD. V d: A(2 ;4), B(1 ;0), C(8 ;4) th kt qu l D(7 ;0) v khong cch gia hai ng thng AC v BD l 4. CU II (3 im) Gi s A v B l 2 s nguyn cho trc v x,y,z l 3 s nguyn tha mn ng thi cc bt phng trnh: x2+2y2+3z2 A2 y2+z2 B2 Hy vit hm tm gi tr ln nht ca biu thc F(x,y,z)=x2+y4+z8 CU III (4 im) Hy vit cc hm thc hin cc cng vic sau y: 1.Xc nh s lng bit 1 ca mt s nguyn dng D (D<65000) trong biu din nh phn ca n. 2.Tnh s phn t m gi tr ca n c s bt 1 (trong biu din nh phn ca n) l mt s l trong mt mng mt chiu cc s nguyn dng A gm n phn t (0<N<10000, A[i]<65000) --------------------------------------------------Ht-----------------------------------------

Bi tp lp trnh cn bn SGU2010

Trang 166

Gi v hng dn gii bi tp
Chng 1 BT1-1. Hin nhin l n khng chia ht cho cc s ln hn n/2, nn ta ch cn cho mt bin i chy t 1 n n/2. Nu mi gi tr i nh vy m l c s ca n th cng dn i vo tng s. Khi kt thc vng lp, nu s ng bng n th ngha l s l s hon thin, ngc li n khng phi l s hon thin. s=0; for (int i=1;i<=n/2;i++) if (n % i ==0) s=s+i; if (s==n) cout<<n la so hoan thien; else cout<<n la so hoan thien; BT1-2. C nhiu cch kim tra n c phi l s nguyn t hay khng. Thut ton 1: Da vo nh ngha n l s nguyn t khi n c ng hai c s l 1 v chnh n. Gi d l s lng cc c s ca n ti thi im ang xt, lc u d=0 ta c on m sau y: d=0; for (int i=1;i<=n;i++) if (n % i==0) d++; if (d==2) cout<<n la so nguyen to; else cout<<n khong la so nguyen to;

Bi tp lp trnh cn bn SGU2010

Trang 167

D thy thut ton 1 bc l nhc im l khi pht hin n c mt c s khc 2 v n (ngha l n khng th l s nguyn t) nhng thut ton vn khng dng li m vn tip tc thc hin vng lp n khi i bng n. nh l sau y cho ta mt thut ton khc phc c nhc im trn. Thut ton 2: Da vo nh l n l s nguyn t nu n khng c c s no trong khong t 2 n cn bc hai ca n. int flag=1; int m=int(sqrt(n));// m l phn nguyn ca cn bc hai ca n for (int i=2;i<=m;i++) if (n %i==0) { flag=0; break; } if (flag) cout<<n la so nguyen to; else cout<<n khong la so nguyen to; Nu s dng chng trnh con thit k cho thut ton ny th chng trnh s d din t hn, trong sng hn. Bn c hy s dng vng lp while minh ha li thut ton ny. BT1-4. S dng vng lp while cho bin i gim t n v 1; c mi gi tr ca i nh th th kim tra xem i c l s nguyn t hay khng ? n khi tm c i l s nguyn t th dng thut ton. Trong trng hp i gim n 1 (ngha l n nhp vo l 1) th kt lun l khng c s nguyn t tha iu kin. BT1-5. Tm c s chung ln nht ca n s. int uc=a[0]; for (i=1;i<n;i++)

Bi tp lp trnh cn bn SGU2010

Trang 168

uc=uscln(uc,a[i]);// uscln(a,b) l hm tm c s chung ln nht ca a v b; hm ny c trnh by trong chng 1. Vic tm bi s chung nh nht ca n s l tng t. BT1-6. Bi ny nn s dng vng lp for gii. Trc ht ta d dng tm c cc cn cho cc bin iu khin vng lp for ng vi h phng trnh trn. Sau ch cn s dng 2 vng lp for lng nhau cho hai bin x,y l (khng phi l 3 vng lp); cn bin z s c tnh da vo 2 bin x,y nh on m sau: for (int x=1;x<=20;x++) for (int y=1;y<=33;y++) { int z=100-x-y; if (5*x+3*y+z/3==100 && z%3==0) cout<<x<<" "<<y<<" "<<z<<endl; } BT1-7. Cng nh BT1-6, bi tp ny ta quan tm n vic ti u ha cu trc. Bi ny s dng 3 vng lp for nh sau y l (ch khng cn 5 vng lp for). for (int x=1;x<=9;x++) for (int y=0;y<=9;y++) for (int z=0;z<=9;z++) cout<<x<<y<<z<<y<<x<<endl; BT1-9. iu kin cn v M thuc on thng AB l MA + MB = AB. Lu khi thc hin php so snh bng trn kiu s thc th cn ch l a=b khi v chi khi fabs(a-b)<=1.E-n, thng e c chn l 6 (1.E-n bng 1.0/10n), iu ny c ngha l cc s thc c tr tuyt i nh hn 1.E-n th c xem nh bng 0 (vi cc bi ton hnh hc kiu ny nn s dng kiu d liu double thay cho kiu d liu float).

Bi tp lp trnh cn bn SGU2010

Trang 169

Chng 2 BT2-5. S dng hm random to ra tng ch s (nhc li random(n) s tr v mt s nguyn trong khong t 0 n n-1). #include <stdlib.h> #include <iostream.h> void main() { randomize(); unsigned int a1,a2,a3,a4,a5,a6; a1=random(9); a2=random(9); a3=random(9); a4=random(9); a5=random(9); a6=random(9); cout<<a1<<a2<<a3<<a4<<a5<<a6; } BT2-6 #include <stdio.h> #include <conio.h> void main() { clrscr(); int t; printf("Nhap vao so giay t = ");scanf("%d",&t); int h=t/3600; int m=(t%3600)/60; int s=(t%3600)%60; printf("Ket qua la: %dh %dm 3%ds",h,m,s); getch();

Bi tp lp trnh cn bn SGU2010 }

Trang 170

BT2-10.a. Nhc li khi tnh sin, cos, tan theo gc alpha th alpha c tnh bng radian. Khi tnh tg(alpha) th cn kim tra iu kin cos(alpha) khc 0 v tng t khi tnh cotg th cn kim tra sin(alpha) khc 0 (do C/C++ khng c hm tnh cotg nn phi tnh cotg da vo hm tnh tg). Cn vic kim tra s thc e khc 0 th iu kin tng ng l e<1.E-6 nh cp trong bi tp BT110. #include<conio.h> #include<stdio.h> #include<math.h> void main() { clrscr(); int alpha; printf("Nhap vao so do goc alpha: ");scanf("%d",&alpha); double radian=M_PI*alpha/180; printf("\nsin(%d) =%6.2lf",alpha,sin(radian)); printf("\ncos(%d) =%6.2lf",alpha,cos(radian)); (cos(radian)>1.E-6)?printf("\ntg(%d) =%6.2lf",alpha,tan(radian)): printf("\ntg khong xac dinh"); (sin(radian)>1.E-6)?printf("\ncotg(%d)=%6.2lf",alpha,1/tan(radian)): printf("\ncotg khong xac dinh"); getch(); } b. im M(x,y) lch vi phng ngang gc alpha th x= r*cos(alpha) v y= r*cos(alpha) trong r l bn knh ng trn ngoi tip tam gic iu. Do y l tam gic iu nn nh tip theo s lch so vi nh hin mt xgc 2*M_PI/3. #include<conio.h>

Bi tp lp trnh cn bn SGU2010 #include<iostream.h> #include<math.h> void main() { int r; double alpha; cout<<"nhap toa do tam duong tron: "; cout<<"Ban kinh R = "; cin>>r; alpha=M_PI/2; int x1,y1,x2,y2,x3,y3; float phi=2*M_PI/3; x1=int(r*cos(alpha)+0.5); y1=int(r*sin(alpha)+0.5); alpha=alpha+phi; x2=int(r*cos(alpha)+0.5); y2=int(r*sin(alpha)+0.5); alpha=alpha+phi; x3=int(r*cos(alpha)+0.5); y3=int(r*sin(alpha)+0.5); cout<<x1<<";"<<y1; cout<<x2<<";"<<y2; cout<<x3<<";"<<y3; getch(); }

Trang 171

Bi tp lp trnh cn bn SGU2010 Chng 3 BT3-1. #include <stdio.h> #include <conio.h> #include <ctype.h> void main() { clrscr(); char ch; scanf("%c",&ch); if (islower(ch)) printf("%c",toupper(ch)); else if (isupper(ch)) printf("%c",tolower(ch)); else if (isdigit(ch)) printf("%d",toascii(ch)); else if (ch=='+' || ch=='-' || ch=='*' || ch=='/' ) printf("phep toan"); else if (ch==' ') printf("khoang trang"); else printf("khong phai thuoc cac truong hop tren"); getch(); } BT3-3. #include <conio.h> #include <iostream.h>

Trang 172

Bi tp lp trnh cn bn SGU2010 void main() { clrscr(); int a,b,c,d; cin>>a>>b>>c>>d; int max=a>b?a:b; int sln=a+b-max; if (c>max) { sln=max; max=c; } else if (c>sln) sln=c; if (d>max) { sln=max; max=d; } else if (d>sln) sln=d; cout<<"kq: "<<sln; getch(); }

Trang 173

BT3-5. Thut ton Tm gi tr ln nht v nh nht ca 4 s ny. T bit tng hai s cn li l a+b+c+d-max-min. Nh vy nu c gi tr ca mt s trong 2 s gia cn li th ta s bit c gi tr s cn li.

Bi tp lp trnh cn bn SGU2010

Trang 174

Gi s nh nh l sonhonhi. Ta c sonhonhi l s khc gi tr min v ln hn trung bnh cng ca 2 s gia. #include <conio.h> #include <iostream.h> void main() { clrscr(); int a,b,c,d; cin>>a>>b>>c>>d; int max=a; if (b>max) max=b; if (c>max) max=c; if (d>max) max=d; int min=a; if (b<min) min=b; if (c<min) min=c; if (d<min) min=d; int tong2sogiua=a+b+c+d-max-min, sonhonhi; if (a <(tong2sogiua/2.0) && a!=min) sonhonhi=a; if (b <(tong2sogiua/2.0) && b!=min) sonhonhi=b; if (c <(tong2sogiua/2.0) && c!=min) sonhonhi=c; if (d <(tong2sogiua/2.0) && d!=min) sonhonhi=d; cout<<min<<" "<<sonhonhi<<" "<<tong2sogiua-sonhonhi<<" "<<max; getch(); } BT3-6.a. Vic tm c s ngy ca thng, nm va hin hnh c thc hin d dng v gi gi tr tm c l songay. Vic tm ngy/thng/nm k sau ngy hin hnh c thc hin qua on m sau.

Bi tp lp trnh cn bn SGU2010 if (ngay<songay) ngay++; else { ngay=1; thang++; if (thang>12) { thang=1; nam++; } } #include <iostream.h> void main() { int ngay,thang,nam,songay;// so ngay cua thang cin>>ngay>>thang>>nam; //Cho biet so ngay cua 1 thang nao do trong nam switch (thang) { case 1: case 3: case 5: case 7: case 8: case 10: case 12:songay=31;break; case 4: case 6: case 9: case 11:songay=30;break;

Trang 175

Bi tp lp trnh cn bn SGU2010 case 2: if (nam %4==0 && nam %400!=0) songay=29; else songay=28; break; } //Tim ngay ke sau cua ngay/thang/nam if (ngay<songay) ngay++; else { ngay=1; thang++; if (thang>12) { thang=1; nam++; } } cout<<ngay<<" "<<thang<<" "<<nam; }

Trang 176

BT3-9. M nm trong hnh ch nht, th M phi tha iu kin x1<=x<=x2 v y1<=y<=y2

Bi tp lp trnh cn bn SGU2010 Chng 4 BT4-1. #include<conio.h> #include<iostream.h> #include<ctype.h> void main() { clrscr(); cout<<"Cac chu cai hoa"<<endl; for (char ch='A';ch<='Z';ch++) cout<<ch<<" "<<toascii(ch)<<endl; cout<<"Cac chu cai thuong"<<endl; for (ch='a';ch<='z';ch++) cout<<ch<<" "<<toascii(ch)<<endl; cout<<"Cac chu so"<<endl; for (ch='0';ch<='9';ch++) cout<<ch<<" "<<toascii(ch)<<endl; getch(); } BT4-2.a. #include<iostream.h> void main() { int n; float s=0; cin>>n; for (int i=0;i<=n;i++) s=s+1.0/(2*i+1); cout<<s; } BT4-2.b.

Trang 177

Bi tp lp trnh cn bn SGU2010 #include<iostream.h> void main() { int n; float s=0; cin>>n; for (int i=1;i<=n;i++) s=s+1.0/(2*i); cout<<s; } BT4-2.c. tu=1; mau=0; s=0; for (i=1;i<=n;i++) { tu=tu*x; mau=mau+i; s=s+(float)tu/mau; } cout<<s; BT4-2.d. tu=1; mau=1; s=0; dau=-1; for (i=1;i<=n;i++) { tu=tu*x; mau=mau*i;

Trang 178

Bi tp lp trnh cn bn SGU2010 s=s+(float)dau*tu/mau; dau=-dau; } cout<<s; BT4-2.d (ci tin) #include<conio.h> #include<iostream.h> void main() { clrscr(); int n; float x,s=0; int dau=-1; cin>>n; cin>>x; float k=1; for (int i=1;i<=n;i++) { k=k*(float)x/i; s=s+dau*k; dau=-dau; } cout<<s; getch(); } BT4-3. #include<iostream.h> #include<conio.h> void main() {

Trang 179

Bi tp lp trnh cn bn SGU2010 clrscr(); int n; long s,k; cin>>n; s=0; for (int i=1;i<=n;i++) { k=1; for (int j=i;j<=2*i;j++) k=k*j; s=s+k; } cout<<s; getch(); } BT4-4.a. #include<iostream.h> #include<conio.h> #include<math.h> void main() { clrscr(); int n,x; float s,alpha; cin>>n>>x; s=0; alpha=x*M_PI/180; for (int i=1;i<=n;i++) { alpha=sin(alpha); s=s+alpha;

Trang 180

Bi tp lp trnh cn bn SGU2010 } cout<<s; getch(); }

Trang 181

BT4-5.b. Vi n l s nguyn t nhp vo. t i=n+1; Kim tra xem i c phi l s nguyn t hay khng? Nu ng th i l kt qu cn tm, nu khng th tng i ln 1 n v v tip tc vng lp. #include<conio.h> #include<iostream.h> void main() { clrscr(); int n; cout<<"Nhap vao so nguyen to n = ";cin>>n; int flag=1,i=n+1,d; if (n==2) cout<<"So nguyen to can tim la : "<<3; else while (flag) { int d=0; for (int j=1;j<=i;j++) if (i%j==0) d++; if (d==2) { cout<<"So nguyen to can tim la : "<<i; flag=0; } i=i+1; }

Bi tp lp trnh cn bn SGU2010

Trang 182

getch(); } Bn c c th ti u chng trnh trn bng cch thay i cch kim tra i c phi l s nguyn t hay khng ? Hoc l cho bin i tng mi ln 2 n v thay cho vic cho bin i tng 1 n v - u ny l ng khi n khng phi l 2. (Bn c s gp li cch trnh by bi ny theo mt cch hiu qu hn sau khi hc xong vn hm). BT4-6. #include<conio.h> #include<iostream.h> int thang,ngay,songay,d; void main() { clrscr(); d=6; for (thang=1;thang<=12;thang++) { switch (thang) { case 1: case 3: case 5: case 7: case 8: case 10: case 12:songay=31; break; case 4: case 6: case 9: case 11:songay=30;break; case 2: songay=28;break;

Bi tp lp trnh cn bn SGU2010

Trang 183

} for (ngay=1;ngay<=songay;ngay++) { d=d+1; if (d%7==0 && ngay<=7) if (thang!=7 && thang !=8) cout<<"\nThu Sau ngay "<<ngay<< "thang "<<thang<< " nam 2010"; } } getch(); }

Bi tp lp trnh cn bn SGU2010 Chng 5 BT5-1.a. #include <conio.h> #include <iostream.h> int tongchuso(int n); void main() { clrscr(); int n; cin>>n; cout<<tongchuso(n); getch(); } int tongchuso(int n) { int s=0; while(n>0) { s=s+n%10; n=n/10; } return s; }

Trang 184

BT5-2. a.Vit hm kim tra s nguyn t. Gi d l s lng s nguyn t (u tin cho d=0). Cho for i=1 n n. Nu i l s nguyn t th d++; d chnh l kt qu cn tm. b.Vit hm kim tra s nguyn t. Cho i = n+1, kim tra i c phi l s nguyn t hay khng ? Nu ng th i l kt qu v dng thut ton. Nu khng phi th tng i ln 1 n v v tip tc vng lp. c.Tm s nguyn t gn nht

Bi tp lp trnh cn bn SGU2010 int nguyentogannhat(int n) { int u=n,v=n; while (!nguyento(u)) u++; while (!nguyento(v)) v--; return u-n>=n-v?v:u; }

Trang 185

BT5-3. Do c s t nhin nh nht k ca mt s n l mt s nguyn t. Do ta ch cn tm k ca n, sau cp nht n=n/k. Vng lp tip tc n khi k=0 th dng li. Dy s k tm c chnh l kt qu cn tm. #include <conio.h> #include <iostream.h> int nguyentonhonhat(int n); void phantich(int n); void main() { clrscr(); int n; cout<<"Nhap vao so tu nhien n>=1:";cin>>n; phantich(n); getch(); } int nguyentonhonhat(int n) { for (int i=2;i<=n;i++) if (n%i==0) return i; } void phantich(int n) { int k;

Bi tp lp trnh cn bn SGU2010 while (n>1) { k=nguyentonhonhat(n); cout<<k<<" "; n=n/k; } } BT5-7. #include<conio.h> #include<iostream.h> float tim(float a1,float a2,int d) { float kq; switch (d) { case 1:kq = a1+a2;break; case 2:kq = a1-a2;break; case 3:kq = a1*a2;break; case 4:kq = a1/a2;break; }; return kq; } void main() { clrscr(); char dau[5]; dau[1]='+'; dau[2]='-'; dau[3]='*'; dau[4]='/'; int a1,a2,a3,a4,a5,a6; cin>>a1>>a2>>a3>>a4>>a5>>a6;

Trang 186

Bi tp lp trnh cn bn SGU2010 for (int i=1;i<=4;i++) for (int j=1;j<=4;j++) for (int k=1;k<=4;k++) for (int l=1;l<=4;l++) if (tim(tim(tim(tim(a1,a2,i),a3,j),a4,k),a5,l)==a6)

Trang 187

cout<<"\n((("<<a1<<dau[i]<<a2<<")"<<dau[j]<<a3<<")"<<dau[k]<<a 4<<")"<<dau[l]<<a5<<'='<<a6; getch(); } BT5-8. Mt li gii hin nhin nht cho bi tan ny l tm giao im ca hai on, sau kim tra xem giao im ny c thuc vo c hai on thng ang xt hay khng ? Th nhng vi nhng trng hp kh c bit nh khi bn u mt ca hai on thng thng hng hay c bit hn na khi on ny cha on kia, hoc c bn u mt ca hai on trng nhau,...th thut gii ny s gy ra mt cht phin h. y chng ti c th tm c kt qu m khng cn tm giao im ca hai on thng vi tng l hai on thng AB v CD ct nhau nu tho mt trong cc iu kin sau: iu kin a)Mi u mt ca on ny thuc on kia. iu kin b)Hai u mt ca mi on thng nm trn hai min khc nhau c chia bi ng thng cha on thng kia. Sau y ta s ln lt xt 2 iu kin ny. iu kin a) im M(xm,ym) thuc vo on AB nu AM + MB = AB Hm sau s kim tra xem im M c thuc on thng AB hay khng ? int thuoc(int xa,int ya,int xb,int yb,int xm,int ym) { return fabs(kc(xa,ya,xm,ym)+kc(xm,ym,xb,yb)-kc(xa,ya,xb,yb))<=1.E-6; } Vi kc l hm tnh khong cch gia hai im AB:

Bi tp lp trnh cn bn SGU2010 float kc(int xa,int ya,int xb,int yb) { return sqrt((xb-xa)*(xb-xa)+(yb-ya)*(yb-ya)); }

Trang 188

iu kin B) Gi s phng trnh ng thng AB l dt(xa,ya,xb,yb,xm,ym) = 0 (vi M(xm,ym) l mt im bt k thuc ng thng AB), hai im C, D nm trn 2 min khc nhau i vi ng thng cha on thng AB nu: dt(xa,ya,xb,yb,xc,yc) * dt(xa,ya,xb,yb,xd,yd) < 0, khi hai on AB v CD giao nhau theo iu kin b) nu (dt(xa,ya,xb,yb,xc,yc)*dt(xa,ya,xb,yb,xd,yd)<0) && (dt(xc,yc,xd,yd,xa,ya)*dt(xc,yc,xd,yd,xb,yb)<0); Trong hm dt c vit d hiu nh sau: float dt(int xa,int ya,int xb,int yb,int xm,int ym) { if (xa == xb) return xm-xa; else if (ya == yb) return ym-ya; else return (xm-xa)/(xb-xa) - (ym-ya)/(yb-ya); } Tm li 2 on thng AB v CD l giao nhau nu hm Catdoan sau tr v gi tr ng. int catdoan(int xa,int ya,int xb,int yb,int xc,int yc,int xd,int yd) { return (thuoc(xa,ya,xb,yb,xc,yc) || thuoc(xa,ya,xb,yb,xd,yd) || thuoc(xc,yc,xd,yd,xa,ya) || thuoc(xc,yc,xd,yd,xb,yb)) || (dt(xa,ya,xb,yb,xc,yc)*dt(xa,ya,xb,yb,xd,yd)<0) &&

Bi tp lp trnh cn bn SGU2010 (dt(xc,yc,xd,yd,xa,ya)*dt(xc,yc,xd,yd,xb,yb)<0); }

Trang 189

#include <iostream.h> #include <conio.h> #include <math.h> float kc(int xa,int ya,int xb,int yb) { return sqrt((xb-xa)*(xb-xa)+(yb-ya)*(yb-ya)); } int thuoc(int xa,int ya,int xb,int yb,int xm,int ym) { return fabs(kc(xa,ya,xm,ym)+kc(xm,ym,xb,yb)-kc(xa,ya,xb,yb))<=1.E-6; } float dt(int xa,int ya,int xb,int yb,int xm,int ym) { if (xa == xb) return xm-xa; else if (ya == yb) return ym-ya; else return (xm-xa)/(xb-xa) - (ym-ya)/(yb-ya); } int catdoan(int xa,int ya,int xb,int yb,int xc,int yc,int xd,int yd) { return (thuoc(xa,ya,xb,yb,xc,yc) || thuoc(xa,ya,xb,yb,xd,yd) || thuoc(xc,yc,xd,yd,xa,ya) || thuoc(xc,yc,xd,yd,xb,yb)) || (dt(xa,ya,xb,yb,xc,yc)*dt(xa,ya,xb,yb,xd,yd)<0) && (dt(xc,yc,xd,yd,xa,ya)*dt(xc,yc,xd,yd,xb,yb)<0); }

Bi tp lp trnh cn bn SGU2010 void main() { clrscr(); cout<<catdoan(0,0,4,4,2,2,6,6); getch(); }


Cc b test mu: A (0,0) (0,0) (0,0) (0,0) B (2,2) (4,4) (4,4) (0,0) C (4,4) (2,2) (2,2) (4,4) D (6,6) (6,6) (0,2) (4,4)

Trang 190

Kt qu 0 1 1 0

BT5-9. S dng cc hm BT5-8. M nm trn cc cnh ca tam gic nu M thuc v mt trong ba cnh ca tam gic. M nm trong tam gic khi v ch khi M vi mi nh ca tam gic lun nm cng mt pha i vi hai nh cn li. BT5-10. Trc ht vit hm kim tra xem mt im (x,y) c thuc v mt hnh ch nht hay khng (xem BT3-9). Tip theo l tm hnh ch nht nh nht bao hai hnh ch nht cho. Gi s c hnh ch nht c gc di tri l (xa,ya) v gc trn phi l (xb,yb). Cui cng l dng hai vng lp for duyt tng vung ca hnh ch nht (xa,ya), (xb,yb). vung no thuc v mt trong hai hnh ch nht cho th s c tnh vo din tch cn tm (vic kim tra mt vung thuc v hnh ch nht c th xt giao im ca hai ng cho vung c thuc v hnh ch nht hay khng ? tt nhin c nhiu cch gii quyt vn ny).

Bi tp lp trnh cn bn SGU2010 Chng 6 BT6-3. #include<conio.h> #include<iostream.h> void nhap(int a[], int &n); int tongday(int a[], int n); int demchan(int a[], int n); void main() { clrscr(); int a[100],n; nhap(a,n); getch(); } int demchan(int a[], int n) { if (n==0) return 0; return (a[n-1]%2==0)+dem(a,n-1); } void nhap(int a[], int &n) { cin>>n; for (int i=0; i<n;i++) cin>>a[i]; } int tongday(int a[], int n) { if (n>0)

Trang 191

Bi tp lp trnh cn bn SGU2010 return a[n-1]+tongday(a,n-1); return 0; } BT6-3. #include<iostream.h> #include<conio.h> int uscln(int a, int b); void main() { clrscr(); int a,b; cin >>a>>b; cout<<uscln(a,b); getch(); } int uscln(int a, int b) { if (a%b!=0) return uscln(b,a%b); return b; } BT6-5. #include <iostream.h> int f(int n) { if (n==1) return 1; else if (n%2==0) return 2*f(n/2); else return 2*f(n/2)+3*f(n/2+1); }

Trang 192

Bi tp lp trnh cn bn SGU2010 void main() { cout<<f(5); } BT6-6.b &c. #include <conio.h> #include <iostream.h> long y(int n); long yn(int n); void main() { clrscr(); cout<<y(5)<<endl; cout<<yn(5); getch(); } long y(int n) { if (n<=3) return n; return y(n-1)+2*y(n-2)+3*y(n-3); } long yn(int n) { long y1=1,y2=2,y3=3,s=n; for (int i=4;i<=n;i++) { s=y3+2*y2+3*y1;

Trang 193

Bi tp lp trnh cn bn SGU2010 y1=y2; y2=y3; y3=s; } return s; }

Trang 194

Bi tp lp trnh cn bn SGU2010

Trang 195

Chng 7 BT7-1.a.Trc ht tm gi tr ln nht ca cc phn t trong mng; gi s l max. Tip theo l vit mt hm kim tra mt s c phi l s nguyn t hay khng ? Cui cng l cho mt bin i bt u t max+1. C mi gi tr ca i th kim tra xem i c phi l s nguyn t hay khng ? Nu ng th i l kt qu v dng thut ton. Nu khng th tng i ln 1 n v v tip tc vng lp. b v c.Dng k thut t c hiu. d v e.Dng k thut lnh canh. f v g.Dng k thut m BT7-2.Vit hm m tn s xut hin ca cc phn t. S dng thm mng ph d cha tn s xut hin ca cc s, u tin cho mng d ton bng 1. Sau duyt tng cp phn t ai,aj ca mng (i<j). Nu ai=aj v vi d[i]>0 th tng d[i] ln mt n v v gim d[j] xung bng 0. d[i] chnh l tn s xut hin ca cc phn t. void tansoxuathien(int a[], int n) { int d[1000]; for (int i=0;i<n;i++) d[i]=1; for (i=0;i<n-1;i++) for (int j=i+1;j<n;j++) if (a[i]==a[j] && d[i]>0) { d[i]=d[i]+1; d[j]=0; } for (i=0;i<n;i++) if (d[i]>0) cout<<"\n"<<a[i]<<" xuat hien "<<d[i]<<" lan "; }

Bi tp lp trnh cn bn SGU2010 BT7-3. int uscln(int a, int b) { int r=a%b; while (r!=0) { a=b; b=r; r=a%b; } return b; } void nguyentocungnhau(int a[], int n) { cout<<endl; for (int i=0;i<n-1;i++) for (int j=i+1;j<n;j++) if (uscln(a[i],a[j])==1) cout<<a[i]<<","<<a[j]<<endl; } BT7-5. int uc=a[0]; for (i=1;i<n;i++) uc=uscln(uc,a[i]); cout<<"Uoc so chung lon nhat cua n so la: "<<uc<<endl;

Trang 196

BT7-10. Thut ton 1 Thut ton n gin nht c th vit ngay l: xt tt c cc cp s nguyn L v U tha mn 1 L U n; i vi mi cp nh vy ta tnh tng ca dy con a[L..U] v so snh tng ny vi gi tr ln nht hin c: for (L=1;L<=n;L++)

Bi tp lp trnh cn bn SGU2010

Trang 197

for (U=L;U<=n;U++) { sum=0; for (int I=L;I<=U;I++) sum=sum+a[I]; maxsofar=max(maxsofar,sum); } chng trnh ny tuy ngn v d hiu, tuy nhin n chy kh chm. Thut ton ny c phc tp l O(n3) Thut ton 2 Ta c th ci tin thut ton trn c thut ton vi phc tp l 2 O(n ) bng cch s dng h thc : Tng a[L..U]= Tng a[L..U-1]+a[U] maxsofar=0; for (L=1;L<=n;L++) { sum=0; for (U=L;U<=n;U++) { sum=sum+a[U]; maxsofar=max(maxsofar,sum); } } Thut ton 3 Tng ln nht trong dy con a[1..i] l tng ln nht trong dy con a[1..i-1](gi l maxsofar) hoc tng ln nht trong tt c cc tng ca cc dy con kt thc ti i (gi l maxendinghere) . Chng ta c nhn xt rng: Dy con ln nht kt thc ti i l dy con ln nht kt thc ti v tr i-1 c b sung thm phn t a[i] cui hoc l dy con rng trong trng hp tng ca dy con nhn c l s m. Ta c thut ton nh sau: maxsofar=0;

Bi tp lp trnh cn bn SGU2010 maxendinghere=0; for (i=1; i<=n;i++) { maxendinghere=max(maxendinghere+a[i],0); maxsofar=max(maxsofar,maxendinghere); } Minh ha cho thut ton 3 1 a[i] maxendinghere maxsofar 4 4 4 2 -5 0 4 3 6 6 6 4 -4 2 6 5 2 4 6

Trang 198

6 3 7 7

7 -7 0 7

Thut ton ny c phc tp l O(n). Cc b test mu n 7 6 3 a1 4 4 -7 a2 -5 -3 -4 a3 6 0 0 a4 -4 0 a5 2 3 a6 3 -5 a7 -7 Kt qu 7 4 0

#include <iostream.h> #include <conio.h> void algorithm1(int a[], int n); void algorithm2(int a[], int n); void algorithm3(int a[], int n); int max(int a,int b); void input(int a[],int &n); void main() { int a[100],n; input(a,n); algorithm1(a,n); getch();

Bi tp lp trnh cn bn SGU2010 } void input(int a[],int &n) { clrscr(); cin>>n; for (int i=1;i<=n;i++) cin>>a[i]; } void algorithm1(int a[], int n) { int maxsofar=0; for (int L=1;L<=n;L++) for (int U=L;U<=n;U++) { int sum=0; for (int I=L;I<=U;I++) sum=sum+a[I]; maxsofar=max(maxsofar,sum); } cout<<maxsofar; } void algorithm2(int a[], int n) { int maxsofar=0; for (int L=1;L<=n;L++) { int sum=0; for (int U=L;U<=n;U++)

Trang 199

Bi tp lp trnh cn bn SGU2010 { sum=sum+a[U]; maxsofar=max(maxsofar,sum); } } cout<<maxsofar; } void algorithm3(int a[], int n) { int maxsofar=0; int maxendinghere=0; for (int i=1; i<=n;i++) { maxendinghere=max(maxendinghere+a[i],0); maxsofar=max(maxsofar,maxendinghere); } cout<<maxsofar; } int max(int a,int b) { return a>b?a:b; }

Trang 200

Bi tp lp trnh cn bn SGU2010 Chng 8 BT8-3.a & b. #include <conio.h> #include <iostream.h> const maxn=20; void nhapmang(int a[maxn][maxn], int &n); int tongtgduoi(int a[maxn][maxn], int n); int gtlntgtren(int a[maxn][maxn], int n); void main() { clrscr(); int a[maxn][maxn],n; nhapmang(a,n); cout<<"\nTong cac phan tu trong ma tran tg duoi: "<<tongtgduoi(a,n); cout<<"\nGia tri lon nhat trong ma tran tam gia tren :"<<gtlntgtren(a,n); getch(); } void nhapmang(int a[maxn][maxn],int &n) { cout<<"Nhap vao n : ";cin>>n; for (int i=0;i<n;i++) for (int j=0;j<n;j++) cin>>a[i][j]; } int tongtgduoi(int a[maxn][maxn], int n) { int tong=0; for (int i=1;i<n;i++) for (int j=0;j<i;j++) tong+=a[i][j]; return tong;

Trang 201

Bi tp lp trnh cn bn SGU2010 } int gtlntgtren(int a[maxn][maxn], int n) { int max=a[0][1]; for (int i=0;i<n-1;i++) for (int j=i+1;j<n;j++) if (a[i][j]>max) max=a[i][j]; return max; }
Cc b test mu n=5 4 1 3 5 4 6 6 6 2 7 7 3 4 8 9 8 19 0 2 10 15 4 3 3 3

Trang 202

Kt qu: a. b. 55 19

BT8-5. #include<conio.h> #include<iostream.h> #include<iomanip.h> void main() { clrscr(); int a[100][100]; int n; cout<<"Tam giac Pascal : \n"; cout<<"Nhap vao so n = ";cin>>n;

Bi tp lp trnh cn bn SGU2010 for (int i=0;i<=n;i++) { a[i][0]=1; a[i][i]=1; } for (i=2;i<=n;i++) for (int j=1;j<i;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for (i=0;i<=n;i++) { for (int j=0;j<=i;j++) cout<<setw(4)<<a[i][j]; cout<<endl; } getch(); } BT8-10.a. #include <iostream.h> #include <conio.h> #include <iomanip.h> int i,j,n,t; int a[100][100]; void khoitri() { clrscr(); cout<<"Nhap n ";cin>>n; for (i=1;i<=n;i++) for (j=1;j<=n;j++)

Trang 203

Bi tp lp trnh cn bn SGU2010 a[i][j]=0; i=n; j=(n/2)+1; a[i][j]=1; } void xuly() { for (t=2;t<=n*n;t++) { i=i+1; j=j+1; if (i>n && j>n) {i=i-2;j=j-1;} if (i>n && j<=n) i=1; if (j>n && i<=n) j=1; if (a[i][j]!=0) {i=i-2;j=j-1;} a[i][j]=t; } } void inmaphuong() { for (i=1;i<=n;i++) { for (j=1;j<=n;j++) cout<<setw(4)<<a[i][j]; cout<<endl; } } void main() { khoitri(); xuly();

Trang 204

Bi tp lp trnh cn bn SGU2010 inmaphuong(); getch(); }

Trang 205

Bi tp lp trnh cn bn SGU2010 Chng 9 BT9-2. #include <alloc.h> #include <iostream.h> #include <conio.h> #include <iomanip.h> void nhap(int *a, int n); void sochanle(int *a, int n); void main() { clrscr(); int *a,n; cout<<"Nhap so phan tu cua mang :";cin>>n; a=new int [n]; nhap(a,n); sochanle(a,n); getch(); } void nhap(int *a, int n) { for (int i=0;i<n;i++) cin>>*(a+i); } void sochanle(int *a, int n) { cout <<endl<<"Cac so chan : "; for (int i=0;i<n;i++) if (*(a+i) % 2==0) cout<<setw(4)<<*(a+i); cout <<endl<<"Cac so le : ";

Trang 206

Bi tp lp trnh cn bn SGU2010 for (i=0;i<n;i++) if (*(a+i)%2==1) cout<<setw(4)<<*(a+i); delete a; } BT9-6. #include <conio.h> #include <alloc.h> #include <iostream.h> #include <iomanip.h> void nhap(int *px, int m, int n); void xuat(int *px, int m, int n); int tongmang(int *px, int m, int n); void tongdong(int *px, int m, int n); void sapdong(int *px, int m, int n); void sapbang(int *px, int m, int n);

Trang 207

void main() { int *px,m,n; cout<<"Nhap vao so dong:";cin>>m; cout<<"Nhap vao so cot"; cin>>n; px=new int [m*n]; cout<<"Nhap ma tran:\n "; nhap(px,m,n); cout<<"\nTong cac phan tu cua mang: "<< tongmang(px,m,n); cout<<"\nTong cua tung dong\n"; tongdong(px,m,n); cout<<"\nsap tang theo moi dong:"; sapdong(px,m,n);

Bi tp lp trnh cn bn SGU2010

Trang 208

xuat(px,m,n); cout<<"\nsap tang theo chieu tu trai->phai va tren -> duoi:"; sapbang(px,m,n); xuat(px,m,n); } void nhap(int *px, int m, int n) { for (int i=0;i<m;i++) for (int j=0;j<n;j++) cin>>*(px+n*i+j); } void xuat(int *px, int m, int n) { cout<<endl; for (int i=0;i<m;i++) { for (int j=0;j<n;j++) cout<<*(px+n*i+j)<<setw(4); cout<<endl; } } int tongmang(int *px, int m, int n) { int s=0; for (int i=0;i<m;i++) for (int j=0;j<n;j++) s=s+*(px+n*i+j);

Bi tp lp trnh cn bn SGU2010 return s; } void tongdong(int *px, int m, int n) { int *pd; pd=new int [m]; for (int i=0;i<m;i++) { *(pd+i)=0; for (int j=0;j<n;j++) *(pd+i)=*(pd+i) + *(px+n*i+j); cout<<*(pd+i)<<endl; } } void sapdong(int *px, int m, int n) { for (int i=0;i<m;i++) { for (int j=0;j<n-1;j++) for (int k=j+1;k<n;k++) if (*(px+n*i+j) >*(px+n*i+k)) { int temp=*(px+n*i+j); *(px+n*i+j)=*(px+n*i+k); *(px+n*i+k)=temp; } } }

Trang 209

Bi tp lp trnh cn bn SGU2010

Trang 210

void sapbang(int *px, int m, int n) { int *pd,t=0; pd=new int [m*n]; for (int i=0;i<m;i++) for (int j=0;j<n;j++) *(pd+(t++))=*(px+n*i+j); for (i=0;i<t-1;i++) for (int j=i+1;j<t;j++) if (*(pd+i)>*(pd+j)) { int temp=*(pd+i); *(pd+i)=*(pd+j); *(pd+j)=temp; } t=0; for (i=0;i<m;i++) for (int j=0;j<n;j++) *(px+n*i+j)=*(pd+(t++)); }

Bi tp lp trnh cn bn SGU2010 Chng 10. BT10-1.a. void demnguyenamphuam(char *s) { int nguyenam=0,phuam=0; for (int i=0;i<strlen(s);i++) if (s[i]!=' ') if (s[i]=='a' || s[i]=='o' || s[i]=='u' || s[i]=='e' ||s[i]=='i') nguyenam++; else phuam++; cout<<"\nNguyen am: "<<nguyenam; cout<<"\nPhu am: "<<phuam; }

Trang 211

BT10-2. Dng k thut t c hiu. Chui s c gi l i xng nu iu kin s[i]!= s[l-i-1] vi i i t 0 n l/2 lun lun sai, trong l=strlen(s). #include <stdio.h> #include <conio.h> #include <string.h> #include <iostream.h> int chuoidoixung(char *s); void main() { clrscr(); char s[255]; gets(s); cout<<chuoidoixung(s); getch(); } int chuoidoixung(char *s)

Bi tp lp trnh cn bn SGU2010 { int l=strlen(s); for (int i=0,b=1;i<l/2;i++) if (s[i]!= s[l-i-1]) return 0; return 1; } BT10-3. #include <iostream.h> #include <string.h> #include <conio.h> #include <stdio.h> void tudainhat(char s[]) { int dem=0, tam=0, tu=1; int n= strlen(s); for (int i=0; i<n; i++) { if (s[i]==' ') { tu++; if (dem <tam) dem=tam; tam=0; } else tam++; } if (tu==1) puts(s); tam=0; for (int i=0; i<n; i++) {

Trang 212

Bi tp lp trnh cn bn SGU2010 if(s[i]!=' ') tam++; if(s[i]==' ') { if (dem==tam) { tam++; for(int j=i-tam; j<i; j++) cout<<s[j]; } tam=0; } if(i==n-1 && dem==tam) for (int j=i-tam; j<n; j++) cout<< s[j]; } } void innguoc(char s[]) { int n=strlen(s); int j=0; s[n]=' '; for(int i=n-1; i>0; i--) { if (s[i]==' ') { j=i; while (s[++j]!=' ') cout<<s[j]; cout<<" "; } }; int i=-1;

Trang 213

Bi tp lp trnh cn bn SGU2010 while (s[++i]!=' ') cout<<s[i]; } void main() { char s[100]; cout<<"nhap chuoi: "; gets (s); cout<< "chuoi da nhap: "; puts(s); cout<<"tu dai nhat: "; tudainhat(s); printf("\n"); cout<<"chuoi in nguoc: "; innguoc(s); getch(); }

Trang 214

BT10-4.a. #include <iostream.h> #include <conio.h> #include <string.h> char *catkhoangtrong(char *s); void main() { clrscr(); char *s="Thanh Pho Ho Chi Minh"; cout<<catkhoangtrong(s); getch(); } Tm chui con c 2 k t trng, nu tm c th tr v v tr p. Sau chuyn chui s v trc mt v tr. Lp cng vic ny ta s c chui m gia cc t ch c duy nht mt khong trng. Vn tip theo l c th chui cn k t khong trng u chui v cui chui.

Bi tp lp trnh cn bn SGU2010

Trang 215

-Trng hp nu k t u chui l k t khong trng th gii quyt nh trn (ngha l chuyn chui v trc mt v tr) -Trng hp nu k t cui chui l k t khong trng th t du kt thc chui ti v tr . char* catkhoangtrong(char *s) { char *p; while (p = strstr(s, " ")) strncpy(p, p+1, strlen(s) - (p - s)); if (s[0] == ' ') strncpy(s, s+1, strlen(s) - 1); if (s[strlen(s)] == ' ') s[strlen(s)]='\0'; return s; } BT10-5.a. t chui s2=s+k+n; ngha l s2 cha cc k t pha sau cc k t cn xa. t chui s1[k]='\0'; ngha l s1 cha cc k t pha trc cc k t cn xa. Ni chui s2 vo sau chui s1 ta c kt qu cn tm s1 s+k+n s2 char *xoankytu(char *s,int n, int k) { char *s1,*s2; strcpy(s1,s); s1=s+k+n; strcpy(s2,s); s2[k]='\0'; return strcat(s2,s1); } BT10-5.b. t s1temp l chui s1 kt thc ti v tr d.

Bi tp lp trnh cn bn SGU2010 t s2temp l chui gm cc k t t v tr d n cui chui . Sau ni s2 vo gia s1temp v s2temp chnh l chui cn tm. char *chenchuoikytu(char *s1, char *s2,int d) { char *s1temp,*s2temp; strcpy(s1temp,s1); s1temp[d]='\0'; s2temp=s1+d; strcat(s1temp,s2); return strcat(s1temp,s2temp); } BT10-9. #include <stdio.h> #include <string.h> #include <conio.h> #include <iostream.h> char s[50] = ""; char *bachuso(unsigned int n) { char kyso[10][5]= {"", "mot", "hai", "ba", "bon", "nam", "sau", "bay", "tam", "chin"}; int donvi, chuc, tram; s[0] = 0; donvi = n % 10; n /= 10; chuc = n % 10; tram = n / 10; if (tram > 0) { strcat(s, kyso[tram]);

Trang 216

Bi tp lp trnh cn bn SGU2010 strcat(s, " tram "); } if (chuc > 0) { if (chuc == 1) strcat(s, "muoi "); else { strcat(s, kyso[chuc]); strcat(s, " muoi "); } } if (donvi > 0) { if (chuc == 0 && tram != 0) strcat(s, "le "); if (donvi == 1) strcat(s, "mot"); else if (donvi == 5 && (chuc != 0 || tram != 0)) strcat(s, "lam"); else if (donvi == 5 && (chuc == 0 || tram != 0)) strcat(s, "nam"); else strcat(s, kyso[donvi]); } return s; } void main() {

Trang 217

Bi tp lp trnh cn bn SGU2010 unsigned long n; unsigned ngan, trieu, ty, donvi; char chuoi[200]; printf("\nNhap mot so khong dau : "); scanf("%ld", &n); printf("So %ld doc bang chu la :\n", n); if (n == 0) printf("khong"); else { donvi = n % 1000; n /= 1000; ngan = n % 1000; n /= 1000; trieu = n % 1000; ty = n / 1000; chuoi[0] = 0; if (ty > 0) printf("%s ty", bachuso(ty)); if (trieu > 0) printf("%s trieu ", bachuso(trieu)); if (ngan > 0) printf("%s ngan ", bachuso(ngan)); if (donvi > 0) printf("%s", bachuso(donvi)); } getch(); }

Trang 218

Bi tp lp trnh cn bn SGU2010 Chng 11 BT11-1.a. #include <conio.h> #include <iostream.h> struct toado { int x; int y; }; void nhap(toado diem[], int &n); void tansuat(toado diem[], int n); void main() { clrscr(); int n;toado diem[100]; nhap(diem,n); tansuat(diem,n); getch(); } void nhap(toado diem[], int &n) { cin>>n; for (int i=0;i<n;i++) cin>>diem[i].x>>diem[i].y; } void tansuat(toado diem[], int n) { int d[100]; for (int i=0; i<n;i++) d[i]=1;

Trang 219

Bi tp lp trnh cn bn SGU2010

Trang 220

for (i=0; i<n-1;i++) for (int j=i+1; j<n;j++) if(diem[i].x==diem[j].x && diem[i].y==diem[j].y) { d[i]++; d[j]=0; } for (i=0; i<n;i++) if (d[i]!=0) { cout<<"\nToa do "<<diem[i].x<<"/"<<diem[i].y<<" xuat hien "<<d[i]<<" lan"; d[i]=0; } } BT11-5.a. #include <conio.h> #include <math.h> #include <iostream.h> #include <stdio.h> struct toado { int x; int y; }; void nhap(toado &A,toado &B, toado &C, toado &D); double kc(toado A, toado B); int thuoccanh(toado A, toado B, toado M); double dt(toado A, toado B, toado M); int catdoan(toado A,toado B, toado C, toado D);

Bi tp lp trnh cn bn SGU2010 void { main() clrscr(); toado A,B,C,D; nhap(A,B,C,D); cout<<catdoan(A,B,C,D); getch(); } void nhap(toado &A,toado &B, toado &C, toado &D) { cout<<"\nNhap toa do diem A : ";cin>>A.x>>A.y; cout<<"\nNhap toa do diem B : ";cin>>B.x>>B.y; cout<<"\nNhap toa do diem C : ";cin>>C.x>>C.y; cout<<"\nNhap toa do diem D : ";cin>>D.x>>D.y; } double kc(toado A, toado B) { return sqrt((B.x - A.x)*(B.x-A.x) + (B.y - A.y)*(B.y - A.y)); } int thuoccanh(toado A, toado B, toado M) { return fabs(kc(A,M)+kc(B,M)-kc(A,B))<=1.E-6; } double dt(toado A, toado B, toado M) { if (A.x == B.x) return M.x-A.x; else if (A.y == B.y) return M.y-A.y; else return (M.x-A.x)/(B.x-A.x) - (M.y-A.y)/(B.y-A.y); }

Trang 221

Bi tp lp trnh cn bn SGU2010 int catdoan(toado A,toado B, toado C, toado D) { return thuoccanh(A,B,C) || thuoccanh(A,B,D) || thuoccanh(C,D,A) || thuoccanh(C,D,B) || (dt(A,B,C)*dt(A,B,D)<0) && (dt(C,D,A)*dt(C,D,B)<0); } BT11-5.b #include <math.h> #include <iostream.h> #include <conio.h> struct toado { int x; int y; }; void nhap(toado &A,toado &B, toado &C, toado &M); double kc(toado A, toado B); int thuoccanh(toado A, toado B, toado M); double dientich(toado A, toado B, toado C); int xetvitri(toado A, toado B, toado C, toado M); void main() { toado A,B,C,M; nhap(A,B,C,M); if (xetvitri(A,B,C,M) ==0) else if (xetvitri(A,B,C,M) ==1) else

Trang 222

cout<<"M nam tren canh tam giac ABC "; cout<<"M nam trong tam giac ABC ";

Bi tp lp trnh cn bn SGU2010

Trang 223

cout<<"M nam ngoai tam giac ABC "; getch(); } void nhap(toado &A,toado &B, toado &C,toado &M) { clrscr(); cout<<"Nhap toa do diem A : \n";cin>>A.x>>A.y; cout<<"Nhap toa do diem B : \n";cin>>B.x>>B.y; cout<<"Nhap toa do diem C : \n";cin>>C.x>>C.y; cout<<"Nhap toa do diem M : \n";cin>>M.x>>M.y; } double kc(toado A, toado B) { return sqrt((B.x - A.x)*(B.x-A.x) + (B.y - A.y)*(B.y - A.y)); } int thuoccanh(toado A, toado B, toado M) { return fabs(kc(A,M)+kc(B,M)-kc(A,B))<=1.E-6; } double dientich(toado A, toado B, toado C) { double a=kc(B,C); double b=kc(A,C); double c=kc(A,B); double p=(a+b+c)/2; double s=sqrt(p*(p-a)*(p-b)*(p-c)); return s;

Bi tp lp trnh cn bn SGU2010 } int xetvitri(toado A, toado B, toado C, toado M) { if (thuoccanh(A,B,M) || thuoccanh(A,C,M) || thuoccanh(B,C,M)) return 0; if(fabs(dientich(M,A,B)+dientich(M,A,C)+dientich(M,B,C)dientich(A,B,C))<=1.E-6) return 1; return -1; } BT11-7. #include<conio.h> #include<iostream.h> #include<stdlib.h> #include<stdio.h> #include<string.h> struct nhanvien { char manv[8]; char hoten[20]; unsigned namsinh; char phongban[10]; float luongcb; float thuong; float thuclanh; }; int n; struct nhanvien nv[100],temp; void nhap(nhanvien nv[], int &n); void xuat(nhanvien nv[], int n);

Trang 224

Bi tp lp trnh cn bn SGU2010 void void void void void tongthuclanh(nhanvien nv[], int n); luongcbthapnhat(nhanvien nv[], int n); mucthuong(nhanvien nv[], int n); sapxep(nhanvien nv[], int n); capnhatluong(nhanvien nv[], int n);

Trang 225

void main() { clrscr(); nhap(nv,n); tongthuclanh(nv,n); luongcbthapnhat(nv,n); mucthuong(nv,n); sapxep(nv,n); xuat(nv,n); capnhatluong(nv,n); xuat(nv,n); getch(); } void nhap(nhanvien nv[], int &n) { cout<<"Ho so co bao nhieu nhan vien:"; cin>>n; for(int i=0;i< n;i++) { cout<<"\nManv:"; fflush(stdin); gets(nv[i].manv); cout<<"Ho ten:"; fflush(stdin); gets(nv[i].hoten); cout<<"Nam sinh:"; cin>>nv[i].namsinh; cout<<"Phong Ban:"; fflush(stdin);

Bi tp lp trnh cn bn SGU2010 gets(nv[i].phongban); cout<<"Luong CB:"; cin>>nv[i].luongcb; cout<<"Thuong:"; cin>>nv[i].thuong; nv[i].thuclanh = nv[i].luongcb + nv[i].thuong; } }

Trang 226

void xuat(nhanvien nv[], int n) { cout<<endl; cout<<"Manv Ho ten Nam sinh Phong ban LuongCB Thuong Thuc lanh"<<endl; for(int i=0;i<n;i++) cout<<nv[i].manv<<nv[i].hoten<<nv[i].namsinh<<nv[i].phongban< <nv[i].luongcb<<nv[i].thuong<<nv[i].thuclanh; } void tongthuclanh(nhanvien nv[], int n) { long tong=0; for(int i=0;i<n;i++) tong=tong +nv[i].thuclanh; cout<<"\nTong thuc lanh la "<<tong; } void luongcbthapnhat(nhanvien nv[], int n) { long min=nv[0].luongcb; for(int i=1;i<n;i++) if (nv[i].luongcb<min) min=nv[i].luongcb;

Bi tp lp trnh cn bn SGU2010 cout<<"\nLuong co ban thap nhat la:"<<min; }

Trang 227

void mucthuong(nhanvien nv[], int n) { int dem=0; for(int i=0;i<n;i++) if (nv[i].thuong>=1200000) dem++; cout<<"\nSo luong nhan vien co muc thuong >=1200000 la: "<<dem; } void sapxep(nhanvien nv[], int n)// cau 5 { for(int i=0;i<n-1;i++) for(int j=i+1;j<n;j++) if ( strcmp(nv[i].phongban,nv[j].phongban) > 0 || (strcmp(nv[i].phongban,nv[j].phongban)==0 && strcmp(nv[i].manv,nv[j].manv)<0)) { temp = nv[i]; nv[i] = nv[j]; nv[j] = temp; } } void capnhatluong(nhanvien nv[], int n)//cau 6 { for(int i=0;i<n;i++) { nv[i].luongcb=nv[i].luongcb+nv[i].luongcb*5.0/100;

Bi tp lp trnh cn bn SGU2010 nv[i].thuclanh = nv[i].luongcb + nv[i].thuong; } } BT11-8. #include <conio.h> #include <iostream.h> #include <alloc.h> #include <stdio.h> #include <string.h> struct hoadon { char mahang[4]; char tenhang[25]; long dongia; int soluong; long thanhtien; }; hoadon *mh; int n; void Nhap(hoadon *mh, int n); void Xuat(hoadon *mh, int n); void Dongiacaonhat(hoadon *mh, int n); void Saptenhang(hoadon *mh, int n); void main() { clrscr(); cout<<"Nhap n = ";cin>>n; mh=new hoadon [n]; Nhap(mh,n); Xuat(mh,n);

Trang 228

Bi tp lp trnh cn bn SGU2010 Dongiacaonhat(mh,n); Saptenhang(mh,n); Xuat(mh,n); free(mh); getch();

Trang 229

} void Nhap(hoadon *mh, int n) { for (int i=0;i<n;i++) { cout<<"Nhap ma hang :";fflush(stdin);gets(((mh+i))>mahang); cout<<"Nhap ten hang :";fflush(stdin);gets(((mh+i))>tenhang); cout<<"Nhap don gia :"; cin>>(mh+i)->dongia; cout<<"Nhap so luong :"; cin>>(mh+i)->soluong; (mh+i)->thanhtien=(mh+i)->soluong*(mh+i)->dongia; cout<<endl; } } void Xuat(hoadon *mh, int n) { for (int i=0;i<n;i++) cout<<(mh+i)->mahang <<(mh+i)->tenhang <<(mh+i)>dongia <<(mh+i)->soluong <<(mh+i)->thanhtien<<endl; } void Dongiacaonhat(hoadon *mh, int n) {

Bi tp lp trnh cn bn SGU2010

Trang 230

cout<<"Tim nhung mat hang co don gia cao nhat"; long max=mh->dongia; for (int i=1;i<n;i++) if ((mh+i)->dongia>max) max=(mh+i)->dongia; cout<<"\nNhung mat hang co don gia cao nhat\n"; for (i=0;i<n;i++) if ((mh+i)->dongia==max) cout<<(mh+i)->mahang<<(mh+i)->tenhang<<(mh+i)->dongia <<(mh+i)->soluong <<(mh+i)->thanhtien<<endl; } void Saptenhang(hoadon *mh, int n) { cout<<"sap xep"; hoadon temp; for (int i=0;i<n-1;i++) for (int j=i+1;j<n;j++) if (strcmp((mh+i)->tenhang,(mh+j)->tenhang)>0) { temp=*(mh+i); *(mh+i)=*(mh+j); *(mh+j)=temp; } } BT11-9. #include<conio.h> #include<iostream.h> #include<stdlib.h> #include<stdio.h> #include<iomanip.h> struct NGAY

Bi tp lp trnh cn bn SGU2010 { int ngay; int thang; int nam; }NGAY; struct HOSO { char hoten [30]; struct NGAY ns; long LCB; long thuong; long thuclanh; } HOSO; int n; struct HOSO nv[50],temp; void nhap(); void xuat(); void sapxep(); void main() { clrscr(); nhap(); sapxep(); xuat(); getch(); } void nhap() { cout<<"Ho so co bao nhieu nhan vien:"; cin>>n; for(int i=1;i<=n;i++)

Trang 231

Bi tp lp trnh cn bn SGU2010 { cout<<"\Nhap nhan vien thu: "<<i; cout<<"\nHo ten:"; fflush(stdin); gets(nv[i].hoten); cout<<"Ngay:"; fflush(stdin); cin>>nv[i]. ns.ngay; cout<<"Thang:"; fflush(stdin); cin>>nv[i]. ns.thang; cout<<"Nam:"; fflush(stdin); cin>>nv[i]. ns.nam; cout<<"LCB:";fflush(stdin); cin>>nv[i].LCB; out<<"Thuong:";fflush(stdin); cin>>nv[i].thuong; nv[i].thuclanh = nv[i].LCB + nv[i].thuong; } }

Trang 232

void xuat() { cout<<" Ho ten Ngay sinh LCB Thuong Thuc lanh"<<endl; for(int i=1;i<=n;i++) cout<<nv[i].hoten<<setw(5)<<nv[i]. ns.ngay<<setw(5)<<nv[i]. ns.thang<<setw(5)<<nv[i]. ns.nam <<setw(5)<<nv[i].LCB<<setw(5)<<nv[i].thuong<<setw(5)<<nv[i].thuclanh ; } void sapxep() { for(int i=1;i<=n-1;i++) for(int j=i+1;j<=n;j++) if(nv[i].thuclanh > nv[j].thuclanh)

Bi tp lp trnh cn bn SGU2010 { temp = nv[i]; nv[i] = nv[j]; nv[j] = temp; } } BT11-10. #include <iostream.h> #include <conio.h> #include <stdio.h> #include <string.h> struct hoadon { char mahang[8]; char tenhang[20]; float dongia; char donvi[10]; }; void nhap(hoadon mh[], int &n); void xuat(hoadon mh[], int n); void tenhanggiacao(hoadon mh[], int n); void main() { int n; hoadon mh[100]; nhap(mh,n); xuat(mh,n); tenhanggiacao(mh,n); } void nhap(hoadon mh[], int &n)

Trang 233

Bi tp lp trnh cn bn SGU2010 {

Trang 234

clrscr(); cout<<"Nhap vao so luong mat hang: ";cin>>n; for (int i=0; i<n;i++) { fflush(stdin); cout<<"Ma hang: ";gets(mh[i].mahang); fflush(stdin); cout<<"Ten hang: ";gets(mh[i].tenhang); cout<<"Don gia: ";cin>>mh[i].dongia; fflush(stdin); cout<<"don vi: ";gets(mh[i].donvi); } } void xuat(hoadon mh[], int n) { cout<<endl; for (int i=0; i<n;i++) if (strcmp(mh[i].donvi,"kg")==0) cout<<mh[i].mahang<<endl; } void tenhanggiacao(hoadon mh[], int n) { float max=-1; for (int i=0; i<n;i++) if (strcmp(mh[i].donvi,"kg")==0 && mh[i].dongia>max) max=mh[i].dongia; for (i=0; i<n;i++) if (strcmp(mh[i].donvi,"kg")==0 && mh[i].dongia==max) cout<<mh[i].tenhang; if (max!=-1) cout<<"khong co mat hang co don vi tinh la kg"; getch(); }

Bi tp lp trnh cn bn SGU2010 Bi tp nng cao BT13-1.a. #include <conio.h> #include <iostream.h> int a[8],b[15],c[15],x[8],i,d=0; void Queen(int i) { if (i>8) { for (int j=1;j<=8;j++) cout<<x[j]; cout<<endl; d++; // S li gii } else for (int j=1;j<=8;j++) if ((a[j]==0) && (b[i+j]==0) && (c[i-j+8]==0)) { x[i]=j; a[j]=1;b[i+j]=1;c[i-j+8]=1; Queen(i+1); a[j]=0;b[i+j]=0;c[i-j+8]=0; } } void main() { clrscr(); Queen(1); cout<<"Tong so loi giai la: "<<d; getch(); }

Trang 235

Bi tp lp trnh cn bn SGU2010 BT13-2.a. #include <iostream.h> #include <conio.h> int x[1000],b[1000],n; void xuat(); void hoanvi(int i); void main() { clrscr(); cout<<"Nhap vao so phan tu n = ";cin>>n; for (int i=1;i<=n;i++) b[i]=1; hoanvi(1); getch(); } void xuat() { for (int i=1;i<=n;i++) cout<<x[i]<<" "; cout<<endl; } void hoanvi(int i) { for (int j=1;j<=n;j++) if (b[j]==1) { x[i]=j; b[j]=0; if (i==n) xuat();

Trang 236

Bi tp lp trnh cn bn SGU2010 else hoanvi(i+1); b[j]=1; } }

Trang 237

BT13-3. #include<stdio.h> #include<conio.h> #include<iostream.h> #include<stdlib.h> int nam; char a[11][6]={"","giap","at","binh","dinh","mau","ky","canh","tan","nham","quy "}; char b[13][6]={"hoi","ty'","suu","dan","mao","thin","ty.","ngo","mui","than","dau ","tuat","0"}; void main() { cin>>nam; nam-=3; cout<<a[nam%10]<<" "<<b[nam%12]; } BT13-8. #include <stdio.h> #include <math.h> #define fi "dagiac.inp" #define fo "dagiac.out" FILE *f; int n, kq[1001]; float chuvi[1001];

Bi tp lp trnh cn bn SGU2010

Trang 238

void read(); void process(); void write(); //----------------------void main() { read(); process(); write(); } //----------------------void read() { f=fopen(fi,"rt"); int sodinh; float x1, y1, x2, y2; fscanf(f,"%d",&n); for(int i=1; i<=n; i++) { fscanf(f,"%d%f%f",&sodinh,&x1,&y1); for(int j=1; j<sodinh; j++) { fscanf(f,"%f%f",&x2,&y2); chuvi[i]+=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); x1=x2; y1=y2; } } fclose(f); } //----------------------void process()

Bi tp lp trnh cn bn SGU2010 { for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) if(chuvi[i]<chuvi[j]) kq[i]++; } //----------------------void write() { f=fopen(fo,"wt"); for(int i=1; i<=n; i++) fprintf(f,"%d\n",kq[i]); fclose(f); } BT13-9. #include <iostream.h> #include <conio.h> #include <stdio.h> #include <iomanip.h> #define N 20000 long a[N]; int n; FILE *f; void doc() { f=fopen("series.inp","rt"); fscanf(f,"%d",&n); for (int i=0;i<n;i++) fscanf(f,"%ld",&a[i]); fclose(f);

Trang 239

Bi tp lp trnh cn bn SGU2010 } void Swap(long &a,long &b) { long t=a; a=b; b=t; } void quicksort(long a[N],int l,int r) { long k=a[(l+r)/2]; int i=l; int j=r; do { while (a[i]<k) i++; while (a[j]>k) j--; if (i<=j) Swap(a[i++],a[j--]); } while (i<j); if (l<j) quicksort(a,l,j); if (i<r) quicksort(a,i,r); } void Process() { f=fopen("series.out","wt"); quicksort(a,0,n-1); long d=a[1]-a[0];

Trang 240

Bi tp lp trnh cn bn SGU2010 int i=1; while (a[i+1]-a[i]==d) i++; if (i!=n-1) fprintf(f,"%d",-1); else for (i=0;i<n;i++) fprintf(f,"%d\n",a[i]); fclose(f); } void main() { doc(); Process(); } BT13-10. #include <stdio.h> #define fi "chut.inp" #define fo "chut.out" FILE *f; int m, n, a[100][100], kq; void read(); void process(); void write(); int tren(int i, int j); int duoi(int i, int j); int trai(int i, int j); int phai(int i, int j); //----------------------void main() { read(); process();

Trang 241

Bi tp lp trnh cn bn SGU2010 write(); } //----------------------void read() { f=fopen(fi,"rt"); fscanf(f,"%d%d",&m,&n); int tmp; for(int i=1; i<=m; i++) for(int j=1; j<=n; j++) { fscanf(f,"%d",&tmp); a[i][j]=tmp; } fclose(f); } //----------------------void process() { for(int i=1; i<=m; i++) for(int j=i; j<=n; j++) if(a[i][j]==1) { if(tren(i,j)) kq++; if(duoi(i,j)) kq++; if(trai(i,j)) kq++; if(phai(i,j)) kq++;

Trang 242

Bi tp lp trnh cn bn SGU2010 }

Trang 243

} //----------------------int tren(int i, int j) { if(a[i][j+1]==1&&a[i][j+2]==1&a[i+1][j+1]==1&&a[i+2][j+1]= =1&&j+2<=n&&i+2<=m) return 1; return 0; } //----------------------int duoi(int i, int j) { if(a[i+1][j]==1&&a[i+2][j]==1&&a[i+2][j1]==1&&a[i+2][j+1]==1&&j+1<=n&&i+2<=m&&j-1>0) return 1; return 0; } //----------------------int trai(int i, int j) { if(a[i+1][j]==1&&a[i+2][j]==1&&a[i+1][j+1]==1&&a[i+1][j+2] ==1&&j+2<=n&&i+2<=m) return 1; return 0; } //----------------------int phai(int i, int j) { if(a[i+1][j]==1&&a[i+2][j]==1&&a[i+1][j-1]==1&&a[i+1][j2]==1&&i+2<=m&&j-2>0)

Bi tp lp trnh cn bn SGU2010 return 1; return 0; } //----------------------void write() { f=fopen(fo,"wt"); fprintf(f,"%d",kq); fclose(f); }

Trang 244

Bi tp lp trnh cn bn SGU2010

Trang 245

Mt s thi mu
S 1 Cu 1. #include <iostream.h> void main() { long n; cin>>n; int s=0; while (n>0) { s=s+n%10; n=n/10; } cout<<s; } Cu 2.1. int tudainhat(char *s) { int l=strlen(s); s[l]=' '; int max=0; int sokytu=0; for (int i=0;i<=l;i++) if (s[i]!=' ') sokytu++; else { if (sokytu>max) max=sokytu;

Bi tp lp trnh cn bn SGU2010 sokytu=0; } return max; } Cu 2.2. #include <conio.h> #include <iostream.h> #include <string.h> #include <stdio.h> void main() { char s[100]; gets(s); int l=strlen(s); int d[255]; for (int i=0;i<l;i++) d[s[i]]=0; for (i=0;i<l;i++) d[s[i]]++; for (i=0;i<l;i++) if (d[s[i]]!=0) { cout<<s[i]<<" xuat hien "<<d[s[i]]<<" lan" <<endl; d[s[i]]=0; } } Cu 3. #include <iostream.h> int uscln(int a, int b); int ktsoht(int n);

Trang 246

Bi tp lp trnh cn bn SGU2010 void main() { int a[100],n; cin>>n; for (int i=0; i<n;i++) cin>>a[i]; int min=a[0]; for (i=1; i<n;i++) if (a[i]<min) min=a[i]; cout<<"Gia tri nho nhat la: "<<min<<endl; int uc=a[0]; for (i=1;i<n;i++) uc=uscln(uc,a[i]); cout<<"Uoc so chung cua n so la: "<<uc<<endl; int ht=0; for (i=0;i<n;i++) if (ktsoht(a[i])) ht++; cout<<"So luong cac so hoan thien la: "<<ht<<endl; } int uscln(int a, int b) { int r=a%b; while (r!=0) { a=b; b=r; r=a%b; } return b;

Trang 247

Bi tp lp trnh cn bn SGU2010 } int ktsoht(int n) { int s=0; for (int i=1;i<n;i++) if (n%i==0) s=s+i; return (s==n); } S 2. Cu 3. #include <conio.h> #include <math.h> #include <iostream.h> #include <stdio.h> int songaythang(int thang, int nam) { switch (thang) { case 1: case 3: case 5: case 7: case 8: case 10: case 12:return 31; case 4: case 6: case 9: case 11:return 30; case 2:if (nam %4==0 && nam %400!=0)

Trang 248

Bi tp lp trnh cn bn SGU2010 return 29; return 28; } } void ngaymai(int &ngay, int &thang, int &nam) { if (ngay<songaythang(thang,nam)) ngay++; else { ngay=1; thang++; if (thang>12) { thang=1; nam++; } } } void main() { clrscr(); int ngay,thang,nam; cin>>ngay>>thang>>nam; ngaymai(ngay,thang,nam); cout<<ngay<<" "<<thang<<" "<<nam; getch(); } S 3. Cu 2.2.

Trang 249

Bi tp lp trnh cn bn SGU2010 #include <conio.h> #include <iostream.h> void nhap(int a[], int &n); int giatrithuk(int a[], int n,int k); void sapgiam(int a[], int n); void main() { clrscr(); int a[100],n,k; nhap(a,n); sapgiam(a,n); cout<<giatrithuk(a,n,k); getch(); } int giatrithuk(int a[], int n,int k) { cin>>k; if(k==1) return a[0]; int d=1; for (int i=0;i<n-1;i++) if (a[i]!=a[i+1]) { d++; if (d==k) return a[i+1]; } return 0; }

Trang 250

Bi tp lp trnh cn bn SGU2010 void sapgiam(int a[], int n) { for (int i=0;i<n-1;i++) for (int j=i+1;j<n;j++) if (a[i]<a[j]) { int temp=a[i];a[i]=a[j];a[j]=temp; } } void nhap(int a[], int &n) { cin>>n; for (int i=0;i<n;i++) cin>>a[i]; } S 6. Cu 1. #include<iostream.h> int sodoixung(long n); void main() { for (long i=1;i<100000;i++) if (sodoixung(i)) cout<<i<<" "; } int sodoixung(long n) { if (n<10) return 1; if (n<100) return n%10==n/10; if (n<1000) return n%10==n/100;

Trang 251

Bi tp lp trnh cn bn SGU2010

Trang 252

if (n<10000) return (n%10==n/1000 && n%100/10 == n%1000/100); if (n<100000) return (n%10==n/10000 && n%100/10 == n%10000/1000); } S 7. Cu 1. #include<stdio.h> #include<conio.h> #include<iostream.h> #include<stdlib.h> int songay(int thang, int nam); void main() { int ngay, thang, nam; cin>>ngay>>thang>>nam; int t=ngay; for (int i=1;i<thang;i++) t+=songay(i,nam); cout<<t; getch(); } int songay(int thang, int nam) { switch (thang) { case 1: case 3: case 5: case 7: case 8: case 10:

Bi tp lp trnh cn bn SGU2010 case 12:return 31; case 4: case 6: case 9: case 11:return 30; case 2:if (nam %4==0 && nam %400!=0) return 29; return 28; } } S 11. Cu 1. #include<iostream.h> void main() { int n,tuso=0,mauso=0; float s=0; cin>>n; for (int i=1;i<=n;i++) { tuso=tuso+2*i; mauso=mauso+2*i+1; s=s+(float)tuso/mauso; } cout<<s; }

Trang 253

Bi tp lp trnh cn bn SGU2010 S 13. Cu 1. #include<iostream.h> void main() { /* int s=0,i=0,m; cin>>m; while (s<=m) s=s+(2*i+++1); cout<<--i; */ int n=0,s=0,m,i=0; cin>>m; while (s<m) { if (i%2!=0) { s=s+i; n++; } i++; } cout<<n; } Cu 2. #include<iostream.h> int f(int n) ; int f1(int n) ; void main()

Trang 254

Bi tp lp trnh cn bn SGU2010 { cout<<f1(9); } int f(int n) { if (n==0) return 0; if (n==1) return 1; if (n==2) return 1; return 3*f(n-3)+2*f(n-2)+f(n-1); } int f1(int n) { int u0=0, u1=1, u2=1,f; int i=3; while (i<=n) { f=3*u0+2*u1+u2; u0=u1; u1=u2; u2=f; i++; } return f; } Cu 3 #include<conio.h> #include<iostream.h> void main() { clrscr();

Trang 255

Bi tp lp trnh cn bn SGU2010 int a[100],n; cin>>n; for (int i=0;i<n;i++) cin>>a[i]; for (i=0;i<n-1;i++) for (int j=i+1;j<n;j++) if (a[i]<a[j]) { int temp=a[i];a[i]=a[j];a[j]=temp; } int k; cin>>k; int d=0; a[n]=a[n-1]-1; for (i=0;i<n;i++) if (a[i]!=a[i+1]) { d++; cout<<a[i]<<" "; if (d==k) break; } getch(); } S 14. Cu 3.2. #include <iostream.h> const maxm=20, maxn=20; void nhapmang(int a[maxm][maxn], int &n); void xuatmang(int a[maxm][maxn], int n); void hoanvi(int &a, int &b); int vitrigtlndong(int a[maxm][maxn], int n, int k);

Trang 256

Bi tp lp trnh cn bn SGU2010 void biendoimang(int a[maxm][maxn], int n); void main() { int a[maxm][maxn],n; nhapmang(a,n); biendoimang(a,n); xuatmang(a,n); } void nhapmang(int a[maxm][maxn], int &n) { cout<<"Nhap vao n = ";cin>>n; for (int i=0;i<n;i++) for (int j=0;j<n;j++) cin>>a[i][j]; } void xuatmang(int a[maxm][maxn], int n) { for (int i=0;i<n;i++) { for (int j=0;j<n;j++) cout<<a[i][j]<<" "; cout<<endl; } } void hoanvi(int &a, int &b) { int temp=a; a=b; b=temp; }

Trang 257

Bi tp lp trnh cn bn SGU2010

Trang 258

int vitrigtlndong(int a[maxm][maxn], int n, int k) { int maxdong=a[k][0],vitri=0; for (int i=1;i<n;i++) if (a[k][i]>maxdong) { maxdong=a[k][i]; vitri=i; } return vitri; } void biendoimang(int a[maxm][maxn], int n) { for (int i=0;i<n;i++) hoanvi(a[i][i],a[i][vitrigtlndong(a,n,i)]); } S 15. Cu 1. #include<iostream.h> #include<math.h> int amstrong(int n); void main() { for (int i=1;i<10000;i++) if (amstrong(i)) cout<<i<<" "; } int amstrong(int n)

Bi tp lp trnh cn bn SGU2010

Trang 259

{ if (n<10) return n; if (n<100) return n==pow(n/10,2)+pow(n%10,2); if (n<1000) return n==pow(n/100,3)+pow(n%100/10,3)+pow(n%10,3); if (n<10000) return n==pow(n/1000,4)+pow(n%1000/100,4)+pow(n%100/10,4)+pow(n%10,4); } Cu 2. #include<stdio.h> #include<iostream.h> #include<stdlib.h> int ngay, thang, nam; int demngay(int thang) { if (thang==1||thang==3||thang==5||thang==7||thang==8||thang==10||thang= =12) return 31; if (thang==2) return 28; return 30; }

void main() { thang=1; ngay=1; cout<<"cac ngay thu sau cuoi thang nam 2010:"<<endl; while (thang<=12)

Bi tp lp trnh cn bn SGU2010 { if (ngay>demngay(thang)) { cout<<ngay-7<<"/"<<thang<<endl; ngay-=demngay(thang); thang+=1; } ngay+=7; } } Cu 3. #include<iostream.h> #include<values.h> void nhap(int a[], int &n); int somangconlientiep(int a[], int n); int mangtangdainhat(int a[], int n); void main() { int a[100],n; nhap(a,n); cout<<somangconlientiep(a,n); cout<<mangtangdainhat(a,n); } int somangconlientiep(int a[], int n) { int dem=1; for (int i=0;i<n-1;i++) if (a[i]>a[i+1]) dem++;

Trang 260

Bi tp lp trnh cn bn SGU2010 return dem; } int mangtangdainhat(int a[], int n) { int dem=1, max=0; for (int i=0;i<n-1;i++) { if (a[i]>a[i+1]) { if (dem>max) max=dem; dem=1; } else dem++; } return dem>max?dem:max; } void nhap(int a[], int &n) { cin>>n; for (int i=0;i<n;i++) cin>>a[i]; } S 16 Cu 2. #include<conio.h> #include<string.h> #include<stdio.h> #include<iostream.h>

Trang 261

Bi tp lp trnh cn bn SGU2010 int demtukkytu(char *s, int k); int tudainhat(char *s); void main() { clrscr(); char *s; gets(s); int b[8]; for (int i=1;i<=7;i++) b[i]=0; for (i=1;i<=7;i++) b[i]=demtukkytu(s,i); int max=0; for (i=1;i<=7;i++) if (b[i]>max) max=b[i]; for (i=1;i<=7;i++) if (b[i]==max) cout<<i<<" "; getch(); } //Dem tu co k ky tu int demtukkytu(char *s, int k) { int l=strlen(s); s[l]=' '; int dem=0; int sokytu=0; for (int i=0;i<=l;i++) if (s[i]!=' ') sokytu++; else

Trang 262

Bi tp lp trnh cn bn SGU2010 { if (sokytu==k) dem++; sokytu=0; } return dem; } Cu 3. #include<iostream.h> struct hv { int so1; int so2; int so3; int so4; }; #define maxn 20 void nhapmanga(hv a[maxn][maxn], int &n); void timmangb(hv a[maxn][maxn], int n); void vitritoanchan(hv a[maxn][maxn], int n); int kiemtra4sochan(hv a[maxn][maxn],int i,int j); int tong4so(hv a[maxn][maxn],int i,int j); void main() { hv a[maxn][maxn]; int n; nhapmanga(a,n); timmangb(a,n); vitritoanchan(a,n); }

Trang 263

Bi tp lp trnh cn bn SGU2010 void nhapmanga(hv a[maxn][maxn], int &n) { cout<<"Nhap vao so n = ";cin>>n; for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) cin>>a[i][j].so1>>a[i][j].so2>>a[i][j].so3>>a[i][j].so4; } void timmangb(hv a[maxn][maxn], int n) { int b[maxn][maxn]; // Tinh mang b for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) b[i][j]=tong4so(a,i,j); // Xuat mang b for (i=1;i<=n;i++) { for (int j=1;j<=n;j++) cout<<b[i][j]<<" "; cout<<endl; } } void vitritoanchan(hv a[maxn][maxn], int n) { int max=0; int x=1,y=1; for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) if (kiemtra4sochan(a,i,j) && tong4so(a,i,j)>max ) { max=tong4so(a,i,j);

Trang 264

Bi tp lp trnh cn bn SGU2010 x=i; y=j; } if (max==0) cout<<0; else cout<<endl<<x<<","<<y; } int kiemtra4sochan(hv a[maxn][maxn],int i,int j) { if (a[i][j].so1%2!=0) return 0; if (a[i][j].so2%2!=0) return 0; if (a[i][j].so3%2!=0) return 0; if (a[i][j].so4%2!=0) return 0; return 1; } int tong4so(hv a[maxn][maxn],int i,int j) { return a[i][j].so1+a[i][j].so2+a[i][j].so3+a[i][j].so4; } S 17 Cu 2. #include<iostream.h> int tinhyn(int n); int tinhyn1(int n); void main() { cout<<tinhyn1(5); } int tinhyn(int n) { if (n<=3) return n;

Trang 265

Bi tp lp trnh cn bn SGU2010 return tinhyn(n-1)*(5*tinhyn(n-2)+6*tinhyn(n-3)); } int tinhyn1(int n) { int y1=1,y2=2,y3=3,yn=n; for (int i=4;i<=n;i++) { yn=y3*(5*y2+6*y1); y1=y2; y2=y3; y3=yn; } return yn; } S 18 Cu 3. #include<iostream.h> void main() { for (long x=1;x<10000;x++) for (long y=1;y<10000;y++) for (long z=1;z<10000;z++) if (x*x+ y*y==z*z) cout<<x<<" "<<y<<" "<<z<<endl; } Cu 3. #include<iostream.h> void main() { int a[100],d[100],n;

Trang 266

Bi tp lp trnh cn bn SGU2010 cout<<"Nhap vao so n = ";cin>>n; cout<<"Nhap vao 1 hoan vi cua n phan tu : \n" ; for (int i=1;i<=n;i++) cin>>a[i]; for (i=1;i<=n;i++) { d[i]=0; for (int j=1;j<=n;j++) if (a[j]==i) for (int k=1;k<j;k++) if (a[k]>a[j]) d[i]++; cout<<d[i]<<" "; } } S 20 Cu 1. #include<iostream.h> #include<math.h> void main() { float xa,ya,xb,yb,xc,yc; cin>>xa>>ya; cin>>xb>>yb; cin>>xc>>yc; float xtdbc=(xb+xc)/2.0; float ytdbc=(yb+yc)/2.0; float xd=2*xtdbc-xa; float yd=2*ytdbc-ya; float kc=fabs((yd-yb)*xa+(xb-xd)*ya+xd*yb-xb*yd)/ sqrt(pow(yd-yb,2)+pow(xb-xd,2));

Trang 267

Bi tp lp trnh cn bn SGU2010 cout<<"Toa do diem D la : "<<xd<<","<<yd<<endl; cout<<"Khoang cach giua AC va BD la : "<<kc; }

Trang 268

Cu 2. #include <iostream.h> #include <math.h> long f(long x, long y, long z); void main() { long A,B; cout<<"Nhap vao 2 so nguyen A,B: "; cin>>A>>B; long max; long nghiemx,nghiemy,nghiemz; for (long x=0;x<=A;x++) for (long y=0;y<=A/2;y++) for (long z=0;z<=A/3;z++) if (x*x+2*y*y+3*z*z<=A*A && y*y+z*z<=B*B && f(x,y,z)>max) { max=f(x,y,z); nghiemx=x; nghiemy=y; nghiemz=z; } cout<<"Gia tri lon nhat cua bieu thuc f la : "<<max<<endl; cout<<"Tai cac gia tri x,y,z la: "<<nghiemx<<","<<nghiemy<<","<<nghiemz; } long f(long x, long y, long z) { return pow(x,2)+pow(y,4)+pow(z,8);

Bi tp lp trnh cn bn SGU2010 } Cu 2. #include <stdio.h> #include <conio.h> #include <iostream.h> void nhap(int a[], int &n) { cin>>n; for (int i=0;i<n;i++) cin>>a[i]; } int dembit1(int n) { int count=0; while (n>0){ if (n%2==1) count++; n/=2; }; return count; } int demsobitle(int a[], int n) { int count=0; for (int i=0;i<n; i++) if (dembit1(a[i]%2==1)) count++; return count; }

Trang 269

Bi tp lp trnh cn bn SGU2010 void main() { int a[1000],n; nhap(a,n); cout<<demsobitle(a,n); }

Trang 270

Bi tp lp trnh cn bn SGU2010 PH LC

Trang 271

Ph lc A.

Mt s lnh lin quan n mn hnh thng dng


1.Ta mn hnh
H to trn mn hnh nhn im gc trn bn tri lm im gc, trc honh l trc nm ngang chy t tri sang phi, trc tung l trc thng ng t trn xung di. Cc ta mn hnh thng c k kiu l x v y, vi x l ch s ct; cn y ch s hng. Gc tri bn trn ca mn hnh c ta (1:1); gc phi bn di c ta (80:25) gii hn ny ty thuc li mn hnh. Ta c th di chuyn con tr ti mt v tr mi trn mn hnh bng lnh gotoxy(x,y).

2.Gi tr bng mu
BLACK = 0 BLUE = 1 GREEN = 2 CYAN = 3 RED = 4 MAGENTA = 5 BROWN = 6 LIGHTGRAY = 7 DARKGRAY = 8 LIGHTBLUE = 9 LIGHTGREEN = 10 LIGHTCYAN = 11 LIGHTRED = 12 LIGHTMAGENTA = 13 YELLOW = 14 WHITE = 15 BLINK = 128 Cch ghi gi tr mu l chui in hoa nh trn hay s tng ng l tng ng.

Bi tp lp trnh cn bn SGU2010

Trang 272

3.Mt s lnh lin quan n mn hnh


void textbackground (int color); t mu nn void textcolor (int color); t mu ch void gotoxy(int x, int y); Di chuyn con tr trong phm vi ca s

Bi tp lp trnh cn bn SGU2010

Trang 273

Ph lc B

Mt s hm chun thng s dng


stdio.h void putchar (char c); Xut k t void getchar (char c); Nhp k t void puts(char *s); Xut chui void gets(char *s); Nhp chui void fflush(stdin); Xo vng m bn phm conio.h void clrscr(); Xo mn hnh void gotoxy(int x, int y); a im nhy n to x,y trn mn hnh void textcolor(int color) t mu ch mi void textbackground(int color) t mu nn mi void getch(); Nhp k t( khng hin ra mn hnh) void getche(); Nhp k t(c hin ra mn hnh) stdlib.h void randomize(); Khi ng c ch to s ngu nhin void random(int n) Tr v s nguyn trong khong 0 n n-1.

Bi tp lp trnh cn bn SGU2010

Trang 274

unsigned int rand(); Cho mt gi tr ngu nhin trong khong 1.. 32767 void flushall(); Xo vng m bn phm, lnh ny thng c s dng trc cc lnh nhp liu nh gets hoc scanf math.h double sqrt(double x) ; Cn bc hai double exp(double x) ; Tnh ex double pow(double x, double y); Tnh xy int abs(int x) ; Tr tuyt i ca kiu s int double fabs(double x) ; Tr tuyt i ca kiu s float,double long int labs(long int x) ; Tr tuyt i ca kiu s long double ceil(double x) ; Lm trn s ln (i vi s thc) double floor(double x) ; Lm trn s xung(i vi s thc) double log(double x) ; Tnh logarit t nhin ca x double sin(double x) ; Tnh sin ca x double cos(double x) ; Tnh cos ca x double tan(double x) ; Tnh tg ca x asin,acos,atan

Bi tp lp trnh cn bn SGU2010

Trang 275

Cc hm lng gic ngc (tham s cc hm lng gic l radian) dos.h void gettime(struct time *t) Hm nhn gi h thng v t vo cc thnh phn ca mt bin cu trc time do con tr t tr ti. Kiu cu trc time c nh ngha sn nh sau: struct time { unsigned ti_hour; unsigned ti_min; unsigned ti_sec; unsigned ti_hund; }; void settime(struct time *t); Hm t li gi h thng theo gi tr cc thnh phn ca mt bin cu trc kiu time do con tr t tr ti. long time(long *t); Hm cho thi gian hin ti theo giy bt u tnh t 0 gi 0 pht 0 giy (gi GMT) ngy 1 thng 1 nm 1970. void getdate(struct date *d); Kiu cu trc date c nh ngha sn nh sau: struct date { int da_year; char da_mon; char da_day; }; void setdate (struct date *d); Hm t li ngy h thng theo gi tr cc thnh phn ca mt bin cu trc kiu date do con tr d tr ti. ctype.h int isalnum(int c);

Bi tp lp trnh cn bn SGU2010

Trang 276

Kim tra c l k t (ch ci hoc ch s) hay khng ? int isalpha(int c); Kim tra c l ch ci hay khng ? int isdigit(int c); Kim tra c l ch s hay khng ? int isalower (int ct); Kim tra c l ch ci thng hay khng ? isupper(int c); Kim tra c l ch ci hoa hay khng ? int isspace(int c); Kim tra xem k t c l k t trng ? int tolower(int c); Chuyn k t c thnh ch thng int toupper(int c); Chuyn k t c thnh ch hoa. int toascii(int c); Chuyn k t c thnh m ASCII

Bng m ASCII
B m ASCII gm 256 k t c phn b nh sau: -32 k t u tin l cc k t iu khin khng in c nh k t enter (m 13), k t ESC (m 27), 32 l k t khong trng. -Cc m ASCII 33-47,58-64,91-96 v 123-127 l cc k t c bit nh du chm, du phy, du cch, du ngoc, du mc, du hi, -Cc m ASCII 48-57 l 10 ch s. -Cc m ASCII 65-90 l cc ch ci hoa t A n Z. -Cc m ASCII 97-122 l cc ch ci thng t a n z. -Cc m ASCII 128-255 l cc k t ha. string.h char *gets(char * str);

Bi tp lp trnh cn bn SGU2010

Trang 277

Ch nhp vo t bn phm chui k t, hm tr v con tr tr ti a ch u chui str. Ch rng m bo b m bn phm c lm rng trc khi nhp d liu chui, chng ta nn s dng hm fflush(stdin). char *puts (char * str); Xut chui str ln mn hnh. unsigned *strlen(const char *str); Xc nh chiu di ca chui str. char* strcpy(char *dest, const char * src); Sao chp ni dung trong src vo trong dest. Hm tr v con tr tr ti a ch u ca chui ch (con tr dest) int strcmp(char *s1, char *s2); (so snh c phn bit ch hoa v ch thng) Tr v kt qu so snh hai chui s1 v s2. Nu gi tr tr v > 0 th chui s1 cha chui s1 Nu gi tr tr v < 0 th chui s2 cha chui s1 Nu gi tr tr v = 0 th chui s2 ging chui s1 int stricmp(char *s1, char *s2); (so snh khng phn bit ch hoa v ch thng) char * strrev(char *st); o ngc cc k t trong chui st, hm tr v con tr st. strlwr(char *s); i chui s thnh ch thng. strupr(char *s); i chui s thnh ch hoa. strcat(char *s1, char *s2); Ghp chui s2 vo sau chui s1. strchr(char *s,char c); Tm k t c trong chui s, khng c tr v NULL. strrchr(char *s,char c); Ging hm trn nhng bt u tm t bn phi. strstr(char *s1, char *s2);

Bi tp lp trnh cn bn SGU2010

Trang 278

Tm chui s2 trong chui s1 tr v v tr chui s2 trong chui s1. int atoi(char *s); i chui s thnh s kiu int. int atol(char *s); i chui s thnh s kiu long. int atof(char *s); i chui s thnh s kiu float. void flushall(); Xo vng m bn phm, lnh ny thng c s dng trc cc lnh nhp liu nh gets hoc scanf.

Bi tp lp trnh cn bn SGU2010

Trang 279

Ph lc C

Chuyn i C/C++ sang C#


1. Gii thiu C# -C# l ngn ng lp trnh do Microsoft cng b vo thng 7 nm 2000 lm vic trn nn tng .NET. Ngn ng C# c cc c trng ging C/C++, Java v l ngn ng lp trnh hng i tng. 2. C bn v C# - Ngn ng C# phn bit ch hoa thng v tt c cc lnh u kt thc bng du chm phy (;). STT 1 2 3 4 5 6 7 LNH K hiu bt u K hiu kt thc Ch th tin x (preprocessor directive) Lp i tng Lnh nhp Lnh xut Lnh gn l C/C++ { } #include class scanf, cin printf, cout = C# { } using class Console.ReadLine Console.WriteLine =

- Cc php ton : + , - , * , / , % (tng t C/C++) - Ton t so snh: < , > , >= , <= , == , != (tng t C/C++ ) - Ton t logic : ! , && , || (tng t C/C++) - Cc kiu d liu c bn: + Kiu s nguyn, s nguyn di, s thc, lun l (int, long, float, bool) (tng t C/C++) + Kiu chui: string (C/C++: char*, char[]) + Hm chuyn i kiu d liu: T chui sang s: <KiuDLiu>.Parse(<Chui>) V d: string s = 123; int n = int.Parse(s);

Bi tp lp trnh cn bn SGU2010 T s sang chui: <TnBin>.ToString() V d: int n = 123; string s = n.ToString();

Trang 280

3. Cu trc r nhnh - C 3 dng tng t C/C++: if, ifelse, switchcase 4. Cu trc lp - C 3 dng tng t C/C++: for, while, dowhile - Ngoi ra, cn c cu trc lp khc foreach 5. Hm - Tham tr : ging C/C++ - Tham bin: dng t kho ref (C/C++: &) 6. Mng - Khai bo: <KiuDLiu> []<TnBin> = new <KiuDLiu>[<HngS>]; KiuDLiu: l kiu d liu ca 1 phn t trong mng. HngS: l mt s nguyn dng ch s lng ti a c th c trn mt chiu trong mng. - V d: Mng mt chiu cc s nguyn a c ti a 50 phn t int []a = new int[50]; - Cch duyt mng v truy xut cc phn t trong mng tng t C/C++ 7. V d Vit chng trnh nhp vo s nguyn dng n. Hy tnh S = 1 + 2 + + n C/C++ #include "stdio.h" #include "conio.h" void main () { int n; int S; printf ("Nhap so nguyen n: "); scanf ("%d", &n);

Bi tp lp trnh cn bn SGU2010 S = 0; for (int i = 1; i <= n; i++) S = S + i; printf ("S = %d", S); getch(); } C# using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication { class Program { static void Main(string[] args) { int n; int S; string chuoi; Console.Write("Nhap so nguyen n:"); chuoi = Console.ReadLine(); //chuyen tu chuoi sang so n = int.Parse(chuoi); S = 0; for (int i = 1; i <= n; i++) S = S + i; Console.Write("S = {0}", S); Console.ReadLine(); } }

Trang 281

Bi tp lp trnh cn bn SGU2010

Trang 282

Ti liu tham kho


[1]K thut lp trnh C - C s v nng cao Phm vn t, Nh xut bn khoa hc k thut, 2007. [2]Nhng vin ngc trong k thut lp trnh John Bentley. [3]B thi mn C s lp trnh dnh cho cc lp i hc Khoa Cng ngh thng tin, trng i hc Si Gn. [4]B thi OLYMPIC Tin hc sinh vin Vit Nam (Trch mt s thi khi cao ng v khi khng chuyn cc nm 2004-2009) - Hi tin hc Vit Nam. [5]Bi tp k thut lp trnh tp 1 Nguyn Tn Trn Minh Khang, 2003. [6]B thi hon chnh i hc mn K thut lp trnh i hc Khoa hc t nhin, HQG TPHCM

Bi tp lp trnh cn bn SGU2010

Trang 283

Mc lc
Trang 01 02 18 28 37 45 55 64 75 86 95 102 121 140 146 166 271 283

Chng 1: Chng 2: Chng 3: Chng 4: Chng 5: Chng 6: Chng 7: Chng 8: Chng 9: Chng 10: Chng 11: Chng 12:

Li gii thiu Thut ton M u v ngn ng lp trnh C/C++ Cc cu trc r nhnh Cc cu trc lp Chng trnh con K thut lp trnh quy Mng mt chiu Mng nhiu chiu Con tr Chui Kiu cu trc File d liu Bi tp nng cao Mt s thi mu Gi v hng dn gii bi tp Ph lc Ti liu tham kho

You might also like