NMLT
C U TRÚC I U KHI N
Tr n Ph
c Tu n
C u trúc i u khi n
L nh r nhá
nhánh: if – else
L nh r nhi u nhá
nhánh: switch
Vòng l p: while, do while, for
Các t khóa: break và continue
NH P MÔN L P TRÌNH
12/23/2009
2
L nh r nhánh if
Cú pháp:
i u
ki n
if ( i u ki n)
S;
i u ki n: bi u th c
c t gi a c p ngo
S ph i là 1 câu l nh, n
l nh ph i
c t gi
kh i l nh.
nh.
cho k t qu S ; ph i
c n ()
u nhi u h n 1 l nh, các
a c p ngo c nh n {} –
scanf("%i
scanf("%i %i",
%i",
max
max == a;
a;
if(b
>
if(b > max)
max)
max
max == b;
b;
printf(“So
printf(“So lon
lon
NH P MÔN L P TRÌNH
0
0
S
&a,
&a, &b);
&b);
la:
la: %i\n“,
%i\n“, max);
max);
12/23/2009
3
uý
N u t d u ch m ph y (;) ngay sau bi u th c i u ki n
thì l nh S c a if xem nh “KHÔNG LÀM GÌ”
printf(“Nhap
printf(“Nhap mot
mot so
so nguyen:
nguyen: ");
");
scanf("%i",
scanf("%i", &j);
&j);
if(j
if(j >> 0);
0);
printf(“%i
printf(“%i la
la so
so duong“,
duong“, j);
j);
Nhap
Nhap mot
mot so
so nguyen:
nguyen: -6
-6
-6
-6 là
là so
so duong
duong
NH P MÔN L P TRÌNH
12/23/2009
4
L nh r nhánh if-else
Cú pháp:
if ( i u ki n)
S;
else Se;
Ph n l nh else có th thêm vào trong câu l nh
if
ch th các l nh th c hi n khi i u ki n
i u
ki n
0
0
Se
S
b ng 0 (FALSE).
scanf("%i
scanf("%i %i",
%i",
if(a
if(a >> b)
b)
max
max == a;
a;
else
else
max
max == b;
b;
printf(“So
printf(“So lon
lon
NH P MÔN L P TRÌNH
&a,
&a, &b);
&b);
la:
la: %i\n“,
%i\n“, max);
max);
12/23/2009
5
Nhi u l nh if l ng nhau
else k t n i v i l nh if g n nh t
int
int ii == 100;
100;
if(i
if(i >> 0)
0)
if(i
if(i >> 1000)
1000)
printf("i
printf("i
else
else
printf("i
printf("i
ii chap
chap nhan
nhan duoc
duoc
qua
qua lon\n");
lon\n");
chap
chap nhan
nhan duoc\n");
duoc\n");
int
int ii == -20;
-20;
if(i
>
0)
ii la
if(i > 0) {{
la so
so am
am
if(i
>
1000)
if(i > 1000)
printf("i
printf("i qua
qua lon\n");
lon\n");
}}
else
else
printf("i
printf("i la
la so
so am\n");
am\n");
NH P MÔN L P TRÌNH
12/23/2009
6
C u trúc nhi u ch n l a – switch
Cú pháp:
switch (bi u th c)
{
case gt1: S1; [break;]
case gt2: S2; [break;]
...
;]
case gtn: Sn; [break
[break;]
default: Se;
}
Bi u th c: cho k t qu S NGUYÊN; ph i
ngo c n ()
Si : dãy các l nh.
NH P MÔN L P TRÌNH
c
t gi a c p
12/23/2009
7
Ví d l nh switch
switch(c)
switch(c) {{
case
case 'a':
'a': case
case 'A':
'A':
printf(“Dien
printf(“Dien tich
tich == %.2f\n",
%.2f\n", rr ** rr ** pi);
pi);
break;
break;
case
case 'c':
'c': case
case 'C':
'C':
printf(“Chu
printf(“Chu vi
vi == %.2f\n",
%.2f\n", 22 ** rr ** pi);
pi);
break;
break;
case
case 'q':
'q':
printf(“Thoat\n");
printf(“Thoat\n");
break;
break;
default:
default:
printf(“Chon
printf(“Chon khong
khong hop
hop le\n");
le\n");
}}
NH P MÔN L P TRÌNH
12/23/2009
8
M ts
u ý – switch
N u không có giá tr nào kh p, các l nh trong ph n
default s
c th c thi; và n u không có default
c ng không x y ra l i.
L nh break r t quan tr ng.
ii
ii
ii
float
float f;
f;
ii == 3;
3;
switch(f)
switch(f) {{
case
case 2:
2:
....
....
switch(i)
switch(i) {{
case
case 22 ** j:
j:
....
....
== 33
== 22
== 11
switch(i)
switch(i) {{
case
printf("i
case 3:
3:
printf("i == 3\n");
3\n");
case
2:
printf("i
=
2\n");
case 2:
printf("i = 2\n");
case
1:
printf("i
case 1:
printf("i == 1\n");
1\n");
}}
NH P MÔN L P TRÌNH
9
12/23/2009
C u trúc nhi u ch n l a – switch
gt1
S1;
break;
bi u
th c
default
gt2
S2;
break;
…
NH P MÔN L P TRÌNH
12/23/2009
Se;
10
Ví d khác – switch
//Doan
//Doan chuong
chuong
switch(so)
switch(so) {{
case
case 0:
0:
case
case 1:
1:
case
case 2:
2:
case
case 3:
3:
case
case 4:
4:
case
case 5:
5:
case
case 6:
6:
case
case 7:
7:
case
case 8:
8:
case
case 9:
9:
}}
trinh
trinh doc
doc so
so 0..9
0..9
printf(“khong\n");
printf(“khong\n");
printf(“mot\n");
printf(“mot\n");
printf(“hai\n");
printf(“hai\n");
printf(“ba");
printf(“ba");
printf(“bon");
printf(“bon");
printf(“nam");
printf(“nam");
printf(“sau");
printf(“sau");
printf(“bay");
printf(“bay");
printf(“tam");
printf(“tam");
printf(“chin");
printf(“chin");
NH P MÔN L P TRÌNH
11
12/23/2009
L nh l p while
Cú pháp:
while ( i u ki n)
S;
i u ki n: bi u th c cho k t qu S
ph i
c t gi a c p ngo c n ()
S ph i là 1 câu l nh, n u nhi u h n
l nh, các l nh ph i
c t gi a c
ngo c nh n {} – kh i l nh.
i u
ki n
;
while th c hi n l nh S ít nh t 0 l n
NH P MÔN L P TRÌNH
12/23/2009
0
S
1
p
int
while(j
jj == 5;
>> 0)
int
5;
while(j
0) {{
printf("j
== %i\n",
printf("j
%i\n", j);
j);
while(j
>
0)
while(j
>
0)
j--;
j--;
printf("j
== %i\n",
printf("j
%i\n", j--);
j--);
}}
0
jj
jj
jj
jj
jj
== 55
== 44
== 33
== 22
== 11
12
u ý d u ch m ph y ;
D u ‘;’ t ngay sau bi u th c i u ki n
S là r ng.
int
int jj == 5;
5;
while(j
while(j >> 0);
0);
printf("j
printf("j == %i\n",
%i\n", j--);
j--);
ôi khi ng
ng ngh a v i l nh
Ch ong trình b
không thoát
p
c
i l p trình c ý s d ng l nh r ng
int
int c,
c, j;
j;
while(scanf("%i",
while(scanf("%i", &j)
&j) !=
!= 1)
1)
while((c
while((c == getch())
getch()) !=
!= 27)
27)
;;
NH P MÔN L P TRÌNH
t d u ‘;’
t thúc while
không có S
13
12/23/2009
L nh l p do while
Cú pháp:
do
{
S
S;
}while ( i u ki n);
i u ki n: bi u th c cho k t qu S ; ph i
c t gi a c p ngo c n ()
NH P MÔN L P TRÌNH
12/23/2009
i u
ki n
0
0
14
Ví d do while
int
int jj == 5;
5;
printf("start\n");
printf("start\n");
do
do
printf("j
printf("j == %i\n",
%i\n", j--);
j--);
while(j
while(j >> 0);
0);
printf("stop\n");
printf("stop\n");
NH P MÔN L P TRÌNH
start
start
jj == 55
jj == 44
jj == 33
jj == 22
jj == 11
stop
stop
15
12/23/2009
Ví d do while
int
int jj == -10;
-10;
printf("start\n");
printf("start\n");
do
do {{
printf("j
printf("j == %i\n",
%i\n", j);
j);
j--;
j--;
}} while(j
while(j >> 0);
0);
printf("stop\n");
printf("stop\n");
start
start
jj == -10
-10
stop
stop
do while th c hi n l nh S ít nh t 1 l n
NH P MÔN L P TRÌNH
12/23/2009
16
L nh l p for
L nh l p for d n h t cá
các thà
thành ph n c a vòng l p và
vào trong
m t câu l nh.
Cú phá
pháp:
for (kh i
ng; i u ki n l p;
i u khi n)
S;
kh i
ng
i u
ki n
0
S
i u
khi n
0
NH P MÔN L P TRÌNH
12/23/2009
17
L nh l p for – Ví d
jj == 55
int
jj == 44
int j;
j;
jj == 33
for(j
=
5;
j
>
0;
j--)
{
for(j for(j
= 5; j== >5;
>> 0;
jj == 22
for(j
5;0;jj j--)
0; {j--)
j--)
printf("j
=
%i
",
j);
printf("j
= %i ",
j);
printf("j
== %i\n",
j);
jj == 11
printf("j
%i\n",
j);
printf("%s\n",
((j%2)==0)?“chan":“le");
printf("%s\n", ((j%2)==0)?“chan":“le");
}}
jj == 55 le
le
jj == 44 chan
chan
jj == 33 le
le
jj == 22 chan
chan
jj == 11 le
le
NH P MÔN L P TRÌNH
12/23/2009
18
c l p trong for
C không gi i h n
l nc ab
c l p trong for.
#include
#include <math.h>
<math.h>
int
int main(void)
main(void)
{{
double
double angle;
angle;
for(angle
for(angle == 0.0;
0.0; angle
angle << 3.14159;
3.14159; angle
angle +=
+= 0.2)
0.2)
printf("sine
of
%.1lf
is
%.2lf\n",
printf("sine of %.1lf is %.2lf\n",
angle,
angle, sin(angle));
sin(angle));
return
return 0;
0;
}}
NH P MÔN L P TRÌNH
19
12/23/2009
Nói thêm v for
Ph n l nh kh i ng và l nh i u khi n có th g m nhi u
l nh n gi n, các l nh này cách nhau b i d u ph y (,)
int
int i,
i, j,
j, k;
k;
for(i
=
0,
for(i = 0, jj == 5,
5, kk == -1;
-1; ii << 10;
10; i++,
i++, j++,
j++, k--)
k--)
Các ph n: kh i ng, i u ki n l p, i u khi n có
th không có l nh nào.
for(;
for(; ii << 10;
10; i++,
i++, j++,
j++, k--)
k--)
Dùng while s
lý h n
for(;i
for(;i << 10;)
10;)
for(;;)
for(;;)
NH P MÔN L P TRÌNH
p
Vòng l p không k t thúc
12/23/2009
20
break
T khóa break ch th vi c thoát ngay l p t c kh i c u
trúc i u khi n.
u scanf tr
1,
ch ng trình thoát
C n th n khi s d ng!
kh i vòng l p for
for(;;)
for(;;) {{
printf(“nhap
printf(“nhap mm tt so
so nguyen:
nguyen: ");
");
if(scanf("%i",
if(scanf("%i", &j)
&j) ==
== 1)
1)
break;
break;
printf(“khong
printf(“khong hop
hop le,
le, nhap
nhap lai\n“
lai\n“
}}
nhap
nhap mot
mot so
so nguyen
nguyen :: int
int
printf(“j
printf(“j == %i\n",
%i\n", j);
j);
khong
khong hop
hop le,
le, nhap
nhap lai
lai
nhap
mot
so
nguyen:
nhap mot so nguyen: 16
16
jj == 16
16
NH P MÔN L P TRÌNH
21
12/23/2009
continue
T khóa continue ch th
c nhanh
b t k phía sau ó còn nhi u l nh c n l p.
H n ch s d ng!
nb
cl pk ,
u j chia h t cho 3
thì b qua l nh in j
for(j
for(j == 1;
1; jj <=
<= 10;
10; j++)
j++) {{
if(j
if(j %% 33 ==
== 0)
0)
continue;
continue;
printf("j
printf("j == %i\n",
%i\n", j);
j);
}}
NH P MÔN L P TRÌNH
12/23/2009
jj
jj
jj
jj
jj
jj
jj
== 11
== 22
== 44
== 55
== 77
== 88
== 10
10
22
Tóm l
c
if else:
else: r nhá
nhánh
switch r nhi u nhánh v i i u ki n là giá tr
c a bi u th c nguyên
while, do while, for – 3 lo i vòng l p c a C
break
continue
NH P MÔN L P TRÌNH
12/23/2009
23
M t s bài t p
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Nh p a, b, c. Tì
Tìm max. Phá
Phát tri n nhi u s
Gi i ph ng trì
trình ax+b=0
Gi i ph ng trình ax2+bx+c=0
Gi i h ph ng trình:
a1x+b1y=c1
a2x+b2y=c2
Nh p và
vào i m trung bì
bình, hãy x p lo i h c t p
Tính ti n i n (nh p vào s kw)
D ng tam giác (nh p các c nh a, b,c )
Nh p vào 1 tháng, cho bi t tháng này thu c quý m y?
Vi t ch ng trì
trình nh p và
vào thá
tháng, in ra s ngà
ngày c a nó
nó
Vi t ch ng trì
trình nh p và
vào 2 s x, y và
và 1 trong 4 toá
toán t +, -,
*, /. Sau ó th c hi n phép tính (n u y = 0 thì thông báo
không chia
NH P MÔN L P TRÌNH
c)
12/23/2009
24
1.
Vi t hà
hàm:
1.
2.
3.
4.
5.
2.
Truy n và
vào ký t và s n. In ra n ký t ó
In hcn cá
các d u * có
có kích th c m*n
In hcn r ng cá
các d u * có
có kích th c m*n
In tam giá
giác cân cá
các d u * có
có chi u cao h
In tam giá
giác r ng cá
các d u * có
có chi u cao h
Tính cá
các t ng sau:
S=1+2+…+n
S = 2 + 4 + … + 2.n ( t ng cá
các s ch n <=n)
2
2
2
3. S = 1 +2 + … + n
4. S = 1.2+2.3+ … + n.(n+1)
5. S = 1/2 + 2/3 + … n/(n+1)
Vi t hà
hàm:
1. Nh p n s , tí
tính t ng.
2. Nh p n s , tì
tìm max
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
7. M t s bài t p
Tính s h ng th n c a dãy fibonaci (f0=f1=1, fn=fn-1+fn-2)
Tìm UCLN, BCNN c a hai s a,b ( C u trú
trúc Phân s )
Rút g n phân s
In ra cá
các c s c a n
T ng cá
các c s c a n, T ng cá
các s ch n <=n
T = n!
Ki m tra n có
có ph i là
là s nguyên t hay không
Ki m tra n có
có ph i là
là s chí
chính ph ng hay không
Phân tí
tích n thà
thành tí
tích cá
các th a s nguyên t
NH P MÔN L P TRÌNH
12/23/2009
25