Trong bài này sẽ giới thiệu đến người học một số cấu trúc điều khiển như: Lệnh rẽ nhánh if-else, lệnh rẽ nhiều nhánh switch, vòng lặp while-do white-for, các từ khóa break và continue. Mời các bạn cùng tham khảo để nắm bắt các nội dung chi tiết.
Trang 1tranphuoctuan.khoatoan.dhsp@gmail.com http://baigiang.tranphuoctuan.com
L nh r nhánh: if – else
L nh r nhi u nhánh: switch
Vòng l p: while, do while, for
Các t khóa: break và continue
Trang 2NH P MÔN L P TRÌNH 12/23/2009 3
Cú pháp:
if ( 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 1 l nh, các
l nh ph i c t gi a c p ngo c nh n {} –
kh i l nh.
scanf("%i %i", &a, &b);
max = a;
if(b > max) max = b;
printf(“So lon la: %i\n“, max);
scanf("%i %i", &a, &b);
max = a;
if(b > max) max = b;
printf(“So lon la: %i\n“, max);
i u
ki n
S
0 0
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 mot so nguyen: ");
scanf("%i", &j);
if(j > 0);
printf(“%i la so duong“, j);
printf(“Nhap mot so nguyen: ");
scanf("%i", &j);
if(j > 0) ;
printf(“%i la so duong“, j);
Nhap mot so nguyen: -6 -6 là so duong
Nhap mot so nguyen: -6
-6 là so duong
Trang 3NH P MÔN L P TRÌNH 12/23/2009 5
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
b ng 0 (FALSE).
scanf("%i %i", &a, &b);
if(a > b) max = a;
else max = b;
printf(“So lon la: %i\n“, max);
scanf("%i %i", &a, &b);
if(a > b) max = a;
else max = b;
printf(“So lon la: %i\n“, max);
i u
ki n
S
0
0 S e
else k t n i v i l nh if g n nh t
int i = 100;
if(i > 0) if(i > 1000)
printf("i qua lon\n");
else
printf("i chap nhan duoc\n");
int i = 100;
if(i > 0) if(i > 1000)
printf("i qua lon\n");
else
printf("i chap nhan duoc\n");
i chap nhan duoc
int i = -20;
if(i > 0) { if(i > 1000)
printf("i qua lon\n");
} else printf("i la so am\n");
int i = -20;
if(i > 0) { if(i > 1000)
printf("i qua lon\n");
} else printf("i la so am\n");
i la so am
Trang 4NH P MÔN L P TRÌNH 12/23/2009 7
Cú pháp:
switch (bi u th c) {
case gt 1 : S 1 ; [break;]
case gt 2 : S 2 ; [break;]
case gt n : S n ; [break;]
default : S e ; }
Bi u th c: cho k t qu S NGUYÊN; ph i c t gi a c p ngo c n ()
S i : dãy các l nh.
switch(c) { case 'a': case 'A':
printf(“Dien tich = %.2f\n", r * r * pi); break;
case 'c': case 'C':
printf(“Chu vi = %.2f\n", 2 * r * pi);
break;
case 'q':
printf(“Thoat\n");
break;
default:
printf(“Chon khong hop le\n");
}
printf(“Dien tich = %.2f\n", r * r * pi);
printf(“Chu vi = %.2f\n", 2 * r * pi);
printf(“Thoat\n");
printf(“Chon khong hop le\n");
}
Trang 5NH P MÔN L P TRÌNH 12/23/2009 9
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.
float f;
switch(f) { case 2:
float f;
switch(f) {
case 2:
switch(i) {
case 2 * j:
switch(i) {
case 2 * j:
i = 3;
switch(i) {
}
i = 3;
switch(i) { case 3: printf("i = 3\n"); case 2: printf("i = 2\n"); case 1: printf("i = 1\n"); }
i = 3
i = 2
i = 1
i = 3
i = 2
i = 1
S 1 ; break;
gt 1
…
S 2 ; break;
S e ;
gt 2
default
Trang 6NH P MÔN L P TRÌNH 12/23/2009 11
//Doan chuong trinh doc so 0 9 switch(so) {
}
//Doan chuong trinh doc so 0 9
switch (so) {
case 0: printf(“khong\n");
case 1: printf(“mot\n");
case 2: printf(“hai\n");
case 3: printf(“ba");
case 4: printf(“bon");
case 5: printf(“nam");
case 6: printf(“sau");
case 7: printf(“bay");
case 8: printf(“tam");
case 9: printf(“chin");
}
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 1
l nh, các l nh ph i c t gi a c p ngo c nh n {} – kh i l nh.
int j = 5;
while(j > 0) printf("j = %i\n", j );
int j = 5;
while(j > 0) printf("j = %i\n", j );
j = 5
j = 4
j = 3
j = 2
j = 1
j = 5
j = 4
j = 3
j = 2
j = 1
while(j > 0) { printf("j = %i\n", j);
j ;
}
while(j > 0) { printf("j = %i\n", j);
j ;
}
while th c hi n l nh S ít nh t 0 l n
i u
ki n
S
0 0
Trang 7NH P MÔN L P TRÌNH 12/23/2009 13
D u ‘;’ t ngay sau bi u th c i u ki n ng ngh a v i l nh
S là r ng.
int j = 5;
while(j > 0);
printf("j = %i\n", j );
int j = 5;
while(j > 0);
printf("j = %i\n", j );
Ch ong trình b p không thoát c
ôi khi ng i l p trình c ý s d ng l nh r ng
int c, j;
while(scanf("%i", &j) != 1)
while((c = getch()) != 27)
;
int c, j;
while(scanf("%i", &j) != 1)
while((c = getch()) != 27)
;
t d u ‘;’
t thúc while không có S
Cú pháp:
do {
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 ()
i u
ki n
S
0 0
Trang 8NH P MÔN L P TRÌNH 12/23/2009 15
int j = 5;
printf("start\n");
do printf("j = %i\n", j );
while(j > 0);
printf("stop\n");
int j = 5;
printf("start\n");
do printf("j = %i\n", j );
while(j > 0);
printf("stop\n");
start
j = 5
j = 4
j = 3
j = 2
j = 1 stop
start
j = 5
j = 4
j = 3
j = 2
j = 1 stop
do while th c hi n l nh S ít nh t 1 l n
int j = -10;
printf("start\n");
do { printf("j = %i\n", j);
j ;
} while(j > 0);
printf("stop\n");
int j = -10;
printf("start\n");
do { printf("j = %i\n", j);
j ;
} while(j > 0);
printf("stop\n");
start
j = -10 stop
start
j = -10 stop
Trang 9NH P MÔN L P TRÌNH 12/23/2009 17
L nh l p for d n h t các thành ph n c a vòng l p v ào trong
m t câu l nh.
Cú pháp:
for (kh i ng; i u ki n l p; i u khi n)
S;
i u
ki n 0
0
kh i
i u khi n
int j;
for(j = 5; j > 0; j ) printf("j = %i\n", j);
int j;
for(j = 5; j > 0; j ) printf("j = %i\n", j);
j = 5
j = 4
j = 3
j = 2
j = 1
j = 5
j = 4
j = 3
j = 2
j = 1
for(j = 5; j > 0; j ) {
printf("j = %i ", j);
printf("%s\n", ((j%2)==0)?“chan":“le");
}
for(j = 5; j > 0; j ) {
printf("j = %i ", j);
printf("%s\n", ((j%2)==0)?“chan":“le");
}
j = 5 le
j = 4 chan
j = 3 le
j = 2 chan
j = 1 le
j = 5 le
j = 4 chan
j = 3 le
j = 2 chan
j = 1 le
Trang 10NH P MÔN L P TRÌNH 12/23/2009 19
C không gi i h n l n c a b c l p trong for.
#include <math.h>
int main(void)
{
double angle;
for(angle = 0.0; angle < 3.14159; angle += 0.2)
printf("sine of %.1lf is %.2lf\n",
angle, sin(angle));
return 0;
}
#include <math.h>
int main(void)
{
double angle;
for(angle = 0.0; angle < 3.14159; angle += 0.2 )
printf("sine of %.1lf is %.2lf\n",
angle, sin(angle));
return 0;
}
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 i, j, k;
for(i = 0, j = 5, k = -1; i < 10; i++, j++, k )
int i, j, k;
for(i = 0, j = 5, k = -1; i < 10; i++, j++, k )
th không có l nh nào.
for(; i < 10; i++, j++, k )
for(;i < 10;) for(;;)
Dùng while s p
lý h n Vòng l p không k t thúc
Trang 11NH P MÔN L P TRÌNH 12/23/2009 21
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.
C n th n khi s d ng!
for(;;) {
printf(“nhap m t so nguyen: ");
if(scanf("%i", &j) == 1)
break;
printf(“khong hop le, nhap lai\n“
}
printf(“j = %i\n", j);
for(;;) {
printf(“nhap m t so nguyen: ");
if(scanf("%i", &j) == 1)
printf(“khong hop le, nhap lai\n“
}
printf(“j = %i\n", j); nhap mot so nguyen : int
khong hop le, nhap lai nhap mot so nguyen: 16
j = 16
nhap mot so nguyen : int khong hop le, nhap lai nhap mot so nguyen: 16
j = 16
kh i vòng l p for
continue
T khóa continue ch th c nhanh n b c l p k ,
b t k phía sau ó còn nhi u l nh c n l p.
H n ch s d ng!
for(j = 1; j <= 10; j++) { if(j % 3 == 0)
continue;
printf("j = %i\n", j);
}
for(j = 1; j <= 10; j++) { if(j % 3 == 0)
continue;
printf("j = %i\n", j);
}
j = 1
j = 2
j = 4
j = 5
j = 7
j = 8
j = 10
j = 1
j = 2
j = 4
j = 5
j = 7
j = 8
j = 10
u j chia h t cho 3 thì b qua l nh in j
Trang 12NH P MÔN L P TRÌNH 12/23/2009 23
if else : r 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
1. Nh p a, b, c Tìm max Phát tri n nhi u s
2. Gi i ph i ph ng tr ng tr ình ax+b=0
3. Gi i ph i ph ng tr ng tr ình ax 2 +bx+c=0
4. Gi i h ph ph ng tr ng tr ình: a 1 x+b 1 y=c 1
a 2 x+b 2 y=c 2
5. Nh p vào i m trung bình, hãy x p lo i h c t p
6. Tính ti n i n (nh p vào s kw)
7. D ng tam giác (nh p các c nh a, b,c )
8. Nh p vào 1 tháng, cho bi t tháng này thu c quý m y?
9. Vi t ch t ch ng tr ng tr ình nh p vào tháng, in ra s ngày c a nó
10. Vi t ch t ch ng tr ng tr ình nh p vào 2 s x, y và 1 trong 4 toán t +, -,
*, / Sau ó th c hi n phép tính (n u y = 0 thì thông báo
Trang 13NH P MÔN L P TRÌNH 12/23/2009 25
3 S = 1 2 +2 2 + … + n 2
4 Tính s h ng th n c a dãy fibonaci (f 0 =f 1 =1, f n =f n-1 +f n-2 )
12 Phân tích n thành tích các th a s nguyên t
7 M t s bài t p