Professional Documents
Culture Documents
OnTap - LTC (Lap Trinh C
OnTap - LTC (Lap Trinh C
Tm tt l thuyt v bi
tp
PHN 1
LU THUT TON (FLOWCHART)
Cc k hiu biu din lu thut ton, cch biu din cc cu trc iu khin r
nhnh, cu trc lp v cc k thut lin quan n lu thut ton.
I. TM TT L THUYT
I.1. Khi nim : Lu thut ton l cng c dng biu din thut ton, vic m t
nhp (input), d liu xut (output) v lung x l thng qua cc k hiu hnh hc.
I.2. Phng php duyt :
Duyt t trn xung v duyt t tri sang phi.
I.3. Cc k hiu :
Trang 1
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Trang 2
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Trang 3
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Trang 4
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Lp trnh cn bn
Tm tt l thuyt v bi
tp
V d 2: Tnh tng :
Trang 6
Lp trnh cn bn
Tm tt l thuyt v bi
tp
V d 3: Tnh tng :
Lp trnh cn bn
Tm tt l thuyt v bi
tp
II.1. Bi tp c bn
1. Nhp vo hai s x, y. Xut ra mn hnh tng, hiu, tch, thng ca hai s trn.
2. Nhp vo s nguyn n, kim tra xem n chn hay l v xut ra mn hnh.
3. Nhp vo ba cnh a, b, c ca tam gic. Xut ra mn hnh tam gic thuc loi tam
gic g? (Thng, cn, vung, u hay vung cn).
4. Nhp vo s nguyn n. Nu n>5 th tng n ln 2 n v v tr v gi tr n, ngc li
tr v gi tr 0.
5. Nhp vo s nguyn n. Tnh n! vi 0 n
6. Cho s nguyn n. Tnh tr tuyt i ca n
7. Tnh P = 1 . 3 . 5 . . . (2n+1) , vi 0 n
8. Tnh P = 1+ 3 + 5 + + (2n+1) , vi 0 n
Trang 8
Lp trnh cn bn
Tm tt l thuyt v bi
tp
PHN 2
Trang 9
Lp trnh cn bn
Tm tt l thuyt v bi
tp
CU TRC IU KHIN
I. TM TT L THUYT
I.1. Cc kiu d liu c bn trong C
Lp trnh cn bn
Tm tt l thuyt v bi
tp
#include <stdio.h>
void main ()
{
float a, b;
printf ( \n Nhap vao a:);
scanf ( %f, &a);
printf ( Nhap vao b:);
scanf ( %f, &b) ;
if (a= = 0)
if (b= = 0)
printf ( \n PTVSN);
else
printf ( \n PTVN);
else
printf ( \n Nghiem x=%f, -b/a);
getch ();
}
I.3. Cu trc la chn switch
switch (biu thc)
{
case n1:
cc cu lnh ;
break ;
case n2:
cc cu lnh ;
break ;
case nk:
<cc cu lnh> ;
break ;
[default: cc cu lnh]
}
Trong :
ni l cc hng s nguyn hoc k t.
Ph thuc vo gi tr ca biu thc vit sau switch, nu:
o Gi tr ny = ni th thc hin cu lnh sau case ni.
o Khi gi tr biu thc khng tha tt c cc ni th thc hin cu lnh sau default
nu c, hoc thot khi cu lnh switch.
o Khi chng trnh thc hin xong cu lnh ca case ni no th n s thc
hin lun cc lnh thuc case bn di n m khng xt li iu kin (do cc ni
c xem nh cc nhn) .V vy, chng trnh thot khi lnh switch sau
khi thc hin xong mt trng hp, ta dng lnh break.
V d 1 : Vit chng trnh chn menu bng s nhp t bn phm.
Trang 11
Lp trnh cn bn
Tm tt l thuyt v bi
tp
#include<stdio.h>
#include<conio.h>
void ChonTD (int &chon)
{
printf ("Thuc Don") ;
printf ("\n1. Lau thai!") ;
printf ("\n2. Nuoc ngot!") ;
printf ("\n3. Ca loc hap bau!") ;
printf ("\n4. Chuot dong!") ;
printf ("\n Xin moi ban chon mon an!") ;
scanf ("%d",&chon) ;
}
void TDchon(int chon)
{
switch (chon)
{
case 1:
printf ("\nBan chon lau thai!") ;
break ;
case 2:
printf ("\nBan chon nuoc ngot!") ;
break ;
case 3:
printf ("\nBan chon ca loc hap bau!") ;
break ;
case 4:
printf ("\Ban chon chuot dong!") ;
break ;
default:
printf ("\nBan chon khong dung!") ;
}
}
void main()
{
clrscr() ;
int chon ;
ChonTD(chon) ;
TDchon(chon) ;
getch() ;
}
V d 2 : Vit chng trnh nhp vo thng , xut ra mn hnh s ngy ca thng va nhp
(Gi s thng 2 c 28 ngy) .
#include<stdio.h>
#include<conio.h>
void so_ngay (int thang)
Trang 12
Lp trnh cn bn
Tm tt l thuyt v bi
tp
{
switch (thang)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
{
printf ("\n Thng %d c 31 ngy ", thang) ;
break ;
}
case 4:
case 6:
case 9:
case 11:
{
printf ("\n Thng %d c 30 ngy", thang) ;
break ;
}
case 2:
{
printf ("\n Thng 2 c 28 ngy") ;
break ;
}
default:
printf ("\n Ban nhp thng khng ng!") ;
}
}
void main()
{
clrscr() ;
int thang ;
printf( Hy nhp thng : );
so_ngay(thang) ;
getch() ;
}
scanf(%d, &thang);
I.4. Cu trc lp
a. Cu trc lp for :
for (<biu thc khi gn>; <biu thc iu kin>; <biu thc tng/gim>)
{
<khi lnh>;
Trang 13
Lp trnh cn bn
Tm tt l thuyt v bi
tp
}
V d: In ra mn hnh bng m ASCII t k t s 33 n 255.
#include<conio.h>
#include<stdio.h>
void main()
{
for (int i=33;i<=255;i++)
printf("Ma ASCII cua %c: %d\t", i, i) ;
getch () ;
}
b. Cu trc lp while
< Khi gn>
while ( <biu thc iu kin>)
{
lnh/ khi lnh;
}
V d: Tnh gi tr trung bnh cc ch s ca s nguyn n gm k ch s.
#include<stdio.h>
#include<conio.h>
void main()
{
int n, tong=0, sochuso=0;
float tb;
printf ("Nhap vao gia tri n gom k chu so") ;
scanf ("%d",&n) ;
while(n>0)
{
tong=tong+n%10 ;
sochuso++ ;
n=n/10 ;
}
tb=(float)1.0*tong/sochuso ;
printf ("Gia tri trung binh la: %f", tb) ;
getch () ;
}
c. Cu trc lp do while
do
{
< khi lnh> ;
} while (biu thc iu kin) ;
Trang 14
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Trang 15
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Lp trnh cn bn
Tm tt l thuyt v bi
tp
printf("\na = %d",a);
3. Cho bit kt qu ca on chng trnh sau:
int x=5, y;
y=x++ + 5;
printf(x=%d, y=%d\n, x, y);
y*=6;
x=y%7;
printf(x=%d,y=%d,y/x=%d, x, y, y/x);
4. Nhp vo hai s nguyn a, b. In ra mn hnh gi tr ln nht.
5. Cho ba s a, b, c nhp vo t bn phm. Hy tm gi tr ln nht ca ba s trn v in ra
kt qu.
6. Cho ba s a, b, c nhp vo t bn phm. Hy in ra mn hnh theo th t tng dn cc s.
7. Vit chng trnh nhp vo mt s nguyn n gm ba ch s. Xut ra mn hnh ch s ln
nht v tr no?
V d: n=291. Ch s ln nht nm hng chc (9).
8. Vit chng trnh nhp vo s nguyn n gm ba ch s. Xut ra mn hnh theo th t
tng dn ca cc ch s.
V d: n=291. Xut ra 129.
9. Nhp vo ngy, thng, nm. Kim tra xem ngy, thng, nm c hp l hay khng? In
kt qu ra mn hnh.
10. Nhp vo gi, pht, giy. Kim tra xem gi, pht, giy c hp l hay khng? In kt
qu ra mn hnh.
11. Vit chng trnh nhp vo ngy, thng, nm hp l. Cho bit nm ny c phi l nm
nhun hay khng? In kt qu ra mn hnh.
12. Vit chng trnh tnh din tch v chu vi cc hnh: tam gic, hnh vung, hnh ch nht
v hnh trn vi nhng thng tin cn c nhp t bn phm.
13. Vit chng trnh tnh tin cc TAXI. Bit rng:
- KM u tin l 5000.
- 200m tip theo l 1000.
- Nu ln hn 30km th mi km thm s l 3000.
Hy nhp s km sau in ra s tin phi tr.
14. Nhp vo 3 s nguyn dng a, b, c. Kim tra xem 3 s c lp thnh tam gic
khng? Nu c hy cho bit tam gic thuc loi no? (Cn, vung, u, ).
15. Vit chng trnh nhp vo s nguyn dng n. Kim tra xem n c phi l s chnh
phng hay khng? (s chnh phng l s khi ly cn bc 2 c kt qu l nguyn).
Trang 17
Lp trnh cn bn
Tm tt l thuyt v bi
tp
b. Cu trc lp
16. Cho bit kt qu ca an chng trnh sau:
int a=18;
for(int i=1; i<=a; i++)
if(a%i= =0)
printf("\t %d", i);
17. Cho bit kt qu ca an chng trnh sau:
for(int i=0; i<5; i++)
{
for(int j=0; j<=i; j++)
printf(%d\t, j);
printf(\n);
}
18. Cho bit kt qu ca an chng trnh sau:
int i=10, s=0;
while(i>0)
{
if(i%2= =0)
s+=i;
else
if(i>5)
s+=2*i;
i--;
}
printf(s = %d,s);
19. Cho bit kt qu ca an chng trnh sau:
int a=18, i=1;
do
{
if(a%i==0)
printf("\t %d",i);
i++;
} while(i<=a);
20. Cho bit kt qu ca an chng trnh sau:
int a=11, b=16, i=a;
while( i<b )
{
if(i%2==0)
{
printf("\t %d", i);
Trang 18
Lp trnh cn bn
Tm tt l thuyt v bi
tp
break;
}
i++;
}
21. Cho bit kt qu ca an chng trnh sau:
int a=10, s=0, i=0;
while( i<a )
{
i++;
if(i%2==0)
continue;
else
s=s+i;
}
printf("s=%d",s);
22. Cho bit kt qu ca an chng trnh sau:
int i=1,s=0;
while(1) // tc l vng lp khng bao gi dng
{
s=s+i++;
if(i%2)
i=i+2;
else
i=i+1;
if(i>20)
break;
}
printf("%d",s);
23. Vit chng trnh v hnh ch nht c kch thc nm (m, n nhp t bn phm).
V d: Nhp m=5, n=4
*****
*****
*****
*****
24. Vit chng trnh v hnh ch nht rng kch thc nm (m, n nhp t bn phm).
V d: Nhp m=5, n=4
*****
*
*
*
*
*****
25. Vit chng trnh v tam gic vung cn c c cao h (h nhp t bn phm).
Trang 19
Lp trnh cn bn
Tm tt l thuyt v bi
tp
V d: Nhp h=4
*
**
***
****
26. Vit chng trnh v tam gic cn rng c cao h (h nhp t bn phm).
V d: Nhp h=4
*
* *
* *
****
27. Vit chng trnh v tam gic cn c c cao h (h nhp t bn phm).
V d: Nhp h=4
*
***
*****
*******
28. Vit chng trnh v tam gic cn rng c cao h (h nhp t bn phm).
V d: Nhp h=4
*
* *
*
*
*******
29. Vit chng trnh nhp s nguyn dng n. Lit k cc s nguyn t t 1 n n.
30. Vit chng trnh nhp vo hai s nguyn dng a v b. Tm c s chung ln nht v
bi s chung nh nht ca a v b.
31. Vit chng trnh m s c s ca s nguyn dng N.
V d: N=12 , s c s ca 12 l 6
32. Mt s hon thin l mt s c tng cc c s ca n (khng k n) bng chnh n.
Hy lit k cc s hon thin nh hn 5000.
V d: s 6 l s han thin v tng cc c s l 1+2+3=6.
33. Nhp vo ngy, thng, nm. Cho bit l ngy th my trong nm.
34. In ra dy s Fibonaci
f1 = f0 =1 ;
fn = fn-1 + fn-2 ; (n>1)
II.3. Bi tp luyn tp v nng cao
Trang 20
Lp trnh cn bn
Tm tt l thuyt v bi
tp
35. Ci t tt c cc lu v chng 1.
36. Nhp vo ngy, thng, nm. Kim tra xem ngy, thng, nm c hp l hay khng,
nu hp l cho bit ngy sau l bao nhiu.
V d: Nhp 31/12/2003, Ngy sau 01/01/2004
37. Nhp vo ngy, thng, nm. Kim tra xem ngy, thng, nm c hp l hay khng,
nu hp l cho bit ngy trc l bao nhiu.
V d: Nhp 01/01/2003, Ngy trc 31/12/2002
38. Nhp vo gi, pht, giy. Kim tra xem gi, pht, giy c hp l hay khng, nu hp
l cho bit gi sau 1 giy l bao nhiu v gi trc 1 giy l bao nhiu.
V d: Nhp 01:59:59, Gi sau 1 giy 02:00:00, Gi trc 1 giy 01:59:58
39. Vit chng trnh in ra bng cu chng t 2 n 9.
40. (*) V hnh cnh qut sau:
PHN 3
HM CON (CHNG TRNH CON)
I. TM TT L THUYT
I.1 Cc hm con
c s dng nhm mc ch:
Trang 21
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Output: In ra cc c s ca n
Xc nh tn hm: Hm ny dng in ra cc c s ca n nn c th t l LietKeUocSo
#include<conio.h>
#include<stdio.h>
void LietKeUocSo (int n)
{
int i;
for( i=1; i<=n; i++)
printf(%5d, i);
}
void main()
{
int n;
printf(Nhap n = );
scanf(%d,&n);
printf("Cac uoc so cua n : " );
LietKeUocSo(n);
getch( );
}
V d 2: Vit chng trnh nhp s nguyn dng n v tnh tng S = 1+2+ + n, vi n>0
Phn tch bi ton:
Input: n
- Gi tr n khng thay i trong qu trnh tnh tng tham s ca hm khng l tham tr.
Output: Tng S
- Tr v gi tr ca S.
- S l tng cc s nguyn dng nn S cng l s nguyn dng.
Xc nh tn hm: Hm ny dng tnh tng S nn c th t l TongS.
#include<conio.h>
#include<stdio.h>
int TongS ( int n)
{
int S=0, i=1;
while(i<=n)
{
S+=i;
i++;
}
return S;
}
void main()
{
int n, kq;
Trang 23
Lp trnh cn bn
Tm tt l thuyt v bi
tp
printf(Nhap n = );
scanf(%d,&n);
kq = TongS ( n );
printf(Tong can tinh la: %d , kq);
getch( );
}
II. BI TP
II.1. Bi tp c bn
1. Ci t li tt c cc bi tp chng 2 theo phng php hm.
2. Vit chng trnh tnh din tch v chu vi ca hnh ch nht vi chiu di v chiu rng
c nhp t bn phm.
3. Vit chng trnh tnh din tch v chu vi hnh trn vi bn knh c nhp t bn phm.
4. Nhp s nguyn dng n (n>0). Lit k tt c cc s nguyn t nh hn n.
5. Nhp s nguyn dng n (n>0). Lit k n s chnh phng u tin.
6. Nhp s nguyn dng n (n>0). m xem c bao nhiu s hon thin nh hn n.
7. Nhp s nguyn dng n (0 <= n< 1000) v in ra cch c ca n.
V d: Nhp n = 105. In ra mn hnh: Mot tram le nam.
8. Vit chng trnh tnh tin thu my dch v Internet v in ra mn hnh kt qu. Vi d
liu nhp vo l gi bt u thu (GBD), gi kt thc thu (GKT), s my thu (SoMay).
- iu kin cho d liu nhp: 6<=GBD<GKT<=21. Gi l s nguyn.
- n gi: 2500 cho mi gi my trc 17:30 v 3000 cho mi gi my sau 17:30.
9. Vit chng trnh tnh tin lng ngy cho cng nhn, cho bit trc gi vo ca, gi ra ca
ca mi ngi.
Gi s rng:
- Tin tr cho mi gi trc 12 gi l 6000 v sau 12 gi l 7500.
- Gi vo ca sm nht : 6 gi sng v gi ra ca tr nht : 18 gi (gi nhp vo l s nguyn)
10. Nhp vo 3 s thc a, b, c v kim tra xem chng c thnh lp thnh 3 cnh ca mt
tam gic hay khng? Nu c hy tnh din tch, chiu di mi ng cao ca tam gic v in
kt qu ra mn hnh.
- Cng thc tnh din tch s = sqrt(p*(p-a)*(p-b)*(p-c) ) (Vi p l na chu vi ca tam gic).
- Cng thc tnh cc ng cao: ha = 2s/a, hb=2s/b, hc=2s/c.
11. Nhp vo 6 s thc a, b, c, d, e, f . Gii h phng trnh sau :
12. Vit chng trnh nhp 2 s nguyn dng a, b. Tm USCLN v BSCNN ca a,b.
13. Vit chng trnh tnh tng nghch o ca n giai tha.
Trang 24
Lp trnh cn bn
Tm tt l thuyt v bi
tp
PHN 4
MNG MT CHIU
I. TM TT L THUYT
I.1. Khi nim
Trang 25
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Mng thc cht l mt bin c cp pht b nh lin tc v bao gm nhiu bin thnh
phn. Cc thnh phn ca mng l tp hp cc bin c cng kiu d liu v cng tn. Do
truy xut cc bin thnh phn, ta dng c ch ch mc.
I.2. Khai bo mng
khai bo mt mng, ta c 2 cch khai bo sau :
Cch 1: Con tr hng
< Kiu d liu > < Tn mng > [ < S phn t ti a ca mng> ] ;
V d:
int a[100]; // Khai bao mang so nguyen a gom 100 phan tu
float b[50]; // Khai bao mang so thuc b gom 50 phan tu
Cch 2: Con tr
< Kiu d liu > *< Tn mng >;
V d :
int *p; // khai bao con tro p
Lu : Khi s dng bin con tr truy xut mng, theo cch nh trn th thc cht con
tr p ch chim 2 byte b nh cha a ch m thi. to mng cha d liu thnh
phn th ta phi cp pht vng nh cho con tr p. Dng hm : malloc trong th vin
<stdlib.h> cp pht vng nh.
Tn con tr = (kiu d liu *) malloc(100);
V d:
int *px; //Khai bo con tr px
px = (int *) malloc (100); //Cp pht 100 nh kiu int cho con tr px
Sau khi s dng xong th nn gii phng vng nh bng hm free
free (p) ; // gii phng vng nh cho con tr p.
I.3. Truy xut phn t ca mng
Vi khi nim v cch khai bo nh trn ta c hnh dng ca mng mt chiu nh sau:
V d : int A[5] // Khai bo mng A gm ti a 5 phn t nguyn.
Lp trnh cn bn
Tm tt l thuyt v bi
tp
clrscr ( );
int a[4] = {5,9,3,8};
for (int i = 0; i < 4 ; i++)
printf ( a [ %d ] = %d \n, i , a[i] );
getch ( );
}
i vi con tr: Ly a ch ca phn t trong mng ta dng du &
V d:
int a[7];
int *p = a[3]; //Ly a ch phn t th 3
V d :
int a[7];
int *px;
px = a; //px tr ti phn t th 0
px = px + 4; //px tr ti phn t th 4
T v d trn ta c th m hnh ho mng nh sau:
V d minh ho: Vit chng trnh nhp vo mng mt chiu n phn t kiu s nguyn,
xut mng va nhp ra mn hnh
#include <conio.h>
#include <stdio.h>
void nhap_mang(int a[10], int &n)
{
int i;
printf(nhap vao so phan tu mang n=);
scanf(%d,&n);
for(i=0;i<n;i++)
{
printf ( a [ %d ] = , i );
scanf ( %d, &a[i] );
}
}
void xuat_mang(int a[10], int n)
{
int i;
printf ( \n Noi dung mang vua nhap: );
for (i = 0; i <n ; i ++)
printf ( %5d ,a[i]);
Trang 27
Lp trnh cn bn
Tm tt l thuyt v bi
tp
}
void main ( )
{
int a[10], i;
nhap_mang(a,n);
xuat_mang(a,n);
getch ( );
}
II. BI TP
II.1. Mt s k thut c bn
a. K thut t c hiu : K thut ny thng c p dng cho nhng bi ton kim tra.
V d 1 : Vit hm kim tra xem mng cc s nguyn c th t tng dn khng?
(Tr v 1: Nu mng tng dn, ngc li tr v 0).
int KiemTraTang (int a[ ], int n)
{
int i, flag = 1;
for ( i = 0; i < n-1; i ++ )
if ( a[i] > a[i+1] ) // Vi phm iu kin tng dn
{
flag = 0;
break;
}
return flag;
}
V d 2 : Vit hm kim tra xem trong mng cc s nguyn c tn ti s nguyn l ln
hn 100 hay khng?
(Tr v 1: Nu c tn ti s l v ln hn 100, ngc li tr v 0).
int KiemTraLe (int a[ ], int n)
{
int i, flag = 0;
for ( i = 0; i < n; i ++ )
if ( a[i] % 2 != 0 && a[i][j] > 100 ) //Gp phn t tho
{
flag = 1;
break;
}
return flag;
}
b. K thut t lnh canh : K thut ny thng c p dng cho nhng bi tp v tm
kim, lit k theo mt iu kin nht nh no .
Trang 28
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Lp trnh cn bn
Tm tt l thuyt v bi
tp
return i;
return -1;
}
9. Vit hm tm v tr phn t c gi tr x xut hin cui cng trong mng.
10. Vit hm tm v tr ca phn t nh nht trong mng cc s nguyn.
11. Vit hm tm v tr ca phn t ln nht trong mng cc s nguyn.
12. Vit hm in v tr cc phn t nguyn t trong mng cc s nguyn.
13. Vit hm in v tr cc phn t nguyn t ln hn 23.
14. Vit hm tm v tr phn t m u tin trong mng. Nu khng c phn t m tr v 1.
15. Vit hm tm v tr phn t m ln nht trong mng.
16. Vit hm tm v tr phn t dng u tin trong mng. Nu khng c phn t dng tr
v 1.
17. Vit hm tm v tr phn t dng b nht trong mng.
18. Vit hm in cc phn t trong mng l bi ca 3 v 5.
19. Vit hm tm s chn cui cng c trong mng, nu khng tn ti s chn hm tr v -1
20. Vit hm tm s l ln nht c trong mng, nu khng tn ti s l hm tr v -1.
21. Vit hm tm v i ch phn t ln nht vi phn t nh nht trong mng.
22. Nhp vo X. Vit hm in ra mn hnh nhng phn t trong mng c gi tr t 1 n X.
23. Vit chng trnh nhp vo mt dy s a gm n s thc ( 100 n ), nhp vo dy s b
gm m s thc ( 100 m ).
In ra nhng phn t ch xut hin trong dy a m khng xut hin trong dy b.
In ra nhng phn t xut hin c hai dy.
c. m Tn sut
Phng php c bn : Vit hm m phn t chia ht cho 5 trong mng cc s nguyn.
int Dem (int a[], int n )
{
int i, dem = 0;
for ( i = 0; i < n ; i++ )
if ( a[i] % 5 == 0 )
dem++;
return dem;
}
24. Vit hm m cc phn t m, dng trong mng.
25. Vit hm m cc phn t chn, l trong mng.
26. Vit hm m s ln xut hin ca phn t x trong mng.
27. Vit hm m cc phn t nh hn x trong mng.
Trang 30
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Lp trnh cn bn
Tm tt l thuyt v bi
tp
38. Vit hm tnh tng cc phn t cc tiu trong mng cc s nguyn ( phn t cc tiu l
phn t nh hn cc phn t xung quanh n ). V d : 6 4 2 9 5 3 7 1 5 8
39. Vit hm tnh tng cc phn t l bi ca 3 v 5 trong mng cc s nguyn.
40. Vit hm tnh tng cc phn t l s hon thin trong mng cc s nguyn.
41. Vit hm tnh gi tr trung bnh ca cc s hon thin trong mng cc s nguyn.
e. Sp xp
K thut c bn : Vit hm sp xp mng theo th t tng dn.
void HoanVi (int &a, int &b)
{
int tam ;
tam= a;
a = b;
b = tam;
}
void SapTang (int a[], int n)
{
int i, j;
for ( i = 0; i < n-1 ; i++)
for ( j = i+1; j < n; j++)
if (a[i] > a [j])
HoanVi (a[i], a[j]);
}
Bi tp
42. Vit hm sp xp mng theo th t gim dn.
43. Vit hm sp xp mng theo th t tng dn ca cc phn t l s nguyn t.
44. Vit hm sp xp cc phn t l tng dn.
45. Vit hm sp xp cc phn t chn gim dn.
46. Vit hm sp xp cc phn t chn nm bn tri theo th t tng dn cn cc phn t l
bn phi theo th t gim dn.
47. Vit hm sp xp cc phn t m gim dn t tri sang phi, phn t dng tng dn t
phi sang tri.
f. Xo
K thut c bn : Duyt mng t tri sang phi . Xut pht t v tr cn xo tin hnh di
ln lt cc phn t v pha trc cho n khi kt thc mng, sau gim kch thc
mng. Vn t ra l tm v tr cn xa theo iu kin bi ton ri thc hin xa.
Vit hm xo phn t u tin ca mng.
void XoaDau (int a[], int &n)
Trang 32
Lp trnh cn bn
Tm tt l thuyt v bi
tp
{
for (int i = 0; i < n-1 ; i++)
a[i] = a[i+1];
n--;
}
Vit hm xo phn t ti v tr (vitri) cho trc trong mng.
void XoaTaiViTri (int a[], int &n, int vitri)
{
for (int i = vitri; i < n-1 ; i++)
a[i] = a[i+1];
n--;
}
Bi tp
48. Vit hm xo phn t ti v tr l trong mng.
49. Vit hm xo phn t c gi tr ln nht trong mng.
50. Nhp vo gi tr X. Vit hm xo tt c cc phn t c gi tr nh hn X.
51. Nhp vo gi tr X. Vit hm xo phn t c gi tr gn X nht.
g. Chn
K thut c bn : Duyt mng t phi sang tri. Xut pht t cui mng tin hnh y ln
lt cc phn t v pha sau cho n v tr cn chn, chn phn t cn chn vo v tr chn
v tng kch thc mng. Trc khi chn ta phi xc nh v tr cn chn theo iu kin bi
ton.
Thm phn t c gi tr X vo cui mng.
void ThemCuoi (int a[], int &n, int X)
{
a[n]=X;
n++;
}
Chn phn t c gi tr X vo mng ti v tr cho trc
void ChenX (int a[], int &n, int X, int vitri)
{
for (int i = n; i >vitri ; i--)
a[i] = a[i-1] ;
a[vitri] = X;
n++;
}
Bi tp
52. Vit hm chn phn t c gi tr X vo v tr u tin ca mng.
53. Vit hm chn phn t c gi tr X vo pha sau phn t c gi tr ln nht trong mng.
Trang 33
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Lp trnh cn bn
Tm tt l thuyt v bi
tp
c[k++]=b[j++];
}
Bi tp
56. Vit chng trnh tch 1 mng cc s nguyn thnh 2 mng a v b, sao cho mng a cha
ton s l v mng b cha ton s chn.
V d: Mng ban u: 1 3 8 2 7 5 9 0 10
Mng a: 1 3 7 5 9
Mng b: 8 2 10
57. Cho 2 mng s nguyn a v b kch thc ln lt l n v m. Vit chng trnh ni 2
mng trn thnh mng c theo nguyn tc chn u mng v l cui mng.
V d: Mng a: 3 2 7 5 9
Mng b: 1 8 10 4 12 6
Mng c: 6 12 4 10 2 8 3 1 7 5 9
II.3. Bi tp luyn tp v nng cao
58. Vit chng trnh nhp vo mng A gm n phn t, trong qu trnh nhp kim tra cc
phn t nhp vo khng c trng, nu trng thng bo v yu cu nhp li.
59. Vit hm tnh tng ca tng dy con gim c trong mng.
60. (*) Cho mng cc s nguyn a gm n phn t ( 30000 n ) v nhp vo mt s dng
k. Hy ch ra s hng ln th k ca mng.
V d: Mng a: 6 3 1 10 11 18 , k = 2
Kt qu: 10
61. (*) Cho 2 dy A, B cc s nguyn (kch thc dy A nh hn dy B). Hy kim tra xem
A c phi l con ca B hay khng?
62. Vit hm lit k cc b 4 s a, b, c, d trong mng cc s nguyn (c t nht 4 phn t v
i mt khc nhau) sao cho a + b = c + d.
63. (*) Vit chng trnh tnh trung bnh cng ca cc tng cc dy tng dn c trong mng
cc s nguyn. V d: 1 2 3 4 2 3 4 5 6 4 5 6 => TB = 15.
64. (**) Vit chng trnh nhp vo hai s ln a, b nguyn ( a, b c t 20 ch s tr ln).
Tnh tng, hiu, tch, thng ca hai s trn.
65. Vit hm tnh tng cc phn t l s Amstrong (s Amstrong l s c c im nh sau:
s c k k s, tng ca cc lu tha bc k ca cc k s bng chnh s .
V d: 153 l s c cc k s 13+53+33= 153 l mt s Amstrong).
66. Vit hm tm v xa tt c cc phn t trng vi x trong mng mt chiu cc s nguyn,
nu khng tn ti phn t x trong mng th tr v -1.
67. Vit hm xo tt c phn t trng nhau trong dy ch gi li mt phn t trong .
V d: 1 6 2 3 2 4 2 6 5 1 6 2 3 4 5
Trang 35
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Lp trnh cn bn
Tm tt l thuyt v bi
tp
PHN 5
CHUI K T
I. TM TT L THUYT
I.1. Khi nim : Chui k t l mt dy cc phn t, mi phn t c kiu k t.
Lu : Chui k t c kt thc bng k t \0. Do khi khai bo di ca chui lun
lun khai bo d 1 phn t cha k t \0.
V d:
char S[5]=CNTT //khai bo chui c 5 phn t kiu char v gn dy k t CNTT
Trang 37
Lp trnh cn bn
Tm tt l thuyt v bi
tp
char chuoi[25];
char *chuoi;
gets(S);
puts(S);
Do dai s: 21
char dest[10];
char *src = "abcdefghi";
Trang 38
Lp trnh cn bn
Tm tt l thuyt v bi
tp
strcpy(dest, src);
puts(dest);
Kt qu:
abcdefghi
char dest[4];
char *src = "abcdefghi";
strncpy(dest, src, 3);
puts( dest);
Kt qu: abc
Lp trnh cn bn
Tm tt l thuyt v bi
tp
NULL: nu khng c.
a ch c: nu tm thy.
V d :
char s[15];
char *ptr, c = 'm';
strcpy(s, "Vi du tim ky tu");
ptr = strchr(s, c);
if (ptr)
printf("Ky tu %c tai: %d", c,ptr);
else
printf("Khong tim thay");
kt qu:
Ky tu m tai: 8
Lp trnh cn bn
Tm tt l thuyt v bi
tp
{
int l=strlen(s1);
for(int i=0; i<l; i++)
s2[i]=s1[l-i-1];
s2[i]='\0';
}
void main()
{
char *s1, *s2;
clrscr();
printf("\nNhap vao chuoi ky tu: ");
gets(s1);
DaoChuoi(s1, s2);
printf("\nKet qua sau khi dao nguoc chuoi: ")
puts( s2);
getch();
}
II. BI TP
II.1. Bi tp c bn
1. Cho bit kt qu ca an chng trnh sau:
char input[20]=Khoa CNTT, *p, *temp;
strcpy(temp, input);
do
{
p = strtok(temp, " ");
puts(p);
p = strtok(NULL, "");
strcpy(temp, p);
}while(p!=NULL);
printf(Chuoi temp);
puts(temp);
printf( Chuoi input:);
puts(input);
2. Cho bit kt qu ca an chng trnh sau:
char s1[20]=Khoa CNTT, s1[10]=Tp. HCM, *input, *s3;
strcpy(input, s1);
strcpy(s3,aeiou);
strcat(input, s2);
int n=strlen(input), k=0;
printf(Chuoi: )
puts(input);
for(int i=0; i<n; i++)
{
if(strchr(s3, input[i]))
k++;
Trang 41
Lp trnh cn bn
Tm tt l thuyt v bi
tp
}
printf(\nKet qua: %d, k);
3. Vit chng trnh nhp vo mt chui k t, m s k t c trong chui.
4. Vit chng trnh m c bao nhiu khong trng trong chui.
5. Vit chng trnh nhp vo mt chui, hy loi b nhng khong trng tha trong chui.
6. Vit chng trnh nhp hai chui s1, s2, ni chui s2 vo s1. Xut chui s1 ra mn hnh.
7. i tt c cc k t c trong chui thnh ch thng (khng dng hm strlwr).
8. i tt c cc k t trong chui sang ch in hoa (khng dng hm struppr).
9. Vit chng trnh i nhng k t u tin ca mi t thnh ch in hoa.
10. Vit chng trnh i ch xen k 1 ch hoa v 1 ch thng.
V d: nhp ABCDEfgh i thnh AbCdEfGh
11. Vit chng trnh o ngc cc k t trong chui .
V d: nhp ABCDE, xut ra mn hnh l:EDCBA
12. Vit chng trnh tm kim 1 k t xem c trong chui hay khng, nu c xut ra v tr
ca t .
13. Vit 1 chng trnh m mt k t xut hin bao nhiu ln trong chui.
14. Vit chng trnh tm kim tn trong chui h tn. Nu c th xut ra l tn ny nhp
ng, ngc li thng bo l nhp sai.
15. Vit chng o v tr ca t u v t cui. V d: nhp bo an co xuat ra co an
bo
16. Vit hm ct chui h tn thnh chui h lt v chui tn.
V d: chui h tn l:Nguyn Vn A ct ra 2 chui l chui h lt:Nguyn Vn,chui
tn l:A
17. Nhp mt chui bt k, sau hi ngi dng cn tch bt u t u trong chui tr
v sau.
V d: Nhp chui S1:Khoa Cng Ngh Thng tin. Ngi nhp mun tch bt u t
ch Cng th s xut ra chui Cng Ngh Thng Tin ra mn hnh.
18. Vit hm kim tra xem chui c i xng hay khng?.
19. Vit hm tra trong chui c k t s hay khng nu c tch ra thnh mt mng s ring.
20. Nhp mt chui bt k, yu cu nhp 1 k t mun xa. Thc hin xa tt c nhng k
t trong chui.
21. Vit chng trnh tm kim xem k t no xut nhin nhiu nht trong chui.
22. Vit 1 chng trnh xo mt t no trong chui.
V d: Chui ban u:CAO DANG CNTT, nhp:CNTT, kt qu xut ra:CAO DANG
Trang 42
Lp trnh cn bn
Tm tt l thuyt v bi
tp
PHN 6
KIU D LIU C CU TRC
I. TM TT L THUYT
I.1. Khi nim : Cu trc (struct) thc cht l kiu d liu do ngi dng nh ngha bng
cch gom nhm cc kiu d liu c bn c sn trong C thnh mt kiu d liu phc hp
nhiu thnh phn.
I .2. nh ngha kiu d liu
C php :
struct < tn cu trc >
{
Cc kiu d liu thnh phn ;
};
Ngoi ra ta c th dng t kho typedef nh ngha mt tn mi cho kiu d liu c.
C php
typedef struct < tn cu trc > < tn mi >;
V d1: Kiu d liu DATE gm cc thnh phn:
Trang 43
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Th (thu): chui c ti a 4 k t.
Ngy (ngay): s nguyn 1 byte.
Thng (thang): s nguyn 1 byte.
Nm (nam): s nguyn 2 bytes.
Ta nh ngha DATE nh sau:
struct DATE
{
char thu[5];
char ngay, thang;
int nam;
};
typedef struct DATE d;
Kiu d liu c cu trc c th lng vo nhau.
V d 2: nh ngha kiu d liu ca hc sinh HOCSINH gm:
M s hc sinh (MSHS): chui c ti a 5 k t.
H tn (hoten): chui c ti a 30 k t.
Ngy thng nm sinh (ngaysinh): kiu DATE.
a ch (diachi): chui c ti a 50 k t.
Gii tnh (phai): chui c ti a 3 k t.
im trung bnh (diemtb): s thc.
Ta nh ngha kiu HOCSINH nh sau:
struct DATE
{
char thu[5];
char ngay, thang;
int nam;
};
struct HOCSINH
{
char MSHS[6];
char hoten[31];
DATE ngaysinh;
char diachi[51];
char phai[4];
float diemtb;
};
Trang 44
Lp trnh cn bn
Tm tt l thuyt v bi
tp
I.3. Khai bo : Khi ta nh ngha kiu d liu tc l ta c mt kiu d liu mi, mun s
dng ta phi khai bo bin. C php khai bo kiu d liu cng ging nh cch khai bo
ca cc kiu d liu chun.
< tn cu trc > < tn bin > ;
V d :
DATE x ; // Khai bao bien x co kieu du lieu DATE
*Bin con tr kiu cu trc: Ngoi cch khai bo nh trn ta c th khai bo theo kiu con
tr nh sau
< tn cu trc > *< tn bin > ;
s dng ta cng phi cp pht vng nh ging nh kiu d liu chun.
V d :
DATE *y; // Khai bao con tro y kieu cau truc DATE
y = ( DATE * ) malloc ( sizeof ( DATE )) ;
I.4. Truy xut : truy xut mt thnh phn d liu no bn trong cu trc ta c 2
trng hp truy xut nh sau :
Bin x l mt bin cu trc thng thng, ta dng ton t du chm .
< Tn cu trc >.< Bin thnh phn >;
V d :
DATE x ; // khai bao bien x kieu DATE
x.ngay = 5 ; // gan ngay bang 5
Bin x l mt bin con tr, ta dng ton t -> (Gm du tr v du ln hn >).
< Tn cu trc > -> < Bin thnh phn >;
V d :
DATE *x ; // khai bao bien x kieu con tro DATE
x -> ngay = 5 ; // gan ngay bang 5
V d: Gi s, c kiu HOCSINH nh trn
HOCSINH hs; // khai bao bien hs kieu HOCSINH
Mun in hc sinh A sinh vo thng my ta phi truy cp nh sau:
printf(Thang sinh cua hoc sinh A la: %d,(hs.ngaysinh).thang);
I.5. V d minh ho
Vit chng trnh nhp vo to hai im trong mt phng v tnh tng hai to ny.
#include <conio.h>
Trang 45
Lp trnh cn bn
Tm tt l thuyt v bi
tp
#include <stdio.h>
struct DIEM //khai bao mot kieu du lieu DIEM gom toa do x va y
{
int x;
int y;
};
void Nhap (DIEM &d)
{
printf (\nNhap vao tao do diem\n);
printf (Tung do : );
scanf (%d, & d. x);
printf (Hoanh do : );
scanf (%d, & d.y);
}
void Xuat (DIEM d)
{
printf (\nToa do diem : (%d , %d),d.x,d.y);
}
DIEM Tong (DIEM d1,DIEM d2)
{
DIEM temp;
temp.x = d1.x + d2.x ;
temp.y = d1.y + d2.y ;
return Temp;
}
void main ()
{
DIEM A , B, AB; //khai bao 3 diem A, B, AB;
clrscr ();
Nhap ( A );
Xuat ( A );
Nhap ( B );
Xuat ( B );
printf (\n Tong cua hai diem vua nhap la : );
AB = Tong ( A, B);
Xuat ( AB );
getch ();
}
I.6. Mng cu trc
Trang 46
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Cch khai bo tng t nh mng mt chiu hay ma trn (Kiu d liu by gi l kiu d
liu c cu trc).
Cch truy cp phn t trong mng cng nh truy cp trn mng mt chiu hay ma trn.
Nhng do tng phn t c kiu cu trc nn phi ch nh r cn ly thnh phn no, tc l
phi truy cp n thnh phn cui cng c kiu l d liu c bn.
I.7. Nguyn tc vit chng trnh c mng cu trc
Do kiu d liu c cu trc thng cha rt nhiu thnh phn nn khi vit chng trnh
loi ny ta cn lu :
Xy dng hm x l cho mt kiu cu trc.
Mun x l cho mng cu trc, ta gi li hm x l cho mt kiu cu trc c xy
dng bng cch dng vng lp.
V d 1: Cho mt lp hc gm n hc sinh (n 50). Thng tin ca mt hc sinh c m t
v d 2, mc I.2. Hy vit chng trnh nhp v xut danh sch hc sinh sau m xem c
bao nhiu hc sinh c ln lp (iu kin c ln lp l im trung bnh 5.0).
Cch lm:
- Trc ht ta phi xy dng hm nhp v xut cho 1 hc sinh.
- Xy dng hm nhp v xut ngy thng nm (Kiu d liu DATE).
- Sau mi xy dng hm nhp v xut cho danh sch hc sinh.
struct DATE
{
char thu[5];
char ngay, thang;
int nam;
};
struct HOCSINH
{
char MSHS[6], hoten[31];
DATE ngaysinh;
char diachi[51], phai[4];
float diemtb;
};
void NhapNamSinh(DATE &d)
{
printf(\nNhap vao ngay: );
printf(\nNhap vao thang: );
printf(\nNhap vao nam: );
scanf(%c, &d.ngay);
scanf(%c, &d.thang);
scanf(%d, &d.nam);
Trang 47
Lp trnh cn bn
Tm tt l thuyt v bi
tp
}
void XuatNamSinh(DATE d)
{
printf(%2c / %2c / %4d, d.ngay, d.thang, d.nam);
}
void Nhap1HS(HOCSINH &hs)
{
float d;
lushall(); //Xoa vung dem
printf(\nNhap ma so hoc sinh: );
gets(hs.MSHS);
printf(\nNhap ho ten hoc sinh: );
gets(hs.hoten);
printf(\nNhap ngay thang nam sinh: );
flushall(); //Xoa vung dem
NhapNamSinh(hs.ngaysinh);
flushall(); //Xoa vung dem
printf(\nNhap vao dia chi: );
gets(hs.diachi);
printf(\nPhai: );
gets(hs.phai);
printf(\nNhap vao diem trung binh: );
flushall(); //Xo vng m
scanf(%f, &d);//Nhp vo bin tm d sau gn vo hs.diemtb
hs.diemtb=d;
}
void NhapDSHS(HOCSINH lh[], int &n)
{
printf(\nNhap vao so luong hoc sinh: );
scanf(%d, &n);
for(int i=0; i<n; i++)
{
printf(\nNhap vao thong tin cua hoc sinh thu %d:\n, i+1);
Nhap1HS(lh[i]); //Goi ham nhap thong tin 1 hoc sinh
}
}
void Xuat1HS(HOCSINH hs)
{
printf(\nMa so hoc sinh: );
printf(\nHo ten hoc sinh:);
printf(\nNgay thang nam sinh: );
XuatNamSinh(hs.ngaysinh);
printf(\nDia chi: );
printf(\nPhai:)
printf(\nDiem trung binh: %2.2f, hs.diemtb);
}
puts(hs.MSHS);
puts( hs.hoten);
puts( hs.diachi);
puts( hs.phai);
Trang 48
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Lp trnh cn bn
Tm tt l thuyt v bi
tp
};
void NhapPS(PHANSO &ps)
{
do
{
printf("\nNhap tu so: ");
scanf("%d", &ps.tu);
printf("\nNhap mau so: ");
scanf("%d", &ps.mau);
if(!KiemTra(ps))
printf("\nMau so khong duoc bang 0, nhap lai phan so\n");
else
break;
} while(1);
ps=RutGon(ps);
}
void XuatPS(PHANSO ps)
{
printf("%5d", ps.tu);
if(ps.tu&&ps.mau!=1)
printf("/%d", ps.mau);
}
void NhapMangPS(PHANSO dsps[], int &n)
{
printf("\nNhap so luong phan so: ");
scanf("%d", &n);
for(int i=0; i<n; i++)
{
printf("\nNhap vao phan so thu %d: ", i+1);
NhapPS(dsps[i]);
}
}
void XuatMangPS(PHANSO dsps[], int n)
{
for(int i=0; i<n; i++)
XuatPS(dsps[i]);
}
int KiemTra(PHANSO ps)
{
if(ps.mau==0)
return 0;
return 1;
}
Trang 51
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Lp trnh cn bn
Tm tt l thuyt v bi
tp
return kq;
}
PHANSO Tru(PHANSO ps1, PHANSO ps2)
{
PHANSO kq;
kq.tu=ps1.tu*ps2.mau-ps1.mau*ps2.tu;
kq.mau=ps1.mau*ps2.mau;
kq=RutGon(kq);
return kq;
}
PHANSO Cong(PHANSO ps1, PHANSO ps2)
{
PHANSO kq;
kq.tu=ps1.tu*ps2.mau+ps1.mau*ps2.tu;
kq.mau=ps1.mau*ps2.mau;
kq=RutGon(kq);
return kq;
}
int SoSanh(PHANSO ps1, PHANSO ps2)
{
ps1=RutGon(ps1);
ps2=RutGon(ps2);
if(ps1.tu==ps2.tu&&ps1.mau==ps2.mau)
return 0;
if(ps1.tu*ps2.mau>ps2.tu*ps1.mau)
return 1;
return -1;
}
PHANSO TimMax(PHANSO dsps[], int n)
{
PHANSO max;
max=dsps[0];
for(int i=1; i<n; i++)
if(SoSanh(dsps[i], max)==1)
max=dsps[i];
return max;
}
PHANSO TongCacPS(PHANSO dsps[], int n)
{
PHANSO s=dsps[0];
for(int i=1; i<n; i++)
Trang 53
Lp trnh cn bn
Tm tt l thuyt v bi
tp
s=Cong(s, dsps[i]);
return s;
}
PHANSO TichCacPS(PHANSO dsps[], int n)
{
PHANSO p=dsps[0];
for(int i=1; i<n; i++)
p=Nhan(p, dsps[i]);
return p;
}
void NghichDaoCacPS(PHANSO dsps[], int n)
{
for(int i=0; i<n; i++)
dsps[i]=NghichDao(dsps[i]);
}
void main()
{
int n;
PHANSO a[100], max, s, p;
clrscr();
NhapMangPS(a, n);
printf("\nMang cac phan so vua nhap: ");
XuatMangPS(a, n);
max=TimMax(a, n);
printf("\nPhan so co gia tri lon nhat: ");
XuatPS(max);
s=TongCacPS(a, n);
printf("\nTong gia tri cac phan so co trong mang: ");
XuatPS(s);
p=TichCacPS(a, n);
printf("\nTich gia tri cac phan so co trong mang: ");
XuatPS(p);
NghichDaoCacPS(a, n);
printf("\nMang phan so sau khi nghich dao cac phan tu: ");
XuatMangPS(a, n);
getch();
}
Kt qu v d khi chy chng trnh:
Nhap so luong phan so: 5
Nhap vao phan so thu 1:
Trang 54
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Nhap tu so: 1
Nhap mau so: 3
Nhap vao phan so thu 2:
Nhap tu so: 7
Nhap mau so: 4
Nhap vao phan so thu 3:
Nhap tu so: 9
Nhap mau so: 7
Nhap vao phan so thu 4:
Nhap tu so: 5
Nhap mau so: 6
Nhap vao phan so thu 5:
Nhap tu so: 4
Nhap mau so: 7
Mang cac phan so vua nhap: 1/3 7/4 9/7 5/6 4/7
Phan so co gia tri lon nhat: 7/4
Tong gia tri cac phan so co trong mang: 401/84
Tich gia tri cac phan so co trong mang: 5/14
Mang phan so sau khi nghich dao cac phan tu: 3 4/7 7/9 6/5 7/4
II. BI TP
II.1. Bi tp c bn
1. Vit chng trnh s dng con tr cu trc hin th gi, pht, giy ra mn hnh, v tnh
khong cch gia 2 mc thi gian.
2. Vit chng trnh s dng con tr cu trc th hin ngy, thng, nm ra mn hnh, v tnh
khong cch gia 2 ngy.
3. Vit chng trnh khai bo kiu d liu th hin mt s phc. S dng kiu ny vit
hm tnh tng, hiu, tch ca hai s phc.
4. Vit chng trnh khai bo kiu d liu biu din mt phn s. Hy vit hm thc hin
nhng cng vic sau:
Tnh tng, hiu, tch, thng hai phn s.
Rt gn phn s.
Qui ng hai phn s.
So snh hai phn s.
Trang 55
Lp trnh cn bn
Tm tt l thuyt v bi
tp
5. Vit chng trnh khai bo kiu d liu biu din mt hn s. Hy vit hm thc hin
nhng cng vic sau :
i hn s sang phn s
Tnh tng, tch hai hn s
6. Vit chng trnh khai bo kiu d liu biu din mt im trong h ta 0xy . Hy
vit hm thc hin cc cng vic sau:
Tm nhng im i xng ca n qua tung , honh , to tm.
Hy tnh tng, hiu, tch ca hai im trong mt phng to 0xy.
Tnh khong cch gia hai im.
7. Cho mt hnh tr c cc thng tin sau: BanKinh (bn knh hnh tr kiu s thc),
ChieuCao (chiu cao hnh tr kiu s thc). Hy thc hin cc cng vic sau.
Nhp d liu cho hnh tr trn.
Tnh din tch xung quanh, din tch ton phn, th tch hnh tr.
II.2. Bi Tp Luyn Tp
8. Vit chng trnh to mt mng cc s phc. Hy vit hm tnh tng, tch cc s phc c
trong mng.
9. Vit chng trnh to mt mng cc phn s. Hy vit hm thc hin cc cng vic sau :
Tnh tng tt c cc phn s (kt qu di dng phn s ti gin)
Tm phn s ln nht, phn s nh nht.
Sp xp mng tng dn.
10. Vit chng trnh khai bo kiu d liu STACK (c ch LIFO). Vit hm lm nhng
cng vic sau :
Kim tra STACK rng
Kim tra STACK y
Thm phn t vo STACK
Ly phn t ra khi STACK
11. T chc d liu qun l sinh vin bng cu trc mu tin trong mt mng N phn t,
mi phn t c cu trc nh sau:
- M sinh vin.
- Tn.
- Nm sinh.
- im ton, l, ho, im trung bnh.
Vit chng trnh thc hin nhng cng vic sau:
Nhp danh sch cc sinh vin cho mt lp hc.
Trang 56
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Lp trnh cn bn
Tm tt l thuyt v bi
tp
PHN 8
TP TIN
I. TM TT L THUYT
I.1. Khi nim : Trong cc chng trnh trc th cc d liu a vo chng trnh ch
c tn ti trong RAM, khi thot chng trnh th tt c d liu u b mt. khc phc
tnh trng ny BC cung cp cho ta cc hm lu tr v truy xut tp tin, l kiu FILE .
V y ta ch cp n 2 loi tp tin :
Tp tin vn bn: l tp tin dng ghi cc k t ln a theo cc dng.
Tp tin nh phn: l tp tin dng ghi cc cu trc dng nh phn (c m ho).
I.2. Thao tc vi tp tin
Qu trnh thao tc trn tp tin thng qua 4 bc:
Bc 1: Khai bo con tr tr n tp tin.
Bc 2: M tp tin.
Bc 3: Cc x l trn tp tin.
Bc 4: ng tp tin.
a. Khai bo
FILE *< tn bin >;
V d : FILE *f; // Khai bao bien con tro file f
b. M tp tin
fopen (< ng dn tn tp tin> , < kiu truy nhp >);
V d : FILE *f; // Khai bao bien con tro f
f = fopen ( C:\\VD1.txt , rt ) ;
Trang 60
Lp trnh cn bn
Tm tt l thuyt v bi
tp
m ra c ( ready only).
m ra thm vo (append).
r+
m ra c v ghi (modify).
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Fread(&b,sizeof(int), 1 , f);
GHI TP TIN
fwrite(<&prt>, <size>, <len>, <FILE *> )
fwrite(a,sizeof(int), n , f);
d. ng tp tin
Sau khi khng cn lm vic vi tp tin, m bo an ton cho d liu th nht thit ta phi
ng tp tin li.
fclose ( < bin con tr tp tin > ) ;
V d :
hoc fcloseall () ;
fclose (f) ;
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Lp trnh cn bn
Tm tt l thuyt v bi
tp
}
void main()
{
int a[MAX][MAX], m=5, n=6, i, j;
int b[MAX][MAX], x, y;
for(i=0; i<m; i++)
for(j=0; j<n; j++)
a[i][j]=random(1000);
LuuFile(a, m, n);
DocFile(b, x, y);
for(i=0; i<x; i++)
{
for(j=0; j<y; j++)
printf("%d\t", b[i][j]);
printf("\n");
}
}
Kt qu v d sau khi chy chng trnh, file test.inp c dng sau:
56
480 661 395 736 998 987
31 414 211 801 774 416
166 191 454 830 508 72
121 382 35 365 567 726
159 309 1 275 870 378
b. Tp tin nh phn
Vit hm c/ ghi mt danh sch sinh vin ca mt lp vo tp tin SV.DAT
SINHVIEN ds[100];
int siso;
void nhap ( )
{
FILE *fi;
fi = fopen ( SV.DAT , rb );
fseek ( fi , 0 , SEEK_END );
siso = ( ftell ( fi ) + 1 ) / sizeof ( SINHVIEN );
fseek ( fi , 0 , SEEK_SET );
fread ( ds , sizeof ( SINHVIEN ) , siso , fi );
fclose ( fi );
}
void xuat ( )
Trang 65
Lp trnh cn bn
Tm tt l thuyt v bi
tp
{
FILE *fo;
fo = fopen ( SV.DAT, wb );
fwrite ( ds , sizeof ( SINHVIEN ) , siso , fo );
fclose ( fo );
}
II. BI TP
II.1. Bi tp c bn
1. Vit chng trnh to tp tin vn bn cha 1 dy s nguyn bt k.
2. Vit chng trnh to tp tin nh phn cha 10000 s nguyn bt k ghi vo file
SONGUYEN.INP. Mi dng 10 s, sau vit chng trnh c file SONGUYEN.INP, sp
xp theo th t tng dn v lu kt qu vo file SONGUYEN.OUT.
3. Vit chng trnh to mt file cha 10000 s nguyn ngu nhin i mt khc nhau trong
phm vi t 1 n 32767 v t tn l SONGUYEN.INP.
4. Vit chng trnh to mt file cha cc s nguyn c tn SONGUYEN.INP. Sau c
file SONGUYEN.INP v ghi cc s chn vo file SOCHAN.OUT v nhng s l vo file
SOLE.OUT.
5. Vit chng trnh ghi vo tp tin SOCHAN.DAT cc s nguyn chn t 0 n 100.
6. Vit chng trnh c tp tin SOCHAN.DAT v xut ra mn hnh, mi dng 30 s.
7. Vit chng trnh gi lp lnh COPY CON to tp tin vn bn. Khi kt thc tp tin
nhn phm F6 lu.
8. Vit chng trnh gi lp lnh TYPE in ni dung ca tp tin vn bn ra mn hnh.
9. Vit chng trnh kim tra tp tin no c trong th mc c ch nh hay khng?
10. Vit chng trnh gi lp lnh DEL xo tp tin. Yu cu nhp ng dn v tn tp
tin, kim tra s tn ti ca tp tin, nu c th xo tp tin c ch nh.
11. Vit chng trnh gi lp lnh RENAME i tn mt tp tin.
12. Vit chng trnh to file vn bn c tn l MATRIX.INP c cu trc nh sau:
Dng u ghi hai s m, n.
Trong m dng tip theo mi dng ghi n s v cc s cc nhau mt khong cch.
Hy kim tra xem trong file c bao nhiu s nguyn t. Kt qu cn ghi vo file
MATRIX.OUT c ni dung l mt s nguyn l s lng cc s nguyn t trong file
MATRIX.INP.
13. Cho s nguyn n, hy in tam gic PASCAL gm n dng
D lu vo: tp tin vn bn PAS.INP gm 1 dng cha gi tr n.
Kt qu: a ra tp tin vn bn PAS.OUT th hin mt tam gic PASCAL n dng.
14. Cho mng cc s nguyn , hy sp xp mng theo th t tng dn.
D liu vo : tp tin vn bn ARRAY.INP gm 2 dng
Trang 66
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Trang 68
Lp trnh cn bn
Tm tt l thuyt v bi
tp
21. (**) Xt dy s a1, a2, , aN. Mt on con ca dy l dy cc phn t lin tip nhau
c xc nh bi ch s ca s bt u (L) v ch s ca s cui cng (R).Tng cc s trn
on c gi l tng on.
Yu cu : Cho dy ( aN ), hy tm on con c tng on ln nht (T)
D liu c cho trong tp tin vn bn SUMMAX.INP
- Dng th nht ch s nguyn N ( 0 < N <= 30000 )
- N dng tip theo, mi dng cha mt s l cc s ca dy cho theo ng th t. Gi tr
tuyt i ca mi s khng vt qu 30000
Kt qu tm c ghi vo tp tin vn bn SUMMAX.OUT gm 1 dng ghi 3 s T, L, R.
V d :
Trang 69
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Nhp vo thng tin ca cc loi linh kin c ca hng. Xut danh sch cc linh kin
nhp theo th t tng dn ca loi linh kin v tn linh kin. Cho bit c 10 linh kin
loi A cn thit lp rp my tnh hay cha?
Vi gi nh l ca hng c 10 linh kin loi A lp rp my. Nhp vo mt s tin
lp rp mt my tnh. C th lp c mt my tnh hon chnh vi cc linh kin ton b
theo n gi loi 1 hay n gi loi 2 hay khng? Nu s tin trong khong gia th hy tm
1 phng n gm nhng linh kin theo n gi 1 v linh kin theo n gi 2 lp?
Tt c d liu phi lu tp tin.
PH LC
HNG DN VIT CHNG TRNH
TRN MI TRNG BORLAND C++ 3.1 (BC31)
I. CI T BC3.1
Vo th mc BC3.1 trn a CD chy file install.exe.
Nhn Enter.
Trang 70
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Trang 72
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Trang 73
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Trang 75
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Trang 76
Lp trnh cn bn
Tm tt l thuyt v bi
tp
ii). S dng phm mi tn ln xung duyt ln xung v xem m t li. Khi di chuyn
quan st vt sng bn trn khung ca s son tho chng trnh. Thng thng vt
sng s cho bit v tr li (c th ngay chnh ti dng c li hoc trn hoc di mt dng).
C nhiu cch sa li, nhng n gin chng ta nn sa li t trn xung.
d. Mt s li thng gp
LI C PHP
1) Statement missing ; : Thiu du; khi kt thc 1 lnh B sung thm du ; vo sau
khai bo bin hay kt thc mt lnh.
Sai:
Sa thnh:
int a
scanf(%d,&a)
int a;
scanf(%d,&a)
2) Compound statement missing } : Thiu du } khi kt thc khi lnh hay lm B sung
thm du } vo tng ng
Sai :
void main()
{
int a;
scanf(%d,&a);
if(a>0)
printf(Duong);
Sa thnh:
void main()
{
int a;
scanf(%d,&a);
if(a>0)
printf(Duong);
}
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Sai :
void main()
{
int a;
scanf(%d,&a);
if(a>0)
printf(Duong);
}
}
Sa thnh:
void main()
{
int a;
scanf(%d,&a);
if(a>0)
printf(Duong);
}
4) Misplaced else : Chm phy sau pht biu if hoc khi lnh thc hin trong pht biu if
cha t trong cp du ngoc {}
Sai :
if (a%2);
printf(a le);
else
if(a>10)
printf(a chan);
printf(, > 10);
else
printf(a < 10);
Sa thnh:
if (a%2)
printf(a le);
else
if(a>10)
{
printf(a chan );
printf(, > 10);
}
else
printf(a < 10);
5) For statement missing ; : Thiu thnh phn trong c php ca vng lp for hoc qun
dng du chm phy (;) ngn cch cc thnh phn , ( Phi c 2 du chm phy)
Kin tra cho ng c php: for(<Biu thc khi>; <biu thc iu kin dng>; <biu
thc tng gim>) Trong biu thc gn hay nhiu thnh phn th miphn cch nhau bi du
phy (,)
Sai :
for(int i=0, i<n; i++)
{
printf(a[%d]: ,i);
scanf(%d,&a[i]);
}
Sa thnh:
for(int i=0; i<n; i++)
{
printf(a[%d]: ,i);
scanf(%d,&a[i]);
}
6) Function call missing ) : Thiu du phy phn cch gia phn nh dng v danh sch
bin trong hm printf v scanf. Thm du phy gia phn nh dng v danh sch bin.
Sai :
for(int i=0; i<n; i++)
{
printf(a[%d]: i);
scanf(%d,&a[i]);
Trang 78
Lp trnh cn bn
Tm tt l thuyt v bi
tp
}
Sa thnh:
for(int i=0; i<n; i++)
{
printf(a[%d]: ,i);
scanf(%d,&a[i]);
}
LI KHAI BO
1) Declaration terminated incorrectly : Khai bo tn bin trng vi tn hng nh ngha
trc i tn bin.
Sai :
#define MAX 100
void main()
{
int MAX;
}
Sa thnh:
#define MAX 100
void main()
{
int x;
}
2) Multiple declaration for 'i' : Khai bo bin trng tn, khai bo nhiu ln. Kim tra v
b bt khai bo li bin hoc i tn bin khc.
Sai :
int i;
for(int i=0; i<n; i++)
scanf(%d,&a[i][j]);
Sa thnh:
int x;
for(i=0; i<n; i++)
scanf(%d,&a[i][j])
Sa thnh:
int n;
printf(Nhap vao n:);
scanf(%d,&n);
4) Declaration syntax error : Thiu du ; sau khai bo bin. B sung du ; sau khi kt
thc khai bo bin.
Sai :
Sa thnh:
int n
Int n;
TH VIN HM HOC SAI TN HM
Function 'printf' should have a prototype Function 'scanf' should have a prototype
Function 'XXX' should have a prototype : Thiu sai bo th vin hm nu s dng hm
th vin, ngc li phi kim tra xem c khai bo nguyn mu hm, hoc gi sai tn hm.
B sung #include <stdio.h> v #include <conio.h>
Trang 79
Lp trnh cn bn
Tm tt l thuyt v bi
tp
f. Debug
Mc d chng trnh khng cn li nhng khi chy chng trnh vn ra kt qu sai, nhng
li c th l:
Dng chm phy sau: if, else, for, while, m cha thc hin lnh.
nh dng nhp xut sai hay khai bo sai kiu d liu.
Chia cho 0.
Khng c iu kin dng (iu kin dng sai).
Phn tch thut ton thiu (cha vt ht cc trng hp) hoc sai.
Cc thao tc debug:
Nhn F7 hoc F8 chy tng bc (nu khng c li khi bin dch)
Trang 80
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Nhp vo tn bin Expression, chn nt Evaluate (ho nhn Enter), Result s hin
th kt qu ti thi im , sau nhp gi tr mi cho bin ti New Value Enter (dng
phm tab di chuyn v tr chn).
Trang 81
Lp trnh cn bn
Tm tt l thuyt v bi
tp
Trang 82