Professional Documents
Culture Documents
Slide Tin học Đại Cương
Slide Tin học Đại Cương
Ni dung chnh
Chng 1: Tng quan v ngn ng C
Chng 2: Kiu d liu v biu thc trong C
TIN HC I CNG
Chng 3: Vo ra d liu
Phn 3: LP TRNH C
Phm ng Hi
haipd@soict.hut.edu.vn
Chng 6: Cu trc
Chng 7: Hm
Chng 8: Tp d liu
1/27/2012
Ni dung chnh
S ra i ca C
Nhu cu vit li HH Unix cho cc h my
tnh khc nhau
Dng Assembly
Cng vic nng n, phc tp
Kh chuyn i chng trnh gia cc h my tnh
khc nhau
2. Cc phn t c bn ca ngn ng C
Cn ngn ng mi
1/27/2012
Ngn ng lp trnh C
Ngn ng lp trnh C
c im
Cc phin bn
Phm vi s dng
1/27/2012
Ni dung chnh
Cc phn t c bn
1. Tp k t
2. T kha
3. nh danh
4. Cc kiu d liu
5. Hng
6. Bin
7. Hm
8. Biu thc
9. Cu lnh
10. Ch thch
1/27/2012
1/27/2012
1. Tp k t
1. Tp k t Tp k t trong C
K t l cc phn t c bn to nn chng
trnh
Chng trnh: Tp cc cu lnh nhm
gii quyt nhim v t ra
Cu lnh: l cc t (t vng) lin kt vi
nhau theo c php ca ngn ng lp trnh
26 ch ci hoa:A B C ... X Y Z
26 ch ci thng:a b c x y z.
10 ch s: 0 1 2 3 4 5 6 7 8 9.
Cc k hiu ton hc:+ - * / = < >
Cc du ngn cch: . ; , : space tab
Cc du ngoc:( ) [ ] { }
V d: while (i < N ) do
Cc t: T hp cc k t theo nguyn tc
xy dng t vng
V d: TenFile, BaiTap2
1/27/2012
1/27/2012
10
2. T kha (keyword)
break
case
char
const
continue default
do
double else
enum
float
goto
if
int
interrupt long
return
short
signed
sizeof
static
switch
typedef union
unsigned void
struct
for
while
1/27/2012
11
1/27/2012
12
3. nh danh (Identifier)
Bin
Hng s
Hm
Kiu d liu
nh danh c th c t bi
Ngn ng lp trnh cc t kha
Ngi lp trnh
1/27/2012
13
3. nh danhV d
nh danh hp l:
nh danh nn c tnh gi nh
Nn s dng du gch di phn tch
cc nh danh gm nhiu t
i, x, y, a, b, _function,
_MY_CONSTANT, PI, gia_tri_1
nh danh khng hp l
1_a, 3d, 55x
(bt u bng ch s)
so luong, sin()
(c k t khng hp l, du
cch, du ngoc..)
int, char
(trng vi t kha ca C)
1/27/2012
16
4. Cc kiu d liu
Mt kiu d liu l mt tp hp cc gi tr
m mt d liu thuc kiu d liu c th
nhn c.
V d: Mt i tng kiu int ca C s l
Mt s nguyn (S nguyn c du, 2 byte)
Gi tr thuc khong: [-32,768 (-215) 32,767 (215-1)]
1/27/2012
17
V d
Tn php ton
o du
Cng;Tr;Nhn
Chia ly nguyn
K hiu
+;-;*
/
Chia ly phn d
So snh
Logic bit: AND; OR;
XOR;NOT, Shift,
%
17%32
>, <, >=, <=, ==, !=
&;|;
3^17 18
^ ; ~ ; <<; >>
~3 -4
1/27/2012
17/35
18
5. Hng
Gi tr
thp phn
2011
Gi tr
Gi tr
thp lc phn
bt phn
0x7DB
03733
Hng chui/xu k t
396
0x18C
Hng s thc
1/27/2012
19
0614
1/27/2012
20
5. Hng Hng k t
S thc du phy ng
K t
Dng nhy n
Dng m ASCII
3.14159
31.4159 E-1
Ch ci A
123.456
Du nhy n
K t tab
\t
0, 0x09, 011
1/27/2012
21
22
6. Bin (variable)
Bin l i lng m gi tr c th thay i
trong chng trnh.
Tn bin phi c t theo quy tc t tn
V d:
ngon ngu lap trinh C
Lu :
1/27/2012
1/27/2012
1/27/2012
24
7. Hm Mt s hm ton hc
7. Hm (function)
Hm
sqrt(x)
ngha
Cn bc 2 ca x
sqrt(16.0) 4.0
pow(x,y)
X m y ( xy )
pow(2,3) 8
fabs(x)
exp(x)
log(x)
log10(x)
sin(x)
Tr tuyt i ca x ( |x| )
E m x ( ex )
Logarithm t nhin ca x (ln x)
Logarithm c s 10 ca x (logx)
Cc hm lng gic
fabs(-5.0) 5.0
exp(1.0)2.71828
Log(2.718)0.999
Log10(100) 2.00
ceil(2.5)=3
ceil(-2.5)=-2
floor(2.5)=2
floor(-2.5)=-3
V d
cos(x)/ tan(x)
Hm khng tr li mt gi tr: Th tc
ceil(x)
V d: clrscr()
floor(x)
1/27/2012
25
1/27/2012
8. Biu thc
9. Cu lnh (statement)
Rng
1/27/2012
D
y
Cao
27
1/27/2012
28
Cu lnh n:
Nhng cu lnh khng cha cu lnh khc.
V d: Php gn, gi hm, vo/ra d liu
Cc cu lnh phc:
Nhng cu lnh cha cu lnh khc.
V d: Lnh khi (Tp cc lnh n nhm li vi
nhau v t trong cp ngoc nhn { } )
1/27/2012
26
29
1/27/2012
30
Ni dung chnh
Cc phn c bn
Khai bo cc tp tiu
#include
2. Cc phn t c bn ca ngn ng C
3. Cu trc c bn ca chng trnh C
nh ngha hm main()
{
}
nh ngha cc hm khai bo nguyn mu
1/27/2012
31
1/27/2012
32
1. Khai bo cc tp tiu
Lit k danh sch th vin s c s dng
trong chng trnh
Cc hm ca C u thuc mt th vin no
Khng khai bo th vin, trnh bin dch khng
hiu c hm (c th bo li)
Cc kiu d liu mi
Cc hng, bin
Cc nguyn hm
2. #include ThuVien.h
Tm kim th vin ti th mc hin ti
1/27/2012
33
Tn hm
Danh sch cc kiu tham s s truyn vo
Kiu d liu tr v
Khai bo hng
const float PI = 3.1415;
#define Max 50
V d
float DienTichTamGiac(float a, float b, float c);
int getMax(int Arr []);
C th b tn tham s
void swap(int * a, int * b);
Khai bo bin
int N;
float Delta, x1, x2;
1/27/2012
34
V d:
1/27/2012
1/27/2012
36
3. nh ngha hm main()
4. nh ngha cc hm khai bo
Bt buc phi c
L hm c bit trong C, nh du im bt
u ca mi chng trnh C
V d
float DienTichTamGiac(float a, float b, float c){
float p = (a+b+c)/2;
return sqrt(p*(p-a)*(p-b)*(p-c));
}
C php
void main(){.}
void main(int argc, char * argv[ ]){.}
int main(){.; return 0;}
int main(int argc, char * argv[ ]){.; return 0;}
1/27/2012
37
38
Ch
1/27/2012
1/27/2012
39
1. #include <stdio.h>
2. int main(){
//Khng cn tham s dng lnh
3.
printf("Hello world! \n");
4.
return 0; //Tr v gi tr 0
5. }
1. Np th vin stdio.h vo, y l th vin vo ra chun
(standard input output) cha khai bo nguyn hm cho
hm printf
2. im bt u thc hin ca chng trnh. My tnh thc
hin cc cu lnh nm trong cp ngoc {} ca main()
3. Hm printf in ra mt hng chui, c kt thuc bi du
xung dng (\n)
4. Tr v h iu hnh mt gi tr. Gi tr 0 thng dng
th hin chng trnh khng c li
1/27/2012
40
Ni dung chnh
2. Cc phn t c bn ca ngn ng C
M thc thi
Executable code
Lin kt
Link
Dch
Compiler
M hp ng
Assembly code
M i tng
Object code
Hp dch
Asembler
Th vin
Libraries
1/27/2012
41
1/27/2012
42
B2: Ci t Turbo C
Tm n th mc cha b ci (C:\TC_Setup)
Kch hot file INSTALL.EXE
1/27/2012
43
1/27/2012
44
B3: Xc nh th mc ci t. Th mc ny s cha
cc file ca TC c s dng v sau.
1/27/2012
1/27/2012
46
To ca s son tho mi
Chn menu File (hoc n Alt+F) chn New
47
1/27/2012
48
Phn 3: Lp trnh C
Tm tt
Ni dung chnh
Chng 1: Tng quan v ngn ng C
2. Cc phn t c bn ca ngn ng C
Chng 3: Vo ra d liu
10 phn t c bn
4 phn
Chng 6: Cu trc
Chng 7: Hm
Chng 8: Tp d liu
1/27/2012
49
1/27/2012
50
Ni dung chnh
Cc kiu n
Kiu d liu ngha
Kch thc
Min d liu
char
K t;
S nguyn c du
1 byte
-128 127
int
short int
S nguyn
c du
2 byte
-32.76832.767
3. Cc ton t trong C
long
S nguyn c du
4 byte
-2,147,483,648
2,147,483,647
float
S thc du phy
ng,
chnh xc n
4 byte
3.4E-38
3.4E+38
double
S thc du phy
ng,
chnh xc kp
8 byte
1.7E-308
1.7E+308
long int
4. Mt s ton t c trng
1/27/2012
51
Cc kiu kt hp
ngha
unsigned char
S nguyn
khng du
1 byte
0 255
unsigned short
unsigned
unsigned int
unsigned long
unsigned long int
long double
S nguyn
khng du
2 byte
065.535
S nguyn
khng du
4 byte
0 4,294,967,295
S thc du
phy ng,
10 byte
3.4E-4932
1.1E+4932
void
52
1/27/2012
1/27/2012
Kiu d liu
V d
ngha
S nguyn
123, -12
S thp phn
012, 03777
S bt phn
0x7F, 0x3fe15
39u 0267u, 0xFFu
12L, 07723L
0xFFL, -10L
0xFFUL,0xFFLU
3.1415 -12.3, .327
10e-12, -15.3E12
3.1415F, -12.F
S h 16
S khng du
S nguyn ln
S thc
1/27/2012
54
Khai bo bin
Khai bo bin
Sau khi khai bo, bin cha c gi tr xc nh.
int n; m = 2 * n; m=?
Bin cn c gn gi tr trc khi s dng
KieuDuLieu TenBien;
V d:
int x;
float
int a = 3;
y,z;
x = 3;
y = x + 1;
55
1/27/2012
56
Khai bo hng
Khai bo hng
Dng ch th
#define
C php:
Khng c du
chm phy (;)
C php:
V d:
V d:
#define MAX_SINH_VIEN 50
1/27/2012
57
58
Ni dung chnh
Khai bo hng
Ch :
Gi tr ca cc hng phi c xc nh ngay
khi khai bo.
Trong chng trnh, KHNG th thay i
c gi tr ca hng.
#define l ch th tin x l
D c, d thay i
D chuyn i gia cc nn tng phn cng hn
Tc nhanh hn
1/27/2012
1/27/2012
59
1/27/2012
60
10
Mc ch s dng
: alpha + sqrt(81)
: alpha + 9.0
: 10 + 9.0
: 19.0
61
1/27/2012
62
Biu thc s hc
L biu thc m gi tr ca n l cc i
lng s hc (s nguyn, s thc).
Biu th s hc
3 * 3.7
8 + 6/3
a + b c
1/27/2012
63
1/27/2012
64
V logic,
s dng ton t
&&
OR
||
65
1/27/2012
11
Ni dung chnh
67
1/27/2012
Cc ton t chnh
Cc ton t s hc
Ton
t
69
ngha
Kiu d liu ca
ton hng
V d
(int a = 12; float x=3.0)
o du
-12, -12.34, - a, - x
- -a 12, --a ?
+
*
Cng
12 + -x 9.0
Tr
12.0 - -3 15.0
Nhn
12 * 3.0 36.0
12 * 3 36
Chia
Nu c t nht 1 ton
hng l s thc
17.0/3.0 5.666667
17/3.0 5.666667
17.0/3 5.666667
/
%
17/35
Chia ly d
17%3 2
1/27/2012
70
Cc ton t quan h
Cc ton t logic
Cc ton t
6 > 4 Tr v gi tr 1
6 < 4 Tr v gi tr 0
int b =(x !=y);
Nu x v y khc nhau, biu thc ng v b mang gi tr 1.
Ngc li biu thc sai v b mang gi tr 0
1/27/2012
68
5 * (12 > 6) 5
V logic:
Hoc logic:
Op1 || Op2
Ph nh logic:
71
1/27/2012
! Op
72
12
V logic ( && ) :
Cho kt qu ng (tr v gi tr 1) khi c 2 ton
hng u ng (khc 0)
V d: 3 < 5 && 4 < 6 1; 3 < 5 && 5 > 6 0
Hoc logic ( || ):
Hoc nh phn :
Op1 | Op2
o bt nh phn :
Dch tri:
1/27/2012
~ Op
Oprand: Ton hng
Ph nh logic ( ! ):
1/27/2012
74
Op
3;
75
Op
3;
76
Ton t gn
Ton t gn
Bin = Biu_thc;
K t = l ton t gn
Biu thc bn phi du bng tc tnh ton
Gi tr ca biu_thc c gn cho bin
V d:
int
a =
b =
c =
V nh phn:
a, b, c;
3;
a + 5;
a * b;
V d:
int a, b, c;
a = b = 2007;
c = (a = 20) * (b = 30);// c600
1/27/2012
77
1/27/2012
78
13
Ton t gn Dng kt hp
Ni dung chnh
Ton t s hc:
+=
V d:
-=
*=
/=
a *= b
%=
// a= a * b
^=
// x = x & 0x3F
Ton t dch:
<<= >>=
s <<= 4
V d:
// s = s << 4
1/27/2012
3. Cc ton t trong C
4. Mt s ton t c trng
79
1/27/2012
80
Cc ton t
Tng gim t ng mt n v
Tng/gim t ng mt n v
Tng t ng
--
Gim t ng
++Var, Var++
--Var, Var-Variable: Bin
Ly a ch
Biu thc iu kin
int
Ton t phy
1/27/2012
++
81
1/27/2012
a = 5, b, c, d, e;
b = a++;
c = ++a;
d = a--;
e = --a;
// b = 5 sau a = 6
// a = 7 ri ti c = 7
// d = 7 ri ti a = 6
// a = 5 sau e= 5
82
Ton t ly a ch
& Tn_bin
K t & l ton t ly a ch bin
Bin thc cht l mt vng
nh ca my tnh c t tn
tn ca bin
Mi nh trn b nh my
tnh u c nh a ch.
Mi bin u c a ch
V d:
int a = 2006;
&a a ch ca nh dng
Kiu a ch?
cha gi tr bin a
1/27/2012
1/27/2012
84
14
Ton t phy
Chuyn kiu
(Kiu) biu thc
Chuyn kiu t ng
p kiu
Bng cu lnh tng minh trong chng trnh
c s dng khi mun chuyn sang kiu c
phm vi biu din thp hn
85
Th t u tin cc ton t
Chuyn kiuV d
#include <stdio.h>
#include <conio.h>
87
Mc
1
Ton t
-> . [ ] () ++ hu t --hu t
Chc nng
La chn, ch s
++ -- ~ ! + - * & () sizeof
3
4
5
6
7
8
9
10
11
12
13
14
* / %
+ >> <<
< <= > >=
== !=
&
^
|
&&
||
?:
= *= += <<= &= ...
Ton t s hc lp nhn
Ton t s hc lp cng
Dch bit
Ton t quan h
Bng, khc
AND nh phn
XOR nh phn
OR nh phn
AND logic
OR logic
Ton t phng iu kin
Ton t gn
1/27/2012
Th t u tin cc ton t
V d
Nguyn tc
Biu thc con trong ngoc c tnh ton trc
Php ton mt ngi ng bn tri ton hng c
kt hp vi ton hng i lin n.
Ton hng ng cnh hai ton t
int a= 3, b=4, c;
c = a++ * ++b;
a=.. b= c=
S=. b =..
V d
a < 10 && 2 * b < c ( a < 10 ) && ( ( 2 * b ) < c )
Ch : int x = 5, a = 5 * x++; a = 25, x = 6
88
1/27/2012
Chiu
1/27/2012
86
void main(){
long L = 0xABCDEF; float f = 123.456;
int i;
L = 11259375; i = -12817(CDEF)
clrscr();
f = 123.456001; L = 123; i = 123
i = (int) L;
printf(\n L = %ld; i = %d(%X), L, i, i);
i = (int) f; L = (long) f;
printf(\n f = %f; L = %ld; i = %d, f, L, i);
}
1/27/2012
89
int k ,num=30;
k =num>5 ? (num <=10 ? 100 : 200): 500;
k=?
1/27/2012
90
15
Phn 3: Lp trnh C
Tm tt
Kiu d liu
Nguyn
Ni dung chnh
Chng 1: Tng quan v ngn ng C
Thc
Gi tr logic
ng/TRUE : 1 (Khc 0)
Sai/FALSE : 0
Ton t
Mt ngi
Hai ngi
3 ngi
1/27/2012
Chng 6: Cu trc
Chng 7: Hm
Chng 8: Tp d liu
91
Chng 3: Vo ra d liu
92
3.1 Cc hm vo ra c bn
Ni dung chnh
Cc hm vo ra c bn
a ra d liu:
1. Cc hm vo ra c bn:
printf()
printf()
scanf()
Nhp d liu
scanf()
2. Cc hm vo ra khc
Cn np th vin stdio.h
gets()
puts()
getch()
1/27/2012
1/27/2012
khai bo tp tiu :
#include <stdio.h>
93
1/27/2012
94
3.1 Cc hm vo ra c bn printf()
3.1 Cc hm vo ra c bn
Hm a ra d liu
Mc ch
Hin th ra mn hnh cc loi d liu c bn
S nguyn, s thc, k t, xu k t
printf()
C php
printf(xau_dinh_dang [, DS_tham_so]);
1/27/2012
95
1/27/2012
96
16
3.1 Cc hm vo ra c bn printf()
3.1 Cc hm vo ra c bn printf()
C php
V d
printf(xau_dinh_dang [, DS_tham_so]);
#include <stdio.h>
void main()
{ int a = 5;
float x = 1.234;
printf( Hien thi mot bieu thuc nguyen %d v
mot so thuc %f ,2 * a, x);
}
Kt qu:
1/27/2012
97
1/27/2012
98
3.1 Cc hm vo ra c bn printf()
3.1 Cc hm vo ra c bn printf()
Xu nh dng
Nhm k t nh dng
Mi nhm k t nh dng ch dng cho mt
kiu d liu
V d: %d dng cho kiu nguyn
%f dng cho kiu thc
DS_tham_so phi ph hp vi cc nhm k
t nh dng trong xau_dinh_dang v:
Cc k t thng thng:
c hin th ra mn hnh.
Cc k t iu khin:
Dng to cc hiu ng hin th c bit nh
xung dng (\n)..
Cc nhm k t nh dng:
S lng;
Th t
Kiu d liu;
99
Nu khng ph hp s hin
th ra kt qu khng nh
printf( %d ,3.14); -31457
C-Free 1374389535 !?
1/27/2012
100
3.1 Cc hm vo ra c bn printf()
3.1 Cc hm vo ra c bn printf()
Cc k t nh dng
Cc k t nh dng
K t
K t
%i, %d
Kiu d liu
int, char
Kt qu
S thp phn
%o
int, char
S bt phn
(khng c 0 ng trc)
%x %X
int, char
S hexa
%u
Kiu d liu
Kt qu
%ld, %li
long
S thp phn
%lo
long
S bt phn
(khng c 0 ng trc)
%lx, %LX
long
S hexa
(ch thng/ch hoa)
%lu
Nhn xt:
Vi kiu long, thm k t l ngay sau du %
1/27/2012
101
1/27/2012
102
17
3.1 Cc hm vo ra c bn printf()
3.1 Cc hm vo ra c bn printf()
Cc k t nh dng
K t
%f
Kiu d liu
Kt qu
float/double S thc du phy tnh
%e, %E float/double
S thc du phy ng
%c
int, char
K t n l
%s
char []
Hin th xu k t kt
thc bi \0
Hin th k t %
%%
C dng %m,
m l mt gi tr nguyn, khng m.
m cho bit s ch trng dnh cho hin th
biu thc tng ng
V d:
int a = 1234;
printf(%5d,a) 1234
printf(%5d,34)
34
k hiu cho du trng (space)
1/27/2012
103
1/27/2012
104
3.1 Cc hm vo ra c bn printf()
3.1 Cc hm vo ra c bn printf()
C dng %m.n,
printf("\n%3d %15s %3c", 1, "nguyen van a", 'g');
printf("\n%3d %15s %3c", 2, "tran van b", 'k');
nguyen van a
tran van b
1/27/2012
105
3.1 Cc hm vo ra c bn printf()
rng hin th Ch
Nu s ch cn hin th d liu ln hn
c cung cp trong nh dng T ng
cung cp thm ch mi hin th y ,
khng ct bt ni dung ca d liu.
V d:
printf(%2d, 1234); 1234
printf(%6.3f, 123.456); 123.456
printf(%12.6e, 123.456); 1.234560e+02
printf(%12.3e, 123.456);
1.235e+02
C-Free
1.235e+002
1/27/2012
107
m, n l 2 gi tr nguyn, khng m.
m cho bit kch thc hin th s thc
n cho bit kch thc dnh cho phn
thp phn, nu khng C s lm trn
khi hin th
V d:
printf("\n%f",17.345);
17.345000
printf("\n%.2f",17.345);
17.35
printf("\n%8.2f",17.345);
17.35
1/27/2012
106
3.1 Cc hm vo ra c bn printf()
Cn l tri - cn l phi
V d:
printf("%-3d%-10s%-5.2f%-3c",5,"Hello",7.5, 'g')
5
1/27/2012
Hello
7.50 g
108
18
3.1 Cc hm vo ra c bn scanf()
3.1 Cc hm vo ra c bn
Hm nhp d liu
Mc ch
Dng nhp d liu t bn phm
K t n l
Chui k t
S nguyn
scanf()
S thc
Du phy tnh; Du phy ng
C php
scanf(xau_dinh_dang[,DS_dia_chi]);
1/27/2012
109
110
3.1 Cc hm vo ra c bn scanf()
3.1 Cc hm vo ra c bn scanf()
C php
Ha ng
scanf(xau_dinh_dang [, DS_dia_chi]);
Xau_dinh_dang:
Gm cc k t c qui nh cho tng loi
d liu c nhp vo.
c cc k t c g vo t bn phm
Cn c vo xu nh dng, chuyn thng
tin nhp sang kiu d liu ph hp
DS_dia_chi:
Bao gm a ch ca cc bin (ton t &),
phn tch nhau bi du phy (,)
Phi ph hp vi cc k t nh dng trong
xau_dinh_dang v s lng, kiu, th t 111
1/27/2012
112
3.1 Cc hm vo ra c bn scanf()
3.1 Cc hm vo ra c bn scanf()
Ghi ch
Thng tin c g vo t bn phm, c lu
vng m trc khi c x l bi hm
scanf()Hm scanf() c t vng m
#include <stdio.h>
int main(){
int a, b;
scanf("%d",&a);
scanf("%d",&b);
printf ("%d %d", a, b);
return 0;
}
1/27/2012
1/27/2012
113
Cc k t nh dng
K t
%c
c k t n l
%d
c s thp phn
%o
c s bt phn
%x
c s hexa
%u
1/27/2012
114
19
3.1 Cc hm vo ra c bn scanf()
3.1 Cc hm vo ra c bn scanf()
Cc k t nh dng
K t
V d
Ch thch
%s
%f
%ld
%lf
%e
c s thc du phy ng
%%
c k t %
1/27/2012
115
#include <conio.h>
#include <stdio.h>
void main(){
// khai bao bien
int a; float x;
char ch; char str[30];
// Nhap du lieu
printf(Nhap vao mot so nguyen:); scanf(%d,&a);
printf(\nNhap vao mot so thuc:); scanf(%f,&x);
printf(\n Nhap vao mot ki tu:);
fflush(stdin); scanf(%c,&ch);
1/27/2012
116
3.1 Cc hm vo ra c bn scanf()
3.1 Cc hm vo ra c bn scanf()
V d
117
118
3.1 Cc hm vo ra c bn scanf()
3.1 Cc hm vo ra c bn scanf()
Cc quy tc cn lu
Cc quy tc cn lu
Khi c s
Khi c k t
Hm scanf() cho rng mi k t c trong b m
ca thit b vo chun u l hp l, k c cc k
t tab, xung dng hay du cch
Khi c xu k t:
1/27/2012
1/27/2012
1/27/2012
120
20
3.1 Cc hm vo ra c bn scanf()
3.1 Cc hm vo ra c bn scanf()
#include <stdio.h>
int main(){
int A, B;
printf("Nhap vao 2 so nguyen : "); scanf("%d %d",&A,&B);
printf("\n");
printf("Tong %d + %d = %d \n", A, B, A + B);
printf("Hieu %d - %d = %d\n", A, B, A - B);
printf("Tich %d x %d = %d\n", A, B, A * B);
printf("Thuong %d / %d = %.3f\n", A, B, (float)A / B);
printf("Chia nguyen %d / %d = %d\n", A, B, A / B);
printf("Chia du %d %% %d = %d\n", A, B, A % B);
printf("\n");
return 0;
}
1/27/2012
121
1/27/2012
122
3.1 Cc hm vo ra c bn scanf()
3.1 Cc hm vo ra c bn scanf()
Bi tp
1. Vit chng trnh nhp vo t bn phm chiu
di 3 cnh ca mt tam gic, ri a ra din
tch v cc ng cao ca tam gic
2. Nhp vo t bn phm ta 3 im A,B,C ri
a ra di cc cnh ca tam gic ABC v
ca ng trung tuyn AM
3. Cho hm s: f ( x) = x 7 + 53 x 5 + 3 x 3 + 2 + 12
Vit chng trnh nhp vo 3 s thc a,b,c v a ra
trung bnh cng ca f(a),f(b),f(c)
log 7 (3 x + 2.14b)
1/27/2012
123
#include <stdio.h>
#include <math.h>
int main(){
float Ax,Ay, Bx, By, Cx, Cy, AB, BC, CA,p;
printf("Nhap vao toa do diem A : "); scanf("%f %f",&Ax,&Ay);
printf("Nhap vao toa do diem B : "); scanf("%f %f",&Bx,&By);
printf("Nhap vao toa do diem C : "); scanf("%f %f",&Cx,&Cy);
//Tinh do dai cac canh cua tam giac
AB = sqrt((Ax-Bx)*(Ax-Bx)+(Ay-By)*(Ay-By));
BC = sqrt((Bx-Cx)*(Bx-Cx)+(By-Cy)*(By-Cy));
CA = sqrt((Cx-Ax)*(Cx-Ax)+(Cy-Ay)*(Cy-Ay));
p = (AB +BC +CA)/2;
printf("Dien tich tam giac ABC la: %f",sqrt(p*(p-AB)*(p-BC)*(p-CA)));
printf("\n");
return 0;
}
1/27/2012
124
Chng 3: Vo ra d liu
3.1 Cc hm vo ra c bn scanf()
Ni dung chnh
1. Cc hm vo ra c bn:
printf()
scanf()
2. Cc hm vo ra khc
Cn np th vin
gets()
conio.h
puts()
#include <conio.h>
getch()
1/27/2012
125
1/27/2012
126
21
3.2 Cc hm vo ra khc
3.2 Cc hm vo ra khc
gets()
puts()
Mc ch:
Mc ch:
Dng nhp vo t bn phm mt xu
k t bao gm c du cch, iu m
hm scanf() khng lm c.
C php :
gets (xu_k_t);
V d:
1/27/2012
C php:
puts(xu_k_t);
V d:
puts(Nhap vao xau ki tu:);
Tng ng vi lnh:
printf(%s\n,Nhap vao xau ki tu:).
127
1/27/2012
128
3.2 Cc hm vo ra khc
3.2 Cc hm vo ra khc
getch()
V d
Mc ch
#include <conio.h>
#include <stdio.h>
void main(){
char ten[30], lop[10]; //Kieu chuoi, mang ky tu
puts("Hay cho biet ten ban : ");
fflush(stdin); gets(ten);
puts("Hay cho biet lop ban hoc : ");
fflush(stdin); gets(lop);
i c mt k t bn phm
Thng dng ch ngi s dng
n mt phm bt k trc khi kt thc
chng trnh.
C php
getch();
1/27/2012
}1/27/2012
130
Chng 3: Vo ra d liu
3.2 Cc hm vo ra khc
V d Kt qu thc hin
Tm tt
Cc hm c bn (stdio.h)
printf()/ scanf ()
Xu nh dng:
%[flags][width][.precision][l][t]
flags (+/-,#): Xc nh s cn l
l (l/L): Bin dng long
t (d/i/o/u/x/X/f/e/E/g/G/c/s/%): kiu hin th
Cc hm khc (conio.h)
puts() / gets() / getch()
Tm hiu thm
1/27/2012
131
132
22
Phn 3: Lp trnh C
Ni dung chnh
Ni dung chnh
3. Cu trc lp
Vng lp for
Vng lp while v do while
Chng 7: Hm
Cu lnh continue
Cu lnh break
Chng 8: Tp d liu
1/27/2012
133
1/27/2012
Ch :
1/27/2012
136
V d
#include <conio.h>
#include <stdio.h>
void main(){ // ham main() cung la mot khoi lenh
int c = 10, d= 20;
printf( Bien ngoai khoi c = %d; d=%d ,c,d);
{
int c = 10;
printf(\n Bien trong khoi c = %d; d=%d,c,d);
printf(\n Gia tri cua cac bien duoc them 10 don vi);
c = c + 10; d= d + 10;
printf(\n Bien trong khoi c = %d; d=%d,c,d);
}
printf(\n Bien ra ngoai khoi c = %d; d=%d,c,d);
getch();
} // ket thuc khoi lenh cua ham main()
1/27/2012
134
1/27/2012
138
23
Ni dung chnh
Cu trc if
ng
Cu lnh tip
Vng lp for
Vng lp while v do while
139
if (n % 2 == 0)
printf(so chan);
1/27/2012
140
Cu trc if.else.
Lu
Biu thc iu kin:
Sai
Cu lnh 2
Cu lnh 1
Cu lnh tip
if (Biu thc iu kin)
Cu lnh 1;
if (x > y)
z = x;
else
else
Cu lnh 2;
Cu lnh k tip;
V d
if (2+5) printf(Hello world! );Chp nhn
Cu lnh:
C th l mt lnh khi ( t trong cp { } )
z = y;
printf(max: %d, z);
1/27/2012
141
1/27/2012
142
#include <conio.h>
#include <stdio.h>
void main()
{
float a, b; float max; // khai bao bien
printf( Nhap gia tri a va b: );
scanf(%f %f,&a,&b);
if(a < b)
max = b;
else
max = a;
printf(\nSo lon nhat trong 2 so %.4f va %.4f la %.4f ,a,b,max);
getch();
} //ket thuc ham main()
1/27/2012
Sai
Cu lnh
3. Cu trc lp
ng
if(a < b)
max = b;
else
max = a;
143
1/27/2012
max = a > b ? a : b;
144
24
1/27/2012
145
146
V d: Nhp x v tnh hm
#include <stdio.h>
x 2 + sin 4 2x + 1
khi x < 3
#include <math.h>
khi x = 3
f ( x) = 5
void main()
2
{
x 3 + log10 ( x 3) khi x > 3
float x, fx;
printf(\nNhap x: ); scanf(%f,&x);
if(x < 3)
fx = x*x+pow(sin(2*M_PI*x),4)+1;
else
if (x==3)
fx = 5;
else
fx = sqrt(x-3) +log10(x*x-3);
printf(\n Ket qu: %.4f,fx);
}
1/27/2012
147
if (/k_1)
{ if (/k_2)
lnh_1;
lnh_1;
else
lnh_2;
}
else
lnh_2;
1/27/2012
148
int a, b, c = 10;
switch (bieu_thuc)
if (a==0)
if (b == 0)
c = 20;
else
c = 30;
a 0, b=? c = 10
if (a==0){
if (b == 0)
c = 20;
}else
c = 30;
a 0, b=? c = 30
1/27/2012
1/27/2012
c = 20
a=0, b 0 c = 30
a=0, b=0
a=0, b=0
c = 20
Cu_lnh_tip
a=0, b 0 c = 10
149
1/27/2012
150
25
Tnh g/tr
Biu thc
g/tr b/t=G/tr 1
C ch hot ng
Sai
g/tr b/t=G/tr 2
Sai
ng
ng
Lnh_1
break ?
ng
break ?
Lnh_n+1
Sai
ng
break ?
Tnh gi tr ca biu_thc,
So snh gi tr ca biu_thc vi cc
gi_tr_k (vi k = 1, 2, n) nm sau cc
t kha case
ng
Lnh_2
Sai
Sai
default ?
Xy ra 2 kh nng
Sai
ng
Cu_lnh_tip
1/27/2012
151
1/27/2012
Nu c nhn default:
1/27/2012
153
1/27/2012
154
Lp trnh c t bn phm mt s
nguyn 1N 10 v a ra t ting
Anh tng ng
1/27/2012
152
155
#include <stdio.h>
void main(){
int N;
printf(\nNhap mot gia tri so nguyen khong am: ); scanf(%d,&N);
switch(N) {
case 1: printf( %d -> One \n,N); break;
case 2: printf(%d -> Two \n,N); break;
case 3: printf(%d -> Three \n,N); break;
case 4: printf(%d -> Four \n,N); break;
case 5: printf(%d -> Five \n,N); break;
case 6: printf(%d -> Six \n,N); break;
case 7: printf(%d -> Seven \n,N); break;
case 8: printf(%d -> Eight \n,N); break;
case 9: printf(%d -> Nine \n,N); break;
case 10: printf(%d -> Ten \n,N); break;
default : printf(Khong thoa man dieu kien [1..10] \n);
}
}
1/27/2012
156
26
1/27/2012
157
1/27/2012
159
1/27/2012
160
158
#include <conio.h>
#include <stdio.h>
void main(){
int a;
printf(\nNhap mot gia tri so nguyen khong am: ); scanf(%d,&a);
switch(a % 7) {
case 0: printf( Chu nhat); break;
case 1: printf( Thu Hai); break;
case 2: printf( Thu Ba); break;
case 3: printf( Thu Tu); break;
case 4: printf( Thu Nam); break;
case 5: printf( Thu Sau); break;
case 6: printf( Thu Bay); break;
}
getch();
}
1/27/2012
161
#include <conio.h>
#include <stdio.h>
void main () {
int thang; clrscr();
printf("\nNhap vao thang trong nam "); sanf("%d",&thang);
switch(thang) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: printf("\n Thang %d co 31 ngay ",thang);
break;
1/27/2012
162
27
case 4:
case 6:
case 9:
case 11: printf("\n Thang %d co 30 ngay ",thang);
break;
case 2: printf ("\ Thang 2 co 28 hoac 29 ngay");
break;
default : printf("\n Khong co thang %d", thang);
break;
}
getch();
}
1/27/2012
163
164
Cc v d
V d 1: Tnh cc taxi
a2 x + b2 y = c2
1/27/2012
165
#include <stdio.h>
#include <math.h>
void main() {
unsigned long sotien;
float sokm;
printf("\nBan hay cho biet so km da di duoc : ");
scanf("%f", &sokm);
if (sokm <= 1.0)
sotien = 10000;
else
if (sokm <= 31.0)
sotien = 10000 + (ceil(sokm) - 1.0 ) * 8000;
else
sotien = 250000 + (ceil(sokm) - 31) * 6000;
printf("\nSo tien can tra = %lud", sotien);
}
1/27/2012
166
1/27/2012
167
1/27/2012
168
28
1/27/2012
169
#include <stdio.h>
void main() {
float a1,b1,c1,a2,b2,c2,x,y,dx,dy,d;
printf(\n\nNhap cac so:\n");
printf("a1,b1,c1=");scanf("%f%f%f",&a1,&b1,&c1);
printf("a2,b2,c2=");scanf("%f%f%f",&a2,&b2,&c2);
d = a1 * b2 - a2 * b1;
dx = c1 * b2 - c2 * b1;
dy = a1 * c2 - a2 * c1;
if (d != 0) {
x = dx/d; y = dy/d;
printf("He PT co nghiem x=%f, y=%f\n",x,y);
}else
if (dx==0) printf("He PT co vo so nghiem!\n");
else printf("He phuong trinh vo nghiem!");
}1/27/2012
170
Bi tp
1. Vit chng trnh nhp vo mt k t h hexa v
a ra gi tr h 10 tng ng
2. Lp trnh c ta 4 im A,B,C,M ri kim tra
xem im M nm trong, nm trn cnh hay nm
ngoi tam gic ABC.
3. Lp trnh c vo t bn phm 2 gi tr a, b ri
tnh y = 15 x2+x+7.2 trong
1/27/2012
171
1/27/2012
a + b
n' u a < b
3
x = 1.5172 n' u a = b
a b
2
n' u a > b
2
a + b
172
4.3 Cu trc lp
Ni dung chnh
Cc cu trc lp
Vng lp for
Vng lp while
3. Cu trc lp
Vng lp for
Vng lp while v do while
Vng lp do while
173
1/27/2012
174
29
4.3 Cu trc lp
4.3 Cu trc lp
Mc ch v c php
Dng lp cng vic mt s chnh xc ln
nh trc da vo s bin thin ca
bin iu khin
for
for([b.thuc_1];[b.thuc_2];[b.thuc_3]) Lnh;
1/27/2012
175
1/27/2012
4.3 Cu trc lp
4.3 Cu trc lp
S c php
176
S dng
int i;
for(i = 0; i < 100; i++) Cu_lnh;
int i;
for(i = 0; i < 100; i+=2)Cu_lnh;
int i;
for(i = 100; i > 0; i--) Cu_lnh;
for(int i = 0; i < 100; i++) Lnh;
for(int i = 100; i > 0; i--) Lnh;
1/27/2012
177
1/27/2012
4.3 Cu trc lp
4.3 Cu trc lp
178
V d 1 : a ra cc s nguyn l nh hn 100
V d 2 : a ra cc s nguyn l nh hn 100
#include <stdio.h>
#include <stdio.h>
#include <conio.h>
void main(){
int i;
for(i = 1;i<100;i++) {
if(i%2 == 1) printf(%5d,i);
if((i+1)%20 ==0) printf(\n);
}
getch();
}
#include <conio.h>
void main(){
int i;
for(i = 99;i > 0;i-=2) {
printf(%5d,i);
if( (i-1) % 20 == 0) printf(\n);
}
getch();
}
1/27/2012
179
1/27/2012
180
30
4.3 Cu trc lp
4.3 Cu trc lp
V d 3 Nhp n v a ra n!
#include <stdio.h>
#include <conio.h>
void main()
{
float S = 0.0;
int n, i;
printf(Nhap n : );scanf(%d,&n);
for(i = 1;i <= n;i++)
S = S + (float)1/i;
printf(Ket qua l %7.4f ,S);
getch();
Nhap n : 10
}
Ket qua l
l 2.9290
#include <stdio.h>
#include <conio.h>
void main()
{
long P = 1;
int n, i;
printf(Nhap n : );scanf(%d,&n);
for(i = 1;i<=n;i++)
P = P * i;
printf(Ket qua l %ld ,P);
getch();
Nhap n : 6
}
Ket qua l
l 720
1/27/2012
181
4.3 Cu trc lp
abc=a3+b3+c3
#include <stdio.h>
#include <conio.h>
void main()
{ int a, b, c;
for(a = 1;a<=9;a++)
for(b = 0;b<=9;b++)
for(c = 0;c<=9;c++)
if(a*a*a+b*b*b+c*c*c==100*a+10*b+c)
printf(%d \n,100*a+10*b+c);
getch();
}
1/27/2012
183
V d 5 Tm s 3 ch s tha mn abc=a3+b3+c3
#include <stdio.h>
#include <conio.h>
void main()
{int i, a, b, c;
for(i = 100;i<1000;i++){
a = i / 100;
b = i % 100 / 10;
c = i % 100 % 10;
if(a*a*a+b*b*b+c*c*c == i)
printf(%d \n,i);
}//for
getch();
}
4.3 Cu trc lp
4.3 Cu trc lp
Ch
153
370
371
407
1/27/2012
184
Ch
182
4.3 Cu trc lp
V d 5 Tm s 3 ch s tha mn
1/27/2012
185
Hello world
Hello world
So ky tu: 11
Hello world
So ky tu: 12
Hello world
So ky tu: 11
186
31
4.3 Cu trc lp
4.3 Cu trc lp
Mc ch & C php
Dng thc hin lp i lp li mt cng vic
no vi s ln lp khng xc nh.
while
C php:
while(bieu_thuc_dieu_kien)
lenh;
Chng trnh kim tra iu kin trc khi lp
Gi tr ca biu thc iu kin l ng thc hin lnh
1/27/2012
187
4.3 Cu trc lp
4.3 Cu trc lp
S c php
Tnh ton gi tr ca
Biu thc iu kin
Lnh
Biu thc != 0
ng
Sai
1/27/2012
189
4.3 Cu trc lp
3n5-317n
<5
#include <stdio.h>
#include <conio.h>
void main()
{
clrscr();
int i=3;
while (i > 1){
if(i % 2==0) i = i / 2;
else i = i * 3 + 1;
printf("%4d",i);
}
getch();
10 5 16 8 4 2 1
}
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main()
n = 10
{
while (3*pow(n,5)-317*n >= 5)
clrscr();
n--;
int n=0;
while (3* pow(n,5) - 317*n < 5) n++;
printf("%4d",n-1);
getch();
}
n= 3
1/27/2012
190
4.3 Cu trc lp
1/27/2012
191
1/27/2012
192
32
4.3 Cu trc lp
4.3 Cu trc lp
do..while
193
1/27/2012
4.3 Cu trc lp
4.3 Cu trc lp
Mc ch & C php
194
S c php
Lnh
C php:
do{
Tnh ton gi tr ca
lenh;
}while(bieu_thuc_dieu_kien);
195
Biu thc != 0
ng
Sai
1/27/2012
4.3 Cu trc lp
4.3 Cu trc lp
V d
#include <stdio.h>
#include <conio.h>
void main(){
long S = 0;
int n;
printf(Nhap n : );scanf(%d,&n);
do {
do
S = S + n;
S += n-n--;;
n = n 1;
while (n> 0);
}while (n > 0);
printf(Ket qua l %ld ,S);
getch();
Nhap n : 96
}
Ket qua l
l 4656
1/27/2012
196
197
1/27/2012
198
33
4.3 Cu trc lp
4.3 Cu trc lp
199
1/27/2012
200
4.3 Cu trc lp
4.3 Cu trc lp
1/27/2012
#include <stdio.h>
fflush(): xa vng m bn phm
#include <ctype.h>
#include <conio.h>
toupper(): chuyn sang ch hoa
void main(){
long int n, tong, i;
getche():
c k t t vng m & hin
char ch;
do
{
th ln mn hnh (getch() th khng)
tong = 0;
printf("\n\nNhap vao mot so nguyen: "); scanf("%ld",&n);
printf("Cac uoc so cua %ld la: ",n);
for(i = 1;i<n;i++)
if(n % i == 0){
printf("%5d",i);
tong = tong + i;
}//if & for
printf("\nTong cac uoc so cua %ld bang %ld",n,tong);
if(tong == n) printf("\n
%5ld LA so hoan thien,n);
else
printf("\n
%5ld KHONG LA so hoan thien,n);
printf("\nBan co muon thuc hien lai(c/k)? ");
fflush(stdin);
}while(toupper(getche()) !='K');
printf("\n\nAn phim bat ki de ket thuc ...");
getch();
}
1/27/2012
202
4.3 Cu trc lp
V d
Vit chng trnh thc hin cng vic
- Nhp vo t bn phm 2 s nguyn
- Nhp vo t bn phm mt k t bt k;
Nu y l mt ton t s hc th a ra
gi tr tng ng vi ton t.
203
1/27/2012
204
34
case '%':
#include <stdio.h>
#include <conio.h>
void main() {
case '/':
int a, b;
char ch;
break;
if (b==0) printf(" Chia cho 0\n");
else printf(" Co ket qua: %d\n",a/b);
break;
int Fin = 0;
clrscr();
case 'q':
case 'Q':
Fin=1;
break;
default: printf(" khong co toan tu nay\n");
}
}while(Fin==0);
printf("\nKet thuc, an mot phim...");
switch(ch){
case '+': printf(" Co ket qua: %d\n",a+b); break;
getch();
}
205
1/27/2012
206
4.3 Cu trc lp
V d: Nhp xu, m s k t ca xu
Khai bo: int n=0; char c;
Dng vng for
for(n=0;;c=getchar(),n++) if(c==\n) break;
for(n=0 ; getchar() != '\n' ; n++);
207
1/27/2012
4.3 Cu trc lp
4.3 Cu trc lp
Bi tp 1
Bi tp 2
208
209
+L+
+L
S =1 x +
2! 3!
n!
1/27/2012
210
35
4.3 Cu trc lp
4.3 Cu trc lp
Bi tp
Tnh hm
5.
for(x=-10.0; x<=5.0; x+=0.1){
6.
if(x==0)
for(int i=-100;i<50;i++){
x=(float)i/10;
7.
fx = 0.0;
.
8.
else
9.
fx = pow(x,5)+x/fabs(x) * pow(fabs(x), 0.2);
10.
printf("<%4.1f,%7.2f>\n",x,fx);
11.
}
12. }
211
1/27/2012
212
4.3 Cu trc lp
c dy s., tm v m s max
Ni dung chnh
1. #include <stdio.h>
2. #include <limits.h>
3. void main(){
4.
int a, d=0, max = INT_MIN;
5.
do {
6.
printf("Nhap mot so : "); scanf("%d",&a);
7.
if( a > max){
8.
max = a;
9.
d = 1;
10.
}else
11.
if (a == max) d++;
12.
}while ( a!= 0);
13.
printf(Max: %d; Co %d gia tri",max,d);
14. }
1/27/2012
1. #include <stdio.h>
2. #include <math.h>
3. void main(){
4.
float x, fx;
x 2 x3
xn
+
+L+
S =1+ x +
n
2
3
x 2 x3
xn
+
+L+
S = 1+ x +
n!
2! 3!
x 2 x3
(1) n x n
S = 1 x +
+L+
2! 3!
n!
1/27/2012
f ( x) = x 5 + 5 x
3. Cu trc lp
Vng lp for
Vng lp while v do while
1/27/2012
214
Mc ch
215
1/27/2012
216
36
continue
V d 1
#include <stdio.h>
#include <conio.h>
void main()
Tnh tng 100 s nguyn u tin
{
ngoi tr cc s chia ht cho 5
int i;
int sum = 0;
for(i = 1;i<=100;i++)
{
if(i % 5 == 0)
for(i=1;i<=100;i++)
continue;
if (i % 5 != 0)
sum += i;
sum += i;
}
}
lp mi
1/27/2012
217
break
V d 2
#include <stdio.h>
#include <conio.h>
void main()
{
int i;
for(i = 1;i<=10;i++)
{
if(i == 5) continue;
printf(%5d,i);
if(i==7) break;
}
getch();
}
1/27/2012
220
V d 3
#include <stdio.h>
#include <conio.h>
void main()
{ int i,j;
clrscr();
for(i = 0;i<10;i++) {
for (j=0; j < 10; j ++) {
if(j > i){
break;
}//if
}//for _ j
printf("i:%d j:%d\n",i,j);
}//for_i
getch();
}
1/27/2012
218
1/27/2012
1/27/2012
221
1/27/2012
222
37
223
1/27/2012
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
#include <stdio.h>
x2 x3
xn
#include <conio.h>
+
+L+
S =1+ x +
2! 3!
n!
void main(){
int n, i;
float x, u = 1.0,S=1.0;
clrscr();
printf("Nhap vao so nguyen n : "); scanf("%d",&n);
printf("Nhap vao so thuc x : ");
scanf("%f",&x);
for(i = 1; i <= n; i ++){
u *= x/i;
S += u;
}
printf("Ket qua la %.8f",S);
getch();
}
1/27/2012
226
V d tng hp
Bt u
i
Nhp s a
224
i+1
i > 100
Kt thc
227
1/27/2012
#include <stdio.h>
void main(){
int a, i;
i = 0;
do{
printf("Nhap vao so nguyen:");
scanf("%d",&a);
i++;
}while (i <= 100);
}
228
38
S+a
S > 1550
Kt thc
#include <stdio.h>
void main(){
int a, S;
S = 0;
do{
printf("Nhap vao so nguyen:");
scanf("%d",&a);
S+=a;
}while (S <= 1550);
}
Bt u
i
S
Nhp s a
S
S+a
i+1
i > 100
S > 1550
#include <stdio.h>
void main(){
int a, i, S;
S = 0; i=0;
do{
printf("Nhap vao so nguyen:");
scanf("%d",&a);
S+=a;
i++;
}while ( (i <=100)&&(S <= 1550) );
}
Kt thc
1/27/2012
229
230
Bt u
#include <stdio.h>
void main(){
int a, i=0,S7=0,d7=0; S7i 0 0
d7 0
do{
printf("Nhap vao so
nguyen:"); scanf("%d",&a);
Nhp s a
i
i+1
i++;
if(a%7==0){
d7 d7+1
a % 7=0
d7++;
S7 S7+1
s
S7+=a;
}
i > 100
s
}while (i <= 100);
if(d7==0)
s
Thng bo: Khng
TBC l: S7/d7
d7=0
printf(Khong
co so
chia het
c scho
chia ht7);
cho 7
else
printf(Ket qua la %.4f,(float) S7/d7);
Kt thc
}
1/27/2012
1/27/2012
231
V d tng hp
#include <stdio.h>
void main(){
int a, i=0,S7=0,d7=0,S=0, d = 0;
do{
printf("Nhap vao so nguyen:"); scanf("%d",&a);
i++; S+=a;
if(a%7==0){
d7++;
S7+=a;
}
if( (a>35) && (a < 70) ) d++;
}while ( (i <=100)&&(S <= 1550) );
printf(So phan tu trong khoang (35,70) la %d \n,d);
if(d7==0) printf(Khong co so chia het cho 7);
else printf(TBC cac so chia het cho 7 %.4f,(float) S7/d7);
1/27/2012
233
}
1/27/2012
232
Tng kt
1. Cu lnh khi
t trong cp ngoc nhn { }
2. Cu trc r nhnh
if (bieu_thuc), if (bieu_thuc) else
switch (bieu_thuc) {(case/break/default)}
3. Cu trc lp
for(bieu_thuc_1; bieu_thuc_2; bieu_thuc_3) CauLenh;
while (bieu_thuc) CauLenh;
do Cau_Lenh while (bieu_thuc);
234
39
Phn 3: Lp trnh C
Ni dung chnh
Ni dung chnh
1. Mng
Khi nim
Khai bo v s dng
Cc thao tc thng gp
2. Con tr
3. Xu k t
Chng 7: Hm
Chng 8: Tp d liu
1/27/2012
235
Khi nim
Khai bo v s dng
Cc hm x l k t v xu k t
1/27/2012
236
5.1 Mng
5.1 Mng
Thng trong nm
im trung bnh ca sinh vin trong lp
Cc i tng c nhm li di mt tn
i tng c c trng bi tn nhm v
th t trong nhm
Thng th 3 trong nm: Thng 3
Sinh vin th 17 trong lp:
Mt s hu hn thnh phn.
Cc thnh phn c cng mt kiu: kiu c s
hay l kiu thnh phn.
237
1/27/2012
5.1 Mng
5.1 Mng
Khai bo mng
238
A[1]
A[2]
A[3]
A[4]
A[5]
A[6]
A[7]
A[8]
A[9]
1/27/2012
240
40
5.1 Mng
5.1 Mng
Tn_Mang[Ch_s_phn_t];
1/27/2012
241
A[1]
5
A[2]
A[0]
A[3]
A[4]
7
A[5]
A[4]
A[6]
A[7]
A[8]
A[9]
A[9]
A[0] = 7;
A[1] = 5;
A[4] = 7;
int N = A[1] + A[4]; N = 14
1/27/2012
242
5.1 Mng
V d
int A[10];
for(int i = 0; i < 10; i++) A[i]= 2* i;
0?
2?
4?
?
6
8?
?
?
?
?
16
10
12
14
?
18
0
i : 10
7
4
1
2
5
6
3
8
9
Ch : C khng kim tra vt qu gii hn
ca mng khi truy nhp
int A[3], B[4], C[3];
A[0]
A[1]
A[2]
B[0]
B[1]
B[2]
B[3]
C[0]
C[1]
C[2]
243
1/27/2012
244
5.1 Mng
5.1 Mng
int t[3][4] ;
t[0]
t[0][0]
t[0][1]
t[0][2]
t[0][3]
t[1]
t[1][0]
t[1][1]
t[1][2]
t[1][3]
t[2]
t[2][0]
t[2][1]
t[2][2]
t[2][3]
b[2][2][4]
b[2]
b[1]
b[0]
b[0][1][2]
A[0]
7
5.1 Mng
1/27/2012
245
1/27/2012
246
41
5.1 Mng
5.1 Mng
1/27/2012
248
5.1 Mng
5.1 Mng
Cc thao tc thng gp
Nhp d liu
Dng hm scanf()
V d:
Bi ton m
m s phn t
Tnh ton trn cc phn t..
scanf(%d,&Tab[2]);phn t th 3 ca mng
Tm kim phn t
Ln nht/nh nht/bt k
scanf(%d,&Tab[i]);
1/27/2012
int Tab[10];
1/27/2012
printf(Tab[%d] : ); scanf(%d,&Tab[i])
5.1 Mng
5.1 Mng
Nhp d liuV d 1
Nhp d liuLu
#include <stdio.h>
#define MONTHS 12
int main(){
int rainfall[MONTHS], i;
for ( i=0; i < MONTHS; i++ ){
V d:
Nhp vo mng khng qu 100 s thc
1/27/2012
250
251
1/27/2012
252
42
5.1 Mng
5.1 Mng
Nhp d liuV d 2
#include<stdio.h>
#void main(){
float A[100];
int n, i;
do{
printf(\n Cho biet so phan tu cua mang: );
scanf(%d,&n);
}while (n>100 || n<=0);
Dng hm printf()
int Tab[10];
V d:
Hin th phn t th 5:
printf(%d,Tab[4]);
hin th tt c cc phn t:
for(i = 0; i < 10; i++)
printf(%4d,Tab[i]);
1/27/2012
1/27/2012
254
5.1 Mng
5.1 Mng
#include <stdio.h>
#define MAX 12
void main(){
int A[MAX], i;
for ( i=0; i < MAX; i++ ){ //Nhp d liu
printf(A[%d]: , i+1); scanf("%d", &A [i] );
}
for ( i=0; i < MAX; i++ ){
)
printf( "%d\n
"%4d
,
A[i]);
"%4d , A[i]);
if( (i+1) %4==0) printf(\n);
}
1/27/2012
255
256
5.1 Mng
5.1 Mng
1/27/2012
257
1/27/2012
258
43
5.1 Mng
5.1 Mng
259
#include<stdio.h>
void main(){
int A[100];
int n, i, d = 0, S=0;
printf(\n So phan tu cua mang (<100) : ); scanf(%d,&n);
for(i = 0; i < n; i++){
printf("A[%d] = ", i); scanf("%d",&A[i]);
}
for(i = 0; i < n; i++)
if(A[i] %7==0){
d++;
S+= A[i];
}
if(d > 0) printf(TBC so chia het cho 7: %7.2f,(float)S/d);
else printf(Trong day khong co so chia het cho 7);
}
1/27/2012
260
5.1 Mng
5.1 Mng
Tm kim phn t
Tm kim phn t
261
5.1 Mng
5.1 Mng
Tm kim phn t V d
int Tab[100]
int N, i, k, f;//N: s phn t, k phn t cn tm
Dng for
V d
a ra phn t u ca mng c gi tr
bng k;
1/27/2012
262
Dng while
263
i=0; f =0;
//f: found. f = 1 k is found
while(i < N && f==0){
if(Tab[i] == k) f = 1;
else i++;}
if
(f==1)
printf(Tim thay tai vi tri %d,i);
1/27/2012
264
44
5.1 Mng
5.1 Mng
Bi ton sp xp theo th t
Cho mng phn t, sp xp theo th t
tng/gim
Cc thut ton
265
266
5.1 Mng
5.1 Mng
Lt 2 Lt 3 Lt 4
Dy
Lt 1
3
2
1
3
2
5
2
3
5
3
5
3
6
5
1
2
3
2
3
5
5
6
1/27/2012
267
//Khai bo cc bin
int A[100];
//Mng cha d liu
int N, i, j, tmp;
//Sp xp
for(i = 0; i < N 1; i++)
for(j = i + 1; j < N; j++)
if(A[i] > A[j]) {
tmp = A[i];
A[i] = A[j];
A[j] = tmp;
}
1/27/2012
268
5.1 Mng
5.1 Mng
V d
V d
1/27/2012
1/27/2012
269
1. #include<stdio.h>
2. void main(){
3.
int A[100] ;
4.
int N, i, j , t;
5.
printf("So phan tu [< 100]: "); scanf("%d",&N);
6.
printf("Hay nhap day so...\n");
7.
for(i=0; i < N; i++){
8.
printf("A[%d] = ",i+1); scanf("%d",&A[i]);
9.
}
10.
printf("\nDay vua nhap...\n");
11.
for(i=0; i < N; i++)
12.
printf("%4d", A[i]);
13.
printf("\n\n");
1/27/2012
270
45
5.1 Mng
5.1 Mng
V d
V dKt qu
1.
printf("Sap xep day theo thuat toan lua chon");
2.
for(i=0; i < N-1; i++){
3.
for(j=i; j < N; j++)
4.
if(A[i] < A[j]) {
5.
t = A[i];
6.
A[i] = A[j];
7.
A[j] = t;
8.
}//if & for_j
9.
printf("\nLuot %d : ",i+1);
10.
for(j=0; j < N; j++)
11.
printf("%4d", A[j]);
12.
}//for_i
13. }//main
1/27/2012
271
1/27/2012
272
5.1 Mng
5.1 Mng
A[i] = A[i-1];
8
7
4
8
A[k] = a;
N= N + 1;
3
9
N
Ch :
9
4
A[i-1] = A[i];
N= N - 1;
4
9
4
k > N Chn vo v tr N;
?
9
8
3
k< 0 Chn vo v tr 0
1/27/2012
273
1/27/2012
5.1 Mng
5.1 Mng
Bi tp 1
Bi tp 2
1.
1.
2.
3.
4.
2.
3.
4.
5.
Tng v tch ca dy s
Cc s chia ht cho 3 v ln hn 10
m cc s nm trong on [100,1000]
a)
1/27/2012
274
cosx sin x
i
i =1
(x y )
n1
b)
i =1
c)
x
1
i +1
2
i +1
275
1/27/2012
276
46
5.1 Mng
5.1 Mng
Bi cha
#include<stdio.h>
void main(){
int A[100];
int N, i;
//Nhp d liu
printf("So phan tu : "); scanf("%d",&N);
for(i=0; i < N; i ++){
printf("A[%d] = ",i);scanf("%d",&A[i]);
}
//Cc thao tc x l mng: chn, xa, sp xp,
//a D liu ra
for(i=0; i < N; i ++)
printf("%4d",A[i]);
}
1. { int d = 0, t;
2.
for(i=0;i < N; i++)
3.
if(A[i]%6==0){
4.
t=A[i]; A[i]=A[d]; A[d] = t;
5.
d++;
6.
}
7.
for(i=d; i < N; i++)
8.
if(A[i]%3 != 0){
9.
t=A[i]; A[i]=A[d]; A[d] = t;
10.
d++;
11.
}
12. }
1/27/2012
277
278
5.1 Mng
5.1 Mng
1. { int k = 0,i, j, t;
2.
for(i=0;i < N - 1; i++)//Sp xp la chn
3.
for(j=i+1;j < N ; j++)
4.
if(A[i] > A[j]){
5.
t = A[j]; A[j] = A[i]; A[i]=t;
6.
}
7.
printf("Phan tu moi:"); scanf("%d",&k);//Nhp p/t mi
8.
i = N; //Chn ng v tr
9.
while( (i > 0) &&(A[i-1] > k) ){
10.
A[i] = A[i-1];
11.
i--;
12.
}
13.
A[i] = k;
14.
N++;
15. }
1/27/2012
1/27/2012
279
1/27/2012
280
5.1 Mng
5.1 Mng
Bi tp 3 : Ma trn
1. Vit chng trnh nhp vo mt ma trn vung,
cc phn t nguyn, sau
si , j
1/27/2012
281
1/27/2012
1 n' u ui , j > 0
= 0 n' u ui , j = 0
1 n' u ui , j < 0
282
47
5.1 Mng
5.1 Mng
#include <stdio.h>
void main(){
int A[20][20], N,i,j;
printf("Nhap kich thuoc : "); scanf("%d",&N);
printf("\n");
for ( i=0; i < N; i++ )
for(j=0; j < N; j++)
{
printf("Nhap phan tu [%d,%d]:", i+1,j+1);
scanf("%d", &A[i][j] );
}
printf("\n\n MA TRAN DA NHAP \n\n");
for ( i=0; i < N; i++ ){
for(j=0; j < N; j++)
printf( "%4d" ,A[i][j]);
printf("\n");
}
1/27/2012
283
284
5.1 Mng
Ni dung chnh
Thc hin
1. Mng
Khi nim
Khai bo v s dng
Cc thao tc thng gp
2. Con tr
3. Xu k t
1/27/2012
285
5.2 Con tr
Gii thiu
a ch
B nh gm dy cc nh
00000
00001
Mi nh l mt byte
Mi nh c mt a ch ring
Bin
Con tr
FFFFF
B nh
1/27/2012
286
5.2 Con tr
Khi nim
Khai bo v s dng
Cc hm x l k t v xu k t
1/27/2012
287
1/27/2012
48
5.2 Con tr
5.2 Con tr
a ch V d
int N;
float x;
char Arr[4];
Con tr
Con tr l mt bin m
gi tr ca n l a ch
ca mt vng nh
a ch bin N
?
E8
03
?
?
00
?
00
?
1B
?
41
?
01
?
05
?
09
?
0D
a ch bin X
N = 1000;//03E8
a ch bin Arr
X=9.6875;//411B0000
for(i=0;i<4;i++)
Arr[i]= 4*i+1;
a ch ca mt bin l a ch byte
nh u tin c cung cp cho
bin lu tr d liu
N
X
Arr
Bin nh
EB03
ABCD
ABCD
EFCD
Bin con tr
C th tr ti mt hm
289
FFFF
B nh
1/27/2012
290
5.2 Con tr
5.2 Con tr
Con tr Khai bo
Kiu
Ton t a ch (&)
K hiu: &
L ton t mt ngi, tr
v a ch ca bin
Tn;
V d:
int * pi;
0000
Bin N
ABCD
a ch bin c th c
gn cho mt con tr, tr ti
i tng cng kiu
Gi tr ca con tr c th thay i c
291
V d
ABCD
EFCD
Bin pi
FFFF
B nh
1/27/2012
292
5.2 Con tr
5.2 Con tr
Gn gi tr cho con tr
0000
Bin N
20
10
ABCD
Con tr c gn a ch ca mt bin
Bin cng kiu vi kiu m con tr tr ti
Nu khng, cn phi p kiu
int N;
N = 10;//Vng nh m pi tr ti
mang gi tr 10; Vy *pi=10
*pi = 20;// Vng nh pi tr ti c
gn gi tr 20; Vy N= 20
1/27/2012
Con tr dng tr ti mt
bin nh
C th tr ti con tr khc
B nh
1/27/2012
int * pi;
pi = &N;
Vng nh ny c th dng
cha cc bin c kiu c
bn (nguyn, thc, k t,)
hay c cu trc (mng, bn
ghi,..)
0000
ABCD
EFCD
Con tr pi
FFFF
B nh
Con tr c gn gi tr NULL
V d: int *p; p = 0;
Gn ni dung vng nh 2 con tr tr ti.
V d: int *p1, *p2;
293
1/27/2012
*p1 = *p2;
294
49
5.2 Con tr
5.2 Con tr
V d
V d
#include <stdio.h>
#include <stdio.h>
void main(){
void main(){
int N=5, M=10;
*p1 = *p2;
p1 = p2;
printf("%d %d",*p1,*p2);
}
2. void main(){
printf("%d %d",*p1,*p2);
}
10 10
3.
4.
5.
6.
*p1 = *p2;
7.
printf("%d %d",*p1,*p2);
10
5
10
ABCF
ABCD
ABCD
ABCF
p2 p1
0000
1. #include <stdio.h>
8. }
10 10
B nh
1/27/2012
295
FFFF
1/27/2012
296
5.2 Con tr
5.2 Con tr
V d
1. #include <stdio.h>
2. void main(){
ABCD
5
10
4.
5.
6.
p1 = p2;
ABCF
7.
printf("%d %d",*p1,*p2);
ABCD
ABCF
ABCF
p2 p1
3.
Tr con tr vi mt s nguyn
Kt qu: Con tr cng kiu
8. }
FFFF
B nh
1/27/2012
297
5.2 Con tr
p1 - p2 -2
P
M
N
* (p2-1) 2000
* ++ p1 2000
298
5.2 Con tr
1/27/2012
p2
p1
Ghi ch:
Kiu int, cc phn t cch nhau 2 bytes
Kiu float, cc phn t cch nhau 4 bytes
1/27/2012
E8
03
D0
07
B8
0B
ABC0
ABC1
ABC2
ABC3
ABC4
ABC5
ABC6
ABC4
ABC0
ABC2
FFFF
B nh
299
1/27/2012
300
50
5.2 Con tr
5.2 Con tr
V d
Con tr void
void * Tn_con_tr
int Tab[10];
int * p = Tab; // int *p = &Tab[0]
V d:
void * p, *q;
int n; float x;
1/27/2012
302
5.2 Con tr
5.2 Con tr
V d
V d
#include<stdio.h>
int main()
30
{
int a=3, *p;
p = &a;
printf("%d\n", a * *p * a + *p);
return 0;
}
#include<stdio.h>
1/27/2012
int main(){
int arr[2][2][2] = {10, 2, 3, 4, 5, 6, 7, 8};
int *p, *q;
p = &arr[1][1][1];
q = (int *) arr;
return 0;
}
303
Khi nim xu k t
Xu k t (string) l mt dy cc k t vit
lin tip nhau
Khi nim
Khai bo v s dng
Cc thao tc thng gp
di xu l s k t c trong xu
2. Con tr
3. Xu k t
Khi nim
Khai bo v s dng
Cc hm x l k t v xu k t
1/27/2012
304
5.3 Xu k t
1. Mng
1/27/2012
Ni dung chnh
8, 5
T
305
1/27/2012
i n
c \0
306
51
5.3 Xu k t
5.3 Xu k t
Khai bo
lu tr mt xu c n k t chng ta cn
mt mng c kch thc n+1
V d
Xu k t di 1 >< k t (A =A ?)
A l 1 k t, c lu tr trong 1 byte
A l 1 xu k t, ngoi k t A cn c k t \0
=> c lu tr trong 2 byte
1/27/2012
307
1/27/2012
i n
c \0
308
5.3 Xu k t
5.3 Xu k t
V d: Nhp xu v m s k t *
1/27/2012
Str[0] T
Str[3]
Str[7] \0
Str[8] ?
1 \0
c \0 ?
?
Str[3] = -;
Str[7] = ;
Str[8] = 1 ;
Str[9] = \0; Str: Tin-hoc 1
309
Tnh chiu di ca xu
#include <stdio.h>
d=0;
void main(){
while(Str[d] != '\0') d++;
char Str[100];
int d=0, i=0;
printf("Nhap xau ky tu: "); gets(Str);
while(Str[i] != '\0'){
if(Str[i]=='*')
d++;
i++;
}
printf("Ket qua : %d",d);
}
1/27/2012
310
5.3 Xu k t
5.3 Xu k t
Cc hm x l k t
Cc hm x l k tChuyn i ch hoa/thng
int toupper(char ch):
Chuyn k t thng thnh k t hoa
toupper(a) => A
Tp tiu : ctype.h
#include <ctype.h>
tolower(B) => b
V d
do{
.
printf(Tiep tuc <C/K>? :); fflush(stdin);
}while(toupper(getche()) !='K');
1/27/2012
311
1/27/2012
312
52
5.3 Xu k t
5.3 Xu k t
Hm tr v gi tr khc 0 nu ch l ch hoa,
ngc li tr v 0
V d: printf("%d ",isupper('A')); 0 (1 !?)
1/27/2012
313
314
5.3 Xu k t
5.3 Xu k t
1/27/2012
315
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
int main(){
char Str[100]; int d=0, i=0;
printf("Nhap xau ky tu: "); gets(Str);
if(Str[0] == '\0') printf( Xau rong ");
else{
if( ! isspace(Str[0]) ) d=1;
i=1;
while(Str[i] != '\0'){
if( isspace(Str[i-1] ) && (! isspace(Str[i])) ) d++;
i++;
}
printf("Ket qua : %d",d);
}
}
1/27/2012
5.3 Xu k t
5.3 Xu k t
Cc hm x l xu k t
Cc hm x l xu k t
Vo/ra xu k t
Tp tiu : string.h
Tp tiu : stdio.h
Nhp xu k t
gets(tn_xu);
scanf(%s,&tn_xu);
puts(tn_xu);
printf(%s,tn_xu);
Ch :
char str[100] = Hello world;
char * p = str;
p l con tr ti mng cc k t/ xu k t
Xu k t, c th c khai bo char *
Hin th xu k t
1/27/2012
316
1/27/2012
318
53
5.3 Xu k t
5.3 Xu k t
Cc hm x l xu k t
Cc hm x l xu k t
int strcmp(char * xu_1, char * xu_2)
Tr v di xu
printf("%d ",strlen("Hello world")); 11
V d
char Str[20];
strcpy(Str,hello);
printf(%d, strcmp(Str,hello));0
printf(%d, strcmp(Str,hello!); -1 (!?)
printf(%d, strcmp(Str,Hello); 1 (!?)
char Str[20];
printf("%s ",strcpy(Str,"Hello")); Hello
printf("%s", Str); Hello
Ch : Php gn Str = Hello l khng hp l
1/27/2012
319
1/27/2012
5.3 Xu k t
5.3 Xu k t
Cc hm x l xu k t
Cc hm x l xu k t
V d
char Str[20];
strcpy(Str,"Hello ");
printf("%s ",strcat(Str,"world")); Hello world
printf("\n%s",Str); Hello world
1/27/2012
1/27/2012
322
5.3 Xu k t
5.3 Xu k t
Cc hm x l xu k t (tip)
V d: o ngc xu k t
#include<stdio.h>
#include<string.h>
main(){
char s[100],c;
int i, n;
printf("Nhap xau: ");gets(s);
n =strlen(s);
for(i=0;i <n/2;i++){
c = s[i];
s[i] = s[n-i-1];
s[n-i-1]=c;
}
printf("%s",s);
}
Tp tiu : stdlib.h
int atoi(char * str):
Chuyn mt xu k t thnh mt s nguyn
tng ng
V d: atoi(1234) 1234
Tht bi c 3 hm: tr v 0
1/27/2012
320
323
1/27/2012
324
54
5.3 Xu k t
5.3 Xu k t
#include<stdio.h>
#include<string.h>
main(){
char s[20];
int i,n;
printf("Nhap vao xau ki tu: ");gets(s);
n=strlen(s);
for(i=0;i<n/2;i++)
if(s[i]!=s[n-1-i])
break;
if(i==n/2)
printf("Xau doi xung");
else
printf("Xau khong doi xung");
}
1/27/2012
325
#include<stdio.h>
#include<ctype.h>
#include<string.h>
main(){
char s[20];
int dem[26] = {};
int i,n;
puts("Nhap vao xau ki tu:");gets(s);
n=strlen(s);
for(i=0;i<n;i++)
if(isalpha(s[i]))
dem[ tolower(s[i ]) - 'a ]++;
for(i=0;i<26;i++)
if(dem[i]!=0)
printf("Ki tu %c xuat hien %d lan\n",'a'+i,dem[i]);
}
1/27/2012
326
5.3 Xu k t
5.3 Xu k t
Mng xu k t
Xu k t c th l kiu phn t ca mng
Khai bo
char DS[100][30];
Mng c ti a 100 phn t, cc phn t l
xu c di ti a 30
S dng
Nh mt mng bnh thng
Mi phn t mng c s dng nh mt xu
k t
1/27/2012
327
5.3 Xu k t
1/27/2012
328
5.3 Xu k t
1/27/2012
330
55
5.3 Xu k t
5.3 Xu k t
V d
1/27/2012
332
5.3 Xu k t
5.3 Xu k t
V d
1/27/2012
1/27/2012
V d
333
1/27/2012
334
Phn 3: Lp trnh C
5.3 Xu k t
V d
Ni dung chnh
Chng 1: Tng quan v ngn ng C
Chng 2: Kiu d liu v biu thc trong C
Chng 3: Vo ra d liu
Chng 4: Cu trc iu khin
Chng 5: Mng, con tr v xu k t
Chng 6: Cu trc
Chng 7: Hm
Chng 8: Tp d liu
1/27/2012
335
1/27/2012
336
56
Chng 6: Cu trc
Chng 6: Cu trc
Ni dung chnh
Khi nim
2. Khai bo cu trc
3. X l d liu cu trc
1/27/2012
337
Chng 6: Cu trc
SBD;
Ten[30];
KhoiThi;
KetQua;
1/27/2012
338
Chng 6: Cu trc
DS_SBD
123
456
789
Mng k t
DS_Ten
unsigned
DS_SBD[MAX];
char
DS_Ten[MAX][30];
char
DS_KhoiThi[MAX];
float
DS_KetQua[MAX];
1/27/2012
DS_KhoiThi
A
DS_KetQua
24.5 28.5 22.0
339
Chng 6: Cu trc
1/27/2012
TS: i+2
TS: TS:
i i+1
Bin iu khin
dng duyt mng
340
Chng 6: Cu trc
Khi nim
- Kh qun l, d nhm ln
- Khng th hin cu trc thng tin dnh cho tng
th sinh
Mng cc cu
trc thng tin
dnh cho th sinh
1/27/2012
l mt cu trc thng341
tin
342
57
Chng 6: Cu trc
Chng 6: Cu trc
Khi nim V d
Ni dung chnh
Kt qu hc tp ca sinh vin
TenSV: Chui k t
2. Khai bo cu trc
iem: S thc
im trong mt phng
Tn im: K t (A, B, C..)
3. X l d liu cu trc
Honh : S thc
Tung : S thc
1/27/2012
Khi nim
343
Chng 6: Cu trc
1/27/2012
Chng 6: Cu trc
Th sinh vin
S hiu:(Chui k t)..
Tn sinh vin: (Chui k t)
Nm sinh:(S nguyn)
Kha:(S nguyn).
Lp: :.(Chui k t).
Point2D
Cc trng c th c kiu bt k
1/27/2012
Chng 6: Cu trc
struct SinhVien{
char SHSV[10];
char Ten[30];
int NS;
int Khoa;
char Lop [10];
};
struct Point{
float x, y;
};
1/27/2012
346
Chng 6: Cu trc
struct {
<Khai bo cc trng d liu>
}Tn_bin;
Kt hp vi khai bo kiu
1/27/2012
344
347
1/27/2012
348
58
Chng 6: Cu trc
Chng 6: Cu trc
struct {
float x, y; //Ta trn mt phng
}A, B;
//Khai bo 2 im A, B
Kt hp vi khai bo kiu
struct Point_3D{
float x, y, z;// Ta khng gian
}A, B;
1/27/2012
349
Chng 6: Cu trc
350
Chng 6: Cu trc
char Ten[20];
struct Date{
struct Date{
int day;
int day;
int month;
int month;
int year;
int year;
};
} NS;
struct SinhVien{
} SV = {Tran Anh", 20,12,1990 };
char Ten[30];
struct Date NS;
} SV = {Tran Anh", 20, 12, 1990 };
351
Chng 6: Cu trc
1/27/2012
352
Chng 6: Cu trc
Mc ch
t tn mi ng ngha vi tn ca mt kiu
d liu c nh ngha
Thng c s dng cho kiu cu trc
Gip cho khai bo tr nn quen thuc v t b sai hn
V d
1/27/2012
1/27/2012
353
1/27/2012
59
Chng 6: Cu trc
Chng 6: Cu trc
typedef struct {
float x, y, z;
}point_3D;
point_3D M;
point_3D N;
V d
struct point_3D{
float x, y, z;
}
struct point_3D M;
typedef struct point_3D point_3D;
point_3D N;
1/27/2012
355
Chng 6: Cu trc
1/27/2012
356
Chng 6: Cu trc
Ni dung chnh
C php
Khi nim
tn_bin_cu_trc.tn_trng
2. Khai bo cu trc
Lu
3. X l d liu cu trc
1/27/2012
357
Chng 6: Cu trc
1/27/2012
358
Chng 6: Cu trc
V d
V d
#include <stdio.h>
void main(){
struct{
char Ten[20];
struct Date{
int day;
int month;
int year;
} NS;
} SV = {"Tran Anh", 20,12, 1990 };
1/27/2012
359
1/27/2012
360
60
Chng 6: Cu trc
Chng 6: Cu trc
V d
#include<stdio.h>
#include<conio.h>
typedef struct{
char ten[5];
int x,y;
}toado;
void main(){
toado t;
printf("Nhap thong tin toa do\n");
printf("Ten diem: ");gets(t.ten);
printf("Toa do x: ");scanf("%d",&t.x);
printf("Toa do y: ");scanf("%d",&t.y);
printf("Gia tri cac truong\n");
printf("%-5s%3d%3d\n",t.ten,t.x,t.y);
getch();
}
1/27/2012
361
Chng 6: Cu trc
362
Chng 6: Cu trc
V d
V d
Xy dng cu trc gm h tn v im
TC ca sinh vin
a, b, c l 3 bin cu trc.
Nhp gi tr cho bin a.
Gn b=a,
gn tng trng ca a cho c.
So snh a, b v c ?
1/27/2012
1/27/2012
363
Chng 6: Cu trc
#include<stdio.h>
#include<conio.h>
typedef struct{
char hoten[20];
int diem;
}sinhvien;
void main(){
sinhvien a,b,c;
printf("Nhap thong tin sinh vien\n");
printf("Ho ten: ");gets(a.hoten);
printf("Diem:");scanf("%d",&a.diem);
1/27/2012
364
Chng 6: Cu trc
V d Kt qu
V d
b=a;
strcpy(c.hoten,a.hoten);
c.diem=a.diem;
printf(Bien a: ");
printf("%-20s%3d\n",a.hoten,a.diem);
printf(Bien b: ");
printf("%-20s%3d\n",b.hoten,b.diem);
printf(Bien c: ");
printf("%-20s%3d\n",c.hoten,c.diem);
getch();
}
1/27/2012
365
1/27/2012
366
61
Chng 6: Cu trc
Chng 6: Cu trc
Bi tp
Bi tp 1
367
Chng 6: Cu trc
#include <stdio.h>
#include <string.h>
typedef struct{
char Ten[30];
int NS;
}SinhVien;
void main(){
SinhVien DS[100], SV;
int N,i,j;
printf("Nhap So sinh vien : "); scanf("%d",&N);
fflush(stdin);
for ( i=0; i < N; i++ ){
fflush(stdin);
printf("Nhap du lieu cho sinh vien %d: \n", i+1);
printf("Ho ten : "); gets(DS[i].Ten);
printf("Nam sinh :");scanf("%d", &DS[i].NS);
}
1/27/2012
368
Chng 6: Cu trc
Bi tp 1 Kt qu
Bi tp 1 (tip)
printf("\n\n DANH SACH SINH VIEN\n\n");
for(i = 0; i < N; i ++)
if(DS[i].NS ==1990)
printf("%s\n",DS[i].Ten);
for(i = 0; i < N - 1; i ++)
for(j = i+1; j < N; j ++)
if(strcmp(DS[i].Ten,DS[j].Ten) > 0){
SV= DS[i];
DS[i]=DS[j];
DS[j] = SV;
}
printf("\n\n DANH SACH SINH VIEN DA SAP XEP\n\n");
for(i = 0; i < N; i ++)
printf("%s\n",DS[i].Ten);
}//main
1/27/2012
369
Chng 6: Cu trc
370
Chng 6: Cu trc
Bi tp 2 (1/4)
Bi tp 2 (2/4)
#include <stdio.h>
#include <string.h>
typedef struct{
char Ten[30];
struct{
int T, L, H, S;
} DT;
}SinhVien;
void main(){
SinhVien DS[100], TK, SV;
int N,i,j,K;
float C;
1/27/2012
1/27/2012
371
N = 0;
do{
printf("\nNhap DL cho sv thu %d\n",N+1);
printf("Ten SV : "); gets(DS[N].Ten);
if(strlen(DS[N].Ten)==0)
break;
else{
printf("Diem thi T L H cua SV %s : ",DS[N].Ten);
scanf("%d%d%d",&DS[N].DT.T,&DS[N].DT.L,&DS[N].DT.H);
fflush(stdin);
DS[N].DT.S = DS[N].DT.T + DS[N].DT.L + DS[N].DT.H;
N++;
}
}while(1);
printf("\n\n DANH SACH SINH VIEN\n\n");
printf("
Ten SV
Toan Ly
Hoa Tong \n");
for(i = 0; i < N; i ++)
printf("%-20s%5d%5d%5d%6d\n",DS[i].Ten,
DS[i].DT.T,DS[i].DT.L,DS[i].DT.H,DS[i].DT.S);
1/27/2012
372
62
Chng 6: Cu trc
Chng 6: Cu trc
Bi tp 2 (3/4)
Bi tp 2 (4/4)
373
Chng 6: Cu trc
Chng 6: Cu trc
Cu hi 1: Kt qu a ra mn hnh
#include<stdio.h>
typedef struct {
int SHSV;
char Ten[25];
}SV;
void main(){
SV DS[] = { {12, "Mai"},
{13, "Nam"},
{14, "Minh"}};
printf("%d ", DS[1].SHSV);
printf("%s\n", (*(DS+2)).Ten);
}1/27/2012
a
b
c
d
e
Bi tp 1
12 Mai
12 Nam
13 Nam
13 Minh
14 Minh
1/27/2012
376
Phn 3: Lp trnh C
Chng 6: Cu trc
Ni dung chnh
Bi tp 2
Cho mt danh sch thnh tch thi u bng ca 32
i tuyn bao gm: Tn i bng, s bn thng, s
bn thua, s th , s th vng
Vit chng trnh thc hin
Nhp d liu vo t bn phm
Nhp vo tn i bng,
a ra thnh thch ca i ny
Nu khng tn ti, thng bo: khng tm thy
Tnh v a ra mn hnh s im ca cc i nu
Mi bn thng c tnh 10 im
Mi bn thua b pht 5 im, mi th vng tr 2 im,
th tr 5 im
1/27/2012
377
1/27/2012
378
63
Chng 7: Hm
Chng 7: Hm
Ni dung chnh
1. Khi nim hm
Khi nim
2. Khai bo v s dng hm
Vai tr
Khai bo v s dng
3. Phm vi ca bin
Ton cc v a phng
4. Truyn tham s
1/27/2012
379
Ni dung chnh
Phn loi
Hm
(function)
C tr v gi tr
1. Khi nim hm
Hm chun C
trong th vin
Hm (ngi dng)
t nh ngha
Chng 7: Hm
4. Truyn tham s
1/27/2012
382
V d
1/27/2012
Ton cc v a phng
Chng 7: Hm
Gi chng
trnh con ra
thc hin
Khai bo v s dng
3. Phm vi ca bin
Ngn ng lp trnh C
1/27/2012
2. Khai bo v s dng hm
Th tc
(procedure)
Khng tr v gi tr
nh ngha hm
#include<stdio.h>
int bp(int x){
int y;
y = x * x;
return y;
}
void main(){
int i;
for (i=1; i< 20; i+=2)
printf("%4d\n", bp(i));
printf("\n");
}
C php
Dng u hm
Khai bo
chng
trnh con
380
Chng 7: Hm
Chng 7: Hm
Chng
trnh con
1/27/2012
383
1/27/2012
384
64
Chng 7: Hm
Chng 7: Hm
Dng u hmTn hm
Dng u hm
Tn ca hm,
Cc tham s u vo
Tham s u ra v gi tr tr v
Hm cung cp nhng thng tin g cho mi trng
385
Chng 7: Hm
1/27/2012
Chng 7: Hm
386
387
Chng 7: Hm
388
Chng 7: Hm
1/27/2012
389
1/27/2012
390
65
Chng 7: Hm
Chng 7: Hm
Thn hm
Thn hm (tip)
C php chung
return [biu_thc];
1/27/2012
391
Chng 7: Hm
1/27/2012
392
Chng 7: Hm
S dng hm
Chng 7: Hm
int main(){
printf("%d\n", fun(5));
return 0;
}
1/27/2012
5
fun(5)
1/27/2012
6
394
fun(4)
Chng 7: Hm
#include<stdio.h>
fun(3)
int main(){
printf("%d\n", fun(fun(fun(3))));
return 0;
}
fun(5)
#include <stdio.h>
#include <math.h>
5 * fun(4)
4 * fun(3)
3 * fun(2)
2 * fun(1)
1 * fun(0)
120
f ( x) = x 5 + 5 x
1
395
66
Chng 7: Hm
Chng 7: Hm
397
V d 3: Tm SCLN ca dy s
1.
# include <stdio.h>
2.
int uscln(int a, int b) {
3.
while (a !=b){
4.
if(a > b) a = a- b;
5.
else b = b - a;
6.
}
7.
return a;
8.
}
9.
void main(){
10.
int A[100], N, i, r;
11.
printf("So phan tu : "); scanf("%d",&N);
12.
for(i=0; i < N; i++){
13.
printf("A[%d] = ",i+1); scanf("%d",&A[i]);
14.
}
15.
r = A[0];
16.
for(i = 1; i < N; i++)
17.
r = uscln(r,A[i]);
18.
printf("Ket qua %d \n",r);
1/27/2012
19. }
1. Khi nim hm
1/27/2012
Khai bo v s dng
3. Phm vi ca bin
Ton cc v a phng
4. Truyn tham s
399
1/27/2012
400
Chng 7: Hm
Phm vi
Tnh hung
Trong hai phm vi khc nhau c
hai bin cng tn. Trong mt
phm vi ny nm trong phm vi
kia?
2. Khai bo v s dng hm
398
Ni dung chnh
Chng 7: Hm
void main(){
Point A, B, C;
float AB,BC,CA,p,S;
printf("Toa do A (x,y) :"); scanf("%f%f",&A.x,&A.y);
printf("Toa do B (x,y) :"); scanf("%f%f",&B.x,&B.y);
printf("Toa do C (x,y) :"); scanf("%f%f",&C.x,&C.y);
AB = kc(A,B); BC = kc(B,C); CA = kc(C,A);
p= (AB + BC + CA)/2;
S = sqrt(p*(p-AB)*(p-BC)*(p-CA));
printf("Dien tich ABC %f",S);
}1/27/2012
Chng 7: Hm
Chng 7: Hm
Phm vi:
#include<stdio.h>
#include<conio.h>
int i;
int binhphuong(int x){
int y;
y = x * x;
return y;
}
void main(){
int y;
for (i=0; i<= 10; i++){
y = binhphuong(i);
printf(%d , y);
}
}
Bin cc b:
bin c khai bo trong lnh khi hoc
chng trnh con, c t trc cc cu lnh.
Ghi ch
Hm main() cng l mt chng trnh con
nhng l ni chng trnh c bt u
Bin khai bo trong hm main() cng l bin
cc b, ch c phm vi trong hm main().
401
1/27/2012
402
67
Chng 7: Hm
Chng 7: Hm
Bin static
V dKt qu
#include <stdio.h>
# include <conio.h>
void fct() {
Yu cu lu tr gi tr ca bin cc b mt
cch lu di => s dng t kha static
C php:
void main(){
int i;
for(i = 0; i < 10; i++) fct();
getch();
}
1/27/2012
403
Chng 7: Hm
1/27/2012
404
Chng 7: Hm
V d
Bin register
405
Chng 7: Hm
1/27/2012
Chng 7: Hm
Ni dung chnh
V d
1. Khi nim hm
# include <stdio.h>
void swap(int a, int b) {
int x = a;
a = b;
b = x;
return;
}
void main(){
int a = 5, b = 100;
printf("Truoc: a=%d, b=%d \n\n",a,b);
swap(a,b);
printf("Sau : a=%d, b=%d\n\n",a,b);
return;
}
2. Khai bo v s dng hm
Khai bo v s dng
3. Phm vi ca bin
Ton cc v a phng
4. Truyn tham s
1/27/2012
406
1/27/2012
408
68
Chng 7: Hm
Chng 7: Hm
74 Truyn tham s
Truyn theo tr
409
Chng 7: Hm
Truyn tham s
a ch ca bin c truyn
V d: swap(&a,&b)
1/27/2012
410
V d
Cu hi 1: Kt qu a ra mn hnh
# include <stdio.h>
# include <conio.h>
void swap(int * pa, int * pb) {
int x = *pa;
*pa = *pb;
*pb = x;
return;
}
void main(){
int a = 5, b = 100;
printf("Truoc: a=%d, b=%d \n\n",a,b);
swap(&a,&b);
printf("Sau : a=%d, b=%d\n\n",a,b);
return;
}
1/27/2012
411
Chng 6: Cu trc
#include<stdio.h>
void fun(int n){
if(n > 0) {
fun(--n);
printf("%d ", n);
fun(--n);
}
}
int main(){
fun(3);
return 0;
}
1/27/2012
a
b
c
d
e
0210
0102
1120
0120
0201
412
Chng 6: Cu trc
Cu hi 2: Kt qu a ra mn hnh
1/27/2012
Chng 6: Cu trc
#include<stdio.h>
void fun(int *i, int *j){
*i = *i * *i;
*j = *j * *j;
}
int main(){
int i=5, j=2;
fun(&i, &j);
printf("%d, %d", i, j);
return 0;
}
a
b
c
d
e
Cu hi 3: Kt qu a ra mn hnh
5, 2
2, 5
10, 4
4, 25
25, 4
413
#include<stdio.h>
void fun(char *a){
printf("%c", *++a);
a++;
printf("%c", *a);
}
int main(){
void fun(char*);
char a[10]="ABCDEF";
fun(&a[0]);
return 0;
}1/27/2012
a
b
c
d
e
AB
AC
BC
BD
CD
414
69
Phn 3: Lp trnh C
"
Ni dung chnh
415
70