Bài tập kỹ thuật lập trình C | môn tin học | trường Đại học Huế

CHƯƠNG 1 LƯU ĐỒ THUẬT TOÁN (FLOWCHART).CHƯƠNG 2 CẤU TRÚC ĐIỀU KHIỂN.CHƯƠNG 3     HÀM CON.CHƯƠNG 4 MẢNG MỘT CHIỀU.CHƯƠNG 5 CHUỖI KÝ TỰ.CHƯƠNG 6.MẢNG HAI CHIỀU.CHƯƠNG 7 KIỂU DỮ LIỆU CÓ CẤU TRÚC.CHƯƠNG 8 TẬP TIN.CHƯƠNG 9 ĐỆ QUI.CHƯƠNG 10 LẬP TRÌNH THEO PHƯƠNG PHÁP PROJECT.TÀI LIỆU THAM KHẢO. Tài liệu giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời bạn đọc đón xem!

Môn:
Trường:

Đại học Huế 272 tài liệu

Thông tin:
179 trang 2 tháng trước

Bình luận

Vui lòng đăng nhập hoặc đăng ký để gửi bình luận.

Bài tập kỹ thuật lập trình C | môn tin học | trường Đại học Huế

CHƯƠNG 1 LƯU ĐỒ THUẬT TOÁN (FLOWCHART).CHƯƠNG 2 CẤU TRÚC ĐIỀU KHIỂN.CHƯƠNG 3     HÀM CON.CHƯƠNG 4 MẢNG MỘT CHIỀU.CHƯƠNG 5 CHUỖI KÝ TỰ.CHƯƠNG 6.MẢNG HAI CHIỀU.CHƯƠNG 7 KIỂU DỮ LIỆU CÓ CẤU TRÚC.CHƯƠNG 8 TẬP TIN.CHƯƠNG 9 ĐỆ QUI.CHƯƠNG 10 LẬP TRÌNH THEO PHƯƠNG PHÁP PROJECT.TÀI LIỆU THAM KHẢO. Tài liệu giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời bạn đọc đón xem!

34 17 lượt tải Tải xuống
lO MoARcPSD| 47110589
Giáo trình Bài Tp Kỹ Thuật Lp Trình Trang 1
Li m đầu
LI M ĐẦU
Khi bt u làm quen vi ngôn ng lp tnh C th là ngôn ng C Sinh Viên thường
gp khó khăn trong vic chuyn vn thuyết sang cài t c th trên máy. Sách Giáo
Trình Bài Tp K Thuật Lập Tnh nhm cung cp cho các Hc Sinh - Sinh Vn
Trường CĐ ng Ngh Thông Tin Tp. H Chí Minh h thng các bài tp, nhng kỹ ng
thực hành bn và ng cao v ngôn ngữ lập trình C. Cun sách y ược xem như
tài liu hướng dn tng bước cho Hc Sinh - Sinh Viên ca Trường trong vic hc và áp
dng kiến thc thuyết trên lp mt cách thành tho và sâu rng.
Giáo tnh ược chia thành 10 chương theo tng ni dung kiến thc, kèm theo c thi
mẫu 1 ph lc hướng dn viết chương trình, chun oán li và sa li. Mi chương
gm 2 phn:
Phn lý thuyết: ược m tt ngn gn vi y ví d minh ho kèm theo.
Phn bài tp: vi nhiu i tp ược chia làm hai mc cơ bn và luyn tp nâng
cao, bài tp có ánh du * bài tp khó dành cho sinh vn luyn tp thêm.
Phn kết lun: Tóm tt ni dung và các thao c mà sinh viên cn nm hay nhng
lưu ý ca chương ó.
Trong quá trình biên son, chúng i ã c gng trích lc nhng kiến thc rt cơ bn, nhng
li hay gp i vi người mi lp trình. Bên cnh ó chúng i cũng b sung thêm mt s
bài tp nâng cao n luyn thêm k năng lp trình.
lO MoARcPSD| 47110589
Giáo trình Bài Tp Kỹ Thuật Lp Trình Trang 2
Tuy nhiên, ch ích chính ca giáo trình này là phc v cho mt n hc nên chc chn
không th tránh khi nhng thiếu sót, vì thế, rt mong nhn ược nhng góp ý quý báu ca
các thy cô, các ng nghip và các bn Hc Sinh Sinh Vn giáo trình này ny ng
hoàn thin hơn.
Chân thành cm ơn.
Lch trình thc hành
LCH TNH THC HÀNH
Tng thời gian: 90 tiết.
STT
NỘI DUNG
STIẾT
1
Chương 1: Lưu thut toán
03
2
Chương 2: Cu trúc iu khin
06
3
Chương 3: Hàm con
12
4
Chương 4: Mng mt chiu
24
5
Chương 5: Chui ký t
06
6
Chương 6: Mng hai chiu
12
7
Chương 7: Kiu d liu có cu trúc
12
8
Chương 8: Tp tin
06
9
Chương 9: Đệ qui
06
10
Chương 10: Hướng dn lp tnh bng phương pháp Project
03
lO MoARcPSD| 47110589
Lưu thut toán
Giáo trình Bài Tp Kỹ Thuật Lp Trình Trang 3
CHƯƠNG 1 LƯU ĐỒ THUT TN (FLOWCHART)
Các ký hiệu biu din lưu thut toán, cách biểu diễn các cu trúc nhánh,
cu trúc lp và các k thut liên quan ến lưu thut toán.
iều khiển r
I. M TT LÝ THUYT
I.1. Khái nim
Lưu thut toán ng c dùng biu din thut toán, vic mô t nhập (input), d
liu xuất (output) và lung x lý thông qua các ký hiu hình hc.
I.2. Phương pháp duyt
Duyt t trên xung.
Duyt t trái sang phi.
I.3. c ký hiu
STT
KÝ HIỆU
1
2
3
4
5
6
7
8
9
lO MoARcPSD| 47110589
Lưu thut toán
Giáo trình Bài Tp Kỹ Thuật Lp Trình Trang 4
I.4. c cu trúc iu khin cơ bn
a. Cu trúc tun t
Tun t thc thi tiến trình. Mi lnh ược thc thi theo mt chui từ trên
xung, xong lnh này ri chuyển xung lnh kế tiếp.
Ví d
:
Nh
po 3 s
nguyên a, b, c và xu
t ra mànnh v
i g tr
c
a m
i
s
t
ă
ngn 1.
a = a + 1
b = b + 1
c = c + 1
a, b, c
lO MoARcPSD| 47110589
Lưu thut toán
Giáo trình Bài Tp Kỹ Thuật Lp Trình Trang 5
b. Cu trúc la chn
Đim quyết nh cho phép chọn một trong hai trường hợp.
if
lO MoARcPSD| 47110589
Lưu thut toán
Giáo trình Bài Tp Kỹ Thuật Lp Trình Trang 6
if…else
c. Cu trúc lp
Thực hin liên tc 1 lnh hay tập lnh vi s ln lp da vào iu kin.
Lp s kết thúc khi iu kin ược tha.
lO MoARcPSD| 47110589
Lưu thut toán
Giáo trình Bài Tp Kỹ Thuật Lp Trình Trang 7
for / while (Kim tra iu kin trước khi lp)
Ví d
:
Nh
po s
nguyên n. Xu
t ra mànnh t
1
ế
n n.
lO MoARcPSD| 47110589
Lưu thut toán
Giáo trình Bài Tp Kỹ Thuật Lp Trình Trang 8
do while (Thc hin lp trước khi kim tra iu kin)
Ví d
:
Nh
po s
nguyên d
ươ
ng n. N
ế
u nh
p saiu c
u nh
p l
i.
d.
c ví d
Ví d
1:
Gi
i và bi
n lu
n ph
ươ
ng trình: ax+b=0.
lO MoARcPSD| 47110589
Lưu thut toán
Giáo trình Bài Tp Kỹ Thuật Lp Trình Trang 9
lO MoARcPSD| 47110589
Lưu thut toán
Giáo trình Bài Tp Kỹ Thuật Lp Trình Trang 10
t = 1
Ví d
4:
Tính t
ng:
n
n
Sn
1
()
2
3
4
(1)
1
+
=−+−++−
, v
i n>0
lO MoARcPSD| 47110589
Lưu thut toán
Giáo trình Bài Tp Kỹ Thuật Lp Trình Trang 11
II. I TP
V lưu ồ thut toán sau
II.1. Bài tp cơ bn
1. Nhp vào hai s x, y. Xut ra n hình tng, hiu, tích, thương ca hai s
trên.
2. Nhp vào s nguyên n, kim tra xem n chn hay l và xut ra n hình.
3. Nhp vào ba cnh a, b, c ca tam giác. Xut ra n hình tam giác ó thuc loi
tam giác gì? (Thường, cân, vuông, u hay vuông cân).
4. Nhp vào s nguyên n. Xut ra n n hình (Nếu n chn thì gp ôi giá tr).
5. Nhp vào s nguyên n. Nếu n>5 thì tăng nn 2 ơn v và tr v g tr n, ngược
li tr v giá tr 0.
6. Tính n!, vi n0
7. TínhP n( ) =1.3.5(2n+1) , vi n 0
8. TínhS n( ) = + +1 3 5
+
+ (2×n+1), vi n 0
9. TínhS n( ) = − + + + 1 2 3 4 ( 1)
n+
1
n , vi n > 0
10. TínhS n( ) = +1 1.2 +1.2.3
+
+1.2.3 n , vi n > 0
11. TínhS n( ) = +1
2
2
2
+ + +3
2
n
2
, vi n > 0
12. TínhS n( ) = + + + +1
1
2
1
3 
1
n
, vi n>0
13. (*) TínhS n( ) = +1 1+12 + 1 + +1 + + + +2
31 n , vi n > 0
1+ +2 3
14. Tính P x y( , ) = x
y
.
15. TínhS n( ) = + +1 (1 2) + (1+ 2 + 3) ++ (1+ 2 + 3++n), vi n
> 0
16. Cho s nguyên n. Tính tr tuyt i ca n.
17. Cho s nguyên dương n gm k ch s. Tìm ch s có giá tr ln nht.
18. Đếm s lượng ước s chn ca s nguyên dương n.
19. In ra ch s u tn ca s nguyên dương n gm k ch s.
lO MoARcPSD| 47110589
Lưu thut toán
Giáo trình Bài Tp Kỹ Thuật Lp Trình Trang 12
20. Cho 2 s nguyên dương a, b. Tìm USCLN ca a và b.
21. Cho 2 s nguyên dương a, b. Tìm BSCNN ca a và b.
22. Cho s nguyên dương x. Kim tra xem x có phi s nguyên t không?
23. Cho s nguyên dương x. Kim tra x có phi là s chính phương không?
24. Cho s nguyên dương x. Kim tra xem x có phi s hoàn thin không?
II.2. Bài tp luyn tp và nâng cao
25. TínhS n( ) = +1 2
2
+ + +3
3
n
n
, vi n 0
26. Tính
S n( )
= + + + +12 23 34

n
n+1 , vi n>0
27. TínhS n( ) = + + + +1  n1!, vi n > 0
28. TínhS n( ) = +1 1+ 2 + 1+ 2 + 3 + +1+ 2 + 3n!++ n , vi n
> 0
2! 3!
29. Gii và bin lun phương trình: ax
2
+ + =bx c 0
30. Gii và bin lun phương trình: ax
4
+ bx
2
+ =c 0
31. (*) TínhS n( ) = n + (n +1) (n + +2) ... 1 , vi n > 0
32. (**) TínhS n( ) = +1 2 + 3+ +... n , vi n>0
III. KT LUN
Lưu thut toán rt hu ích trong vic mô t cách gii quyết ca mt bài toán.
Vic t y rt trc quan thông qua các hiu hình hc, ây là giai on u tiên
trước khi bt tay vào lp trình trên mt ngôn ng lp trình c th.
Khi y dng lưu thut toán, chúng ta cn chú ý mt vài im sau:
Mt lưu phi có im bt ầu và im kết thúc ( iu kin kết thúc).
Phi có dliu o, dữ liu ra sau khi x nh toán.
Ti mi v trí quyết nh la chn r nhánh phi ghi iu kin úng hoc sai thì
i theo nhánh nào.
lO MoARcPSD| 47110589
Cu tc iu khin
Giáo trình Bài Tp Kỹ Thuật Lp Trình Trang 13
CHƯƠNG 2 CU TC ĐIU KHIN
Tìm hiu cài t các cấu trúc r nhánh, lựa chn, lp các ký hiệu phép toán trong
ngôn ng C. t cách hot ng và hướng dn chy tng bước chương tnh.
I. M TT LÝ THUYT
I.1. c ký hiu
STT
KÝ
HIỆU
DIỄN GII
VÍ DỤ
1
{ }
Bt u và kết thúc hàm hay khi
lnh.
void main()
{
}
2
;
Kết thúc khai báo biến, mt lnh,
mt li gi hàm, hay khai báo
nguyên mu hàm.
int x;
void NhapMang(int a[], int &n);
3
//
Chú thích (ghi c) cho mt dòng.
Ch tác dng i vi người c
chương trình.
//Ham nay dung de nhap mang
void NhapMang(int a[], int &n);
4
/*
*/
Tương t như hiu //, nhưng cho
trường hp nhiu dòng.
/* Dau tien nhap vao n. Sau do
nhap cho tung phan tu */ void
NhapMang(int a[], int &n);
I.2. c kiu d liu cơ bn trong C
STT
KIỂU
GHI CHÚ
KÍCH
TỚC
ĐỊNH
DẠNG
KIỂU LIÊN TỤC (STHỰC)
1
float
4 bytes
%f
2
double
8 bytes
%lf
3
long double
10 bytes
%lf
KIỂU RỜI RẠC (SNGUYÊN)
1
char
t
1 byte
%c
S nguyên
1 byte
%d
2
unsigned char
S nguyên dương
1 byte
%d
3
int
S nguyên
2 bytes
%d
4
unsigned int
S nguyên dương
2 bytes
%u
5
long
S nguyên
4 bytes
%ld
6
unsigned long
S nguyên dương
4 bytes
%lu
7
char *
Chui
%s
lO MoARcPSD| 47110589
Cu tc iu khin
Giáo trình i Tp Kỹ Thuật Lp Trình Trang 14
I.3. Bng hiu các phép toán
STT
PP
TN
Ý NGA
GHI CHÚ
PP TN SỐ HỌC
1
+
Cng
2
-
Tr
3
*
Nhân
4
/
Chia ly phn nguyên
5
%
Chia ly phn dư
PP TN QUAN HỆ
1
>
Ln hơn
2
<
Nh hơn
3
>=
Ln hơn hoc bng
4
<=
Nh hơn hoc bng
5
= =
Bng nhau
6
!=
Khác nhau
PP TN LOGIC
1
!
NOT
2
&&
AND
3
||
OR
TN T TĂNG GIM
1
++
Tăng 1
Nếu toán t tăng gim t trước thì tăng gim
trước ri tính biu thc hoc ngược li.
2
--
Gim 1
PP TN THAO TÁC TN BIT
1
&
AND
2
|
OR
3
^
XOR
4
<<
Dch trái
5
>>
Dch phi
6
~
Ly phn bù theo bit
lO MoARcPSD| 47110589
Cu tc iu khin
Giáo trình Bài Tp Kỹ Thuật Lp Trình Trang 15
I.4. c hàm cơ bn
STT
TÊN
M
T VIỆN
DIỄN GII
VÍ DỤ
1
printf
#include<stdio.h>
Xut ra n hình.
#include<stdio.h>
#include<conio.h>
#include<dos.h>
void main()
{
int c = 1, n;
clrscr();
printf(“Nhap n:);
scanf(%d, &n);
do{ textcolor(c);
gotoxy(20, 10);
cprintf(“%d, n);
c++;
if (c>15)
c = 1;
delay(200);
} while(!kbhit());
}
2
scanf
#include<stdio.h>
Ly d liu t n
phím.
3
gotoxy
#include<conio.h>
Di chuyn du nháy
ến ta (x, y) trên
n hình văn bn.
4
textcolor
#include<conio.h>
Đặt u cho ch (có
g tr t 0 ến 15).
5
cprintf
#include<stdio.h>
Xut ra n hình vi
u ch ã nh lin
trước ó.
6
delay
#include<dos.h>
Dng thc hin lnh
tiếp sau mt khong
thi gian.
7
kbhit
#include<conio.h>
Kim tra xem có nhn
phím.
I.5. Cu trúc r nhánh
a. Cu trúc if
if (biu thc iu kin)
{
<khi lnh> ;
}
Nếu biểu thức iu kin cho kết qu khác không thì thực hin khi lệnh.
Ví d:
#include <conio.h>
#include <stdio.h> void
main ()
{ float
number ;
printf ( “Nhap mot so trong khoang tu 1 den 10 =>
) ; scanf ( “%f”, &number) ; if (number >5)
printf ( “So ban nhap lon hon 5. \n) ;
printf ( “%f la so ban nhap. , number);
}
lO MoARcPSD| 47110589
Cu tc iu khin
Giáo trình i Tp Kỹ Thuật Lp Trình Trang 16
b. Cấu trúc if … else
if (biu thc iu kin)
{
<khi lnh 1>;
}
else
{
<khi lnh 2>;
}
Nếu biểu thức iu kin cho kết qu khác không thì thực hiện khi lệnh 1, ngược
lại thì cho thc hin khi lệnh th2. Biểu thức iều kin phi ặt trong cp dấu
ngoc tròn.
Ví d: Gii và bin lun phương trình: ax+b=0
#include <conio.h>
#include <stdio.h> void
main ()
{ float
a, b;
printf ( “\n Nhap vao
a:); scanf ( %f”, &a);
printf ( “ Nhap vao
b:); scanf ( %f”, &b) ;
if (a= = 0)
if (b= = 0)
printf ( “ \n PTVSN”);
else
printf ( “ \n PTVN”);
else
printf ( “ \n Nghiem x=%f, -b/a);
getch ();
}
I.6. Cu trúc la chn switch
switch (biu thc)
{
case n1:
cácu lnh ;
break ; case n2:
các câu lnh ; break ;
………
case nk:
<cácu lnh> ; break ;
lO MoARcPSD| 47110589
Cu tc iu khin
Giáo trình Bài Tp Kỹ Thuật Lp Trình Trang 17
}
[default: các câu lnh]
n
i
là các hằng s nguyên hoặc ký t.
Ph thuc vào giá tr ca biu thc viết sau switch, nếu: o Giá tr này = n
i
thì
thc hin câu lnh sau case n
i
. o Khi giá tr biu thc không tha tt c các n
i
thì thc hin câu lnh sau default nếu có, hoc thoát khi câu lnh switch.
o Khi chương tnh ã thc hin xong câu lnh ca case n
i
nào ó thì s thc
hin luôn các lnh thuc case bên dưới nó không xét li iu kin (do các
n
i
ược xem như các nhãn) Vì vy, chương trình thoát khi lnh switch
sau khi thc hin xong mt trường hp, ta ng lnh break.
Ví d: To menu cp 1 cho phép chn menu bng s nhp t bàn phím.
#include<stdio.h>
#include<conio.h> int
ChonTD ()
{
int chon ;
printf ("Thuc Don") ; printf
("\n1. Lau thai!") ; printf ("\n2.
Nuoc ngot!") ; printf ("\n3. Ca loc
hap bau!") ; printf ("\n4. Chuot
dong!") ;
printf ("\n Xin moi ban chon mon an!") ;
scanf ("%d",&chon) ;
return chon ;
}
void TDchon(int chon)
{
switch (chon)
{
case 1:
printf ("\nBan chon lau thai!") ;
break ;
case 2:
printf ("\nBan chon nuoc ngot!") ;
break ;
case 3:
printf ("\nBan chon ca loc hap bau!") ;
break ;
case 4:
printf ("\Ban chon chuot dong!") ;
lO MoARcPSD| 47110589
Cu tc iu khin
Giáo trình i Tp Kỹ Thuật Lp Trình Trang 18
break ;
default:
printf ("\nBan chon khong dung!") ;
}
}
void main()
{ clrscr() ;
int c ;
c=ChonTD() ;
TDchon(c) ;
getch() ;
}
I.7. Cu trúc lp
a. for
for (<biu thc khi gán>; <biu thc iu kin>; <biu thc tăng/gim>) {
<khi lnh>;
}
Bt k biểu thức nào trong 3 biu thức nói tn u có th vng nhưng phi giữ
du chấm phy (;).
lO MoARcPSD| 47110589
Cu tc iu khin
Giáo trình Bài Tp Kỹ Thuật Lp Trình Trang 19
Nếu biểu thức 2 0 thì cho thực hin các lệnh cang lp, thực hin biu
thức 3. Quay trlại bước 2.
Ngược lại thoát khi lp.
Ví d: In ra n hình bng ASCII t t s 33 ến 255.
#include<conio.h>
#include<stdio.h> void
main()
{
for (int i=33;i<=255;i++)
printf("Ma ASCII cua %c: %d\t", i, i) ;
getch () ;
}
b. while
< Khi gán>
while ( <biu thc iu kin>)
{ lnh/ khi
lnh;
< tăng/gim ch s
lp>; }
Lưu ý: Cách hot ộng ca while giống for
lO MoARcPSD| 47110589
Cu tc iu khin
Giáo trình i Tp Kỹ Thuật Lp Trình Trang 20
Ví d: Tính gtr trung bình các ch s ca s nguyên n gm k ch s.
#include<stdio.h>
#include<conio.h> void
main()
{ long n, tong=0;
int sochuso=0;
float tb;
printf ("Nhap vao gia tri n gom k chu so") ;
scanf ("%ld",&n) ;
while(n>0)
{
tong=tong+n%10 ;
sochuso++ ;
n=n/10 ;
}
tb=1.0*tong/sochuso ;
printf ("Gia tri trung binh la: %f", tb) ;
getch () ; }
c. do … while
do
{
< khi lnh> ;
} while (biu thc iu kin) ;
Thực hiện khi lệnh cho ến khi biểu thức có g tr bằng 0.
| 1/179

Preview text:

lO M oARcPSD| 47110589 Lời mở đầu LỜI MỞ ĐẦU
Khi bắt ầu làm quen với ngôn ngữ lập trình – Cụ thể là ngôn ngữ C – Sinh Viên thường
gặp khó khăn trong việc chuyển vấn ề lý thuyết sang cài ặt cụ thể trên máy. Sách “Giáo
Trình Bài Tập Kỹ Thuật Lập Trình” nhằm cung cấp cho các Học Sinh - Sinh Viên
Trường CĐ Công Nghệ Thông Tin Tp. Hồ Chí Minh hệ thống các bài tập, những kỹ năng
thực hành cơ bản và nâng cao về ngôn ngữ lập trình C. Cuốn sách này ược xem như
tài liệu hướng dẫn từng bước cho Học Sinh - Sinh Viên của Trường trong việc học và áp
dụng kiến thức lý thuyết trên lớp một cách thành thạo và sâu rộng.
Giáo trình ược chia thành 10 chương theo từng nội dung kiến thức, kèm theo Các ề thi
mẫu 1 phụ lục hướng dẫn viết chương trình, chuẩn oán lỗi và sửa lỗi. Mỗi chương gồm 2 phần:
Phần lý thuyết: ược tóm tắt ngắn gọn với ầy ủ ví dụ minh hoạ kèm theo.
Phần bài tập: với nhiều bài tập ược chia làm hai mức ộ cơ bản và luyện tập nâng
cao, bài tập có ánh dấu * là bài tập khó dành cho sinh viên luyện tập thêm.
Phần kết luận: Tóm tắt nội dung và các thao tác mà sinh viên cần nắm hay những lưu ý của chương ó.
Trong quá trình biên soạn, chúng tôi ã cố gắng trích lọc những kiến thức rất cơ bản, những
lỗi hay gặp ối với người mới lập trình. Bên cạnh ó chúng tôi cũng bổ sung thêm một số
bài tập nâng cao ể rèn luyện thêm kỹ năng lập trình.
Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 1 lO M oARcPSD| 47110589
Tuy nhiên, chủ ích chính của giáo trình này là phục vụ cho một môn học nên chắc chắn
không thể tránh khỏi những thiếu sót, vì thế, rất mong nhận ược những góp ý quý báu của
các thầy cô, các ồng nghiệp và các bạn Học Sinh – Sinh Viên ể giáo trình này ngày càng hoàn thiện hơn. Chân thành cảm ơn. Lịch trình thực hành
LỊCH TRÌNH THỰC HÀNH
Tổng thời gian: 90 tiết. STT NỘI DUNG SỐ TIẾT 1
Chương 1: Lưu ồ thuật toán 03 2
Chương 2: Cấu trúc iều khiển 06 3 Chương 3: Hàm con 12 4
Chương 4: Mảng một chiều 24 5
Chương 5: Chuỗi ký tự 06 6
Chương 6: Mảng hai chiều 12 7
Chương 7: Kiểu dữ liệu có cấu trúc 12 8 Chương 8: Tập tin 06 9 Chương 9: Đệ qui 06 10
Chương 10: Hướng dẫn lập trình bằng phương pháp Project 03
Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 2 lO M oARcPSD| 47110589 Lưu ồ thuật toán
CHƯƠNG 1 LƯU ĐỒ THUẬT TOÁN (FLOWCHART)
Các ký hiệu biểu diễn lưu ồ thuật toán, cách biểu diễn các cấu trúc nhánh, iều khiển rẽ
cấu trúc lặp và các kỹ thuật liên quan ến lưu ồ thuật toán.

I. TÓM TẮT LÝ THUYẾT I.1. Khái niệm
Lưu ồ thuật toán là công cụ dùng ể biểu diễn thuật toán, việc mô tả nhập (input), dữ
liệu xuất (output) và luồng xữ lý thông qua các ký hiệu hình học.
I.2. Phương pháp duyệt
• Duyệt từ trên xuống.
• Duyệt từ trái sang phải. I.3. Các ký hiệu STT KÝ HIỆU DIỄN GIẢI 1 Bắt ầu chương trình 2 Kết thúc chương trình 3 Luồng xử lý 4 Điều khiển lựa chọn 5 Nhập 6 Xuất 7
Xử lý, tính toán hoặc gán 8
Trả về giá trị (return) 9
Điểm nối liên kết tiếp theo (Sử dụng khi lưu ồ vượt quá trang)
Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 3 lO M oARcPSD| 47110589 Lưu ồ thuật toán
I.4. Các cấu trúc iều khiển cơ bản
a. Cấu trúc tuần tự
Tuần tự thực thi tiến trình. Mỗi lệnh ược thực thi theo một chuỗi từ trên
xuống, xong lệnh này rồi chuyển xuống lệnh kế tiếp.
Ví d : Nh p vào 3 s nguyên a, b, c và xu t ra màn hình v i giá tr c a m i
s t ă ng lên 1. a = a + 1 b = b + 1 c = c + 1 a, b, c
Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 4 lO M oARcPSD| 47110589 Lưu ồ thuật toán
b. Cấu trúc lựa chọn
Điểm quyết ịnh cho phép chọn một trong hai trường hợp. • if
Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 5 lO M oARcPSD| 47110589 Lưu ồ thuật toán • if…else
c. Cấu trúc lặp
Thực hiện liên tục 1 lệnh hay tập lệnh với số lần lặp dựa vào iều kiện.
Lặp sẽ kết thúc khi iều kiện ược thỏa.
Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 6 lO M oARcPSD| 47110589 Lưu ồ thuật toán •
for / while (Kiểm tra iều kiện trước khi lặp)
Ví d : Nh p vào s nguyên n. Xu t ra màn hình t 1 ế n n.
Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 7 lO M oARcPSD| 47110589 Lưu ồ thuật toán •
Ví d : Nh p vào s nguyên d ươ ng n. N ế u nh p sai yêu c u nh p l i.
d. Các ví d
Ví d ụ 1: Gi ả i và bi ệ n lu ậ n ph ươ ng trình: ax+b=0.
do … while (Thực hiện lặp trước khi kiểm tra iều kiện)
Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 8 lO M oARcPSD| 47110589 Lưu ồ thuật toán
Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 9 lO M oARcPSD| 47110589 Lưu ồ thuật toán t = 1 + Ví d ụ 4: Tính t ổ ng: n Sn 1 () 1 2 3 =−+−++−4  (1) n , v ớ i n>0
Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 10 lO M oARcPSD| 47110589 Lưu ồ thuật toán II. BÀI TẬP
Vẽ lưu ồ thuật toán sau
II.1. Bài tập cơ bản 1.
Nhập vào hai số x, y. Xuất ra màn hình tổng, hiệu, tích, thương của hai số trên. 2.
Nhập vào số nguyên n, kiểm tra xem n chẵn hay lẻ và xuất ra màn hình. 3.
Nhập vào ba cạnh a, b, c của tam giác. Xuất ra màn hình tam giác ó thuộc loại
tam giác gì? (Thường, cân, vuông, ều hay vuông cân). 4.
Nhập vào số nguyên n. Xuất ra n màn hình (Nếu n chẵn thì gấp ôi giá trị). 5.
Nhập vào số nguyên n. Nếu n>5 thì tăng n lên 2 ơn vị và trả về giá trị n, ngược
lại trả về giá trị 0. 6. Tính n!, với n≥0 7.
TínhP n( ) =1.3.5(2n+1) , với n ≥ 0 + 8. TínhS n( ) = + +1 3 5 + (2×n+1), với n ≥ 0 9.
TínhS n( ) = − + − + + −1 2 3
4 ( 1)n+1n , với n > 0 + 10.
TínhS n( ) = +1 1.2 +1.2.3 +1.2.3 n , với n > 0 11. TínhS n( ) = +12 22 + + +32 n2 , với n > 0 1 1 12.
TínhS n( ) = + + + +1 2
3  1n , với n>0 13.
(*) TínhS n( ) = +1 1+12 + 1 + +1 + + + +2 31 n , với n > 0 1+ +2 3 14.
Tính P x y( , ) = xy . 15. TínhS n( ) = + +1 (1
2) + (1+ 2 + 3) ++ (1+ 2 + 3++n), với n > 0 16.
Cho số nguyên n. Tính trị tuyệt ối của n. 17.
Cho số nguyên dương n gồm k chữ số. Tìm chữ số có giá trị lớn nhất. 18.
Đếm số lượng ước số chẵn của số nguyên dương n. 19.
In ra chữ số ầu tiên của số nguyên dương n gồm k chữ số.
Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 11 lO M oARcPSD| 47110589 Lưu ồ thuật toán 20.
Cho 2 số nguyên dương a, b. Tìm USCLN của a và b. 21.
Cho 2 số nguyên dương a, b. Tìm BSCNN của a và b. 22.
Cho số nguyên dương x. Kiểm tra xem x có phải là số nguyên tố không? 23.
Cho số nguyên dương x. Kiểm tra x có phải là số chính phương không? 24.
Cho số nguyên dương x. Kiểm tra xem x có phải là số hoàn thiện không?
II.2. Bài tập luyện tập và nâng cao 25.
TínhS n( ) = +1 22 + + +33 nn , với n ≥ 0 S n( )  26. Tính = + + + +12 23 34 nn+1 , với n>0 27. TínhS n( ) = + + + +1  n1!, với n > 0 28.
TínhS n( ) = +1 1+ 2 + 1+ 2 + 3 + +1+ 2 + 3n!++ n , với n > 0 2! 3! 29.
Giải và biện luận phương trình: ax2 + + =bx c 0 30.
Giải và biện luận phương trình: ax4 + bx2 + =c 0 31.
(*) TínhS n( ) = n + (n − +1) (n − + +2) ... 1 , với n > 0 32.
(**) TínhS n( ) = +1 2 + 3+ +... n , với n>0 III. KẾT LUẬN
Lưu ồ thuật toán rất hữu ích trong việc mô tả cách giải quyết của một bài toán.
Việc mô tả này rất trực quan thông qua các ký hiệu hình học, ây là giai oạn ầu tiên
trước khi bắt tay vào lập trình trên một ngôn ngữ lập trình cụ thể.
Khi xây dựng lưu ồ thuật toán, chúng ta cần chú ý một vài iểm sau:
 Một lưu ồ phải có iểm bắt ầu và iểm kết thúc ( iều kiện kết thúc).
 Phải có dữ liệu vào, dữ liệu ra sau khi xử lý tính toán.
 Tại mỗi vị trí quyết ịnh lựa chọn rẽ nhánh phải ghi rõ iều kiện úng hoặc sai thì i theo nhánh nào.
Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 12 lO M oARcPSD| 47110589 Cấu trúc iều khiển
CHƯƠNG 2 CẤU TRÚC ĐIỀU KHIỂN
Tìm hiểu và cài ặt các cấu trúc rẽ nhánh, lựa chọn, lặp và các ký hiệu phép toán trong
ngôn ngữ C. Mô tả cách hoạt ộng và hướng dẫn chạy từng bước chương trình.
I. TÓM TẮT LÝ THUYẾT I.1. Các ký hiệu STT DIỄN GIẢI HIỆU VÍ DỤ void main()
Bắt ầu và kết thúc hàm hay khối { 1 { } lệnh. }
Kết thúc khai báo biến, một lệnh, int x; 2 ;
một lời gọi hàm, hay khai báo void NhapMang(int a[], int &n); nguyên mẫu hàm.
Chú thích (ghi chú) cho một dòng. //Ham nay dung de nhap mang 3 //
Chỉ có tác dụng ối với người ọc void NhapMang(int a[], int &n); chương trình. /*
/* Dau tien nhap vao n. Sau do
Tương tự như ký hiệu //, nhưng cho 4 nhap cho tung phan tu */ void
trường hợp nhiều dòng. */
NhapMang(int a[], int &n);
I.2. Các kiểu dữ liệu cơ bản trong C KÍCH ĐỊNH STT KIỂU GHI CHÚ THƯỚC DẠNG
KIỂU LIÊN TỤC (SỐ THỰC) 1 float 4 bytes %f 2 double 8 bytes %lf 3 long double 10 bytes %lf
KIỂU RỜI RẠC (SỐ NGUYÊN) Ký tự 1 byte %c 1 char Số nguyên 1 byte %d 2
unsigned char Số nguyên dương 1 byte %d 3 int Số nguyên 2 bytes %d 4 unsigned int Số nguyên dương 2 bytes %u 5 long Số nguyên 4 bytes %ld 6
unsigned long Số nguyên dương 4 bytes %lu 7 char * Chuỗi %s
Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 13 lO M oARcPSD| 47110589 Cấu trúc iều khiển
I.3. Bảng ký hiệu các phép toán PHÉP STT Ý NGHĨA TOÁN GHI CHÚ PHÉP TOÁN SỐ HỌC 1 + Cộng 2 - Trừ 3 * Nhân 4 / Chia lấy phần nguyên 5 % Chia lấy phần dư PHÉP TOÁN QUAN HỆ 1 > Lớn hơn 2 < Nhỏ hơn 3 >= Lớn hơn hoặc bằng 4 <= Nhỏ hơn hoặc bằng 5 = = Bằng nhau 6 != Khác nhau PHÉP TOÁN LOGIC 1 ! NOT 2 && AND 3 || OR
TOÁN TỬ TĂNG GIẢM 1 ++ Tăng 1
Nếu toán tử tăng giảm ặt trước thì tăng giảm
trước rồi tính biểu thức hoặc ngược lại. 2 -- Giảm 1
PHÉP TOÁN THAO TÁC TRÊN BIT 1 & AND 2 | OR 3 ^ XOR 4 << Dịch trái 5 >> Dịch phải 6 ~ Lấy phần bù theo bit
Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 14 lO M oARcPSD| 47110589 Cấu trúc iều khiển
I.4. Các hàm cơ bản TÊN STT THƯ VIỆN DIỄN GIẢI VÍ DỤ HÀM 1 printf
#include Xuất ra màn hình. #include Lấy dữ liệu từ bàn #include 2 scanf #include #include phím. void main() Di chuyển dấu nháy { 3 gotoxy
#include ến tọa ộ (x, y) trên int c = 1, n; màn hình văn bản. Đặt màu cho chữ (có 4 textcolor #include clrscr(); giá trị từ 0 ến 15).
printf(“Nhap n:”);
Xuất ra màn hình với scanf(“%d”, &n); 5 cprintf
#include màu chữ ã ịnh liền do{ textcolor(c); trước ó.
gotoxy(20, 10); Dừng thực hiện lệnh
cprintf(“%d”, n); 6 delay #include tiếp sau một khoảng c++; thời gian. if (c>15) c = 1; delay(200);
Kiểm tra xem có nhấn } while(!kbhit()); 7 kbhit #include phím. }
I.5. Cấu trúc rẽ nhánh
a. Cấu trúc if
if (biểu thức iều kiện) { ; }
Nếu biểu thức iều kiện cho kết quả khác không thì thực hiện khối lệnh. Ví dụ: #include #include void main () { float number ;
printf ( “Nhap mot so trong khoang tu 1 den 10 =>
“) ; scanf ( “%f”, &number) ;
if (number >5)
printf ( “So ban nhap lon hon 5. \n”) ;
printf ( “%f la so ban nhap. “ , number); }
Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 15 lO M oARcPSD| 47110589 Cấu trúc iều khiển
b. Cấu trúc if … else
if (biểu thức iều kiện) { ; } else { ; }
Nếu biểu thức iều kiện cho kết quả khác không thì thực hiện khối lệnh 1, ngược
lại thì cho thực hiện khối lệnh thứ 2. Biểu thức iều kiện phải ặt trong cặp dấu ngoặc tròn.
Ví dụ: Giải và biện luận phương trình: ax+b=0 #include #include void
main () { float a, b;
printf ( “\n Nhap vao
a:”); scanf ( “%f”, &a);
printf ( “ Nhap vao
b:”); scanf ( “%f”, &b) ; if (a= = 0) if (b= = 0)
printf ( “ \n PTVSN”); else
printf ( “ \n PTVN”); else
printf ( “ \n Nghiem x=%f”, -b/a); getch (); }
I.6. Cấu trúc lựa chọn switch switch (biểu thức) { case n1: các câu lệnh ;
break ; case n2: các câu lệnh ; break ; ……… case nk: ; break ;
Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 16 lO M oARcPSD| 47110589 Cấu trúc iều khiển
[default: các câu lệnh] }
• ni là các hằng số nguyên hoặc ký tự.
• Phụ thuộc vào giá trị của biểu thức viết sau switch, nếu: o Giá trị này = ni thì
thực hiện câu lệnh sau case ni. o Khi giá trị biểu thức không thỏa tất cả các ni
thì thực hiện câu lệnh sau default nếu có, hoặc thoát khỏi câu lệnh switch.
o Khi chương trình ã thực hiện xong câu lệnh của case ni nào ó thì nó sẽ thực
hiện luôn các lệnh thuộc case bên dưới nó mà không xét lại iều kiện (do các
ni ược xem như các nhãn)  Vì vậy, ể chương trình thoát khỏi lệnh switch
sau khi thực hiện xong một trường hợp, ta dùng lệnh break.
Ví dụ: Tạo menu cấp 1 cho phép chọn menu bằng số nhập từ bàn phím. #include #include int ChonTD () { int chon ;
printf ("Thuc Don") ; printf
("\n1. Lau thai!") ; printf ("\n2. Nuoc ngot!") ;
printf ("\n3. Ca loc hap bau!") ;
printf ("\n4. Chuot dong!") ;
printf ("\n Xin moi ban chon mon an!") ;
scanf ("%d",&chon) ; return chon ; }
void TDchon(int chon) { switch (chon) { case 1:
printf ("\nBan chon lau thai!") ; break ; case 2:
printf ("\nBan chon nuoc ngot!") ; break ; case 3:
printf ("\nBan chon ca loc hap bau!") ; break ; case 4:
printf ("\Ban chon chuot dong!") ;
Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 17 lO M oARcPSD| 47110589 Cấu trúc iều khiển break ; default:
printf ("\nBan chon khong dung!") ; } } void main() { clrscr() ; int c ; c=ChonTD() ; TDchon(c) ; getch() ; } I.7. Cấu trúc lặp a. for for (; ; ) { ; }
Bất kỳ biểu thức nào trong 3 biểu thức nói trên ều có thể vắng nhưng phải giữ
dấu chấm phẩy (;).
Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 18 lO M oARcPSD| 47110589 Cấu trúc iều khiển
Nếu biểu thức 2 0 thì cho thực hiện các lệnh của vòng lặp, thực hiện biểu
thức 3. Quay trở lại bước 2.
Ngược lại thoát khỏi lặp.
Ví dụ: In ra màn hình bảng mã ASCII từ ký tự số 33 ến 255. #include #include void main() {
for (int i=33;i<=255;i++)
printf("Ma ASCII cua %c: %d\t", i, i) ; getch () ; } b. while < Khởi gán> while ( ) { lệnh/ khối lệnh; < tăng/giảm chỉ số lặp>; }
Lưu ý: Cách hoạt ộng của while giống for
Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 19 lO M oARcPSD| 47110589 Cấu trúc iều khiển
Ví dụ: Tính giá trị trung bình các chữ số của số nguyên n gồm k chữ số. #include #include void main()
{ long n, tong=0; int sochuso=0; float tb;
printf ("Nhap vao gia tri n gom k chu so") ;
scanf ("%ld",&n) ; while(n>0)
{
tong=tong+n%10 ; sochuso++ ; n=n/10 ;
}
tb=1.0*tong/sochuso ;
printf ("Gia tri trung binh la: %f", tb) ;
getch () ; } c. do … while do { < khối lệnh> ;
} while (biểu thức iều kiện) ;
Thực hiện khối lệnh cho ến khi biểu thức có giá trị bằng 0.
Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 20