際際滷

際際滷Share a Scribd company logo
1
畛畛
畉め困
2
NN畛畛ii dungdung
畛畛nh nghnh ngh挑挑a Kia Ki畛畛u du d畛畛 lili畛畛uu
CC叩叩cc kiki畛畛uu dd畛畛 lili畛畛uu c董c董 bb畉a今nn
CC叩叩c kic ki畛畛u du d畛畛 lili畛畛u cu c坦坦 cc畉メ坤u tru tr炭炭cc
MM畛畛t st s畛畛 kiki畛畛u du d畛畛 lili畛畛u cu c坦坦 cc畉メ坤u tru tr炭炭c c董 bc c董 b畉a今nn
MM畉a今ngng
ChuChu畛畛ii k箪k箪 tt畛堰傘
StructStruct
3
畛畛nh nghnh ngh挑挑a kia ki畛畛u du d畛畛 lili畛畛uu
KiKi畛畛u du d畛畛 lili畛畛uu TT 動動畛a撮c xc x叩叩c c 畛畛nh bnh b畛畛i mi m畛畛t bt b畛畛 <<VV,,OO> v> v畛畛i:i:
VV: t: t畉畉p cp c叩叩c gic gi叩叩 trtr畛畛 hh畛a撮p lp l畛畛 mm mm畛畛t t 畛畛i t動i t動畛a撮ng king ki畛畛uu TT cc坦坦
thth畛畛 l動u trl動u tr畛畛..
OO: t: t畉畉p cp c叩叩c thao tc thao t叩叩c xc x畛畛 l箪 cl箪 c坦坦 thth畛畛 thi hthi hnh tr棚n nh tr棚n 畛畛ii
t動t動畛a撮ng king ki畛畛uu T.T.
VV鱈鱈 dd畛メ札:: kiki畛畛u du d畛畛 lili畛畛u su s畛畛 nguy棚n= <Vnguy棚n= <Vii, O, Oii> v> v畛畛ii
VVii={={--32768.. 32767}; O32768.. 32767}; Oii={+,={+, --, *, *, /, /, %, %}.}.
Nh動 vNh動 v畉畉y, muy, mu畛畛n sn s畛畛 dd畛メ札ng mng m畛畛t KDL ct KDL c畉п婚n nn n畉畉m vm v畛畛ng cng c畉a今 nn畛畛ii
dung DL 動董c phdung DL 動董c ph辿辿p l動u trp l動u tr畛畛 vv cc叩叩c xc x畛畛 l箪 tl箪 t叩叩c c 畛畛ng tr棚n nng tr棚n n坦坦..
CC叩叩c thuc thu畛畛c tc t鱈鱈nh 1 KDL gnh 1 KDL g畛畛m(T棚n KDL, Mim(T棚n KDL, Mi畛畛n gin gi叩叩 trtr畛畛, K, K鱈鱈chch
th動th動畛畛c l動u trc l動u tr畛畛, t, t畉畉p cp c叩叩c toc to叩叩n tn t畛畛 tt叩叩c c 畛畛ng l棚n KDL).ng l棚n KDL).
4
畛畛 畛畛 畛畛 c董c董 畛畛
5
CC叩叩c kic ki畛畛u du d畛畛 lili畛畛u c董 su c董 s畛畛
KiKi畛畛u cu c坦坦 thth畛畛 tt畛堰傘 rr畛畛i ri r畉=此cc: S: S畛畛 nguy棚n.nguy棚n.
KiKi畛畛u cu c坦坦 thth畛畛 tt畛堰傘 kh担ng rkh担ng r畛畛i ri r畉=此cc: S: S畛畛
thth畛堰傘c.c.
6
CC叩叩cc kiki畛畛uu ss畛畛 nguy棚nnguy棚n cc畛п薩aa CC
CC hh畛畛 trtr畛a撮 khkh叩叩 nhinhi畛畛uu kiki畛畛uu ss畛畛 nguy棚nnguy棚n
CC叩叩cc gigi叩叩 trtr畛畛 ll畛畛nn nhnh畉メ坤tt vv nhnh畛迋 nhnh畉メ坤tt 動動畛a撮cc 畛畛nhnh nghngh挑挑aa trongtrong th動th動
vivi畛畛nn limits.hlimits.h
Ki畛u 畛nh d畉ng k鱈ch th動畛c nh畛 nh畉t l畛n nh畉t
char %c 1 CHAR_MIN CHAR_MAX
unsigned char %c 1 0 UCHAR_MAX
short [int] %hi 2 SHRT_MIN SHRT_MAX
unsigned short%hu 2 0 USHRT_MAX
int %i 2 or 4 INT_MIN INT_MAX
unsigned int %u 2 or 4 0 UINT_MAX
long [int] %li 4 LONG_MIN LONG_MAX
unsigned long %lu 4 0 ULONG_MAX
7
VV鱈鱈 dd畛メ札 vv畛畛 ss畛畛 nguy棚nnguy棚n
#include <stdio.h>
#include <limits.h>
int main()
{
unsigned long big = ULONG_MAX;
printf("minimum int = %i, ", INT_MIN);
printf("maximum int = %in", INT_MAX);
printf("maximum unsigned = %un", UINT_MAX);
printf("maximum long int = %lin", LONG_MAX);
printf("maximum unsigned long = %lun", big);
return 0;
} minimum int = -32768, maximum int = 32767
maximum unsigned = 65535
maximum long int = 2147483647
maximum unsigned long = 4294967295
8
#include <stdio.h>
#include <limits.h>
int main()
{
char lower_a = 'a';
char lower_m = 'm';
printf("minimum char = %i, ", CHAR_MIN);
printf("maximum char = %in", CHAR_MAX);
printf(Sau '%c' la '%c'n", lower_a, lower_a + 1);
printf(Ky tu in hoa '%c'n", lower_m - 'a' + 'A');
return 0;
} minimum char = -128, maximum char = 127
Sau 'a' la 'b'
Ky tu in hoa 'M'
In ra m達 ASCII c畛a k箪 t畛
VV鱈鱈 dd畛メ札 kiki畛畛u k箪 tu k箪 t畛堰傘
Trong NNLT C,Trong NNLT C, k箪 tk箪 t畛堰傘
chch鱈鱈nh lnh l ss畛畛 nguy棚nnguy棚n
9
SS畛畛 nguy棚nnguy棚n trongtrong cc叩叩cc c董c董 ss畛畛 khkh叩叩cc
CC叩叩cc hh畛畛 c董c董 ss畛畛 cc坦坦 thth畛畛 thth畛堰傘cc hihi畛畛nn 動動畛a撮cc:: c董c董 ss畛畛 8 (octal),8 (octal), c董c董 ss畛畛
10 (decimal),10 (decimal), c董c董 ss畛畛 16 (hexadecimal)16 (hexadecimal)
S畛 0: s畛 octal
0x: s畛
hexadecimal
#include <stdio.h>
int main(void)
{
int dec = 20, oct = 020, hex = 0x20;
printf("dec=%d, oct=%d, hex=%dn", dec, oct, hex);
printf("dec=%d, oct=%o, hex=%xn", dec, oct, hex);
return 0;
}
dec=20, oct=16, hex=32
dec=20, oct=20, hex=20
10
SS畛畛 thth畛堰傘cc
CC hh畛畛 trtr畛a撮 nhinhi畛畛uu kiki畛畛uu ss畛畛 thth畛堰傘cc l動ul動u trtr畛畛 dd畉メ坤uu chch畉メ坤mm 畛畛ngng..
CC叩叩cc gigi叩叩 trtr畛畛 ll畛畛nn nhnh畉メ坤tt vv nhnh畛迋 nhnh畉メ坤tt 動動畛a撮cc 畛畛nhnh nghngh挑挑aa trongtrong th動th動 vivi畛畛nn
float.hfloat.h
Ki畛u 畛nh d畉ng k鱈ch th動畛c nh畛 nh畉t l畛n nh畉t
floatfloat %f %e %g 4 FLT_MIN FLT_MAX
doubledouble %lf %le %lg 8 DBL_MIN DBL_MAX
long doublelong double %Lf %Le %Lg 10 LDBL_MIN LDBL_MAX
11
VV鱈鱈 dd畛メ札 ss畛畛 thth畛堰傘cc::
#include <stdio.h>
#include <float.h>
int main(void)
{
double f = 3.1416, g = 1.2e-5, h = 5000000000.0;
printf("f=%lftg=%lfth=%lfn", f, g, h);
printf("f=%letg=%leth=%len", f, g, h);
printf("f=%lgtg=%lgth=%lgn", f, g, h);
printf("f=%7.2lftg=%.2leth=%.4lgn", f, g, h);
return 0;
} f=3.141600 g=0.000012 h=5000000000.000000
f=3.141600e+00 g=1.200000e-05 h=5.000000e+09
f=3.1416 g=1.2e-05 h=5e+09
f= 3.14 g=1.20e-05 h=5e+09
12
畛畛 畛畛 畛畛 畉メ坤
13
畛畛nh nghnh ngh挑挑a kia ki畛畛u du d畛畛 lili畛畛u cu c坦坦 cc畉メ坤uu
trtr炭炭cc
KiKi畛畛u du d畛畛 lili畛畛u 動u 動畛a撮c x但y dc x但y d畛堰傘ng mng m畛畛i di d畛堰傘a tr棚na tr棚n
vivi畛畛c tc t畛畛 chch畛畛c li棚n kc li棚n k畉吹鎖t ct c叩叩c thc thnh phnh ph畉п婚n dn d畛畛
lili畛畛u cu c坦坦 kiki畛畛u du d畛畛 lili畛畛u 達 動u 達 動畛a撮c c 畛畛nh nghnh ngh挑挑a.a.
NhNh畛畛ng KDL 動ng KDL 動畛a撮c x但y dc x但y d畛堰傘ng nh動 thng nh動 th畉吹鎖 gg畛畛ii
ll KDL cKDL c坦坦 cc畉メ坤u tru tr炭炭c.c.
14
MM畛畛t st s畛畛 kiki畛畛u du d畛畛 lili畛畛u cu c畉メ坤u tru tr炭炭cc
KiKi畛畛u mu m畉a今ngng
KiKi畛畛u chuu chu畛畛i k箪 ti k箪 t畛堰傘
KiKi畛畛u cu c畉メ坤u tru tr炭炭c mc m畉畉u tinu tin
15
畉a今
16
MM畉a今ngng  ArrayArray
MM畛畛t st s畛畛 tt鱈鱈nh chnh ch畉メ坤tt
Khai bKhai b叩叩o mo m畉a今ng trong Cng trong C
Truy xuTruy xu畉メ坤t ct c叩叩c thc thnh phnh ph畉п婚nn
TruyTruy畛畛n tham sn tham s畛畛 kiki畛畛u mu m畉a今ng cho hng cho hmm
MM畛畛t st s畛畛 thao tthao t叩叩c c董 sc c董 s畛畛
MM畉a今ng nhing nhi畛畛u chiu chi畛畛uu
17
MM畉a今ngng  MM畛畛t st s畛畛 tt鱈鱈nh chnh ch畉メ坤tt
MM畉a今ng lng l mm畛畛t kit ki畛畛u du d畛畛 lili畛畛u cu c坦坦 cc畉メ坤u tru tr炭炭c do ng動c do ng動畛畛i li l畉畉pp
trtr狸狸nh nh 畛畛nh nghnh ngh挑挑aa
DD湛湛ng bing bi畛畛u diu di畛畛n cn c叩叩c c 畛畛i t動i t動畛a撮ng dng d畛畛 lili畛畛uu 畛畛 dd畉=此ng mng m畛畛tt
d達y cd達y c叩叩c thc thnh phnh ph畉п婚n cn c坦坦 cc湛湛ng king ki畛畛u vu v畛畛i nhaui nhau  kiki畛畛u c董u c董
ss畛畛
NNLT C lu担n chNNLT C lu担n ch畛畛 畛畛nh mnh m畛畛t kht kh畛畛i nhi nh畛畛 li棚n tli棚n t畛メ札c choc cho
mm畛畛t bit bi畉吹鎖n kin ki畛畛u mu m畉a今ngng
KK鱈鱈ch th動ch th動畛畛c cc c畛п薩a ma m畉a今ng 動ng 動畛a撮c xc x叩叩c c 畛畛nh ngay khi khainh ngay khi khai
bb叩叩o vo v kh担ng bao gikh担ng bao gi畛畛 thay thay 畛畛ii
18
MM畉a今ngng  Khai bKhai b叩叩o trong Co trong C
typedeftypedef kiki畛畛uc董suc董s畛畛 T棚nkiT棚nki畛畛uu[[SS畛畛ththnhphnhph畉п婚nn]];;
kiki畛畛u cu c畛п薩a ma m畛畛i thi thnh phnh ph畉п婚nn hh畉堰艮ng sng s畛畛, s, s畛畛 ththnh phnh ph畉п婚nn
tt畛畛i a ci a c畛п薩a ma m畉a今ngng
do ldo l畉畉p trp tr狸狸nh vi棚n nh vi棚n 畉戟嵯t t棚nt t棚n
typedeftypedef intint AINT[AINT[100100];];
////AINTAINT ll kiki畛畛u mu m畉a今ng bing bi畛畛u diu di畛畛n d達y gn d達y g畛畛m 100 thm 100 thnh phnh ph畉п婚n intn int
AINTAINT a;a; //a: bi//a: bi畉吹鎖n kin ki畛畛u AINTu AINT
19
MM畉a今ngng  VV鱈鱈 dd畛メ札
#define SIZE 10
int a[5]; // a d達y g畛m 5 s畛 nguy棚n
long int big[100]; // big: chi畉m 400 bytes!
double d[100]; // d: chi畉m 800 bytes!
long double v[SIZE];// v:10 long doubles
20
MM畉a今ngng  VV鱈鱈 dd畛メ札
int a[5] = { 10, 20, 30, 40, 50};
double d[100] = { 1.5, 2.7};
short primes[] = { 1, 2, 3, 5, 7, 11, 13};
long b[50] = { 0 };
int i = 7;
const int c = 5;
int a[i];
double d[c];
short primes[];
kh畛i tr畛 cho 5
thnh ph畉n
2 thnh ph畉n
畉u ti棚n 動畛c
kh畛i tr畛, ph畉n
c嘆n l畉i: 0
compiler x叩c 畛nh
k鱈ch th動畛c g畛m 7
thnh ph畉n c叩ch nhanh nh畉t 畛
kh畛i tr畛 t畉t c畉 c叩c
thnh ph畉n b畉ng 0
21
CC叩叩c thc thnh phnh ph畉п婚n cn c畛п薩a ma m畉a今ng 動ng 動畛a撮c truy xuc truy xu畉メ坤t th担ng qua cht th担ng qua ch畛畛 ss畛畛
cc畛п薩a cha ch炭炭ngng 0..size0..size--11
Thao tThao t叩叩c truy xuc truy xu畉メ坤t kh担ng kit kh担ng ki畛畛m tra gim tra gi畛畛i hi h畉=此n cn c畛п薩a cha ch畛畛 ss畛畛
int main()
{
int a[6];
int i = 7;
a[0] = 59;
a[5] = -10;
a[i/2] = 2;
a[6] = 0;
a[-1] = 5;
return 0;
}
0
a
1
2
3
4
5
MM畉a今ngng  Truy xuTruy xu畉メ坤t ct c叩叩c phc ph畉п婚n tn t畛畛
22
TruyTruy畛畛n tham sn tham s畛畛 MM畉a今ng cho hng cho hmm
Tham sTham s畛畛 kiki畛畛u mu m畉a今ng 動ng 動畛a撮c truyc truy畛畛n cho hn cho hm chm ch鱈鱈nh lnh l 畛畛a cha ch畛畛
cc畛п薩a pha ph畉п婚n tn t畛畛 畉п婚u ti棚n tr棚n mu ti棚n tr棚n m畉a今ngng
SS畛畛 ththnh phnh ph畉п婚n trong tham sn trong tham s畛畛 mm畉a今ng cng c坦坦 thth畛畛 畛畛 trtr畛畛ng.ng.
SS畛畛 ththnh phnh ph畉п婚n thn th畛堰傘c sc s畛堰傘 動動畛a撮c sc s畛畛 dd畛メ札ng phng ph畉a今i truyi truy畛畛n qua mn qua m畛畛tt
tham stham s畛畛 khkh叩叩c (vd: size)c (vd: size)
int add_elements(int a[], int size)
{
int add_elements(int *p, int size)
{
23
VV鱈鱈 dd畛メ札
#include <stdio.h>
void sum(long [], int);
int main(void) {
long primes[6] = { 1, 2,
3, 5, 7, 11 };
sum(primes, 6);
printf("%lin", primes[0]);
return 0;
}
void sum(long a[], int sz) {
int i;
long total = 0;
for(i = 0; i < sz; i++)
total += a[i];
a[0] = total;
}
1
2
3
5
7
11
primes
a
sz 6
t畛ng 動畛c l動u vo
ph畉n t畛 畉u ti棚n
d湛ng 畛 ki畛m tra
gi畛i h畉n ch畛 s畛
24
MM畛畛t st s畛畛 thao tthao t叩叩c c董 sc c董 s畛畛
NhNh畉畉pp
XuXu畉メ坤tt
Th棚m mTh棚m m畛畛t tht thnh phnh ph畉п婚n dn d畛畛 lili畛畛uu
LoLo畉=此i bi b畛迋 mm畛畛t tht thnh phnh ph畉п婚n dn d畛畛 lili畛畛uu
TT狸狸m kim ki畉吹鎖mm
SS畉畉p xp x畉吹鎖pp
25
MM畉a今ngng  NhNh畉畉p dp d畛畛 lili畛畛uu
void ReadData(int a[], int size)
{
int i;
for(i = 0; i < size; i++)
{
printf(Nhap thanh phan %d: , i);
scanf(%d, &a[i]);
}
}
duy畛t qua t畉t c畉 c叩c
ph畉n t畛
nh畉p d畛 li畛u cho a[i]
26
MM畉a今ngng  XuXu畉メ坤t dt d畛畛 lili畛畛u ra mu ra mn hn h狸狸nhnh
void WriteData(int a[], int size)
{
int i;
for(i = 0; i < size; i++)
printf(%d , a[i]);
printf(n);
}
27
MM畉a今ngng  NhNh畉畉p xup xu畉メ坤t dt d畛畛 lili畛畛uu
#include <stdio.h>
void ReadData(int [], int );
void WriteData(int [], int );
void main()
{
int a[100], n;
clrscr();
printf(Nhap so thanh phan cua day: );
scanf(%d, &n);
printf(Nhap cac thanh phan cua day: );
ReadData(a, n);
printf(Day vua nhap: n);
WriteData(a, n);
}
28
MM畉a今ngng  TT狸狸m vm v畛畛 trtr鱈鱈 X trong d達yX trong d達y
//input: d達y (a, N), X
//output: V畛 tr鱈 c畛a X, -1 n畉u kh担ng c坦
intint Search(int a[], int N, int X)Search(int a[], int N, int X)
{{
for (int i = 0; i < N; i ++)for (int i = 0; i < N; i ++)
if (a[i] == X)if (a[i] == X)
return i;return i;
returnreturn --1;1;
}}
BBi toi to叩叩n: Tn: T狸狸m vm v畛畛 trtr鱈鱈 X tr棚n mX tr棚n m畉a今ng a ang cng a ang c坦坦 N thN thnh phnh ph畉п婚n.n.
GiGi畉a今i phi ph叩叩p: Tp: T狸狸m tum tu畉п婚n tn t畛堰傘
29
MM畉a今ngng  Th棚m mTh棚m m畛畛t tht thnh phnh ph畉п婚n dn d畛畛 lili畛畛uu
BBi toi to叩叩n: cn: c畉п婚n th棚m thn th棚m thnh phnh ph畉п婚n dn d畛畛 lili畛畛u X vu X vo mo m畉a今ng ang a
ang cang c坦坦 N thN thnh phnh ph畉п婚n.n.
Hai tr動Hai tr動畛畛ng hng h畛a撮p cp c畉п婚n xem xn xem x辿辿t:t:
D達y ch動a cD達y ch動a c坦坦 thth畛畛 tt畛堰傘
Th棚m X vTh棚m X vo cuo cu畛畛i a.i a.
D達y 達 cD達y 達 c坦坦 thth畛畛 tt畛堰傘
TT狸狸m vm v畛畛 trtr鱈鱈 thth鱈鱈ch hch h畛a撮p, chp, ch竪竪n X vn X voo
30
MM畉a今ngng  Th棚m X vTh棚m X vo cuo cu畛畛i d達yi d達y
Th棚m 15 vo (a, 7)
N = 7N = 8
a[N] = X;
N ++;X
31
MM畉a今ngng  ChCh竪竪n X vn X vo d達y tng do d達y tng d畉п婚nn
Ch竪n 6 vo (a, 7)
N = 7N = 8
X
V畛 tr鱈 th鱈ch h畛p: 4
pos
32
MM畉a今ngng  ChCh竪竪n X vn X vo d達y tng do d達y tng d畉п婚nn
//input: d達y (a, N) tng d畉n, X
//output: d達y (a, N) 達 c坦 X 畛 炭ng v畛 tr鱈
voidvoid Insert(int a[], int &N, int X)Insert(int a[], int &N, int X)
{{
int pos;int pos;
for (pos = N; (pos>0)&&(a[posfor (pos = N; (pos>0)&&(a[pos--1]>X); pos1]>X); pos ----))
a[pos] = a[posa[pos] = a[pos  1];1];
a[pos] = X;a[pos] = X;
N ++;N ++;
}}
33
MM畉a今ngng  LoLo畉=此i bi b畛迋 mm畛畛t tht thnh phnh ph畉п婚n dn d畛畛 lili畛畛uu
BBi toi to叩叩n: lon: lo畉=此i bi b畛迋 ththnh phnh ph畉п婚n dn d畛畛 lili畛畛u X ra khu X ra kh畛迋ii
mm畉a今ng a ang cng a ang c坦坦 N thN thnh phnh ph畉п婚n.n.
H動H動畛畛ng ging gi畉a今i quyi quy畉吹鎖t: xt: x叩叩c c 畛畛nh vnh v畛畛 trtr鱈鱈 cc畛п薩a X, na X, n畉吹鎖u tu t狸狸mm
thth畉メ坤y thy th狸狸 dd畛畛n cn c叩叩c phc ph畉п婚n tn t畛畛 畛畛 phph鱈鱈a sau l棚n a sau l棚n 畛畛 ll畉メ坤p vp voo
chch畛畛 trtr畛畛ng. 2ng. 2 tr動tr動畛畛ng hng h畛a撮p:p:
D達y kh担ng cD達y kh担ng c坦坦 thth畛畛 tt畛堰傘: l: l畉メ坤p php ph畉п婚n tn t畛畛 cucu畛畛i l棚ni l棚n
D達y 達 thD達y 達 th畛畛 tt畛堰傘: d: d畛畛i ti t畉メ坤t ct c畉a今 cc叩叩c phc ph畉п婚n tn t畛畛 畛畛 sau vsau v鱈鱈
trtr鱈鱈 cc畛п薩a X l棚n tr動a X l棚n tr動畛畛c 1 vc 1 v畛畛 trtr鱈鱈..
34
N = 8
MM畉a今ngng  LoLo畉=此i bi b畛迋 X ra khX ra kh畛迋i d達y tngi d達y tng
Lo畉i 5 kh畛i (a, 8)
N = 7
pos
T狸m v畛 tr鱈 c畛a 5
X
D畛n c叩c v畛 tr鱈 4, 5, 6, 7 l棚n
35
MM畉a今ngng  LoLo畉=此i bi b畛迋 X ra khX ra kh畛迋i d達y tngi d達y tng
//input: d達y (a, N), X
//output: d達y (a, N) 達 lo畉i b畛 1 thnh ph畉n X
intint Remove(int a[], int &N, int X)Remove(int a[], int &N, int X)
{{
int pos = Search(a, N, X);int pos = Search(a, N, X);
if (pos ==if (pos == --1)1) //kh担ng c//kh担ng c坦坦 X trong d達yX trong d達y
return 0;return 0;
NN ----;;
for (; (pos < N); pos ++)for (; (pos < N); pos ++)
a[pos] = a[pos + 1];a[pos] = a[pos + 1];
return 1;return 1;
}}
36
MM畉a今ngng  SS畉畉p xp x畉吹鎖pp
BBi toi to叩叩n: Sn: S畉畉p xp x畉吹鎖p cp c叩叩c thc thnh phnh ph畉п婚n cn c畛п薩a (a (a,a, N)N) 畛畛 thuthu
動動畛a撮c d達y tng dc d達y tng d畉п婚nn
GiGi畉a今i phi ph叩叩p: Tp: T狸狸m cm c叩叩ch trich tri畛畛t ti棚u tt ti棚u t畉メ坤t ct c畉a今 cc叩叩c nghc ngh畛畛ch thch th畉吹鎖
cc畛п薩a d達ya d達y
ThuThu畉畉t tot to叩叩n sn s畉畉p xp x畉吹鎖pp 畛畛i chi ch畛畛 trtr畛堰傘c tic ti畉吹鎖pp
37
MM畉a今ngng  SS畉畉p xp x畉吹鎖p p 畛畛i chi ch畛畛
i
j
38
i
j
MM畉a今ngng  SS畉畉p xp x畉吹鎖p p 畛畛i chi ch畛畛
39
i
j
MM畉a今ngng  SS畉畉p xp x畉吹鎖p p 畛畛i chi ch畛畛
40
i
j
MM畉a今ngng  SS畉畉p xp x畉吹鎖p p 畛畛i chi ch畛畛
41
MM畉a今ngng  SS畉畉p xp x畉吹鎖p p 畛畛i chi ch畛畛
42
MM畉a今ngng  SS畉畉p xp x畉吹鎖p p 畛畛i chi ch畛畛
void Swap(int &x, int &y)
{
int t = x; x = y; y = t;
}
void InterchangeSort(int a[], int N)
{
int i, j;
for (i = 0 ; i<N-1 ; i++)
for (j =i+1; j < N ; j++)
if(a[j]< a[i])
Swap(a[i],a[j]);
}
43
MM畉a今ng nhing nhi畛畛u chiu chi畛畛uu
C kh担ng hC kh担ng h畛畛 trtr畛a撮 mm畉a今ng nhing nhi畛畛u chiu chi畛畛u. Tuy nhi棚n cu. Tuy nhi棚n c坦坦 thth畛畛 titi畉吹鎖pp
cc畉畉n theo h動n theo h動畛畛ng: Mng: M畉a今ng 2 ching 2 chi畛畛u lu l mm畉a今ng mng m畛畛t chit chi畛畛u mu m mm畛畛ii
ththnh phnh ph畉п婚n cn c畛п薩a na n坦坦 ll mm畛畛t mt m畉a今ng mng m畛畛t chit chi畛畛u.u.
float rainfall[12][365];
rainfall l m畉ng g畛m 12
thnh ph畉n, m畛i thnh ph畉n l
m畉ng g畛m 365 s畛 float
short exam_marks[500][10];
exam_marks l m畉ng g畛m
500 thnh ph畉n, m畛i thnh
ph畉n l m畉ng 10 s畛 short
const int brighton = 7;
int day_of_year = 238;
rainfall[brighton][day_of_year] = 0.0F;
44
TT坦坦m l動m l動畛a撮cc
Khai bKhai b叩叩o mo m畉a今ng trong Cng trong C
Truy xuTruy xu畉メ坤t ct c叩叩c phc ph畉п婚n tn t畛畛
TruyTruy畛畛n tham sn tham s畛畛 kiki畛畛u mu m畉a今ng cho hng cho hmm
CC叩叩c thao tc thao t叩叩c: nhc: nh畉畉p, xup, xu畉メ坤t, th棚m/ht, th棚m/h畛п薩y 1 thy 1 thnh phnh ph畉п婚n,n,
tt狸狸m kim ki畉吹鎖m, sm, s畉畉p xp x畉吹鎖pp
MM畉a今ng nhing nhi畛畛u chiu chi畛畛uu
45
畛畛 畛堰傘
46
ChuChu畛畛i k箪 ti k箪 t畛堰傘  StringsStrings
MM畛畛t st s畛畛 qui tqui t畉畉cc
NhNh畉畉p / xup / xu畉メ坤tt
Con trCon tr畛迋 vv chuchu畛畛i k箪 ti k箪 t畛堰傘
MM畛畛t st s畛畛 hhm th動 vim th動 vi畛畛nn
47
ChuChu畛畛i k箪 ti k箪 t畛堰傘 -- MM畛畛t st s畛畛 qui tqui t畉畉cc
ChuChu畛畛i k箪 ti k箪 t畛堰傘 ll mm畉a今ng mng m畛畛t chit chi畛畛u cu c坦坦 mm畛畛i thi thnh phnh ph畉п婚n ln l mm畛畛tt
ss畛畛 nguy棚n 動nguy棚n 動畛a撮c kc k畉吹鎖t tht th炭炭c bc b畛畛i si s畛畛 0.0.
K箪 tK箪 t畛堰傘 kk畉吹鎖t tht th炭炭c (0)c (0) 畛畛 cucu畛畛i chui chu畛畛i k箪 ti k箪 t畛堰傘 th動th動畛畛ng 動ng 動畛a撮c gc g畛畛i li l
k箪 tk箪 t畛堰傘 null (kh担ng ginull (kh担ng gi畛畛ng con trng con tr畛迋 NULL). CNULL). C坦坦 thth畛畛 ghi lghi l 00
hoho畉戟嵯cc 00 (kh担ng ph(kh担ng ph畉a今i chi ch畛畛 oo).).
動動畛a撮c khai bc khai b叩叩o vo v truytruy畛畛n tham sn tham s畛畛 nh動 mnh動 m畉a今ng mng m畛畛t chit chi畛畛u.u.
char s[100];
unsigned char s1[1000];
48
char first_name[5] = { 'J', 'o', 'h', 'n', '0' };
char last_name[6] = "Minor";
char other[] = "Tony Blurt";
char characters[7] = "No null";
first_name
last_name
other
characters
ChuChu畛畛i k箪 ti k箪 t畛堰傘 -- VV鱈鱈 dd畛メ札
0'n''h''o''J'
0'r''o''n''i''M'
32 'B' 'l' 'u' 'r' 0't''y'n'o''T'
'l' 'l' 0'u''n'32'o''N'
49
CC坦坦 thth畛畛 nhnh畉畉p / xup / xu畉メ坤t chut chu畛畛i k箪 ti k箪 t畛堰傘 s bs b畉堰艮ng cng c叩叩ch nhch nh畉畉p tp t畛畛ng k箪ng k箪
tt畛堰傘 cc畛п薩a sa s
HoHo畉戟嵯c sc s畛畛 dd畛メ札ng cng c叩叩c hc hmm scanfscanf vv printfprintf vv畛畛i k箪 ti k箪 t畛堰傘 畛畛nhnh
dd畉=此ngng %%ss
NhNh畉畉p chup chu畛畛i ci c坦坦 khokho畉a今ng trng tr畉畉ng dng d湛湛ng hng hm getsm gets
char name[100];
printf("Nhap mot chuoi ky tu %s: ");
gets(name);
ChuChu畛畛i k箪 ti k箪 t畛堰傘 -- NhNh畉畉p / xup / xu畉メ坤tt
char other[] = "Tony Blurt";
printf("%sn", other);
50
L動u 箪L動u 箪: k: k畉吹鎖t tht th炭炭c chuc chu畛畛ii
#include <stdio.h>
int main()
{
char other[] = "Tony Blurt";
printf("%sn", other);
other[4] = '0';
printf("%sn", other);
return 0;
}
Tony Blurt
Tony
other
"Blurt" s畉 kh担ng
動畛c in ra
32 'B' 'l' 'u' 'r' 0't''y'n'o''T'
51
ChuChu畛畛i k箪 ti k箪 t畛堰傘  MM畛畛t st s畛畛 hhm th動 vim th動 vi畛畛nn
LL畉メ坤y y 畛畛 ddi chui chu畛畛ii
l =l = strlenstrlen(s);(s);
畛畛i toi ton bn b畛畛 cc叩叩c k箪 tc k箪 t畛堰傘 cc畛п薩a chua chu畛畛i thi thnh IN HOAnh IN HOA
struprstrupr(s);(s);
畛畛i toi ton bn b畛畛 cc叩叩c k箪 tc k箪 t畛堰傘 cc畛п薩a chua chu畛畛i thi thnhnh in th動in th動畛畛ngng
strlwrstrlwr(s);(s);
52
ChuChu畛畛i k箪 ti k箪 t畛堰傘  MM畛畛t st s畛畛 hhm th動 vim th動 vi畛畛nn
So sSo s叩叩nh chunh chu畛畛i: so si: so s叩叩nh theo thnh theo th畛畛 tt畛堰傘 tt畛畛 ii畛畛nn
Ph但n biPh但n bi畛畛t IN HOAt IN HOA  in th動in th動畛畛ng:ng:
intint strcmpstrcmp(const char *s1, const char *s2);(const char *s1, const char *s2);
Kh担ng ph但n biKh担ng ph但n bi畛畛t IN HOAt IN HOA  in th動in th動畛畛ng:ng:
intint stricmpstricmp(const char *s1, const char *s2);(const char *s1, const char *s2);
53
#include <stdio.h>
int main()
{
char s1[] = "Minor";
char s2[] = "Tony";
int cmp = strcmp(s1, s2);
if (cmp < 0)
printf("%s < %s", s1, s2);
else
if (cmp == 0)
printf("%s = %s", s1, s2);
else
printf("%s > %s", s1, s2);
return 0;
}
ChuChu畛畛i k箪 ti k箪 t畛堰傘  vv鱈鱈 dd畛メ札 strcmpstrcmp
Minor < Tony
54
ChuChu畛畛i k箪 ti k箪 t畛堰傘  MM畛畛t st s畛畛 hhm th動 vim th動 vi畛畛nn
GG叩叩n nn n畛畛i dung chui dung chu畛畛i:i:
oo ChCh辿辿p top ton bn b畛畛 chuchu畛畛i source sang chui source sang chu畛畛i dest:i dest:
intint strcpystrcpy(char *dest, const char *src);(char *dest, const char *src);
oo ChCh辿辿p tp t畛畛i a n k箪 ti a n k箪 t畛堰傘 tt畛畛 source sang dest:source sang dest:
intint strncpystrncpy(char *dest,(char *dest,
const char *src, int n);const char *src, int n);
TT畉=此o chuo chu畛畛i mi m畛畛i ti t畛畛 chuchu畛畛i 達 ci 達 c坦坦::
char *char *strdupstrdup(const char *src);(const char *src);
55
#include <stdio.h>
int main()
{
char s[] = "Tony Blurt";
char s2[100], *s3;
strcpy(s2, s);
printf("%sn", s2);
strncpy(s2 + 2, "12345", 3);
printf("%sn", s2);
s3 = strdup(s + 5);
printf("%sn", s3);
free(s3);
return 0;
}
ChuChu畛畛i k箪 ti k箪 t畛堰傘  vv鱈鱈 dd畛メ札 strcpystrcpy
Tony Blurt
To123Blurt
Blurt
56
ChuChu畛畛i k箪 ti k箪 t畛堰傘  MM 畛畛t st s畛畛 hhm th動 vim th動 vi畛畛nn
NN畛畛i chui chu畛畛i:i:
char *char *strcatstrcat(char *dest,(char *dest,
const char *src);const char *src);
TT叩叩ch chuch chu畛畛i:i:
char *char *strtokstrtok(char *s,(char *s,
const char *sep);const char *sep);
TrTr畉a今 vv畛畛 畛畛a cha ch畛畛 cc畛п薩a oa o畉=此n n 畉п婚u ti棚n. Muu ti棚n. Mu畛畛n tn t叩叩ch och o畉=此n kn k畉吹鎖 titi畉吹鎖pp
tham stham s畛畛 thth畛畛 nhnh畉メ坤t st s畉潤砂 ll NULLNULL
57
#include <stdio.h>
#define SEPARATOR "., "
int main()
{
char s[]= "Thu strtok: 9,123.45";
char *p;
p = strtok(s, SEPARATOR);
while (p != NULL) {
printf("%sn", p);
p = strtok(NULL, SEPARATOR);
}
return 0;
}
ChuChu畛畛i k箪 ti k箪 t畛堰傘  vv鱈鱈 dd畛メ札 strtokstrtok
Thu
strtok:
9
123
45
58
ChuChu畛畛i k箪 ti k箪 t畛堰傘  MM畛畛t st s畛畛 hhm th動 vim th動 vi畛畛nn
TT狸狸m mm m畛畛t k箪 tt k箪 t畛堰傘 tr棚n chutr棚n chu畛畛i:i:
char *char *strchrstrchr(const char *s, int c);(const char *s, int c);
TT狸狸m mm m畛畛t ot o畉=此n k箪 tn k箪 t畛堰傘 tr棚n chutr棚n chu畛畛i:i:
char *char *strstrstrstr(const char *s1,(const char *s1,
const char *s2);const char *s2);
59
#include <stdio.h>
int main()
{
char s[]= "Thu tim kiem chuoi";
char *p;
p = strchr(s, 'm');
printf("%sn", p);
p = strstr(s, "em");
printf("%sn", p);
return 0;
}
ChuChu畛畛i k箪 ti k箪 t畛堰傘  vv鱈鱈 dd畛メ札 tt狸狸m kim ki畉吹鎖mm
m kiem chuoi
em chuoi
60
#include <stdio.h>
void StrIns(char *s, char *sub)
{
int len = strlen(sub);
memmove(s + len, s, strlen(s)+1);
strncpy(s, sub, len);
}
int main()
{
char s[]= "Thu chen";
StrIns(s, "123"); printf("%sn", s);
StrIns(s + 8, "45"); printf("%sn", p);
return 0;
}
ChuChu畛畛i k箪 ti k箪 t畛堰傘  chch竪竪n mn m畛畛t ot o畉=此n k箪 tn k箪 t畛堰傘
123 Thu chen
123 Thu 45chen
61
#include <stdio.h>
void StrDel(char *s, int n)
{
memmove(s, s + n, strlen(s+n)+1);
}
int main()
{
char s[]= "Thu xoa 12345";
StrDel(s, 4); printf("%sn", s);
StrDel(s + 4, 3); printf("%sn", p);
return 0;
}
ChuChu畛畛i k箪 ti k箪 t畛堰傘  xx坦坦a ma m畛畛t ot o畉=此n k箪 tn k箪 t畛堰傘
xoa 12345
xoa 45
62
TT坦坦m l動m l動畛a撮cc
Khai bKhai b叩叩oo
NhNh畉畉p / xup / xu畉メ坤tt
Con trCon tr畛迋 vv chuchu畛畛i k箪 ti k箪 t畛堰傘
MM畛畛t st s畛畛 hhm th動 vim th動 vi畛畛nn
ChCh竪竪n / lon / lo畉=此i bi b畛迋 mm畛畛t ot o畉=此n conn con
63
畉メ坤
64
KiKi畛畛u cu c畉メ坤u tru tr炭炭cc
KhKh叩叩i nii ni畛畛mm
Khai bKhai b叩叩oo
Truy xuTruy xu畉メ坤t ct c叩叩c thc thnh phnh ph畉п婚nn
CC畉メ坤u tru tr炭炭c & mc & m畉a今ngng
Con trCon tr畛迋 畉吹鎖n cn c畉メ坤u tru tr炭炭cc
65
KhKh叩叩i nii ni畛畛mm
CC畉メ坤u tru tr炭炭c lc l kiki畛畛u du d畛畛 lili畛畛u gu g畛畛m mm m畛畛t nht nh坦坦m cm c叩叩cc
ththnh phnh ph畉п婚n cn c坦坦 kiki畛畛u kh担ng giu kh担ng gi畛畛ng nhau, mng nhau, m畛畛ii
ththnh phnh ph畉п婚n 動n 動畛a撮c xc x叩叩c c 畛畛nh bnh b畉堰艮ng mng m畛畛t t棚n ri棚ngt t棚n ri棚ng
bibi畛畛t.t.
KiKi畛畛u cu c畛п薩a ma m畛畛i thi thnh phnh ph畉п婚n trong cn trong c畉メ坤u tru tr炭炭clcl mm畛畛tt
kiki畉吹鎖u 達 動u 達 動畛a撮c c 畛畛nh nghnh ngh挑挑a tr動a tr動畛畛c, kc, k畛畛 cc畉a今 mm畉a今ng vng v
cc叩叩c cc c畉メ坤u tru tr炭炭c khc kh叩叩c.c.
66
CC畉メ坤u tru tr炭炭cc  Khai bKhai b叩叩o trong Co trong C
MM畛畛t kit ki畛畛u cu c畉メ坤u tru tr炭炭c 動c 動畛a撮c c 畛畛nh nghnh ngh挑挑a va v畛畛i ti t畛畛 khkh坦坦aa structstruct..
typedeftypedef structstruct T棚nkiT棚nki畛畛uu
{{
KiKi畛畛uthuthnhphnhph畉п婚nn T棚nthT棚nthnhphnhph畉п婚n;n;
KiKi畛畛uthuthnhphnhph畉п婚nn T棚nthT棚nthnhphnhph畉п婚n;n;
KiKi畛畛uthuthnhphnhph畉п婚nn T棚nthT棚nthnhphnhph畉п婚n;n;
KiKi畛畛uthuthnhphnhph畉п婚nn T棚nthT棚nthnhphnhph畉п婚n;n;
......
};};
67
CC畉メ坤u tru tr炭炭cc  vv鱈鱈 dd畛メ札
typedef struct TBook
{
char title[80];
char author[80];
float price;
char isbn[20];
};
typedef struct TDate
{
char day;
char month;
int year;
};
typedef struct TStudent
{
char ID[10];
char firstname[10];
char lastname[20];
TDate dob;
float marks[10];
};
//khai b叩o c叩c bi畉n
TBook book;
TStudent list[100];
68
CC叩叩c thc thnh phnh ph畉п婚n cn c畛п薩a ma m畛畛t bit bi畉吹鎖n kin ki畛畛u cu c畉メ坤u tru tr炭炭c 動c 動畛a撮c truy xuc truy xu畉メ坤tt
th担ng qua t棚n bith担ng qua t棚n bi畉吹鎖n, dn, d畉メ坤u "." vu "." v t棚n tht棚n thnh phnh ph畉п婚n.n.
void Print(TStudent m)
{
printf("Name : %s %sn",
m.firstname, m.lastname);
printf("Student ID : %sn", m.ID);
printf("Date of birth : %hi/%hi/%i",
m.dob.day, m.dob.month, m.dob.year);
printf("Marks : ");
for (int i=0; i<10; i++)
printf("%.2f ", m.marks[i]);
}
CC畉メ坤u tru tr炭炭cc  Truy xuTruy xu畉メ坤t ct c叩叩c thc thnh phnh ph畉п婚nn
69
void ReadInfo(TStudent &m)
{
printf("Type student ID: ");
scanf("%s", m.ID);
printf("Type first name: ");
gets(m.firstname);
printf("Type last name: ");
gets(m.lastname);
printf("Date of birth (d m y): ");
scanf("%hi %hi %i", &(m.dob.day),
&(m.dob.month), &(m.dob.year));
printf("Marks (10 floats): ");
for (int i=0; i<10; i++)
scanf("%f", &(m.marks[i]));
}
CC畉メ坤u tru tr炭炭cc  Truy xuTruy xu畉メ坤t ct c叩叩c thc thnh phnh ph畉п婚nn
70
TT坦坦mm l動l動畛a撮cc
畛畛nh nghnh ngh挑挑a KDLa KDL
KiKi畛畛u du d畛畛 lili畛畛u c董 bu c董 b畉a今n: Sn: S畛畛 nguy棚n, snguy棚n, s畛畛 thth畛堰傘cc
KiKi畛畛u du d畛畛 lili畛畛u cu c畉メ坤u tru tr炭炭c:c: 畛畛nh nghnh ngh挑挑a, ma, m畛畛t st s畛畛 KiKi畛畛u cu c畉メ坤u tru tr炭炭cc
c董 bc董 b畉a今nn
MM畉a今ngng
ChuChu畛畛i k箪 ti k箪 t畛堰傘
StructStruct

More Related Content

Bai1 kdl

  • 2. 2 NN畛畛ii dungdung 畛畛nh nghnh ngh挑挑a Kia Ki畛畛u du d畛畛 lili畛畛uu CC叩叩cc kiki畛畛uu dd畛畛 lili畛畛uu c董c董 bb畉a今nn CC叩叩c kic ki畛畛u du d畛畛 lili畛畛u cu c坦坦 cc畉メ坤u tru tr炭炭cc MM畛畛t st s畛畛 kiki畛畛u du d畛畛 lili畛畛u cu c坦坦 cc畉メ坤u tru tr炭炭c c董 bc c董 b畉a今nn MM畉a今ngng ChuChu畛畛ii k箪k箪 tt畛堰傘 StructStruct
  • 3. 3 畛畛nh nghnh ngh挑挑a kia ki畛畛u du d畛畛 lili畛畛uu KiKi畛畛u du d畛畛 lili畛畛uu TT 動動畛a撮c xc x叩叩c c 畛畛nh bnh b畛畛i mi m畛畛t bt b畛畛 <<VV,,OO> v> v畛畛i:i: VV: t: t畉畉p cp c叩叩c gic gi叩叩 trtr畛畛 hh畛a撮p lp l畛畛 mm mm畛畛t t 畛畛i t動i t動畛a撮ng king ki畛畛uu TT cc坦坦 thth畛畛 l動u trl動u tr畛畛.. OO: t: t畉畉p cp c叩叩c thao tc thao t叩叩c xc x畛畛 l箪 cl箪 c坦坦 thth畛畛 thi hthi hnh tr棚n nh tr棚n 畛畛ii t動t動畛a撮ng king ki畛畛uu T.T. VV鱈鱈 dd畛メ札:: kiki畛畛u du d畛畛 lili畛畛u su s畛畛 nguy棚n= <Vnguy棚n= <Vii, O, Oii> v> v畛畛ii VVii={={--32768.. 32767}; O32768.. 32767}; Oii={+,={+, --, *, *, /, /, %, %}.}. Nh動 vNh動 v畉畉y, muy, mu畛畛n sn s畛畛 dd畛メ札ng mng m畛畛t KDL ct KDL c畉п婚n nn n畉畉m vm v畛畛ng cng c畉a今 nn畛畛ii dung DL 動董c phdung DL 動董c ph辿辿p l動u trp l動u tr畛畛 vv cc叩叩c xc x畛畛 l箪 tl箪 t叩叩c c 畛畛ng tr棚n nng tr棚n n坦坦.. CC叩叩c thuc thu畛畛c tc t鱈鱈nh 1 KDL gnh 1 KDL g畛畛m(T棚n KDL, Mim(T棚n KDL, Mi畛畛n gin gi叩叩 trtr畛畛, K, K鱈鱈chch th動th動畛畛c l動u trc l動u tr畛畛, t, t畉畉p cp c叩叩c toc to叩叩n tn t畛畛 tt叩叩c c 畛畛ng l棚n KDL).ng l棚n KDL).
  • 4. 4 畛畛 畛畛 畛畛 c董c董 畛畛
  • 5. 5 CC叩叩c kic ki畛畛u du d畛畛 lili畛畛u c董 su c董 s畛畛 KiKi畛畛u cu c坦坦 thth畛畛 tt畛堰傘 rr畛畛i ri r畉=此cc: S: S畛畛 nguy棚n.nguy棚n. KiKi畛畛u cu c坦坦 thth畛畛 tt畛堰傘 kh担ng rkh担ng r畛畛i ri r畉=此cc: S: S畛畛 thth畛堰傘c.c.
  • 6. 6 CC叩叩cc kiki畛畛uu ss畛畛 nguy棚nnguy棚n cc畛п薩aa CC CC hh畛畛 trtr畛a撮 khkh叩叩 nhinhi畛畛uu kiki畛畛uu ss畛畛 nguy棚nnguy棚n CC叩叩cc gigi叩叩 trtr畛畛 ll畛畛nn nhnh畉メ坤tt vv nhnh畛迋 nhnh畉メ坤tt 動動畛a撮cc 畛畛nhnh nghngh挑挑aa trongtrong th動th動 vivi畛畛nn limits.hlimits.h Ki畛u 畛nh d畉ng k鱈ch th動畛c nh畛 nh畉t l畛n nh畉t char %c 1 CHAR_MIN CHAR_MAX unsigned char %c 1 0 UCHAR_MAX short [int] %hi 2 SHRT_MIN SHRT_MAX unsigned short%hu 2 0 USHRT_MAX int %i 2 or 4 INT_MIN INT_MAX unsigned int %u 2 or 4 0 UINT_MAX long [int] %li 4 LONG_MIN LONG_MAX unsigned long %lu 4 0 ULONG_MAX
  • 7. 7 VV鱈鱈 dd畛メ札 vv畛畛 ss畛畛 nguy棚nnguy棚n #include <stdio.h> #include <limits.h> int main() { unsigned long big = ULONG_MAX; printf("minimum int = %i, ", INT_MIN); printf("maximum int = %in", INT_MAX); printf("maximum unsigned = %un", UINT_MAX); printf("maximum long int = %lin", LONG_MAX); printf("maximum unsigned long = %lun", big); return 0; } minimum int = -32768, maximum int = 32767 maximum unsigned = 65535 maximum long int = 2147483647 maximum unsigned long = 4294967295
  • 8. 8 #include <stdio.h> #include <limits.h> int main() { char lower_a = 'a'; char lower_m = 'm'; printf("minimum char = %i, ", CHAR_MIN); printf("maximum char = %in", CHAR_MAX); printf(Sau '%c' la '%c'n", lower_a, lower_a + 1); printf(Ky tu in hoa '%c'n", lower_m - 'a' + 'A'); return 0; } minimum char = -128, maximum char = 127 Sau 'a' la 'b' Ky tu in hoa 'M' In ra m達 ASCII c畛a k箪 t畛 VV鱈鱈 dd畛メ札 kiki畛畛u k箪 tu k箪 t畛堰傘 Trong NNLT C,Trong NNLT C, k箪 tk箪 t畛堰傘 chch鱈鱈nh lnh l ss畛畛 nguy棚nnguy棚n
  • 9. 9 SS畛畛 nguy棚nnguy棚n trongtrong cc叩叩cc c董c董 ss畛畛 khkh叩叩cc CC叩叩cc hh畛畛 c董c董 ss畛畛 cc坦坦 thth畛畛 thth畛堰傘cc hihi畛畛nn 動動畛a撮cc:: c董c董 ss畛畛 8 (octal),8 (octal), c董c董 ss畛畛 10 (decimal),10 (decimal), c董c董 ss畛畛 16 (hexadecimal)16 (hexadecimal) S畛 0: s畛 octal 0x: s畛 hexadecimal #include <stdio.h> int main(void) { int dec = 20, oct = 020, hex = 0x20; printf("dec=%d, oct=%d, hex=%dn", dec, oct, hex); printf("dec=%d, oct=%o, hex=%xn", dec, oct, hex); return 0; } dec=20, oct=16, hex=32 dec=20, oct=20, hex=20
  • 10. 10 SS畛畛 thth畛堰傘cc CC hh畛畛 trtr畛a撮 nhinhi畛畛uu kiki畛畛uu ss畛畛 thth畛堰傘cc l動ul動u trtr畛畛 dd畉メ坤uu chch畉メ坤mm 畛畛ngng.. CC叩叩cc gigi叩叩 trtr畛畛 ll畛畛nn nhnh畉メ坤tt vv nhnh畛迋 nhnh畉メ坤tt 動動畛a撮cc 畛畛nhnh nghngh挑挑aa trongtrong th動th動 vivi畛畛nn float.hfloat.h Ki畛u 畛nh d畉ng k鱈ch th動畛c nh畛 nh畉t l畛n nh畉t floatfloat %f %e %g 4 FLT_MIN FLT_MAX doubledouble %lf %le %lg 8 DBL_MIN DBL_MAX long doublelong double %Lf %Le %Lg 10 LDBL_MIN LDBL_MAX
  • 11. 11 VV鱈鱈 dd畛メ札 ss畛畛 thth畛堰傘cc:: #include <stdio.h> #include <float.h> int main(void) { double f = 3.1416, g = 1.2e-5, h = 5000000000.0; printf("f=%lftg=%lfth=%lfn", f, g, h); printf("f=%letg=%leth=%len", f, g, h); printf("f=%lgtg=%lgth=%lgn", f, g, h); printf("f=%7.2lftg=%.2leth=%.4lgn", f, g, h); return 0; } f=3.141600 g=0.000012 h=5000000000.000000 f=3.141600e+00 g=1.200000e-05 h=5.000000e+09 f=3.1416 g=1.2e-05 h=5e+09 f= 3.14 g=1.20e-05 h=5e+09
  • 13. 13 畛畛nh nghnh ngh挑挑a kia ki畛畛u du d畛畛 lili畛畛u cu c坦坦 cc畉メ坤uu trtr炭炭cc KiKi畛畛u du d畛畛 lili畛畛u 動u 動畛a撮c x但y dc x但y d畛堰傘ng mng m畛畛i di d畛堰傘a tr棚na tr棚n vivi畛畛c tc t畛畛 chch畛畛c li棚n kc li棚n k畉吹鎖t ct c叩叩c thc thnh phnh ph畉п婚n dn d畛畛 lili畛畛u cu c坦坦 kiki畛畛u du d畛畛 lili畛畛u 達 動u 達 動畛a撮c c 畛畛nh nghnh ngh挑挑a.a. NhNh畛畛ng KDL 動ng KDL 動畛a撮c x但y dc x但y d畛堰傘ng nh動 thng nh動 th畉吹鎖 gg畛畛ii ll KDL cKDL c坦坦 cc畉メ坤u tru tr炭炭c.c.
  • 14. 14 MM畛畛t st s畛畛 kiki畛畛u du d畛畛 lili畛畛u cu c畉メ坤u tru tr炭炭cc KiKi畛畛u mu m畉a今ngng KiKi畛畛u chuu chu畛畛i k箪 ti k箪 t畛堰傘 KiKi畛畛u cu c畉メ坤u tru tr炭炭c mc m畉畉u tinu tin
  • 16. 16 MM畉a今ngng ArrayArray MM畛畛t st s畛畛 tt鱈鱈nh chnh ch畉メ坤tt Khai bKhai b叩叩o mo m畉a今ng trong Cng trong C Truy xuTruy xu畉メ坤t ct c叩叩c thc thnh phnh ph畉п婚nn TruyTruy畛畛n tham sn tham s畛畛 kiki畛畛u mu m畉a今ng cho hng cho hmm MM畛畛t st s畛畛 thao tthao t叩叩c c董 sc c董 s畛畛 MM畉a今ng nhing nhi畛畛u chiu chi畛畛uu
  • 17. 17 MM畉a今ngng MM畛畛t st s畛畛 tt鱈鱈nh chnh ch畉メ坤tt MM畉a今ng lng l mm畛畛t kit ki畛畛u du d畛畛 lili畛畛u cu c坦坦 cc畉メ坤u tru tr炭炭c do ng動c do ng動畛畛i li l畉畉pp trtr狸狸nh nh 畛畛nh nghnh ngh挑挑aa DD湛湛ng bing bi畛畛u diu di畛畛n cn c叩叩c c 畛畛i t動i t動畛a撮ng dng d畛畛 lili畛畛uu 畛畛 dd畉=此ng mng m畛畛tt d達y cd達y c叩叩c thc thnh phnh ph畉п婚n cn c坦坦 cc湛湛ng king ki畛畛u vu v畛畛i nhaui nhau kiki畛畛u c董u c董 ss畛畛 NNLT C lu担n chNNLT C lu担n ch畛畛 畛畛nh mnh m畛畛t kht kh畛畛i nhi nh畛畛 li棚n tli棚n t畛メ札c choc cho mm畛畛t bit bi畉吹鎖n kin ki畛畛u mu m畉a今ngng KK鱈鱈ch th動ch th動畛畛c cc c畛п薩a ma m畉a今ng 動ng 動畛a撮c xc x叩叩c c 畛畛nh ngay khi khainh ngay khi khai bb叩叩o vo v kh担ng bao gikh担ng bao gi畛畛 thay thay 畛畛ii
  • 18. 18 MM畉a今ngng Khai bKhai b叩叩o trong Co trong C typedeftypedef kiki畛畛uc董suc董s畛畛 T棚nkiT棚nki畛畛uu[[SS畛畛ththnhphnhph畉п婚nn]];; kiki畛畛u cu c畛п薩a ma m畛畛i thi thnh phnh ph畉п婚nn hh畉堰艮ng sng s畛畛, s, s畛畛 ththnh phnh ph畉п婚nn tt畛畛i a ci a c畛п薩a ma m畉a今ngng do ldo l畉畉p trp tr狸狸nh vi棚n nh vi棚n 畉戟嵯t t棚nt t棚n typedeftypedef intint AINT[AINT[100100];]; ////AINTAINT ll kiki畛畛u mu m畉a今ng bing bi畛畛u diu di畛畛n d達y gn d達y g畛畛m 100 thm 100 thnh phnh ph畉п婚n intn int AINTAINT a;a; //a: bi//a: bi畉吹鎖n kin ki畛畛u AINTu AINT
  • 19. 19 MM畉a今ngng VV鱈鱈 dd畛メ札 #define SIZE 10 int a[5]; // a d達y g畛m 5 s畛 nguy棚n long int big[100]; // big: chi畉m 400 bytes! double d[100]; // d: chi畉m 800 bytes! long double v[SIZE];// v:10 long doubles
  • 20. 20 MM畉a今ngng VV鱈鱈 dd畛メ札 int a[5] = { 10, 20, 30, 40, 50}; double d[100] = { 1.5, 2.7}; short primes[] = { 1, 2, 3, 5, 7, 11, 13}; long b[50] = { 0 }; int i = 7; const int c = 5; int a[i]; double d[c]; short primes[]; kh畛i tr畛 cho 5 thnh ph畉n 2 thnh ph畉n 畉u ti棚n 動畛c kh畛i tr畛, ph畉n c嘆n l畉i: 0 compiler x叩c 畛nh k鱈ch th動畛c g畛m 7 thnh ph畉n c叩ch nhanh nh畉t 畛 kh畛i tr畛 t畉t c畉 c叩c thnh ph畉n b畉ng 0
  • 21. 21 CC叩叩c thc thnh phnh ph畉п婚n cn c畛п薩a ma m畉a今ng 動ng 動畛a撮c truy xuc truy xu畉メ坤t th担ng qua cht th担ng qua ch畛畛 ss畛畛 cc畛п薩a cha ch炭炭ngng 0..size0..size--11 Thao tThao t叩叩c truy xuc truy xu畉メ坤t kh担ng kit kh担ng ki畛畛m tra gim tra gi畛畛i hi h畉=此n cn c畛п薩a cha ch畛畛 ss畛畛 int main() { int a[6]; int i = 7; a[0] = 59; a[5] = -10; a[i/2] = 2; a[6] = 0; a[-1] = 5; return 0; } 0 a 1 2 3 4 5 MM畉a今ngng Truy xuTruy xu畉メ坤t ct c叩叩c phc ph畉п婚n tn t畛畛
  • 22. 22 TruyTruy畛畛n tham sn tham s畛畛 MM畉a今ng cho hng cho hmm Tham sTham s畛畛 kiki畛畛u mu m畉a今ng 動ng 動畛a撮c truyc truy畛畛n cho hn cho hm chm ch鱈鱈nh lnh l 畛畛a cha ch畛畛 cc畛п薩a pha ph畉п婚n tn t畛畛 畉п婚u ti棚n tr棚n mu ti棚n tr棚n m畉a今ngng SS畛畛 ththnh phnh ph畉п婚n trong tham sn trong tham s畛畛 mm畉a今ng cng c坦坦 thth畛畛 畛畛 trtr畛畛ng.ng. SS畛畛 ththnh phnh ph畉п婚n thn th畛堰傘c sc s畛堰傘 動動畛a撮c sc s畛畛 dd畛メ札ng phng ph畉a今i truyi truy畛畛n qua mn qua m畛畛tt tham stham s畛畛 khkh叩叩c (vd: size)c (vd: size) int add_elements(int a[], int size) { int add_elements(int *p, int size) {
  • 23. 23 VV鱈鱈 dd畛メ札 #include <stdio.h> void sum(long [], int); int main(void) { long primes[6] = { 1, 2, 3, 5, 7, 11 }; sum(primes, 6); printf("%lin", primes[0]); return 0; } void sum(long a[], int sz) { int i; long total = 0; for(i = 0; i < sz; i++) total += a[i]; a[0] = total; } 1 2 3 5 7 11 primes a sz 6 t畛ng 動畛c l動u vo ph畉n t畛 畉u ti棚n d湛ng 畛 ki畛m tra gi畛i h畉n ch畛 s畛
  • 24. 24 MM畛畛t st s畛畛 thao tthao t叩叩c c董 sc c董 s畛畛 NhNh畉畉pp XuXu畉メ坤tt Th棚m mTh棚m m畛畛t tht thnh phnh ph畉п婚n dn d畛畛 lili畛畛uu LoLo畉=此i bi b畛迋 mm畛畛t tht thnh phnh ph畉п婚n dn d畛畛 lili畛畛uu TT狸狸m kim ki畉吹鎖mm SS畉畉p xp x畉吹鎖pp
  • 25. 25 MM畉a今ngng NhNh畉畉p dp d畛畛 lili畛畛uu void ReadData(int a[], int size) { int i; for(i = 0; i < size; i++) { printf(Nhap thanh phan %d: , i); scanf(%d, &a[i]); } } duy畛t qua t畉t c畉 c叩c ph畉n t畛 nh畉p d畛 li畛u cho a[i]
  • 26. 26 MM畉a今ngng XuXu畉メ坤t dt d畛畛 lili畛畛u ra mu ra mn hn h狸狸nhnh void WriteData(int a[], int size) { int i; for(i = 0; i < size; i++) printf(%d , a[i]); printf(n); }
  • 27. 27 MM畉a今ngng NhNh畉畉p xup xu畉メ坤t dt d畛畛 lili畛畛uu #include <stdio.h> void ReadData(int [], int ); void WriteData(int [], int ); void main() { int a[100], n; clrscr(); printf(Nhap so thanh phan cua day: ); scanf(%d, &n); printf(Nhap cac thanh phan cua day: ); ReadData(a, n); printf(Day vua nhap: n); WriteData(a, n); }
  • 28. 28 MM畉a今ngng TT狸狸m vm v畛畛 trtr鱈鱈 X trong d達yX trong d達y //input: d達y (a, N), X //output: V畛 tr鱈 c畛a X, -1 n畉u kh担ng c坦 intint Search(int a[], int N, int X)Search(int a[], int N, int X) {{ for (int i = 0; i < N; i ++)for (int i = 0; i < N; i ++) if (a[i] == X)if (a[i] == X) return i;return i; returnreturn --1;1; }} BBi toi to叩叩n: Tn: T狸狸m vm v畛畛 trtr鱈鱈 X tr棚n mX tr棚n m畉a今ng a ang cng a ang c坦坦 N thN thnh phnh ph畉п婚n.n. GiGi畉a今i phi ph叩叩p: Tp: T狸狸m tum tu畉п婚n tn t畛堰傘
  • 29. 29 MM畉a今ngng Th棚m mTh棚m m畛畛t tht thnh phnh ph畉п婚n dn d畛畛 lili畛畛uu BBi toi to叩叩n: cn: c畉п婚n th棚m thn th棚m thnh phnh ph畉п婚n dn d畛畛 lili畛畛u X vu X vo mo m畉a今ng ang a ang cang c坦坦 N thN thnh phnh ph畉п婚n.n. Hai tr動Hai tr動畛畛ng hng h畛a撮p cp c畉п婚n xem xn xem x辿辿t:t: D達y ch動a cD達y ch動a c坦坦 thth畛畛 tt畛堰傘 Th棚m X vTh棚m X vo cuo cu畛畛i a.i a. D達y 達 cD達y 達 c坦坦 thth畛畛 tt畛堰傘 TT狸狸m vm v畛畛 trtr鱈鱈 thth鱈鱈ch hch h畛a撮p, chp, ch竪竪n X vn X voo
  • 30. 30 MM畉a今ngng Th棚m X vTh棚m X vo cuo cu畛畛i d達yi d達y Th棚m 15 vo (a, 7) N = 7N = 8 a[N] = X; N ++;X
  • 31. 31 MM畉a今ngng ChCh竪竪n X vn X vo d達y tng do d達y tng d畉п婚nn Ch竪n 6 vo (a, 7) N = 7N = 8 X V畛 tr鱈 th鱈ch h畛p: 4 pos
  • 32. 32 MM畉a今ngng ChCh竪竪n X vn X vo d達y tng do d達y tng d畉п婚nn //input: d達y (a, N) tng d畉n, X //output: d達y (a, N) 達 c坦 X 畛 炭ng v畛 tr鱈 voidvoid Insert(int a[], int &N, int X)Insert(int a[], int &N, int X) {{ int pos;int pos; for (pos = N; (pos>0)&&(a[posfor (pos = N; (pos>0)&&(a[pos--1]>X); pos1]>X); pos ----)) a[pos] = a[posa[pos] = a[pos 1];1]; a[pos] = X;a[pos] = X; N ++;N ++; }}
  • 33. 33 MM畉a今ngng LoLo畉=此i bi b畛迋 mm畛畛t tht thnh phnh ph畉п婚n dn d畛畛 lili畛畛uu BBi toi to叩叩n: lon: lo畉=此i bi b畛迋 ththnh phnh ph畉п婚n dn d畛畛 lili畛畛u X ra khu X ra kh畛迋ii mm畉a今ng a ang cng a ang c坦坦 N thN thnh phnh ph畉п婚n.n. H動H動畛畛ng ging gi畉a今i quyi quy畉吹鎖t: xt: x叩叩c c 畛畛nh vnh v畛畛 trtr鱈鱈 cc畛п薩a X, na X, n畉吹鎖u tu t狸狸mm thth畉メ坤y thy th狸狸 dd畛畛n cn c叩叩c phc ph畉п婚n tn t畛畛 畛畛 phph鱈鱈a sau l棚n a sau l棚n 畛畛 ll畉メ坤p vp voo chch畛畛 trtr畛畛ng. 2ng. 2 tr動tr動畛畛ng hng h畛a撮p:p: D達y kh担ng cD達y kh担ng c坦坦 thth畛畛 tt畛堰傘: l: l畉メ坤p php ph畉п婚n tn t畛畛 cucu畛畛i l棚ni l棚n D達y 達 thD達y 達 th畛畛 tt畛堰傘: d: d畛畛i ti t畉メ坤t ct c畉a今 cc叩叩c phc ph畉п婚n tn t畛畛 畛畛 sau vsau v鱈鱈 trtr鱈鱈 cc畛п薩a X l棚n tr動a X l棚n tr動畛畛c 1 vc 1 v畛畛 trtr鱈鱈..
  • 34. 34 N = 8 MM畉a今ngng LoLo畉=此i bi b畛迋 X ra khX ra kh畛迋i d達y tngi d達y tng Lo畉i 5 kh畛i (a, 8) N = 7 pos T狸m v畛 tr鱈 c畛a 5 X D畛n c叩c v畛 tr鱈 4, 5, 6, 7 l棚n
  • 35. 35 MM畉a今ngng LoLo畉=此i bi b畛迋 X ra khX ra kh畛迋i d達y tngi d達y tng //input: d達y (a, N), X //output: d達y (a, N) 達 lo畉i b畛 1 thnh ph畉n X intint Remove(int a[], int &N, int X)Remove(int a[], int &N, int X) {{ int pos = Search(a, N, X);int pos = Search(a, N, X); if (pos ==if (pos == --1)1) //kh担ng c//kh担ng c坦坦 X trong d達yX trong d達y return 0;return 0; NN ----;; for (; (pos < N); pos ++)for (; (pos < N); pos ++) a[pos] = a[pos + 1];a[pos] = a[pos + 1]; return 1;return 1; }}
  • 36. 36 MM畉a今ngng SS畉畉p xp x畉吹鎖pp BBi toi to叩叩n: Sn: S畉畉p xp x畉吹鎖p cp c叩叩c thc thnh phnh ph畉п婚n cn c畛п薩a (a (a,a, N)N) 畛畛 thuthu 動動畛a撮c d達y tng dc d達y tng d畉п婚nn GiGi畉a今i phi ph叩叩p: Tp: T狸狸m cm c叩叩ch trich tri畛畛t ti棚u tt ti棚u t畉メ坤t ct c畉a今 cc叩叩c nghc ngh畛畛ch thch th畉吹鎖 cc畛п薩a d達ya d達y ThuThu畉畉t tot to叩叩n sn s畉畉p xp x畉吹鎖pp 畛畛i chi ch畛畛 trtr畛堰傘c tic ti畉吹鎖pp
  • 37. 37 MM畉a今ngng SS畉畉p xp x畉吹鎖p p 畛畛i chi ch畛畛 i j
  • 38. 38 i j MM畉a今ngng SS畉畉p xp x畉吹鎖p p 畛畛i chi ch畛畛
  • 39. 39 i j MM畉a今ngng SS畉畉p xp x畉吹鎖p p 畛畛i chi ch畛畛
  • 40. 40 i j MM畉a今ngng SS畉畉p xp x畉吹鎖p p 畛畛i chi ch畛畛
  • 41. 41 MM畉a今ngng SS畉畉p xp x畉吹鎖p p 畛畛i chi ch畛畛
  • 42. 42 MM畉a今ngng SS畉畉p xp x畉吹鎖p p 畛畛i chi ch畛畛 void Swap(int &x, int &y) { int t = x; x = y; y = t; } void InterchangeSort(int a[], int N) { int i, j; for (i = 0 ; i<N-1 ; i++) for (j =i+1; j < N ; j++) if(a[j]< a[i]) Swap(a[i],a[j]); }
  • 43. 43 MM畉a今ng nhing nhi畛畛u chiu chi畛畛uu C kh担ng hC kh担ng h畛畛 trtr畛a撮 mm畉a今ng nhing nhi畛畛u chiu chi畛畛u. Tuy nhi棚n cu. Tuy nhi棚n c坦坦 thth畛畛 titi畉吹鎖pp cc畉畉n theo h動n theo h動畛畛ng: Mng: M畉a今ng 2 ching 2 chi畛畛u lu l mm畉a今ng mng m畛畛t chit chi畛畛u mu m mm畛畛ii ththnh phnh ph畉п婚n cn c畛п薩a na n坦坦 ll mm畛畛t mt m畉a今ng mng m畛畛t chit chi畛畛u.u. float rainfall[12][365]; rainfall l m畉ng g畛m 12 thnh ph畉n, m畛i thnh ph畉n l m畉ng g畛m 365 s畛 float short exam_marks[500][10]; exam_marks l m畉ng g畛m 500 thnh ph畉n, m畛i thnh ph畉n l m畉ng 10 s畛 short const int brighton = 7; int day_of_year = 238; rainfall[brighton][day_of_year] = 0.0F;
  • 44. 44 TT坦坦m l動m l動畛a撮cc Khai bKhai b叩叩o mo m畉a今ng trong Cng trong C Truy xuTruy xu畉メ坤t ct c叩叩c phc ph畉п婚n tn t畛畛 TruyTruy畛畛n tham sn tham s畛畛 kiki畛畛u mu m畉a今ng cho hng cho hmm CC叩叩c thao tc thao t叩叩c: nhc: nh畉畉p, xup, xu畉メ坤t, th棚m/ht, th棚m/h畛п薩y 1 thy 1 thnh phnh ph畉п婚n,n, tt狸狸m kim ki畉吹鎖m, sm, s畉畉p xp x畉吹鎖pp MM畉a今ng nhing nhi畛畛u chiu chi畛畛uu
  • 46. 46 ChuChu畛畛i k箪 ti k箪 t畛堰傘 StringsStrings MM畛畛t st s畛畛 qui tqui t畉畉cc NhNh畉畉p / xup / xu畉メ坤tt Con trCon tr畛迋 vv chuchu畛畛i k箪 ti k箪 t畛堰傘 MM畛畛t st s畛畛 hhm th動 vim th動 vi畛畛nn
  • 47. 47 ChuChu畛畛i k箪 ti k箪 t畛堰傘 -- MM畛畛t st s畛畛 qui tqui t畉畉cc ChuChu畛畛i k箪 ti k箪 t畛堰傘 ll mm畉a今ng mng m畛畛t chit chi畛畛u cu c坦坦 mm畛畛i thi thnh phnh ph畉п婚n ln l mm畛畛tt ss畛畛 nguy棚n 動nguy棚n 動畛a撮c kc k畉吹鎖t tht th炭炭c bc b畛畛i si s畛畛 0.0. K箪 tK箪 t畛堰傘 kk畉吹鎖t tht th炭炭c (0)c (0) 畛畛 cucu畛畛i chui chu畛畛i k箪 ti k箪 t畛堰傘 th動th動畛畛ng 動ng 動畛a撮c gc g畛畛i li l k箪 tk箪 t畛堰傘 null (kh担ng ginull (kh担ng gi畛畛ng con trng con tr畛迋 NULL). CNULL). C坦坦 thth畛畛 ghi lghi l 00 hoho畉戟嵯cc 00 (kh担ng ph(kh担ng ph畉a今i chi ch畛畛 oo).). 動動畛a撮c khai bc khai b叩叩o vo v truytruy畛畛n tham sn tham s畛畛 nh動 mnh動 m畉a今ng mng m畛畛t chit chi畛畛u.u. char s[100]; unsigned char s1[1000];
  • 48. 48 char first_name[5] = { 'J', 'o', 'h', 'n', '0' }; char last_name[6] = "Minor"; char other[] = "Tony Blurt"; char characters[7] = "No null"; first_name last_name other characters ChuChu畛畛i k箪 ti k箪 t畛堰傘 -- VV鱈鱈 dd畛メ札 0'n''h''o''J' 0'r''o''n''i''M' 32 'B' 'l' 'u' 'r' 0't''y'n'o''T' 'l' 'l' 0'u''n'32'o''N'
  • 49. 49 CC坦坦 thth畛畛 nhnh畉畉p / xup / xu畉メ坤t chut chu畛畛i k箪 ti k箪 t畛堰傘 s bs b畉堰艮ng cng c叩叩ch nhch nh畉畉p tp t畛畛ng k箪ng k箪 tt畛堰傘 cc畛п薩a sa s HoHo畉戟嵯c sc s畛畛 dd畛メ札ng cng c叩叩c hc hmm scanfscanf vv printfprintf vv畛畛i k箪 ti k箪 t畛堰傘 畛畛nhnh dd畉=此ngng %%ss NhNh畉畉p chup chu畛畛i ci c坦坦 khokho畉a今ng trng tr畉畉ng dng d湛湛ng hng hm getsm gets char name[100]; printf("Nhap mot chuoi ky tu %s: "); gets(name); ChuChu畛畛i k箪 ti k箪 t畛堰傘 -- NhNh畉畉p / xup / xu畉メ坤tt char other[] = "Tony Blurt"; printf("%sn", other);
  • 50. 50 L動u 箪L動u 箪: k: k畉吹鎖t tht th炭炭c chuc chu畛畛ii #include <stdio.h> int main() { char other[] = "Tony Blurt"; printf("%sn", other); other[4] = '0'; printf("%sn", other); return 0; } Tony Blurt Tony other "Blurt" s畉 kh担ng 動畛c in ra 32 'B' 'l' 'u' 'r' 0't''y'n'o''T'
  • 51. 51 ChuChu畛畛i k箪 ti k箪 t畛堰傘 MM畛畛t st s畛畛 hhm th動 vim th動 vi畛畛nn LL畉メ坤y y 畛畛 ddi chui chu畛畛ii l =l = strlenstrlen(s);(s); 畛畛i toi ton bn b畛畛 cc叩叩c k箪 tc k箪 t畛堰傘 cc畛п薩a chua chu畛畛i thi thnh IN HOAnh IN HOA struprstrupr(s);(s); 畛畛i toi ton bn b畛畛 cc叩叩c k箪 tc k箪 t畛堰傘 cc畛п薩a chua chu畛畛i thi thnhnh in th動in th動畛畛ngng strlwrstrlwr(s);(s);
  • 52. 52 ChuChu畛畛i k箪 ti k箪 t畛堰傘 MM畛畛t st s畛畛 hhm th動 vim th動 vi畛畛nn So sSo s叩叩nh chunh chu畛畛i: so si: so s叩叩nh theo thnh theo th畛畛 tt畛堰傘 tt畛畛 ii畛畛nn Ph但n biPh但n bi畛畛t IN HOAt IN HOA in th動in th動畛畛ng:ng: intint strcmpstrcmp(const char *s1, const char *s2);(const char *s1, const char *s2); Kh担ng ph但n biKh担ng ph但n bi畛畛t IN HOAt IN HOA in th動in th動畛畛ng:ng: intint stricmpstricmp(const char *s1, const char *s2);(const char *s1, const char *s2);
  • 53. 53 #include <stdio.h> int main() { char s1[] = "Minor"; char s2[] = "Tony"; int cmp = strcmp(s1, s2); if (cmp < 0) printf("%s < %s", s1, s2); else if (cmp == 0) printf("%s = %s", s1, s2); else printf("%s > %s", s1, s2); return 0; } ChuChu畛畛i k箪 ti k箪 t畛堰傘 vv鱈鱈 dd畛メ札 strcmpstrcmp Minor < Tony
  • 54. 54 ChuChu畛畛i k箪 ti k箪 t畛堰傘 MM畛畛t st s畛畛 hhm th動 vim th動 vi畛畛nn GG叩叩n nn n畛畛i dung chui dung chu畛畛i:i: oo ChCh辿辿p top ton bn b畛畛 chuchu畛畛i source sang chui source sang chu畛畛i dest:i dest: intint strcpystrcpy(char *dest, const char *src);(char *dest, const char *src); oo ChCh辿辿p tp t畛畛i a n k箪 ti a n k箪 t畛堰傘 tt畛畛 source sang dest:source sang dest: intint strncpystrncpy(char *dest,(char *dest, const char *src, int n);const char *src, int n); TT畉=此o chuo chu畛畛i mi m畛畛i ti t畛畛 chuchu畛畛i 達 ci 達 c坦坦:: char *char *strdupstrdup(const char *src);(const char *src);
  • 55. 55 #include <stdio.h> int main() { char s[] = "Tony Blurt"; char s2[100], *s3; strcpy(s2, s); printf("%sn", s2); strncpy(s2 + 2, "12345", 3); printf("%sn", s2); s3 = strdup(s + 5); printf("%sn", s3); free(s3); return 0; } ChuChu畛畛i k箪 ti k箪 t畛堰傘 vv鱈鱈 dd畛メ札 strcpystrcpy Tony Blurt To123Blurt Blurt
  • 56. 56 ChuChu畛畛i k箪 ti k箪 t畛堰傘 MM 畛畛t st s畛畛 hhm th動 vim th動 vi畛畛nn NN畛畛i chui chu畛畛i:i: char *char *strcatstrcat(char *dest,(char *dest, const char *src);const char *src); TT叩叩ch chuch chu畛畛i:i: char *char *strtokstrtok(char *s,(char *s, const char *sep);const char *sep); TrTr畉a今 vv畛畛 畛畛a cha ch畛畛 cc畛п薩a oa o畉=此n n 畉п婚u ti棚n. Muu ti棚n. Mu畛畛n tn t叩叩ch och o畉=此n kn k畉吹鎖 titi畉吹鎖pp tham stham s畛畛 thth畛畛 nhnh畉メ坤t st s畉潤砂 ll NULLNULL
  • 57. 57 #include <stdio.h> #define SEPARATOR "., " int main() { char s[]= "Thu strtok: 9,123.45"; char *p; p = strtok(s, SEPARATOR); while (p != NULL) { printf("%sn", p); p = strtok(NULL, SEPARATOR); } return 0; } ChuChu畛畛i k箪 ti k箪 t畛堰傘 vv鱈鱈 dd畛メ札 strtokstrtok Thu strtok: 9 123 45
  • 58. 58 ChuChu畛畛i k箪 ti k箪 t畛堰傘 MM畛畛t st s畛畛 hhm th動 vim th動 vi畛畛nn TT狸狸m mm m畛畛t k箪 tt k箪 t畛堰傘 tr棚n chutr棚n chu畛畛i:i: char *char *strchrstrchr(const char *s, int c);(const char *s, int c); TT狸狸m mm m畛畛t ot o畉=此n k箪 tn k箪 t畛堰傘 tr棚n chutr棚n chu畛畛i:i: char *char *strstrstrstr(const char *s1,(const char *s1, const char *s2);const char *s2);
  • 59. 59 #include <stdio.h> int main() { char s[]= "Thu tim kiem chuoi"; char *p; p = strchr(s, 'm'); printf("%sn", p); p = strstr(s, "em"); printf("%sn", p); return 0; } ChuChu畛畛i k箪 ti k箪 t畛堰傘 vv鱈鱈 dd畛メ札 tt狸狸m kim ki畉吹鎖mm m kiem chuoi em chuoi
  • 60. 60 #include <stdio.h> void StrIns(char *s, char *sub) { int len = strlen(sub); memmove(s + len, s, strlen(s)+1); strncpy(s, sub, len); } int main() { char s[]= "Thu chen"; StrIns(s, "123"); printf("%sn", s); StrIns(s + 8, "45"); printf("%sn", p); return 0; } ChuChu畛畛i k箪 ti k箪 t畛堰傘 chch竪竪n mn m畛畛t ot o畉=此n k箪 tn k箪 t畛堰傘 123 Thu chen 123 Thu 45chen
  • 61. 61 #include <stdio.h> void StrDel(char *s, int n) { memmove(s, s + n, strlen(s+n)+1); } int main() { char s[]= "Thu xoa 12345"; StrDel(s, 4); printf("%sn", s); StrDel(s + 4, 3); printf("%sn", p); return 0; } ChuChu畛畛i k箪 ti k箪 t畛堰傘 xx坦坦a ma m畛畛t ot o畉=此n k箪 tn k箪 t畛堰傘 xoa 12345 xoa 45
  • 62. 62 TT坦坦m l動m l動畛a撮cc Khai bKhai b叩叩oo NhNh畉畉p / xup / xu畉メ坤tt Con trCon tr畛迋 vv chuchu畛畛i k箪 ti k箪 t畛堰傘 MM畛畛t st s畛畛 hhm th動 vim th動 vi畛畛nn ChCh竪竪n / lon / lo畉=此i bi b畛迋 mm畛畛t ot o畉=此n conn con
  • 64. 64 KiKi畛畛u cu c畉メ坤u tru tr炭炭cc KhKh叩叩i nii ni畛畛mm Khai bKhai b叩叩oo Truy xuTruy xu畉メ坤t ct c叩叩c thc thnh phnh ph畉п婚nn CC畉メ坤u tru tr炭炭c & mc & m畉a今ngng Con trCon tr畛迋 畉吹鎖n cn c畉メ坤u tru tr炭炭cc
  • 65. 65 KhKh叩叩i nii ni畛畛mm CC畉メ坤u tru tr炭炭c lc l kiki畛畛u du d畛畛 lili畛畛u gu g畛畛m mm m畛畛t nht nh坦坦m cm c叩叩cc ththnh phnh ph畉п婚n cn c坦坦 kiki畛畛u kh担ng giu kh担ng gi畛畛ng nhau, mng nhau, m畛畛ii ththnh phnh ph畉п婚n 動n 動畛a撮c xc x叩叩c c 畛畛nh bnh b畉堰艮ng mng m畛畛t t棚n ri棚ngt t棚n ri棚ng bibi畛畛t.t. KiKi畛畛u cu c畛п薩a ma m畛畛i thi thnh phnh ph畉п婚n trong cn trong c畉メ坤u tru tr炭炭clcl mm畛畛tt kiki畉吹鎖u 達 動u 達 動畛a撮c c 畛畛nh nghnh ngh挑挑a tr動a tr動畛畛c, kc, k畛畛 cc畉a今 mm畉a今ng vng v cc叩叩c cc c畉メ坤u tru tr炭炭c khc kh叩叩c.c.
  • 66. 66 CC畉メ坤u tru tr炭炭cc Khai bKhai b叩叩o trong Co trong C MM畛畛t kit ki畛畛u cu c畉メ坤u tru tr炭炭c 動c 動畛a撮c c 畛畛nh nghnh ngh挑挑a va v畛畛i ti t畛畛 khkh坦坦aa structstruct.. typedeftypedef structstruct T棚nkiT棚nki畛畛uu {{ KiKi畛畛uthuthnhphnhph畉п婚nn T棚nthT棚nthnhphnhph畉п婚n;n; KiKi畛畛uthuthnhphnhph畉п婚nn T棚nthT棚nthnhphnhph畉п婚n;n; KiKi畛畛uthuthnhphnhph畉п婚nn T棚nthT棚nthnhphnhph畉п婚n;n; KiKi畛畛uthuthnhphnhph畉п婚nn T棚nthT棚nthnhphnhph畉п婚n;n; ...... };};
  • 67. 67 CC畉メ坤u tru tr炭炭cc vv鱈鱈 dd畛メ札 typedef struct TBook { char title[80]; char author[80]; float price; char isbn[20]; }; typedef struct TDate { char day; char month; int year; }; typedef struct TStudent { char ID[10]; char firstname[10]; char lastname[20]; TDate dob; float marks[10]; }; //khai b叩o c叩c bi畉n TBook book; TStudent list[100];
  • 68. 68 CC叩叩c thc thnh phnh ph畉п婚n cn c畛п薩a ma m畛畛t bit bi畉吹鎖n kin ki畛畛u cu c畉メ坤u tru tr炭炭c 動c 動畛a撮c truy xuc truy xu畉メ坤tt th担ng qua t棚n bith担ng qua t棚n bi畉吹鎖n, dn, d畉メ坤u "." vu "." v t棚n tht棚n thnh phnh ph畉п婚n.n. void Print(TStudent m) { printf("Name : %s %sn", m.firstname, m.lastname); printf("Student ID : %sn", m.ID); printf("Date of birth : %hi/%hi/%i", m.dob.day, m.dob.month, m.dob.year); printf("Marks : "); for (int i=0; i<10; i++) printf("%.2f ", m.marks[i]); } CC畉メ坤u tru tr炭炭cc Truy xuTruy xu畉メ坤t ct c叩叩c thc thnh phnh ph畉п婚nn
  • 69. 69 void ReadInfo(TStudent &m) { printf("Type student ID: "); scanf("%s", m.ID); printf("Type first name: "); gets(m.firstname); printf("Type last name: "); gets(m.lastname); printf("Date of birth (d m y): "); scanf("%hi %hi %i", &(m.dob.day), &(m.dob.month), &(m.dob.year)); printf("Marks (10 floats): "); for (int i=0; i<10; i++) scanf("%f", &(m.marks[i])); } CC畉メ坤u tru tr炭炭cc Truy xuTruy xu畉メ坤t ct c叩叩c thc thnh phnh ph畉п婚nn
  • 70. 70 TT坦坦mm l動l動畛a撮cc 畛畛nh nghnh ngh挑挑a KDLa KDL KiKi畛畛u du d畛畛 lili畛畛u c董 bu c董 b畉a今n: Sn: S畛畛 nguy棚n, snguy棚n, s畛畛 thth畛堰傘cc KiKi畛畛u du d畛畛 lili畛畛u cu c畉メ坤u tru tr炭炭c:c: 畛畛nh nghnh ngh挑挑a, ma, m畛畛t st s畛畛 KiKi畛畛u cu c畉メ坤u tru tr炭炭cc c董 bc董 b畉a今nn MM畉a今ngng ChuChu畛畛i k箪 ti k箪 t畛堰傘 StructStruct