Professional Documents
Culture Documents
===================================================================
MC LC
CHNG I: TNG QUAN V NGN NG LP TRNH C....................................................3
1. Cc khi nim chng trnh, lp trnh, lp trnh vin.......................................................3
2. S pht trin ca cc cng c lp trnh.............................................................................3
3. Mt s ngn ng lp trnh thng dng.............................................................................3
4. Gii thiu v ngn ng lp trnh C...................................................................................3
II. Cc khi nim c bn............................................................................................................4
1. Cc yu t c bn...............................................................................................................4
2. Cu trc mt chng trnh ..............................................................................................6
3. Mi trng lm vic.........................................................................................................8
III. Cc kiu d liu trong C......................................................................................................8
1. Cc kiu d liu c bn.....................................................................................................8
2. Chuyn i kiu d liu...................................................................................................10
3. Th t u tin cc php ton...........................................................................................11
IV. Nhp xut d liu trong C.................................................................................................12
2. Cc lnh xut d liu ......................................................................................................13
3. Trnh by mn hnh..........................................................................................................14
CHNG II: CC CU LNH IU KHIN.........................................................................18
I. Cc cu lnh la chn:.........................................................................................................18
1. if else ......................................................................................................................18
2. SWITCH ........................................................................................................................19
II. Cc lnh lp .......................................................................................................................22
1. Vng lp xc nh FOR...................................................................................................22
2. Vng lp khng xc nh DO WHILE.......................................................................23
3. WHILE............................................................................................................................24
III. Cc lnh r nhnh v iu kin : .......................................................................................25
1. BREAK............................................................................................................................25
2. CONTINUE.....................................................................................................................25
3. GOTO ............................................................................................................................25
CHNG III: HM TRONG NGN NG LP TRNH C.....................................................26
I. Khi nim v hm.................................................................................................................26
1. Hm th vin...................................................................................................................26
2. Hm t to.......................................................................................................................26
II. Cch xy dng hm.............................................................................................................26
1. Xy dng hm..................................................................................................................26
2. S dng hm....................................................................................................................28
3. Nguyn tc hot ng ca hm........................................................................................29
4. Truyn tham s cho hm..................................................................................................29
III. Hm quy........................................................................................................................32
1. nh ngha hm quy....................................................................................................32
2. Mt s ch khi vit hm quy....................................................................................32
3) Xy dng macro..............................................................................................................34
4) Mt s th vin hm chun v hm thng dng.............................................................34
CHNG IV: CC KIU D LIU C CU TRC.............................................................39
I. Kiu d liu mng................................................................................................................39
1. Khi nim v mng..........................................................................................................39
3. Mng nhiu chiu............................................................................................................42
4. Bi tp..............................................................................................................................42
1. Khi nim con tr ...........................................................................................................47
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
1
Bi ging: C s lp trnh
===================================================================
2. a ch con tr.................................................................................................................47
4. S dng con tr trong mng nhiu chiu.........................................................................48
5. S dng con tr trong hm..............................................................................................48
III. Kiu d liu struct..............................................................................................................49
1. Khai bo struct.................................................................................................................49
2. Truy cp vo phn t ca struct.......................................................................................50
3. Phi hp mng v d liu kiu struct..............................................................................50
IV. Kiu d liu t nh ngha : ..............................................................................................52
1. Kiu lit k (t kho enum).............................................................................................52
2. Kiu typedef.....................................................................................................................53
CHNG V: D LIU KIU TP...........................................................................................55
I. Khi nim v tp...................................................................................................................55
1. Khi nim tp...................................................................................................................55
2. Cu trc v phn loi tp.................................................................................................55
3. Cc bc x l tp ..........................................................................................................56
II. Tp d liu nh phn...........................................................................................................57
1. To tp nh phn.............................................................................................................57
2. c tp d liu nh phn.................................................................................................58
3. Truy nhp tp d liu nh phn.......................................................................................59
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
2
Bi ging: C s lp trnh
===================================================================
Thanh
menu
Phn son
ni dung
chng
trnh
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
3
Bi ging: C s lp trnh
===================================================================
Bi ging: C s lp trnh
===================================================================
_BP
_DI
_SI
_SP
1.3 Ch thch
- Tc dng: ch thch cho mt cu lnh hay mt on chng trnh vit. Dng
ch thch ny s b b qua khi bin dch chng trnh.
- K hiu: /* ch thch */
hoc // ch thch
V d 1:
#include<stdio.h>
#include<conio.h>
main()
{
printf("chao");
//in ra mn hnh t chao
getch();
//tm dng chng trnh ch n phm Enter tip tc
}
V d 2:
#include <stdio.h>
#include <conio.h>
main()
{
char ten[50];
/* khai bao bien ten kieu char 50 ky tu */
clrscr();
/*lenh xoa man hinh*/
printf("Xin cho biet ten cua ban: "); /*Xuat chuoi ra man hinh*/
scanf("%s",ten);
/*Doc vao 1 chuoi la ten cua ban*/
printf("\nXin chao ban %s\n",ten);
printf("Chao mung ban den voi Ngon ngu lap trinh C");
getch(); /*Dung chuong trinh, cho go phim*/
}
1.4 Du chm cu
- Du ; dng kt thc mt cu lnh.
1.5 Cch khai bo
* Khai bo bin:
kieu_du_lieu danh_sach_bien;
ch : Danh sch c th l mt bin hoc nhiu bin c cng mt kiu d liu c vit
cch nhau bi du , . Ta c th gn lun gi tr cho tng bin.
v d :
int i ;
float x,y,z ;
int i=3 ;
* Khai bo hng s
const kieu_du_lieu ten_hang = gia_tri_hang ;
v du :
const int x=2 ;
* Khai bo hng s tng trng
#define Ten_hang gia_tri ; /* vit sau dng #include */
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
5
Bi ging: C s lp trnh
===================================================================
v d 4:
#include <stdio.h>
#include<conio.h>
#define PI 3.14
/*khai bo hng s tng trng */
main()
{
float R,Dien_tich;
printf("R= ");
scanf("%f",&R);
Dien_tich = PI*R*R;
printf("Dien tich = %f\n",Dien_tich);
getch();
return(0);
}
1.6 Php gn gi tr
Tn_mt_bin = biu_thc;
v d:
i=3; /* i c gn gi tr l 3 */
i=i+4; /* i cng 4 c kt qu l 7, gi tr 7 ny li t vo nh c a ch ca i*/
ch : Ta c th s dng php gn kp gn mt gi tr cho nhiu bin
v d:
a=b=c=3; /*gn gi tr 3 cho cc bin a, b, c */
a=b + (c=3); //gn 3 cho bin c, sau cng vo vi b gn kt qu nhn c cho a
2. Cu trc mt chng trnh
* Chng trnh n gin:
#include <.....> /* gi cc tp tin x l */
/* ------------------ HM CHNH -------------------------*/
main()
{
.........
/* Cc cu lnh */
return(0);
/* C th b lnh ny */
}
// ------------------ DINH NGHIA HAM ----------------------Kiu_d_liu tn hm (cc tham s);
{
............
/* Cc cu lnh */
return (... )
/* Tr li mt gi tr c th cho hm */
}
* Cu trc tng th:
Chuyn sang b tin x l
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
6
Bi ging: C s lp trnh
===================================================================
#include
#define
typedefs (nh ngha kiu d liu)
funtion prototype (nguyn mu cc hm: khai bo tn hm vi tham s)
Khai bo bin ngoi (External variables)
main()
(function chnh)
{
Khai bo cc bin, hng
S dng cc hm khc
}
function th hai
{
Khai bo cc bin, hng
S dng cc hm khc
}
function th ba
{
Khai bo cc bin, hng
S dng cc hm khc
}
v d 5:
#include <stdio.h>
#include <conio.h>
/*------------------HAM CHINH ----------------*/
main()
{
clrscr();
//cau lenh xoa man hinh
float x=1.5;
float y,z;
int n=3, p=5, q=10;
float f(float, int, int); //khai bao mau ham
y= f(x,n,p);
printf("Gia tri cua y = %f\n",y);
z= f(x+0.5,q,n-1);
printf("Gia tri cua z = %f\n",z);
getch();
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
7
Bi ging: C s lp trnh
===================================================================
}
/*------------------DINH NGHIA HAM f ----------------*/
float f(float x, int b, int c)
{
float gia_tri;
//khai bao bien cuc bo
gia_tri = x*x+b*x+c;
return gia_tri;
}
3. Mi trng lm vic
- TC c th chy trong mi trng MS_DOS hoc mi trng Windows.
III. Cc kiu d liu trong C
1. Cc kiu d liu c bn
1.1 Kiu s nguyn
Kiu s nguyn (hay cn gi l kiu m c): l kiu d liu dng lu cc
gi tr nguyn. Kiu s nguyn trong C c chia thnh cc kiu d liu con, mi kiu
c mt min gi tr khc nhau
Kiu bin
Character
Integer
Short integer
Long integer
Unsigned character
Unsigned integer
Unsigned Short integer
Unsigned Long integer
T kho
char
int
short
long
unsigned char
unsigned int
unsigned short
unsigned long
S byte
1
2
2
4
1
2
2
4
Di gi tr
-128 127
-32768 32767
-32768 32767
-2,147,483,648 2,147,483,647
0 255
0 65,535
0 65,535
0 4,294,967,295
phn m
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
8
Bi ging: C s lp trnh
===================================================================
Bi ging: C s lp trnh
===================================================================
H a
N o i
\0
NGHA
Php v
Php hoc
Php ph nh
* Bng s tht
X
Y
0
0
0
s khc khng
s khc khng
0
s khc khng s khc khng
X&&Y
0
0
0
1
X||Y
0
1
1
1
X
0
s khc khng
!X
1
0
Bi ging: C s lp trnh
===================================================================
(2 byte) (4)
(4)
(8)
(10)
V d:
int i;
long j;
float k;
i + j c kt qu l d liu kiu long.
i + j + k c kt qu l d liu kiu float.
ch : Khng c kiu char v short trong dy nguyn tc trn.
* S u tin cho kiu s:
- Trong biu thc ton hc, cc bin c kiu d liu char hoc short u c quy i v
kiu d liu int ri mi thc hin tnh (v cc php ton s hc khng c nh ngha
cho kiu char v short).
v d:
char a;
int b;
float c;
a + b cho kt qu c kiu d liu l int (v a c chuyn sang kiu d liu int ri
mi cng vo b)
a + b + c cho kt qu c kiu d liu l float
* S chuyn i cho kiu k t char
- Trong php ton, char t chuyn i thnh int
- Trong php tnh tng (hiu) vi mt k t khc, kt qu s l tng (hiu) ca a vi m
ASCII ca k t.
V d:
char a = 5;
B + a chnh l B + 5 = 66 + 5 = 71 => c kt qu l k t G
3. Th t u tin cc php ton
* Bng tng hp n gin v th t u tin ton t s hc v quan h
TON T
()
- (ton t 1 ngi)
*
/
%
+
< <= > >=
== !=
&&
||
CHIU TNH
TON
L R
R L
L R
L R
L R
L R
L R
L R
V d:
5*(2+3) = 5*6=30
5/3*2 = 1*2 = 2
Vd6: Chng trnh minh ha
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
11
Bi ging: C s lp trnh
===================================================================
#include<stdio.h>
#include<conio.h>
main()
{
int a;
a=5/3*2;
printf("kq: %f",a); //in ra man hinh gia tri cua a
getch();
//lenh tam dung chuong trinh cho an phim Enter
}
* Bng tng hp y
TON T
( ) [ ] ->
++ -- ! sizeof( ) (ton t mt ngi)
*
/
%
+
<<
>>
<
<= >
>=
==
!=
&
^
|
$$
||
?:
= += -= *= /= %= &= ^= |= <<= >>=
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
12
Bi ging: C s lp trnh
===================================================================
%f
: c s thc float, (nhp s theo mt trong hai cch: thng thng hoc
vit theo s m)
%e
: c s thc float, (nhp s theo mt trong hai cch: thng thng hoc
vit theo s m)
%lf hoc %lu : c s thc double
%s
: c xu k t khng cha du cch, dng vi a ch xu.
%o
: c vo s nguyn di dng h m c s 8 (octal)
%x
: ----------------------------------------------------- 16 (hexa)
Ch 1: Trng hp c s, my tnh s b qua du trng, cch, du xung dng cho
n khi gp ch s th bt u ly ra c v ch dng li nu k t khng phi l ch
s. Sau my tnh ghp chng li thnh s cn ly.
i vi trng hp c ch, my tnh s c chnh xc tuyt i v s lng.
v d:
Nhp
Hm
Kt qu my tnh nhn c
m^^*(25
scanf(%d%c,&x,&y); x=m y=25
123^*hfn
scanf(%d%c,&x,&y); x=123
y=^ (vd7)
Ch 2:Nu chn thm k hiu vo gia 2 m qui cch th khi c d liu, my tnh s
nhy qua cc du cch, du ngn cch Enter c s liu hay mt k t.
- Nguyn tc ca hm scanf( ) : D liu g t bn phm c lu tr trong b nh m
ch x l. Hm scanf( ) ly d liu t b nh m .
* Hm getchar( )
c= getchar( ) ;
c vai tr gn ging nh lnh scanf( %c ,&c) dng ly 1 k t c g vo t
bn phm.
* Hm c xu k t gets( )
- Hm ny nm trong tp stdio.h
- Tc dng: c mt xu k t c cha c du cch cho n khi n phm Enter th dng.
2. Cc lnh xut d liu
*Mu hm:
printf(dy m qui cch, dy cc biu thc);
V d:
int n;
float x;
char ch;
printf(In ra cac gia tri: %d, %f v %c, n, x, ch);
Dy m qui cch
ngha
%c
: in ra k t kiu char, c th dng cho kiu short v int
%d
: in ra s nguyn int, c th dng cho kiu char
%u
: in ra kiu s nguyn khng du, unsign int, c th
dng cho unsign char, unsign short
%ld
: in ra s nguyn kiu long
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
13
Bi ging: C s lp trnh
===================================================================
%lu
%x, %X
%o
%f
: -------------------------unsigned long
: ------------------- vit di dng s hexa (h m 16)
: ------------------------------------------ octal (h m 8)
: in ra s thc di dng bnh thng (phn thp phn
c 6 ch s), dng cho kiu float v double
: in ra kiu d thc di dng s m (phn nh tr c
6 ch s phn thp phn), dng cho kiu float,
double. Du e hay E s tng ng vi kt qu e hoc
E s in ra.
: chn ci no ngn hn trong hai kiu %f hoc %e
in ra.
: in ra xu k t vi a ch cho trc.
%e, %E
%g, %G
%s
=> kt qu l : ^1.234
3. Trnh by mn hnh
- s dng cc hm ny, ta cn khai bo:
#include <conio.h>
gotoxy(int X, int Y);
clrscr( );
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
14
Bi ging: C s lp trnh
===================================================================
clreol();
// chn mu cho ch
//chn mu cho nn
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
15
Bi ging: C s lp trnh
===================================================================
N TP
1) Lnh hin th d liu:
printf(dy m quy cch, dy cc biu thc);
//in ra cc k t l gi tr ca cc
biu thc
putchar(c);
// in ra mt k t l gi tr ca bin c
puts(xu k t);
// in ra mt xu k t
//in ra my in
gets(str );
3) Lnh xo b nh m ca bn phm
fflush(stdin);
4) Lnh trang tr mn hnh
gotoxy(ct x, dng y) ;
textcolor(mu hoc m mu) ;
textbackground(mu hoc m mu);
//chn mu cho ch
//chn mu cho nn
wherex() ;
//cho bit to ct
wherey() ;
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
16
Bi ging: C s lp trnh
===================================================================
N TP CHNG I
1. Hy xy dng chng trnh tnh chu vi, din tch hnh ch nht vi chiu di v chiu rng
nhp vo t bn phm.
2. Hy xy dng chng trnh tnh tng, hiu, tch, thng ca 2 s nguyn nhp vo t bn
phm.
3. Hy xy dng mt phn mm ng dng l tr chi p ng yu cu sau:
- Nhp vo mt m ASCII
- Nhp vo k t m bn d on (ngi th nht).
- Hin th kt qu ca m ASCII m ngi trc nhp (ngi th hai).
4. Hy xy dng phn mm ng dng l tr chi p ng yu cu sau:
- Bt u nhp 3 s nguyn dng (ngi th nht)
- Xo mn hnh (ngi th nht)
- Nhp li 3 s bn nh (ngi th 2).
- Hin th 3 s ban u.
5. Xy dng chng trnh p ng yu cu sau:
- Nhp s nguyn a t bn phm
- Tnh tngv tch ca cc s nguyn lin tip k t s nhp (a, a+1. a+2. a+3. a+4)
6. Xy dng chng trnh tnh s tin li lnh c sau mt nm bit s tin gi ban u l S
(nhp vo t bn phm), li sut hng thng l 2%. Bit rng mi thng ngi gi s rt li mt
ln.
7. Hy xy dng chng trnh nhp k t u tin ca tn cc bn trong nhm v hin th ra
mn hnh bng 2 cch: vit hoa, vit thng.
8. Hy xy dng phn mm ng dng p ng yu cu sau:
- Nhp vo 5 k t
- Chuyn cc k t thnh cc k t vit hoa.
- Hin th ra mn hnh nh sau:
+ dng u l tt c cc k t vit hoa
+ cc dng sau, mi dng hin th mt k t.
9. Xy dng chng trnh tnh bnh phng v cn bc hai ca mt s nguyn c nhp vo t
bn phm.
10. Xy dng chng trnh tnh lp phng ca tng 3 s nguyn dng nhp vo t bn phm
11. Xy dng chng trnh tnh gi tr ca f = a*x*x + b*x + c vi a, b, c l cc s cho trc,
x l s c nhp v t bn phm.
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
17
Bi ging: C s lp trnh
===================================================================
Bi ging: C s lp trnh
===================================================================
switch(a)
{
case 0: printf("so do la 0\n");
case 1: printf("so do la 1\n");
case 2: printf("so do la 2\n");
default: printf("khong phai so 0 1 2");
}
getch();
}
V d 10_break:
#include<stdio.h>
#include<conio.h>
main()
{
clrscr();
int a=1;
switch(a)
{
case 0: printf("so do la 0\n");
break;
case 1: printf("so do la 1\n");
break;
case 2: printf("so do la 2\n");
break;
default: printf("khong phai so 0 1 2");
}
getch();
}
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
20
Bi ging: C s lp trnh
===================================================================
BI TP
Bi 1: Hy vit chng trnh tm s ln nht trong hai s nhp vo t bn phm m
khng phi s dng bin ph max?
Bi 2: Hy vit chng trnh tm s ln nht trong hai s v tnh hiu dng ca hai s
.
Bi 3: Hy vit phn mm gii phng trnh bc nht ax-b=0
Bi 4: Hy vit phn mm gii phng trnh bc hai ax2+bx+c=0 vi a, b, c l cc s
nhp vo t bn phm
Bi 5: Hy vit phn mm tnh s tin li lnh c sau thi gian t thng bit:
- Nu gi t hn 6 thng th li sut hng thng l 2%
- Nu gi t 7 thng n 1 nm th li sut hng thng l 3% (p dng cho ton b
thi gian gi).
- Nu gi trn 1 nm th li sut hng thng l 4% (p dng cho ton b thi gian
gi).
Phng thc gi: C sau mi thng ngi gi s c rt li mt ln.
Bi 6: Cho bn s a, b, c, d c vo t bn phm. Hy tm gi tr cc i gn cho bin
c tn l Max v in ra mn hnh.
Bi 7: Vit chng trnh nhp mt s nguyn x vi 2<=x<= 8 v in ra mn hnh th
trong tun bit rng
- Nu s nhp vo l 2 th in ra dng thng bo thu hai
- Nu s nhp vo l 3 th in ra dng thng bo l thu ba
- ...
- Nu s nhp vo l 8 th in ra dng thng bo l ch nht.
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
21
Bi ging: C s lp trnh
===================================================================
II. Cc lnh lp
1. Vng lp xc nh FOR
* Mu lnh
for ([khi to]; [iu kin]; [bthc thay i gtr bin iu khin])
cng_vic;
Trong :
- khi to: l biu thc cho bit gi tr khi to ca bin iu khin
- iu kin : l biu thc cho bit iu kin ca bin iu khin thc hin cng vic
- bthc thay i gtr bin iu khin : l biu thc cho bit gi tr ca bin kiu khin
c thay i nh th no sau mi vng lp.
- cng vic : c th l mt cu lnh n hoc mt cu lnh ghp (gm nhiu lnh n
t gia 2 du )
V d 1:
for (ch = A; ch<= Z; ch++)
printf(%c, ch);
V d 2:
i=1;
for (; i<=24; i++) printf(%d\n,i);
V d 3:
i=1;
for (; i<=24; )
{
printf(%d\n,i);
i++;
}
* Cch thc hin:
Begin
bin khin = gtr khi to
bin iu khin
c tho mn k?
sai
ng
cng vic c thc hin
bin khin nhn gi tr mi
//Chuyen doi ki tu
End
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
22
Bi ging: C s lp trnh
===================================================================
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
main()
{
clrscr();
char chu[80];
int tong, dem;
//doc vao xau ki tu
for (dem=0; (chu[dem]=getchar())!= '\n'; ++dem);
tong=dem;
//lenh rong
End
V d 12:
// nhap cac so nguyen tu ban phim sao cho tong cua chung lon hon 100
#include <stdio.h>
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
23
Bi ging: C s lp trnh
===================================================================
#include <conio.h>
main()
{
clrscr();
int n, tong=0;
do
{
printf("Nhap so: ");
scanf("%d",&n);
tong+=n;
}
while (tong<=100);
printf("Tong cac so da nhap la: %d",tong);
getch();
}
3. WHILE
* Mu lnh
while (biu thc logic);
<cng vic>
Trong :
- biu thc logic: nhn 1 trong 2 gi tr ng hoc sai
- cng vic : l mt lnh n hoc mt lnh ghp c t trong du " "
* Cch thc hin:
Begin
sai
End
V d 13: Nhp cc s nguyn t bn phm sao cho tng ca chng ln hn 100
#include <stdio.h>
#include <conio.h>
main()
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
24
Bi ging: C s lp trnh
===================================================================
{
clrscr();
int n, tong=0;
while (tong <=100)
{
printf("Nhap so: ");
scanf("%d",&n);
tong+=n;
}
printf("Tong cac so da nhap la: %d",tong);
getch();
}
III. Cc lnh r nhnh v iu kin :
1. BREAK
* Mu lnh
break;
* Tc dng
- Lnh break c tc dng thot ra khi cu lnh c cu trc trc tip cha n v thc
hin tip cc cu lnh pha sau ca chng trnh.
V d 10_break (trang 19)
2. CONTINUE
* Mu lnh
continue;
* Tc dng
- Lnh continue cho php chuyn sang vng lp tip theo m khng cn thc hin cc
cu lnh pha sau trong cng vic ca vng lp.
V d : 8.15 (gio trnh trang 151)
3. GOTO
*Mu lnh
goto tn_v_tr_mi;
Ch : Tn_v_tr_mi l k hiu nh du cu lnh m my tnh s thc hin ngay khi
gp lnh goto. Ta c th k hiu nh du cu lnh nh sau:
Tn_v_tr_mi: cu_lnh;
V d: 8.16 (gio trnh trang 151).
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
25
Bi ging: C s lp trnh
===================================================================
Bi ging: C s lp trnh
===================================================================
Trong :
- Kiu gi tr ca hm: L mt trong cc kiu d liu c bn (float, int, ...)
Bi ging: C s lp trnh
===================================================================
char thuong,hoa;
printf("Hay go vao mot ky tu: ");
scanf("%c",&thuong);
hoa=chuyen_chu_hoa(thuong);
printf("\nChu hoa tuong ung la %c\n\n",hoa);
getch();
}
Cch 2: S dng hm if chuyn ch thng thnh ch hoa
char chuyen_chu_hoa(char ch)
{
char kytu;
if kytu=(ch>='a' && ch<='z')
return (ch-32);
else
return(kytu);
}
Cch 3: S dng hm toupper (sinh vin t lm)
V d 16: Xy dng hm kim tra tnh chn l ca mt s nguyn
even(n)
int n;
{
int result;
if ((n%2)==0)
result=1;
else
result=0;
return (result);
}
2. S dng hm
- Mun s dng hm trong main, ta phi khai bo nguyn mu (prototype) trc khi gi
hm ra s dng (c th khai bo trc hm main hoc khai bo trong hm main). Cch
khai bo nguyn mu nh sau:
- Cch 1:
Kiu_gtr_ca_hm Tn_hm(dsch_cc_kiu_dliu_t.ng_vi_cc_tham_s_hnh_thc)
V d:
float f_thi_du(float, int, int);
- Cch 2:
Kiu_gtr_ca_hm Tn_hm(cc_tham_s_hnh_thc_v_kiu_d_liu_t.ng)
V d:
float f_thi_du(float x, int a, int b);
V d 14b:
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
28
Bi ging: C s lp trnh
===================================================================
#include<stdio.h>
#include<conio.h>
float f_thi_du(float, int, int); //khai bao mau ham, prototype
main()
{
float x=1.5;
float y, z;
int n=3, p=5, q=10;
y=f_thi_du(x, n, p);
printf("gia tri cua y la %f\n",y);
z=f_thi_du(x+0.5, q, n-1);
printf("gia tri cua y = %f\n",z);
getch();
}
//Khai bao ham
float f_thi_du(float x, int b, int c)
{
float gia_tri;
//khai bao bien cuc bo
gia_tri=x*x+b*x+c;
return gia_tri;
}
3. Nguyn tc hot ng ca hm
- Hm nhn cc thng s vo v tr li kt qu cho tn hm.
V d:
y=f_thi_du(x, n, p);
Trong ln gi ny, hm f_thi_du nhn tham s l x, n, p v tr li kt qu l gi tr ca
biu thc x*x+n*x+p.
=> V vy, y chnh l gi tr ca biu thc x*x+n*x+p.
? Hy xc nh cc thng s truyn vo v gi tr nhn c ca hm khi gi hm nh
sau:
z=f_thi_du(x+0.5, q, n-1);
4. Truyn tham s cho hm
Truyn tham s cho hm chnh l vic truyn gi tr cho hm . Gi tr ca tham s
thc s trc v sau khi gi hm khng thay i.
V d 17 : Xy dng hm hon v 2 s nguyn cho trc
#include<stdio.h>
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
29
Bi ging: C s lp trnh
===================================================================
#include<conio.h>
main()
{
clrscr();
//khai bao mau ham
void hoan_vi(int, int); //void hoan_vi(int a, int b)
int n=10, p=20;
printf("Truoc khi goi ham: %d %d\n",n,p);
hoan_vi(n,p);
printf("Sau khi goi ham: %d %d\n",n,p);
getch();
}
void hoan_vi(int a, int b)
{
int t;
printf("Truoc khi hoan vi: %d %d\n",a,b);
t=a;
a=b;
b=t;
printf("Sau khi hoan vi: %d %d\n",a,b);
}
5. Phn loi bin
* Bin ton cc
- L bin c khai bo trc khi khai bo hm. Bin ton cc c s dng mi ni
trong chng trnh v c tc dng ngay t chng trnh ngun theo sau khai bo bin
.
V d :
int a ;
main()
{....}
int n ;
float x ;
ham1(....)
{.....}
ham2()
{.....}
* Bin a phng
- L bin ch c gi tr trong thi gian hm hot ng . Sau khi hm kt thc, nhng bin
khai bo bn trong hm cng vi cc tham s ca hm s c gii phng.
V d :
#include<stdio.h>
int i;
//Bien toan cuc
main()
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
30
Bi ging: C s lp trnh
===================================================================
{
void thi_du(void);
for (i=1; i<=5;i++)
thi_du();
}
void thi_du(void)
{
int m=3 ; //Bien dia phuong
m++ ;
printf("%d %d\n",i,m);
}
* Bin a phng tnh (static)
- Bin a phng tnh c gi tr khi to l 0 (trong ln dng u tin). Bin a
phng tnh c th tn ti v lu gi gi tr ngay c khi hm kt thc hot ng.
Khai bo:
static kiu_d_liu danh_sch_bin;
V d:
static int i;
V d 18:
#include<stdio.h>
#include<conio.h>
main()
{
void thi_du(void);
int n;
for (n=1;n<=5;n++)
thi_du();
getch();
}
void thi_du(void)
{
static int i;
i++;
printf("Goi lan thu %d\n",i);
}
* Bin thanh ghi (register)
- Bin thanh ghi l cc bin c lu trong cc thanh ghi ca b vi x l CPU vi tc
c truy xut nhanh. V s thanh ghi khng nhiu nn cn hn ch dng cc bin thanh
ghi (thng dng cho cc bin trong vng lp).
V d:
register int t;
for (t=0 ; string[t] ; t++)
putchar(toupper(string[t]));
ch : Bin thanh ghi khng c a ch ring nh cc nh khc v thanh ghi nm ngay
trong CPU.
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
31
Bi ging: C s lp trnh
===================================================================
III. Hm quy
1. nh ngha hm quy
- Hm quy l hm c th c li gi ti chnh n.
V d: Tnh giai tha ca n bit
1 ,n = 0
n! =
( n 1)!* n , n >= 1
Bi ging: C s lp trnh
===================================================================
scanf("%d",&n);
//in ra giai thua
printf("n! = %ld \n",GIAI_THUA(n));
getch();
}
//xay dung ham tinh giai thua
long int GIAI_THUA(int n)
{
if (n==0) return (1);
else return (n*GIAI_THUA(n-1));
}
V d 20: Xy dng chng trnh cho 3 cc trong cc C1 cha N a xp t ln n
nh. Yu cu chuyn cc a n cc C2 vi nguyn tc:
- c php chuyn a qua cc trung gian C3
- Trn mi cc, cc a c xp phi tho mn nguyn tc: a nh trn, a
ln di.
C1
C2
C3
#include<stdio.h>
#include<conio.h>
void DICH_CHUYEN(int N, int C1, int C2, int C3);
main()
{
clrscr();
int N;
printf("Nhap N= "); scanf("%d",&N);
DICH_CHUYEN(N,1,2,3);
getch();
}
//xay dung ham DICH_CHUYEN
void DICH_CHUYEN(int N, int C1, int C2, int C3)
{
if (N==1) printf("%d den %d\n",C1,C2);
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
33
Bi ging: C s lp trnh
===================================================================
else
{
DICH_CHUYEN(N-1,C1,C3,C2);
DICH_CHUYEN(1,C1,C2,C3);
DICH_CHUYEN(N-1,C3,C2,C1);
printf("\n");
}
}
3) Xy dng macro
- Macro l mt tp hp cc lnh v biu thc c i din bng mt tn c th. Khi ta
cn s dng tp hp cc lnh v biu thc , ta ch cn gi tn macro.
Khai bo:
#define tn_macro dy_cc_lnh_v_biu thc.
V d:
#define In_gtri(x) printf(x= %d,x)
#define cube(y) (y*y*y)
V d 21 :
#include<stdio.h>
#include<conio.h>
#define hang 3
#define In_gtri(x) printf("%d\n",x)
#define cube(y) (y*y*y)
main()
{
clrscr();
int x, y, z;
x=hang;
z=cube(x);
In_gtri(x);
In_gtri(z);
getch();
}
ch : -Trong trng hp macro c cha nhiu lnh th gia cc lnh phi c du ;
ngn cch.
- macro khng c tnh quy v tnh modun ho nh hm.
4) Mt s th vin hm chun v hm thng dng
a) Th vin hm chun
stdio.h
math.h
stdlib.h
string.h
Th vin cc hm Input/Output
Th vin cc hm ton hc du chm ng (sqrt, sin,...)
Th vin cc hm cp pht b nh.
Cc hm v xu k t
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
34
Bi ging: C s lp trnh
===================================================================
ctype.h
Cc hm v chuyn i k t.
b) Mt s hm thng dng
* Hm to s ngu nhin
randomize;
//Hm to b s ngu nhin
random(n);
//Hm to s ngu nhin trong khong t 0 ti n-1
Ch : - Nu ta s dng hm rand() th chng trnh s to ra mt s ngu nhin nm
trong khong t 0 n 32767.
- Nu mun s dng hm to s ngu nhin, ta phi gi tp tin x l stdlib.h
V d 22:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
main()
{
randomize();
printf("So ngau nhien trong khoang tu 0-99: %d\n",random(100));
getch();
}
* Cc hm thi gian
- Hm ngy thng
- Turbo C nh ngha cu trc ngy thng v thi gian nh sau:
struct date
{
int da_year;
//nm hin ti
char da_day; //ngy hin ti
char da_mon;
//thng
}
Khi :
void getdate(struct date *datep); //hm ly ngy thng ca my
void setdate(struct date *datep);//hm xc lp ngy thng
V d 23: Vit chng trnh ly ngy thng ca my
#include<stdio.h>
#include<conio.h>
#include<dos.h>
main()
{
clrscr();
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
35
Bi ging: C s lp trnh
===================================================================
struct date d;
getdate(&d);
printf("Nam hien tai la: %d\n",d.da_year);
printf("Thang hien tai la: %d\n",d.da_mon);
printf("Ngay hien tai la: %d\n",d.da_day);
getch();
}
V d 24: Vit chng trnh xc lp ngy thng cho my
#include<stdio.h>
#include<conio.h>
#include<dos.h>
#include<process.h> //su dung ham system
main()
{
clrscr();
struct date ngay_moi,ngay_cu;
getdate(&ngay_cu);
printf("ngay thang goc: %d / %d / %d \n",ngay_cu.da_day, ngay_cu.da_mon,
ngay_cu.da_year);
//system("date");
ngay_moi.da_year = 2000;
ngay_moi.da_mon = 1;
ngay_moi.da_day = 1;
setdate(&ngay_moi);
printf("Ngay thang duoc xac lap: %d / %d / %d \n",ngay_moi.da_day,
ngay_moi.da_mon, ngay_moi.da_year);
system("date");
//ham system dung de goi lenh cua dos
setdate(&ngay_cu);
printf("Tro lai ngay thang goc:
ngay_cu.da_mon, ngay_cu.da_year);
system("date");
getch();
%d / %d / %d \n",ngay_cu.da_day,
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
36
Bi ging: C s lp trnh
===================================================================
BI TP CHNG II - III.
Bi 1: Cho hm
F(x) = 5x2 + 5x + 1 khi -1 < x <= 1
|x-5| / (3(x2 + 1)) khi x < -1 hay x >= 1
Vit chng trnh c mt s thc x t bn phm v in ra mn hnh gi tr ca F(x)
Bi 2: Tnh s tin thc lnh ca mt nhn vin trong x nghip theo cng thc:
Thc lnh = (lng chnh * s ngy cng)/26 + (ph cp) - (tm ng)
vi quy nh: ngh qu 5 ngy s b tr 20% tng thc lnh, lm thm qu 3 ngy
c tng 10% tng thc lnh.
Bi 3: Vit chng trnh tm v in ra mn hnh mi c ca s nguyn dng c vo
t bn phm
Bi 4: Dng cu trc swich ... case tnh s ngy ca thng bt k thuc nm bt k c
vo t bn phm.
(Bit rng nhng nm nhun thng 2 c 29 ngy, cn nm khng nhun, thng 2 ch c
28 ngy. Nm nhun l nm chia ht cho 4 nhng khng chia ht cho 100).
Bi 5: Tm s hon ho khng vt qu N (vi N nhp vo t bn phm). Bit s hon
ho l s c tng cc c nguyn dng b hn n bng chnh n.
V d: 6 c cc c nguyn dng b hn n l 1, 2, 3
Ta c 1+2+3=6 nn 6 l s hon ho.
Bi 6: Vit chng trnh tm cc s chnh phng khng vt qu s n c vo t bn
phm.
Bi 7: Vit chng trnh hin th cc s nguyn t ln hn 2 v nh hn s n nhp vo
t bn phm.
Bi 8: Vit chng trnh tm nhng s c 3 ch s m tng cc lp phng ca cc ch
s ca chng bng chnh chng.
Bi 9: Mt ngi c N triu ng mun i ngn hng ly cc t 10000, 5000, 2000,
1000, 500, 200. Hy vit chng trnh hin th cc phng n i tin ra mn
hnh.
Bi 10: Vit chng trnh tnh giai tha ca s nguyn n vi n nhp vo t bn phm.
Bi 11: S dn ca mt a phng hin nay l N triu ngi, t l tng dn s l s%
/nm. Hy vit chng trnh tnh xem sau bao nhiu nm th s dn nc ta tng
ln gp k ln.
Bi 12: Vit chng trnh m s ch s ca mt s nguyn c vo t bn phm.
Bi 13: Vit chng trnh tnh thi gian gi tit kim ngn hng bit s tin gi ban
u l T, li sut thng l s%, s tin cn lnh trong tng lai l Ts. Tin tit kim
c gi theo phng thc sau mi thng, li s c gp vo s tin cho vay
tnh li cho thng tip theo (gi l li lu k).
Bi 14: Phn tch mt s nguyn N thnh tch cc tha s nguyn t.
Bi 15: Vit chng trnh gii phng trnh bc 2 ax2+bx+c=0 vi a, b, c l cc s nhp
vo t bn phm.
Bi 16: Vit chng trnh nhp vo N s nguyn v in ra mn hnh theo th t tng dn.
Bi 17: Vit chng trnh nhp vo mt s t nhin t bn phm v in ra cc ch s l
c mt trong .
Bi 18: Hy vit chng trnh s dng quy hin th dy s Fibonacci theo nh ngha
sau:
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
37
Bi ging: C s lp trnh
===================================================================
F1=1; F2=1;
Fn = Fn-1+Fn-2
Bi 19: Vit chng trnh nhp vo t bn phm mt dy cc s nguyn khc 0 cho n
khi nhp s 0 th dng vic nhp d liu li. Tnh gi tr trung bnh.
Bi 20: Vit chng trnh c mt k t vo t bn phm v in ra mn hnh m ASCII
ca n. Chng trnh ch kt thc khi n phm 0.
Bi 21: Hy vit chng trnh in ra bng n! vi n = 1..14
n
n!
1
1
2
2
3
6
4
24
5
120
6
720
7
...
Bi 22: Vit hm tnh an vi a l s thc, n l s nguyn dng nhp vo t bn phm
Bi 23: Vit hm tnh din tch ca cc hnh: hnh vung, hnh trn, hnh thang trong
cng mt chng trnh. Sau hi v chn mt phng n tnh din tch bng
cch chn trong bng chn lnh sau:
0. Ri khi chng trnh. Quay v DOS
1. Tnh din tch hnh vung
2. Tnh din tch hnh trn
3. Tnh din tch hnh thang
Hy n mt s chn:
Bi 24: Hy vit chng trnh tnh n! v tnh
k
C = n !/(k !*(n k ))
n
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
38
Bi ging: C s lp trnh
===================================================================
Bi ging: C s lp trnh
===================================================================
Bi ging: C s lp trnh
===================================================================
//.......
number[2][3] = 100; // Phn t cui cng ca mng
Nh vy vn l nguyn tc index, index ca hng th khng b hn hoc bng s
hng v index ca ct th b hn hoc bng s ct.
V th m khi p dng trong vng lp, ch n gin l lng 2 vng lp vo nhau.
VD:
M
#include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
int A[3][4];
int i, j;
// Nhp vo
for(i = 0 ; i < 3 ; i++)
{
for(j = 0 ; j < 4 ; j++)
{
printf("Nhap so o A[%d][%d] : ",i,j);
scanf("%d", &A[i][j]);
}
printf(\n);
}
// Xut ra
for(i = 0 ; i < 3 ; i++)
{
for(j = 0 ; j < 4 ; j++)
{
printf("%d
", A[i][j]);
}
printf("\n");
}
getch();
}
Mt s lu v mng:
- Index: Bt u t 0 v kt thc s phn t mng - 1.
- Trong C khi 1 mng c khai bo n s t ng ly 1 vng nh trong RAM v n s
khng t ng Reset vng nh . VD nh sau:
M
int number[5];
printf("%d", number[0]);
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
41
Bi ging: C s lp trnh
===================================================================
Bi ging: C s lp trnh
===================================================================
printf("%4d",A[m]);
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
43
Bi ging: C s lp trnh
===================================================================
void SapXep(void)
{
int i, j, index,tg;
for(i=0;i<N;i++)
{
min=A[i]; index=i;
for(j=i;j<N;j++)
{
if (A[j]<min)
{ //tim gia tri nho nhat trong mang con
min=A[j];
index=j;
//giu lai chi so cua phan tu duoc coi la min
}
}
tg=A[i]; A[i]=A[index]; A[index]=tg;
}
printf("\nMang A sap xep tang dan la: ");
HienThi(A,N);
}
void ChiaMang(void)
{
int x=0;y=0;
for(i=0;i<N;i++){
if(A[i]<0) {B[x]=A[i];x++;}
if(A[i]>0) {C[y]=A[i];y++;}
}
printf("\nMang B co %d phan tu la: ",x);
HienThi(B,x);
printf("\nMang C co %d phan tu la: ",y);
HienThi(C,y);
}
void Xoa(void)
{
int a,k;
printf("\nNhap gia tri muon xoa a= ");
scanf("%d",&a);
for(i=0;i<N;i++)
if(A[i]==a)
{
for(k=i+1;k<N;k++) A[k-1]=A[k];
N--;
}
printf("\nMang A sau khi xoa so %d la: \n",a);
HienThi(A,N);
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
44
Bi ging: C s lp trnh
===================================================================
}
void Chen(void){
int a,k;
printf("\nBan muon chen so a= ");
scanf("%d",&a);
for(i=0;i<N;i++)
{
if(A[i]>a){
for(k=N;k>i;k--) A[k]=A[k-1];
A[i]=a;
break;
}
}
if (i==N) A[N]=a;
N++;
printf("\nMang A sau khi chen so %d la: \n",a);
HienThi(A,N);
}
void TimSoChiaHetCho3(void)
{
int x=0;
for(i=0;i<N;i++)
if(A[i]%3==0) x++;
printf("\nmang A co %d so chia het cho 3",x);
}
void Sua(void) {
for(i=0;i<N;i++)
if(A[i]%3==0) A[i]=100;
printf("\nDay A da sua cac phan tu chia het cho 3 la: \n");
HienThi(A,N);
}
void main(void)
{
clrscr();
printf("Nhap so phan tu cua mang N= ");
scanf("%d",&N);
Nhap();
printf("\nMang A gom: ");
HienThi(A,N);
SapXep();
ChiaMang();
Xoa();
Chen();
TimSoChiaHetCho3();
Sua();
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
45
Bi ging: C s lp trnh
===================================================================
getch();
}
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
46
Bi ging: C s lp trnh
===================================================================
con_tro=&bien; //con_tro duoc gan gia tri la dia chi cua bien
printf("\nDia chi cua con tro la: %p", &con_tro); //dia chi con_tro
printf("\nGia tri cua con tro la: %p",con_tro);
// = 10
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
47
Bi ging: C s lp trnh
===================================================================
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
48
Bi ging: C s lp trnh
===================================================================
/*danh_sach_bien_nhan_struct*/
Ch : Danh sch bin nhn d liu kiu struct l tn cc bin c vit cch nhau bi
du ,
V d:
struct DiaChi
{ int SoNha;
char Pho[20];
char ThanhPho[20];
} OngA, BaB;
* Cch 2: Khai bo gin tip.
struct <Tn_struct>
{ kiu_d_liu tn_trng1;
kiu_d_liu tn_trng2;
...
kiu_d_liu tn_trngn;
}
struct <tn_struct> bien1, bien2, . bien n ;
/*danh_sach_bien_nhan_struct*/
V d:
struct DiaChi
{ int SoNha;
char Pho[20];
char ThanhPho[20];
}
struct DiaChi OngA, BaB;
* Cch 3: Khai bo struct lng nhau
V d:
struct Date
{unsigned char Ngay ;
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
49
Bi ging: C s lp trnh
===================================================================
Bi ging: C s lp trnh
===================================================================
{int SoNha;
char Pho[20];
char ThanhPho[20];
};
struct DiaChi NoiO[10];
for (i=0; i<3; i++)
{
printf("\n\nNhap dia chi noi o cho nguoi thu %d :",i+1);
printf("\n So nha: "); scanf("%d",&NoiO[i].SoNha);
printf("\n Pho: "); scanf("%s",&NoiO[i].Pho);
printf("\n Thanh pho: "); scanf("%s",&NoiO[i].ThanhPho);
}
clrscr();
for (i=0; i<3; i++)
{
printf("\n\nDia chi noi o cho nguoi thu %d :",i+1);
printf("\n So nha: %d",NoiO[i].SoNha);
printf("\n Pho: %s",NoiO[i].Pho);
printf("\n Thanh pho: %s",NoiO[i].ThanhPho);
}
getch();
}
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
51
Bi ging: C s lp trnh
===================================================================
/*2*/
}
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
52
Bi ging: C s lp trnh
===================================================================
2. Kiu typedef
T kho typedef dng t tn mi cho kiu d liu c hoc nh ngha tn ca
mt kiu d liu mi.
V d1:
typedef float So;
typedef So SoThuc;
V d 2:
typedef struct NhanSu{
char HT[30];
unsigned int GioiTinh;
} NS_Phong1;
NS_Phong1 st;
/*
struct NhanSu{
char HT[30];
unsigned int GioiTinh;
}
struct NhanSu st;
*/
* u im: Khi s dng Typedef, m chng trnh ngn gn, d c v d chuyn m
sang my khc.
V d:
Cch 1:
char st1[50], st2[50], st3[50], st4[50], st5[50]
Cch 2:
typedef char st[50];
st st1, st2, st3, st4, st5;
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
53
Bi ging: C s lp trnh
===================================================================
BT1: Vit chng trnh nhp thng tin Nhn s cho N nhn vin Cng ty THNH Duy
Phng (vi N nhp vo t bn phm)
Trong gm cc thng tin v:
- M nhn vin
- H tn nhn vin
- Nm sinh
- Qu qun
- Ngy k hp ng
- H s lng
1. m xem c bao nhiu nhn vin sinh nm 1990
2. Hin th danh sch nhng ngi c h s lng > 2.1
3. Hin th H tn v h s lng ca ngi c h s lng cao nht
4. Gi s nhng ngi trn 40 tui c hng thm ph cp sc kho l 200,000
ng/thng. Hy tnh tng s tin cng ty dng chi tr ph cp trong mt thng.
BT2:
Vit chng trnh to mt mng danh sch cc loi my in ca mt ca hng, thng tin
ca my in bao gm:
- Loi my
- Ni sn xut
- Thi gian bo hnh
- Gi tin
Vit hm nhp 1 dy cc loi my in c thng tin trn
In ra mn hnh danh sch cc loi my in
In ra mn hnh cc loi my in c thi gian bo hnh ln hn 3 nm v gi tin ln
hn 1000000
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
54
Bi ging: C s lp trnh
===================================================================
EOF (F)
Bi ging: C s lp trnh
===================================================================
V d:
+ M tp ghi:
tep=fopen(VD.TXT, w);
hoc
tep=fopen(C:\\TC\\VD.TXT, w);
+ M tp c:
tep=fopen(VD.TXT, r);
hoc
tep=fopen(C:\\TC\\VD.TXT, r);
Bng k hiu kiu x l tp:
i vi tp vn bn:
KIU
NGHA
X L
r
read only: M tp vn bn tn ti c
w
writing only: M tp vn bn mi ghi
a
M tp vn bn c v ghi thm d liu tip ni vo cui tp. Nu tp
cha c th my tnh s t ng to tp mi.
r+
M tp vn bn c v c, ghi d liu
w+
M tp vn bn mi ghi, c. Nu my tnh tn ti tp c tn trng
vi tn tp trong lnh th tp c s b hu, thay vo l tp mi.
a+
M tp vn bn c (nu cha c tp th my tnh s t to ra mt tp
mi) c hoc ghi thm d liu tip ni vo cui tp.
i vi tp nh phn:
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
56
Bi ging: C s lp trnh
===================================================================
KIU
X L
rb
wb
ab
r+b
w+b
a+b
NGHA
read only, binary: M tp vn bn tn ti c
writing only, binary: M tp vn bn mi ghi
M tp vn bn c v ghi thm d liu tip ni vo cui tp. Nu tp
cha c th my tnh s t ng to tp mi.
M tp vn bn c v c, ghi d liu
M tp vn bn mi ghi, c. Nu my tnh tn ti tp c tn trng
vi tn tp trong lnh th tp c s b hu, thay vo l tp mi.
M tp vn bn c (nu cha c tp th my tnh s t to ra mt tp
mi) c hoc ghi thm d liu tip ni vo cui tp.
* Bc 3: Ghi, c tp (x l d liu)
- Trong bc 3, ngi lp trnh c th s dng cc hm c sn hoc cc hm t xy
dng vit chng trnh.
* Bc 4: ng tp
- Mu lnh:
fclose(tep);
Khung chng trnh x l tp:
#include <stdio.h>
main()
{
FILE *tep;
tep=fopen(VD.dat, w);
if (tep = = NULL)
printf(\n Khong mo duoc tep);
else
{
/*Xu li du lieu */
.......
fclose(tep);
}
}
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
57
Bi ging: C s lp trnh
===================================================================
Cch 1:
#include<stdio.h>
main()
{ FILE *f1;
f1=fopen("SONGUYEN.DAT", "wb");
for (int i=1; i<=100; i++)
*/
fwrite(&i, sizeof(int), 1, f1);
fclose(f1);
}
Cch 2:
#include<stdio.h>
main()
{ char filename[21];
int i;
FILE *f1; /* Khai bao con tro cau truc tep*/
printf("Ten tep can tao: ");
scanf("%20s", filename);
f1=fopen(filename, "wb"); /*Mo tep voi che do ghi du lieu*/
/* Ghi 100 so nguyen co gia tri tu 1 den 100 */
for (i=1; i<=100; i++)
fwrite(&i, sizeof(int), 1, f1);
fclose(f1);
}
Ch : nu tp khng th m c, hm fopen s cho gi tr NULL.
2. c tp d liu nh phn
Khi c tp, ta dng lnh c phn t ca tp v kim tra xem phn t c phi l
EOF hay khng.
Cch 1: Dng lnh
if (ch=getc(fp)) !=EOF) ....
trong hm getc(fp) c 1 k t hay 1 byte ca tp c con tr l fp v if
(ch=getc(fp)) !=EOF) kim tra xem gi tr c phi l EOF hay khng.
Cch 2: Dng lnh while
while ((ch=getc(fp))....
Khi my tnh gp lnh ny, my tnh s c ht cc phn t ca tp cho n khi gp k
hiu ht tp.
V d 32: c tp cc s nguyn
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
58
Bi ging: C s lp trnh
===================================================================
#include <stdio.h>
#include <io.h>
#include <conio.h>
main()
{ int i;
FILE *f1;
f1=fopen("SONGUYEN.DAT","rb"); /* Mo tep nhi phan de doc*/
while (fread(&i, sizeof(int), 1, f1), !feof(f1))
printf("%4d",i);
fclose(f1);
getch();
}
* Mu lnh c gi tr v kim tra tp:
Mu 1:
do
BiuThc1;
if (BiuThc2) <CngVic>
while (BiuThc2);
Mu 2:
do
{ fread(&i, sizeof(int), 1, f1);
if (!feof(f1))
printf(\n%d,i);
}
while (!feof(f1));
/* c trc */
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
59
Bi ging: C s lp trnh
===================================================================
CC THUT TON SP XP
- Selection Sort - Sp xp kiu chn
- Insertion Sort - Sp xp kiu chn
- Bubble Sort - Sp xp ni bt
1.Selection Sort - Sp xp kiu chn
Gii thut:
y l phng php sp xp n gin nht c tin hnh nh sau:
u tin chn phn t nh nht trong n phn t t danh sch X[1]X[n] v hon v n
vi phn t X[1].
Chn phn t c kha nh nht trong n-1phn t t danh sch X[2] X[n] v hon v
n vi X[2].
Tng qut bc th i, chn phn t c kho nh nht trong n-i+1 phn t t danh sch
X(i) X(n) v hon v n vi X(i).
Sau n-1 bc ny th mng c sp xp.
=>Phng php ny c gi l phng php chn bi v n lp li qu trnh chn
phn t nh nht trong s cc phn t cha c sp.
2. Insertion Sort - Sp xp kiu chn
Vn :
Sp th t cc phn t ca mt danh sch:
X1, X2,, Xn
Sao cho (theo mt trng kha no ) chng c th t tng dn:
X1 X2 Xn
Hoc c th t gim dn:
X1 X2 Xn
Gii thut :
Bc 1, xen phn t X[2] vo danh sch c th t X[1] sao cho X[1], X[2] l mt
danh sch c th t.
Bc 2, xen phn t X[3] vo danh sch c th t X[1], X[2] sao cho X[1], X[2],
X[3] l mt danh sch c th t.
Tng qut, bc i, xen phn t X[i+1] vo danh sch c th t
X[1],X[2],..X[i]
sao cho X[1], X[2],.. X[i+1] l mt danh sch c th t.
Phn t ang xt X[j] s c xen vo v tr thch hp trong danh sch cc phn t
c sp trc X[1],X[2],..X[j-1] bng cch so snh kho ca X[j] vi kho ca X[j1] ng ngay trc n. Nu kho ca X[j] nh hn kho ca X[j-1] th hon i X[j-1]
v X[j] cho nhau v tip tc so snh kho ca X[j-1] (lc ny X[j-1] cha ni dung ca
X[j]) vi kho ca X[j-2] ng ngay trc n...
3. Bubble Sort - Sp xp ni bt
Vn :
Sp th t cc phn t ca mt danh sch:
X1, X2,, Xn
Sao cho (theo mt trng kha no ) chng c th t tng dn:
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
60
Bi ging: C s lp trnh
===================================================================
X1 X2 Xn
Hoc c th t gim dn:
X1 X2 Xn
Sp xp kiu Ni bt (bubble sort) l mt gii thut sp xp n gin. N lp i lp li
qu trnh duyt danh sch cn sp xp, so snh hai phn t v i v tr nu chng ng
sai v tr.
Gii thut nh sau:
1.So snh 2 phn t cnh nhau. Nu phn t trc ln hn phn t sau th i v tr
(swap) ca chng cho nhau.
2.Thc hin vic vi mi cp phn t., t cp u tin ti cp cui cng. Ti thi
im ny, phn t cui cng s l phn t c gi tr ln nht.
3.Lp li cc bc trn vi cc phn t tr phn t cui cng. Cho ti khi khng cn
cp no cn so snh.
===================================================================
Ging vin: Hong Th Vn Anh Khoa: Tin hc kinh t
61