You are on page 1of 105

C K .

0000069630

i' II lí 10:

TRẨN ĐÌNH KHANG, NGUYỄN HỔNG PHƯƠNG


ĐỖ BÁ LÂM, NGUYỄN LINH GIANG

BÀI TẬP ■

T O N yec
{M i
TRÀN ĐÌNH KHANG, NGUYỄN HÒNG PHƯƠNG,
ĐỎ BÁ LÂM, NGUYỄN LINH GIANG

BÀI TẬP
TIN HỌC ĐẠI CƯƠNG
(Tái bản lần thứ nhất)

BẠI HỌC THẨI NGUYÊN


T
B
UN
G
TẰ
M
ựỌ
C
I
IỆ
Ư

NHÀ XUÁT BẢN BÁCH KHOA - HÀ NỘI


Bản quyền thuộc về trường Đại học Bách Khoa Hà Nội.

Mọi hình thức xuất bản, sao chụp mà không có sự cho phép bằng văn bản củ a
trường là vi phạm pháp luật.

Mã số: 58 - 2013/CXB/90 - OỈ/BKHN

Biên mục trên xuất bản phẩm của Thư viện Quác gia Việt Nam

Bài tập tin học đại cương / Trần Đình Khang, Nguyễn Hồng Phương, Đỗ Bá
Lâm, Nguyễn Linh Giang. - H. BốcB íàròẩ ĩỉà Nội, 2013. - lOOtr. : hình vỗ,
b ả n g ; 24cm h p rT fj
Thư mục: tr. 99
ISBN 9786049113406

1. Tin học đại cương 2. Lập trình 3. Bài tập 4. Tài liệu học tập
005.1076- d c l4
BKH0012p-CIP

2
LỜI NÓI ĐÀU
Cuốn iBii tập Tin học đại cươttg được biên soạn theo chương trình môn học
Tin học đại CHimg giảng dạy tại Trường Đại học Bách Khoa Hà Nội. Sách được sử
dụng để bổ tirc cho Giáo trình Tin học đại cương, có thể làm tài liệu học tập cho
sinh viên Trurờig Đại học Bách Khoa Hà Nội, cũng như các trường Đại học, Cao
đẳng kỹ thuậtt 'à công nghệ trong cả nước.

Với miụ: tiêu cung cấp tài liệu học tập cho sinh viên, nhóm tác giả đã tập
hợp các bài ttậ> và kinh nghiệm của nhiều thầy, cô giáo trong Viện Công nghệ
thông tin và Tiuyền thông, Trường Đại học Bách Khoa Hà Nội, để biên tập thành
cuốn bài tập in;y.

Bố cục ách bao gồm các phần chính như sau:

Phần các câu hỏi trắc nghiệm: có 348 câu hỏi trắc nghiệm bố cục theo các
phần Tin học cin bàn, Giải quyết bài toán và Lập trình.

Phần các bài tập tự luận: là các bài tập lập trình, với một số bài có lời giải
mẫu và một số oài để người đọc tự giải.

Các tác giã hy vọng cuốn bài tập này sẽ là một tài liệu hữu ích cho người sừ
dụng.

Các tác giả xin bày tỏ sự biết ơn chân thành đối với các thầy cô giáo, các đồng
nghiệp trong V ện Công nghệ thông tin và Truyền thông, Trường Đại học Bách Khoa
Hà Nội, đã giúp đõ và động viên rất nhiều trong quá trình biên soạn giáo trình. Đặc
biệt, xin gửi lcn cảm 001 sâu sắc tới PGS. Đặng Văn Chuyết và TS. Phạm Đăng Hải
đã dành thời giai đục bản thảo và cho Iihững ý kién dóng góp quý bấu.

Trong qiá trình biên soạn, mặc dù đã rất cố gắng, nhưng sai sót là điều khó
tránh khỏi, các tác giả rất mong nhận được ý kiến đóng góp của bạn đọc để lần tái
bản sau được hoàn thiện hom.

Mọi ý kiến đóng góp xin gửi về: Viện Công nghệ thông tin và Truyền thông,
Trường Đại họt Bách Khoa Hà Nội, số 1 Đại c ồ Việt, Hai Bà Trưng, Hà Nội.

CÁC TÁC GIẢ

3
MỤC LỤC

Lời nói đ ầ u ............................................................................................................................. 3

PHÀN I. TIN HỌC CẢN B Ả N ........................................................................................ 5

PHẢN n. GIẢI QUYẾT BÀI TO Á N ........................................................................... 29


PHÀN III. LẬP TR ÌN H ..................................................................................................36

PHÀN IV. BÀI TẬP T ự LUẬN LẬP T R ÌN H ...........................................................78

IV. 1. Phần bài tập có lời giải..............................................................................................78

IV.2. Phần bài tập bạn đọc tự giải..................................................................................... 95

4
PHẦN I. TIN HỌC CĂN BẢN

C â u 1.rrình tự xử lý thông tin trong hệ thống thông tin?

a Dữ liệu —> Thông tin -> Tri thức

b Thông tin —» Dữ liệu —» Tri thức

c Dữ liệu —> Tri thức —> Thông tin

d Thông tin —> Tri thức -> Dữ liệu

C â u 2 . ’hát biểu nào dưới đây là sai?

a Dữ liệu có thể tồn tại ờ nhiều dạng như tín hiệu vật lý, các ký hiệu, số liệu

b Thông tin không thể được truyền từ người này sang người khác

c Tri thức là sự hiểu biết (nhận thức) về thông tin

d Máy tính điện từ giúp quá trình xử lý dữ liệu diễn ra nhanh chóng và
chính xác hơn so với xử lý thù công.

C âu 3. rhọn câu trá lời chính xác nhất: Quy trình xử lý thông tin có trình tự là?

aNhập dữ liệu —» Lưu trữ —> Xuất dừ liệu

b.Nhập thông tin —> Xử lý —> Xuất thông tin

cNhập dữ liệu —>Xử lý —» Lưu trữ —> Xuất dữ liệu

HMhập Hữ liệu —» Xír lý —> Xuất dữ liệu

C â u 4. 'hát biểu nào dưới đây là đúng?

a.rin học nghiên cứu việc xử lý thông tin thành tri thức

b.Công nghệ thông tin hỗ trợ việc quản lý nhân sự, quản lý tài sản...trong
các doanh nghiệp

c.rhuật ngữ công nghệ thông tin và truyền thông và Internet là nhu nhau

d.^ông nghệ thông tin chi liên quan tới các bài toán lớn, phức tạp như xừ lý
dữ liệu lớn, tính toán phức tạ p ...

5
C â u 5. Hệ đếm cơ số b (b > 2 và nguyên dương) sừ dụng bao nhiêu chữ số?
a. Có 10 chữ số b. Có b chữ số
c. Có b-1 chữ số d. Có 2 chữ số là 0 và b-1
C ầ u 6. BIT là viết tắt của cụm từ?

a. Binary Information Tranmission

b. Binary Information Technology

c. Binary Information uniT

d. Binary diglT

C â u 7. Số 5678 có thể là biểu diễn của một giá trị trong hệ đếm cơ số nào?

a. Hệ đếm cơ số 2

b. Hệ đếm cơ số 2 và 8

c. Hệ đếm cơ số 8, 10 và 16

d. Hệ đếm cơ số 10 và 16

C â u 8. Số 101.112, trong hệ thập phân có giá trị bàng?

a. 5.75 b. 5.525

c. 7.75 d. 7.5

C â u 9. Một số nguyên biểu diễn ở hệ 16 (hệ Hexa) là 2008. Hỏi giá trị ở hệ ị 10 là
bao nhiêu?
a. 8020 b. 2080
c. 8200 d. 2820
C â u 10. Đẳng thức 131 - 4 5 = 53 đúng trong hệ cơ số nào?
a. 6 b. 7
c. 8 d. 9
C â u 11. Số nhị phân 11 1000 1110 có biểu diễn trong hệ đếm cơ số 16 là?
a. E32 b. 38E
c. D32 d. 38D
C â u 12. Số nhị phân 110011.01 có biểu diễn trong hệ đếm cơ số 16 là?
a. 33.1 b. C3.1
c. C3.4 d. 33.4

6
C â u 13. Số nhị phân 1100101001 có biểu diễn trong hệ cơ số 8 là?

1.1451 b. 4451

6241 d. 6244

C â u }4. Số nhị phân 11001.01001 có biểu diễn trong hệ cơ số 8 là?

1.61.21 b. 31.22

31.21 d. 61.22

C â u 5 . Để biểu diễn cùng một giá trị, trong các hệ đếm sau, hệ đếm cơ sổ nào sử
dụng nhiều chữ số nhất?
I. Cơ số 2 b. Cơ số 8
Cơ số 10 d. Cơ số 16
C â u 16. Để biểu diễn cùng một giá trị, trong các hệ đếm sau, hệ đếm cơ số nào sừ
dụng ít chữ số nhất?
1. Cơ số 2 b. Cơ số 8
Cơ số 10 d. Cơ số 16
C â u 17. Tại sao lại sử dụng hệ đếm Hexa trong tin học?
I. Vi nó là hệ đếm mà máy tính có thể hiểu được
1. Vì nó là hệ đếm cơ số lớn nhất
Vì nó dễ hiểu với con người và đuợc con người sử dụng
1. Vì nó biểu diễn ngẩn gọn hệ đếm nhị phân
C â u 8 . Một số nhị phân 32 bit nếu biểu diễn trong hệ cơ số 8 sẽ có tối đa bao
ìhiêu chữ số?
1.8 b. 10
11 d. 4
C â u ]9. Số thập phân 19.75 trong hệ nhị phân được biểu diễn là?
1.1011.11 b. 10011.11
1011.011 d. 10011.101
C âu Bit là gì?
J. Là chữ số nhị phân
ĩ. Là đơn vị nhò nhất đế biểu diễn thông tin
Là đơn vị nhò nhất để lưu trữ thông tin
i. Cả 3 câu trẽn đều đúng

7
Câu 21. Cần bao nhiêu khối nhớ 8 KB để có được dung lượng 1 MB?
a. 64 b. 512
c. 256 d. 128
Câu 22. Một Megabyte bằng?
a. 210B b. 2'-°TB
c. 210 KB d. 220 KB
Câu 23. Một Gigabyte bằng?
a. 1024 KB b. 220 B
c. 210KB d. 220 KB
Câu 24. Một Terabyte bằng?
a. 210GB b. 2 10 MB
c. 1000 MB d. 1000 GB
Câu 25. Trong các giá trị thể hiện kích thước file như sau, giá trị nào lớn nhất?
a. 100 KB b. 1 GB
c. 2 " MB d. 1000 MB
Câu 26. Trong các giá trị thể hiện kích thước file như sau, giá trị nào nhò nhát?
a. 1000 B
b. 100 KB
c. 10 MB
d. 1 GB
C â u 27. Sử dụng 4 bit nhị phân để biểu diễn số nguyên không dấu. Hỏi giá trị số
nguyên lớn nhất có thể biểu diễn là bao nhiêu?
a. 16 b. 15
c. 8 d. 7
C â u 28. Sử dụng 4 bit nhị phân để biểu diễn số nguyên có dấu. Hói giá trị số
nguyên lớn nhất có thể biểu diễn là bao nhiêu?
a. 16 b. 15
c. 8 d.7
Câu 29. Sừ dụng 11 bit để biểu diễn một số nguyên có dấu, dải biểu diễn sẽ là?
a. -1024 tới +1023 b. -2048 tới +2047
c. -1024 tới +1024 d. -2048 tới +2048
C â u 39. Một số nguyên có dấu biều diễn dưới dạng số nhị phân 8 bit là 01010101.
Giá trị cùa số đó trong hệ thập phân là?
í. +85 b. -85
c. -43 d. +43
C â u 31. Số nguyên -86 được biểu diễn dưới dạng số nhị phân 8 bit là?
í. 0101 0101 b. 00110011
í. 1010 1010 d. 1010 1001
C â u 32. Cho các số nguyên không dấu X =6Ai6, Y=1538, z =105)0. Thứ tự sắp
>ếp giảm dần sẽ là?
í. X, Y, z b. Y, X, z
c. z, Y, X d. Y, z , X
C â u 33. Cho 4 số nguyên 16 bit có dấu có mã hexa là: 5931, AC43, B571, E755.
Số lớn nhất là?
a 5931
ị. B571
c. AC43
c. E755
C â u 34. Cách biểu diễn số âm trong máy tính là?
a Thêm dấu - vào trước giá trị nhị phân dương tương ứng
b. Sừ dụng mã bù 10
c Đảo các bit của giá trị nhị phân dương tương ứng
d. Sừ dụng mã bù 2
C âu 35. Tìm câu trả lời thích hợp nhất cho câu hòi: Trong máy tính chiìng ta hiển
đễn số nguyên có dấu bằng mã bù 2 bởi vi ưu điểm cùa phương pháp này
li?
a Không phải sử dụng dấu +, -
b Cộng, trừ số có dấu quy về một phép cộng với số nguyên không dấu
c Khả năng biểu diễn (dải biểu diễn) lớn hơn phương pháp dùng dấu +, -
d Không có hiện tượng tràn số
C â u 36. Khi cộng hai số nguyên có dấu trong máy tính, trường hợp nào chắc chắn
knông tràn?
a Cộng hai số nguyên dương

9
b. Cộng hai số nguyên âm
c. Cộng hai số khác dấu
d. Tất cả các phương án trên đều sai
C â u 37. Khi thực hiện trừ hai số nguyên có dấu trong máy tính, trường họợp nào
cần phải kiểm tra hiện tượng tràn số học?
a. Trìr hai số khác dấu
b. Trừ hai số nguyên dương
c. Trừ hai số nguyên âm
d. Không cần kiểm tra vì phép trừ luôn cho kết quả đúng
C â u 38. Phát biểu nào sau đây là đúng khi thực hiện phép nhân 2 số nguyyên có
dấu trong máy tính?
a. Trước khi thực hiện phép nhân cần chuyển cả 2 thừa số thành đối số
b.Trước khi thục hiện phép nhân cần chuyển cả 2 thừa số thành số dưcrmg
c. Nếu hiện tượng tràn số xảy ra thì dấu của tích ngược dấu 2 thừa số.
d. Nếu 2 thừa số khác dấu thì không cần hiệu chinh lại dấu của tích.
C â u 39. Khi thực hiện phép chia hai số nguyên có dấu trong máy tính, saau khi
chuyển số bị chia và số chia thành số dương thì thực hiện phép chia. TYrường
hợp nào phải đảo lại dấu của cả thương và số dư?
a. Số bị chia duơng, số chia dương
b. Số bị chia dương, số chia âm
c. Số bị chia âm, số chia dương
d. Số bị chia âm, số chia âm
C â u 40. Cho 2 giá trị A = 195, B = 143 được biểu diễn dưới dạng số npguyên
không dấu 8 bit trong máy tính. Kết quả của phép toán A+B mà many tính
thực hiện là bao nhiêu?
a. 338 b. 256
c. 0 d. 82
C âu 41. Cho 2 giá trị A = +95, B = +43 được biểu diễn dưới dạng số nguyyên có
dấu 8 bit trong máy tính. Ket quả của phép toán A+B mà máy tính thựcc hiện
được là bao nhiêu?
a. +138 b . +127
c. - 118 d . -138

10
C â u 4:. Cho 2 giá trị A = +95, B = -4 3 được biểu diễn dưới dạng số nguyên có
(ấu 8 bit trong máy tính. Kết quả của phép toán A -B mà máy tính thực hiện
arợc là bao nhiêu?
í +138 b. -118
t-1 d . +127
C âu 4;. Cho 2 giá trị A = -4 3 , B = -9 5 được biểu diễn dưới dạng số nguyên có
(ấu 8 bit trong máy tính. Kết quả của phép toán A+B mà máy tính thực hiện
arợc là bao nhiêu?
í -1 3 8 b. -118
c+118 d . +256
C â u 4». Cho biết kết quả của biểu thức khi biểu diễn ờ dạng số nguyên có dấu 8
ht? NOT 106,10)
í. 00010110 b. 00010101
L 10010110 d. 10010101
C â u 4). Kết quả của biểu thức 10010110 XOR 01101001 là bao nhiêu?
í. 10010110 b. 00000000
t 11111111 d . 01101001
C âu 4i. Theo chuẩn IEEE 754/85, với cách biểu diễn số thực độ chính xác đơn
(iùng 32 bit) thì số bit dùng biểu diễn phần mã lệch (e) sẽ là?
£ 7 bit b. 9 bit
L 8 bit d. 6 bit
C â u 4'. Theo chuẩn IEEE 754/85, biểu diễn số thực độ chính xác kép (64 bit) thì
o bit dùng biểu diễn phần mã lệch (e) sẽ là?
í. 8 bit b.10 bit
c 9 bit d. 11 bit
C â u 4i. Biểu diễn số thực X = 9.6875 dưới dạng số dấu chấm động theo chuẩn
EEE 754 với 32 bit thì phần mã lệch (e) có giá trị là bao nhiêu?
í. 1000 0001 b.1000 0010
(.1000 0011 d. 0000 0011
C â u 4*. Xác định giá trị thập phân của số thực X có dạng biểu diễn theo chuẩn
EEE 754 với 32 bit nhu sau:
(011 1111 1000 0000 0000 0000 0000 0000

11
a. 1 b. -1
c. 0 d. 2
C â u 50. Trong chuẩnIEEE 754/85, NaN là mộtgiá trị đặc biệt không biiểu diễn
cho một số. Phát biểu nàosau đây là đúng về giá trị NaN?
a. Tất cả các bit phần mã lệch bằng 1, bit phần định trị tùy ý
b. Tất cả các bit phần mã lệch bằng 1, phần định trị có giá trị khác 0
c. Tất cả các bit phần mã lệch bằng 0, tất cả các bit phần định trị bằng 1
d. Tất cả các bit phần mã lệch bằng 0, phần định trị có giá trị khác 0
C â u 51. Trong chuẩn IEEE 754/85, thuật ngữ "độ chính xác kép" đề cập tớii?
a. Số lượng bit dùng để biểu diễn số thực độ chính xác kép nhiều gấp 2 \íần
số lượng bit dùng để biểu diễn số thực độ chính xác đơn
b. Dải biểu diễn số thực độ chính xác kép lớn gấp 2 lần dài biển diễn số 'thực
độ chính xác đom
c. Số thực độ chính xác kép biểu diễn số thực cỏ dấu, trong khi số thựcc điộ
chính xác đơn biểu diễn số thực không dấu
d. Số lượng các bit sau dấu phẩy trong biểu diễn số thực độ chính xác kéfp
nhiều gấp 2 lần so với khi biểu diễn ờ dạng số thực độ chính xác đem.
C â u 52. Phát biểu nào sau đây là sai về bộ mã ASCII?
a. Là bộ mã biểu diễn ký tự
b. Dùng 8 bit để biểu diễn ký tự
c. Bộ mã ASCII không phân biệt chữ hoa, chữ thường
d. Bộ mã ASCII có 128 ký tự chuẩn
C â u 53. Phát biểu nào sau đây là đúng về bộ mã ASCII?
a. Mỗi ký tự trong bộ mã ASCII có độ dài 2 byte
b. Bộ mã ASCII không biểu diễn được chữ số '0'
c. Bộ mã ASCII có 256 ký tự
d. Bộ mã ASCII có 128 ký tự mở rộng không thể thay đổi được
C â u 54. Muốn mã hóa một bảng mã gồm 100 ký tự phải sử dụng tối thiiểu bao
nhiêu bit nhị phân cho mỗi từ?
a. 5 bit b. 6 bit
c. 7 bit d. 50 bit

12
C a t 55. Trong các biểu thức so sánh dưới đây, biểu thức nào đúng, biết bảng mã
được sừ dụng là bảng mã ASCII
a. '0' > 1 b. '9' > 'A'
c . ’a 'c 'B ' d. 'a '< T
C â i 56. Một hệ thống mã sử dụng 2 byte để mã hóa các ký tự. số lượng các ký tự
có thể biểu diễn là:
a. 2*28 b. 216
c. 2'6 d. 16*28
C â i 57. Bảng mã ký tự Unicode là gì?
a. Là bảng mã ký tự chuẩn tiếng Latin dùng trên Internet
b. Là bảng mã ký tự chuẩn 8 bit tiếng Việt
c. Là bảng mã ký tự chuẩn 32 bit của thế giới
d. Là bảng mã ký tự chuấn 16 bit của thế giới
C â i 58. Chức năng quan trọng nhất của máy tính là?
a. Lưu trữ dữ liệu b. Xử lý dữ liệu
c. Nhập và xuất dữ liệu d. Điều khiển
C â i 59. Các thành phần cơ bản của một hệ thống máy tính gồm có:
a. Mainboard, ồ cứng, màn hình
b. Bộ xừ lý trung tâm, bộ nhớ, thiết bị ngoại vi, liên kết dữ liệu
c. Chip vi xử lý, bộ nhớ, thiết bị vào ra, nguồn
đ. Bộ xử lý trung tâm, bộ nhớ chính, hệ thống vào ra, liên kết hệ thống
C â i 60. Các thao tác xử lý của máy tính gồm (1) Nhận lệnh, (2) Nhận dữ liệu nếu
cẩn. (3) Giải mã lệnh, (4) Thực hiện lệnh Trình tự thực hiện họrp lý là?
a. 1,2, 3 ,4 b. 1,3, 2, 4
c. 4, 2 ,1 ,3 d. 3 ,2 ,4 , 1
C â i 61. Các thành phần của CPU gồm?
a. Control Unit, Bộ nhớ trong, Registers
b. Control Unit, Bộ nhớ ngoài, Registers
c. Control Unit, ALU, Registers
đ. Input-Output System, Bus, Bộ nhớ chính

13
C â u 62. Thành phần nào trong CPU đảm nhận việc thực hiện các phép xử 1 lý dữ
liệu?
a. CU b. Register Files
c. ALU d. Bus bên trong

C âu 63. CPU lưu mã lệnh đang được thực hiện ờ đâu?


a. CU b. ALU
c. Thanh ghi d. Bus bên trong
C â u 64. Hình sau là sơ đồ cơ bản của một máy tính. Biết ALU là khối số hạọc và
logic. Hãy chi ra sự kết hợp đúng của A, B, c trong hình.

----------- Luồng điều khiển -------------► Luồng dữ liệu

A B c

a ALU Bộ nhớ Khối điều khiển

b Khối điều khiển ALU Bộ nhớ

c Khối điều khiển Bộ nhớ ALU

d Bộ nhớ Khối điều khiển ALU

14
C âu 65. Chức năng chính của tập các thanh ghi là?
a. 3iều khiển nhận lệnh
b. rhứa các thông tin phục vụ cho hoạt động của CPU
t

c. /ận chuyển thông tin giữa các thành phần trong máy tính
d. Chông có câu trả lời nào ờ ừên là đúng
C â u 66. Phát biểu nào sau đây là sai về CPU?
a. Các thành phần chính cùa CPU bao gồm c u , ALU và tập các thanh ghi
b. IPƯ hoạt động theo chương trinh nằm trong bộ nhớ chính
c. CPU đàm nhận tất cả các chức năng của hệ thống máy tính
d. rốc độ của CPU phụ thuộc vào tần số xung nhịp cùa đồng hồ
C â u 67. Phát biểu nào sau đây là đúng về CPU?
a. CPU hoạt động theo các chương trình nằm trên 0 cứng
b. Chối điều khiển c u trong CPU điều khiển hoạt động của tất cả các bộ
ihận khác trong máy tính
c. "âp các thanh ghi của CPU là một số ngăn nhớ có địa chỉ xác định của bộ
ìhớ chính
d. Chối tính toán số học và logic ALU trong CPU thực hiện với các dữ liệu
Ìằm trên tập thanh ghi
C â u 68 . Phát biểu nào sau đây là đúng về bộ nhớ chính?
a. Bộ nhớ chính bao gồm RAM và 0 cứng
b. ỉộ nhớ chính được chia thành các ngăn nhớ có kích thước 1 MB
c. Dung lượng bộ nhớ chính có thể lớn tùy ý
d. CPU có thể trao đổi dữ liệu trực tiếp với bộ nhớ chính
C â u 69. Chức năng chính của RAM?
a. Lưu trữ dữ liệu lâu dài
b. Lưu trữ dữ liệu và chương trình đang thực hiện
c. -ưu trữ chương trình dùng để khởi động máy tính
d. at cả các đáp án trên
C â u 7 0 .3Ộ nhớ đệm nhanh cache dùng đề?
a. ■'ăng cường dung lượng nhớ của CPU thay cho các thanh ghi
b. Mhằm giảm độ chênh lệch tốc độ giữa CPU và bộ nhớ chính (RAM)
c. Pe có thể lưu dữ liệu khi mất điện
d. ~ất cả các phương án trên đều sai

15
C â u 71. Phát biểu nào sau đây là SAI?
a. Tốc độ truy cập bộ nhớ trong nhanh hơn tốc độ truy cập bộ nhớ nịgoàài
b. Nội dung của ngăn nhớ có thể thay đổi nhưng địa chi ngăn nhớ thù CCO định
c. Nội dung RAM mất đi khi mất điện
d. Dung lượng bộ nhớ cache lớn hơn dung lượng của RAM
C â u 72. Lựa chọn nào sau đây chi chứa các thành phần là bộ nhớ trong?
a. RAM, ROM-BIOS, CD-ROM
b. RAM, ROM-BIOS, bộ nhớ Cache
c. ROM-BIOS, đĩa cứng, bộ nhớ Cache
d. RAM, USB Memory stick, CD-ROM
C â u 73. Chi ra lựa chọn tương ứng với các thành phần thuộc bộ nhớ ngoàú:
a. ROM, RAM
b. Đĩa cứng, CD-ROM, ROM
c. Đĩa cứng, đĩa mềm
d. Đĩa cứng, đĩa mềm, bộ nhớ cache
C â u 74. Trong các nhóm thiết bị dưới đây, nhóm nào chì chứa các thiết bị Ị thuộc
bộ nhớ ngoài?
a. ROM, RAM, CDROM
b. Đĩa cứng, đĩa mềm, CDROM
c. Đĩa cứng, đĩa mềm, cache
d. Đĩa cứng, đĩa mềm, DVD, ROM
C â u 75. Lựa chọn nào dưới đây chi ra thứ tự tăng tốc độ trao đổi dữ liệiu cvùa các
loại bộ nhớ?
a. Tập thanh ghi, Cache, RAM, Đĩa cứng
b. RAM, Đĩa cứng, Tập thanh ghi, Cache
c. RAM, ROM, Đĩa cứng, Tập thanh ghi
d. Đĩa cứng, RAM, Cache, Tập thanh ghi
C â u 76. Trong các lý do sau, lý do nào giải thích việc dung lượng cùia boộ nhớ
ngoài có thể lớn hơn bộ nhớ trong rất nhiều?
a. Vì công nghệ chế tạo bộ nhớ ngoài rẻ hơn bộ nhớ trong rất nhiều
b. Vì bộ nhớ trong chịu sự điều khiển trực tiếp của CPU

16
c. Vì bộ nhớ ngoài không bị giới hạn bởi không gian địa chi của CPU
d. Vì hệ thống vào ra cho phép ghép nối với bộ nhớ có dung lượng lớn
C âu 77. Phát biểu nào sau đây là sai về hệ thống vào ra?
a. Hệ thống vào ra gồm có 2 thành phần chính là các thiết bị vào ra và
nô-đun vào ra
b. Mỗi cổng vào ra kết nối được với duy nhất một thiết bị vào ra xác định
c. Các thiết bị vào ra kết nối với CPU thông qua mô-đun ghép nối vào ra
d. VIỗi cổng vào ra có 1 địa chi xác định, do CPU đánh địa chi
C â u 78. Trong các thiết bị sau, thiết bị nào là thiết bị vào?
a. Máy quét b. Màn hình
c. Máy in d. Máy chiếu
C â u 79. Trong các thiết bị sau, thiết bị nào là thiết bị ra?
a. Máy quét b. Bàn phím
c. Con chuột d. Máy chiếu
C â u 8 0 .0 đĩa cứng được xếp loại là:
a. "hiết bị vào b. Thiết bị ra
c. "hiết bị lưu trữ d. Cả 3 đáp án trên đều sai
C â u 81. Trong máy tính bộ phận nào đảm nhiệm việc vận chuyển thông tin giữa
các thành phần bên trong máy tính?
a. Bộ xừ lý trung tâm b. BUS
c. Các thanh ghi d. Bộ nhớ trong
C â u 82. Một máy tính sử dụng bộ vi xử lý có độ rộng của đường bus địa chi
(Address Bus) là 32 bit. Hỏi với máy tính này, dung lượng tối đa của bộ nhớ
chhh là bao nhiêu biết mỗi ô nhớ có kích thước 1 Byte?
a. A GB
b. ;32*8 Byte
c. L Byte
d. Không giới hạn
C â u 83. Vlột máy tính có độ rộng bus địa chi (Address Bus) là 32 bit, độ rộng bus
dữ liệu (Data bus) là 24 bit. Hỏi bộ xử lý, trong một lần truy cập bộ nhớ, có
thể trao đổi tối đa bao nhiêu byte?

a. 43B b. 4 byte
c. 16MB d. 3 byte

2 -BTTHĐC
C â u 84. Bus địa chi không vận chuyển thông tin nào sau đây?
a. Địa chì ngăn nhớ chứa dữ liệu trong bộ nhớ RAM
b. Địa chi tệp tin trên ồ cứng
c. Địa chi ngăn nhớ chứa lệnh cần nạp vào CPU
d. Địa chi cổng vào-ra cần trao đổi dữ liệu
C â u 85. Phát biểu nào dưới đây là sai?
a. Cấu trúc dữ liệu đề cập tói việc biểu diễn dữ liệu trong máy tính
b. Giải thuật đo những chuyên gia tin học đưa ra
c. Giải thuật phải bao gồm dãy "hữu hạn các thao tác xử lý
d. Phần mềm máy tính bao gồm dữ liệu và giải thuật
C â u 86. Ông N.Wirth người sáng lập ra trường phái lập trình có cấu trúác cho
rằng?
a. Chương trình = c ấ u trúc dữ liệu + Xừ lý
b. Chương trình = Dữ liệu + Xử lý
c. Chương trình = c ấ u trúc dữ liệu + Giải thuật
d. Chương trình = Dữ liệu + Giải thuật
C â u 87. Phát biểu nào dưới đây là đúng?
a. Máy tính có thể hiểu được ngôn ngữ lập trình bậc cao
b. Thông dịch là cách dịch toàn bộ chương trình nguồn sang ngôn ngữ (đích
c. Máy tính chi hiểu trực tiếp được ngôn ngữ máy
d. Ngôn ngữ máy không phải là ngôn ngữ lập trình
C â u 88. Trong cách tiếp cận phần mềm, việc viết code của chương trìình 1 được
thực hiện ờ bước?
a. Bước thực hiện chương trình
b. Bước biên dịch
c. Bước xây dựng chương trinh
* d. Bước triển khai
C â u 89. Trong các loại mạng sau đây, mạng nào có kích thước nhỏ nhất?
a. LAN b. MAN
c. GAN d. WAN
C â u 90. Trong các mạng sau đây, mạng nào ià mạng diện rộng ?
a. LAN b. WAN
c. Internet d. Intranet

/• V 18
• ụvií'
ậ :r. ■
C â u 91. Trong các mạng sau, mạng nào là mạng cục bộ?
a. WAN b. LAN
c. Internet d. GAN
C âu 92 Đâu không phải là thành phần cùa mạng máy tính?
a. Hệ điều hành mạng
b. Bộ định tuyến
c. Cáp quang
d. Control Panel
C âu 93. Cấu hình (Topology) nào sau đây không phải là cấu hỉnh mạng?
a. Ring b. Star
c. Bus d. Line
C â u 94. Dịch vụ nào sau đây không phải là dịch vụ dựa trên mạng Internet?
a. Email b. Online chat
c. ĩelnet d. Programming
C â u 95. Trong môi trường mạng, FTP là:
a. Dịch vụ tìm kiếm thông tin
b. Dịch vụ thư điện tử
c. Giao thức tán gẫu
d. Giao thức truyền file
C â u 96. Các thành phần cơ bản của một mạng máy tính bao gồm?
a. Các máy tính, thiết bị vào ra, đuờng truyền, các thiết bị kết nối mạng
b. Các máy tính, card mạng, máy chủ, các thiết bị kết nối mạng
c. Cúc máy ilali, card mạng, duờng truyèn, các thiết bị két nối mạng
d. Các máy tính, card mạng, đường truyền, phần mềm kết nối mạng

C â u 97. Mạng Internet thuộc loại mạng?


a. LAN b. GAN
c. WAN d. Peer to Peer
C â u 98. Đâu là một địa chi email hợp lệ?
a. gmail.com b. yahoo.com.vn
c. vTvw.gmail.com.vn d. tinhoc@soict.hut.edu.vn

19
C â u 99. Trang web nào cho phép tạo một địa chì email miễn phí?
a. www.gmail.com b. www.yahoo.com.vn
c. www.facebook.com d. Đáp án a và b
C â u 100. Trong các lĩnh vực của tin học, lĩnh vực nào nghiên cứu cơ chếẳ điều
khiển và phối hợp khai thác có hiệu quả các tài nguyên của máy tính?
a. Thiết kế và chế tạo máy tính
b. Hệ điều hành
c. Thuật toán và cấu trúc dữ liệu
d. Tương tác người máy
C â u 101. Hệ thống các chương trinh đảm nhận chức năng làm môi trường trung
gian giữa người sử dụng và phần cứng của máy tính được gọi là?
a. Phần cứng
b. Hệ điều hành
c. Các loại trình dịch
d. Tất cả đều đúng
C â u 102. Chọn phát biểu đúng về vai trò của hệ điều hành?
a. Quản lý tài nguyên của máy tính
b. Biên dịch chương trình nguồn sang mã máy
c. Kiểm tra phần cứng hệ thống khi khỏi động
d. Soạn thảo văn bản
C â u 103. Trong các tên dưới đây, đâu là tên của một hệ điều hành?
a. WORD b. UNIX
c. Windows Explorer d. Microsoft Office
C â u 104. Các ký tự nào sau đây không được dùng để đặt tên tệp, thư mục tronng hệ
điều hành Windows?
a. V A b. @, 1
c. ỉ, % d. $
C â u 105. Trong hệ điều hành MS-DOS, tên tệp tin nào sau đây được chấp nhaận?
a. KET/ \QUA7.TXT b. *KETQUA.TXT
c. KETQU@.TXT d. KETQUA:TXT

20
C âu 10). Trong hệ điều hành MS-DOS, tên tệp tin nào sau đây không được chấp
nlận?
a.HOCKY(.TXT b. KETQUAS.TXT
c. HOCKY@.TXT d. KETQUA7.TXT
C âu 10’. Trong hệ điều hành MS-DOS, tên thư mục nào sau đây không được
chip nhận?
• a. C:\KETQUA b. KETQU@
c. KETQU@.TXT d. Cả 3 cách đặt tên trên.
C â u 10Í. Trong hệ điều hành MS-DOS, tên thư mục nào đuợc chấp nhận?
a. r:\THIHOCKY b. \THIHOCKY
c. THIHOCKY d. Cả 3 cách đặt tên trên
C â u 10*. Trong các đuôi tệp dưới đây, đuôi nào gắn với tệp có thể chạy trực tiếp
trồi hệ điều hành WINDOWS?
a. TXT b. EXE
c. !PG d. MP3
C â u 11(. Trong hệ điều hành, các tệp được tổ chức lưu trữ dưới dạng?
a. Dạng ngăn xếp b. Dạng đường dẫn Path
c. 3ạng cây d. Dạng thư mục
C âu 111. Khi tìm kiếm tệp với tên tim kiếm là baitap?.* thì những tệp nào có thể
là cết quả của việc tìm kiếm, biết rằng có các tệp: baitap5.pdf, baitap9.doc,
batapl0.doc và baitap8.pdf?
a. taitap5.pdf
b. kaitap5.pdf và baitap8.pdf
c. Vaitap5.pdf, baitap9.doc và baitap8.pdf
d. baitap5.pdf, baitap9.doc, baitapl0.doc và baitap8.pdf
C ầ u 112 Trình ứng dụng nào dưới đây là trình ứng dụng chuẩn của Windows XP
(kh cài đặt Windows sẽ có)?
a. Iaint b. Microsoft Excel
c. MicrosoftWord d. Turbo c
C âu 113 Trong Windows Explorer, để chọn tắt cả các tệp và thư mục con trong
thu mục đang xét, dùng tổ hợp phím:
a. Ctrl + c b. Ctrl + V

21
c. Ctrl + X d. Ctrl + A
C â u 114. Trong hệ điều hành Windows, tổ hợp phím nào có thề đóng m ột ứng
dụng bất kỳ?
a. Alt + F4 b. Ctrl + Alt +Del
c. Ctrl + F 1 d. Ctrl +F4
C â u 115. Trong hệ điều hành Windows, phím tẳt dùng để xóa file là?
a. Ctrl + c b. Ctrl + A
c. Ctrl + D d. Ctrl + V
C â u 116. Trong Windows Explorer, để sao chép tập tin/thư mục, dùmg tổ hợp
phím nào?
a. Ctrl + c b. Ctrl + V
c. Ctrl + X d. Ctrl + A
C â u 117. Hệ điều hành được xếp loại là:
a. Phần mềm ứng dụng b. Phần mềm hệ thống
c. Phần mềm giải trí d. Tất cả các loại trên
C â u 118. Trong các hệ điều hành sau, hệ điều hành nào được công bổ) gần đây
nhất?
a. WINDOWS XP b. UNIX
c. WINDOWS 7 d. WINDOWS VISTA
C â u 119. Phát biểu nào về Windows Explorer chưa chính xác?
a. Cho phép duyệt cây thư mục
b. Là một ứng dụng của Windows
c. Cho phép chuyển đổi tên file
d. Là chương trình cho phép duyệt Web
C â u 120. Trong một số phiên bản hệ điều hành Windows, khả năng tự đlộng nhận
biết các thiết bị phần cứng và tự động cài đặt cấu hình của các tthiết bị là
chức năng:
a. Plug and Play b. Desktop
c. Windows Explorer d. Multimedia
C â u 121. Chức năng cùa chương trình dịch:
a. Dịch chương trình viết bằng ngôn ngữ cấp cao thành chương trìnih dưới
dạng mã máy

22
b. Điều khiển và quản lý vào ra dữ liệu
c. Điều khiển các thiết bị nối với máy tính
d. Thực hiện vai trò trung gian giữa máy tính với con người
C âu 122. Phần mềm hệ thống cần phải được cài đặt trên máy tính để bàn thông
thuờng sử dụng hệ điều hành WinXP để một máy in Laser mới mua có thể
sử dụng được là:
a. Phần mềm soạn thảo văn bản
b. Trình điều khiển thiết bị cho máy in
c. Font chữ tiếng Việt
d. K.hông cần thêm phần mềm nào khác vì hệ điều hành WinXP đã có đầy đù
C âu 123. Đe loại bỏ một chương trình không còn sử dụng nữa, người dùng thực
hiện:
a. Xóa bò biểu tuợng cùa chương trình đó trong Start Menu
b. Xóa bỏ các tệp tin và thư mục của chương trình đó trên máy tính
c. Xóa bò biểu tượng của chương trinh đó trên màn hình
d. Dùng chương trình Add and Remove Programs trong Control Panel

C âu 124. Thành phần nào sau đây không nằm trong tất cả các hệ thống thông tin?
a. Người sử dụng
b. Trang thiết bị, máy móc sàn xuất của doanh nghiệp
c. Quy trình thu thập, phân tích, xử lý thông tin
d. Mạng máy tính
C â u 125. Chất lượng cũa thông tin không đưục đáiili giá qua yéu ló?
a. Kịp thời
b. Đầy đủ
c. Thống nhất
d. Quan trọng

C â u 126. Phương pháp vòng đời phát triển hệ thống (SDLC) bao gồm bao nhiêu
giai đoạn chính?
a. 5
b. 6

23
c. 7
d. 8
C â u 127. Khi đưa hệ thống vào vận hành trong thực tế, chiến lược nào có độ rủi
ro cao nhất?
a. Song song
b. Thí điểm
c. Thay thế
d. Giai đoạn
C â u 128. Phần mềm soạn thảo văn bản nào dưới đây là phần mềm mã nguồn mờ?
a. Microsoft Word
b. Writer
c. Word Perfect
d. TextMaker
C â u 129. Quan điểm nào về phần mềm mã nguồn mờ là đúng nhất?
a. Phần mềm mã nguồn mở không được nhà phát triển hỗ trợ
b. Là phần mềm miễn phí
c. Là phần mềm với mã nguồn được công bố, cho phép mọi người nghiên
cứu, thay đổi, cải tiến phần mềm theo một số quy tắc trong giấy phép đi
kèm.
d. Là các phần mềm chi dành cho hệ điều hành Linux
C â u 130. Quy tắc soạn thảo văn bảo nào dưới đây là đúng?
a. Các dấu ngắt câu như dấu chấm, dấu phẩy, dấu hai chấm phải được đặt
sát từ trước nó.
b. Sau .dấu mở ngoặc phải gõ một dấu cách rồi mới đến từ tiếp theo
c. Giữa hai từ gần nhau nên sử dụng một hoặc hai dấu cách để phân tách
chúng
d. Trong một đoạn văn, để văn bản được xuống dòng người dùng sử dụng
phím Enter để kết thúc dòng.
C â u 131. Trong các phần mềm dưới đây, đâu không phải là phần mềm trình diễn
văn bản?
a. Microsoft PowerPoint
b. Microsoft Presentation

24
c. Apple KeyNote
d. Open Office Impress
Câu 132. Template đề cập tới?
a. Các mẫu trình diễn đã được định nghĩa trước
b. Thư viện các hình ảnh, biểu tượng
c. Các hiệu ứng chuyển động đã được định nghĩa trước
d. Trình diễn slide một cách tự động
C âu 133. Đâu là lưu ý đúng khi trinh bày slide?
a. Font Times New Roman dễ đọc hom font Anal
b. Nên tránh việc sử dụng hình ảnh, biểu đồ thay cho chữ viết, con số
c. Không nên lặp nhiều từ ngữ trong cùng một slide
d. Mỗi slide có thể trình bày nhiều ý tuởng có mối liên quan đến nhau
C âu 134. Trong các phần mở rộng cùa file sau, phần mờ rộng nào được tạo ra bời
phần mềm PowerPoint 2Ổ07?
a. pptx
b. docx
c. xlsx
d. doc

C âu 135. Trong các phần mềm dưới đây, đâu không phải là phần mềm báng tính?
a. Lotus 1-2-3 b. Google spreadsheet
c. Open Office Calc d. Microsoft spreadsheet
C âu 136. Vai trò chính của phần mềm bảng tính đối với người sừ dụng?
a. Nhập, xuất các số liệu
b. Tính toán các số liệu
c. Tính toán điểm trung bình cùa người học
d. Trình bày số liệu dưới dạng con số và đồ thị
C âu 137. Phát biểu nào dưới đây sai về phần mềm bảng tính Excel?
a. Địa chi của ô được xác định thông qua hàng và cột của ô đó
b. Nội dung của các ô có thể thay đổi

25
c. Các hàng và cột được đánh số tăng dần, bắt đầu từ 1
d. Các ô có địa chi xác định
C â u 138. Trong phần mềm Excel, hàm AVERAGE là hàm dùng để tìm?
a. Giá trị lớn nhất trong các ô được chọn
b. Giá trị nhò nhất trong các ô được chọn
c. Giá trị trung bình trong các ô được chọn
d. Tổng tất cả các giá trị trong các ô được chọn
C â u 139. Các khái niệm page, sheet, slide đề cập tới các phần mềm lần lượt là?
a. Microsoft Word, Microsoft Excel, Microsoft PowerPoint
b. Microsoft PowerPoint, Microsoft Excel, Microsoft Word
c. Microsoft Word, Microsoft PowerPoint, Microsoft Excel
d. Microsoft Excel, Microsoft Word, Microsoft PowerPoint
C â u 140. Phát biểu nào dưới đây về Cơ sở dữ liệu là đúng?
a. Là các thành phần cơ bản trong dữ liệu
b. Là tập hợp các dữ liệu có liên quan tới nhau được lưu trữ trên máy tính đề
phục vụ cho việc sử dụng, quản lý dữ liệu
c. Cơ sở dữ liệu là tài nguyên phục vụ cho một người duy nhất
d. Các dữ liệu được mã hóa dưới một dạng cấu trúc nào đó thay vì dưới dạng
nhị phân.
C â u 141. Phát biểu nào dưới đây về ưu điểm của Cơ sờ dữ liệu là sai?
a. Giảm trùng lặp dữ liệu
b. Dữ liệu có thể truy xuất theo nhiều cách khác nhau cho các đối tượng
người dùng khác nhau
c. Nhiều người dùng có thể cùng khai thác cơ sở dữ liệu
d. CỔ tính bảo mật tốt
C â u I42à Phát biểu nào dưới đây về Hệ quản trị Cơ sờ dữ liệu là sai?
a. Hệ quản trị Cơ sở dữ liệu phải đảm bảo việc lưu trữ dữ liệu lâu dài
b. Là hệ thống các phần mềm cho phép định nghĩa, tạo tập và thực hiện các
thao tác đối với cơ sờ dữ liệu
c. Hệ quản trị Cơ sờ dữ liệu phải đảm bảo sự phụ thuộc của dữ liệu vào
chương trình

26
d. Hệ quán trị Cơ sở dữ liệu phải hỗ trợ các ngôn ngừ cấp cao nhất định
C âu 143. Phát biểu nào dưới đây về thương mại điện tử là đúng?
a. Các hoạt động cùa thương mại diện tử cỏ thề là gửi tới khách hàng thông
tin sản phẩm qua email, tìm kiếm thông tin khách hàng trên Internet...
b. Thương mại điện tử sẽ thúc đẩy doanh thu cùa mọi doanh nghiệp
c. Khách hàng sẽ nhanh chóng biết đến website của doanh nghiệp nên không
cần quảng bá
d. Thương mại điện tử bao gồm việc thanh toán qua mạng
C â u 144. Phát biểu nào dưới đây về thương mại điện tử là đúng?
a. Người tiêu dùng không thể nhận được các tư vấn về sản phẩm trong
thương mại điện từ
b. Chi phí giao dịch thông qua thương mại điện từ cao hơn chi phí giao dịch
thông thường
c. Người tiêu dùng không thể ngồi ở nhà đặt mua hàng của một doanh
nghiệp nước ngoài
d. Giúp người tiêu dùng có nhiều lựa chọn hcm thương mại truyền thống vì
có thể so sánh thông tin về sản phẩm của các doanh nghiệp khác nhau
C â u 145. Hình thức giao dịch giữa doanh nghiệp với khách hàng là hình thức?
a. G2C
b. C2B
c. B2C
d. B2G
C â u 146. Phấn mẻm trí tuệ nhân tạo là?
a. Là phần mềm hệ thống
b. Là phần mềm giúp máy tính có hoạt động và suy nghĩ như con người
c. Là phần mềm giúp con người suy nghĩ thông minh hom
d. Là phần mềm giải quyết các vấn đề khó khăn mà con người chưa giải
quyết được
C â u 147. Đâu là ví dụ sai về một phần mềm tri tuệ nhân tạo?
a. Phần mềm chơi cờ giữa người và máy tính
b. Phần mềm nhận dạng chữ viết của con người

27
c. Phần mềm trò chuyện giữa con người và máy tính
d. Phần mềm giúp con người tính toán các dữ liệu
C âu 148. Đâu là phát biểu đúng về phần mềm hệ chuyên gia?
a. Là phần mềm cài đặt tri thức của một hay nhiều chuyên gia vào máy tính,
để giúp máy tính có khả năng giải quyết vấn đề như một người chuyên gia
b. Là một hệ thống bao gồm máy tính, các chuyên gia và nguời dùng để đưa
ra các ý kiến dựa trên thông tin người dùng cung cấp
c. Là một phần mềm sử dụng sự thông minh của máy tính để hỗ trợ cho
người chuyên gia giải quyết vấn đề
d. Là một phần mềm giúp máy tính có tri thức của người chuyên gia để đưa
ra ý kiến về mọi lĩnh vực.

28
PHẦN II. GIẢI QUYẾT BÀI TOÁN

C â u 149. Quy trình giải quyết bài toán bàng máy tính?

a. Xây dựng thuật giải -* Lựa chọn phương pháp giải -* Cài đặt chương trình -»
Hiệu chinh chương trình -* Thực hiện chương trình -* Xác định bài toán

b. Xác định bài toán -* Lựa chọn phương pháp giải -* Xây dựng thuật giải
-* Cài đặt chương ưình -* Thực hiện chương trình -* Hiệu chinh chương
trinh

c. Xác định bài toán -* Xây dựng thuật giải -* Lựa chọn phương pháp giải -*
Cài đặt chương trình -* Hiệu chinh chương trình -» Thực hiện chương trình
d. Xác định bài toán -* Lựa chọn phương pháp giải -» Xây dựng thuật giải -*
Cài đặt chương trình -* Hiệu chinh chương trình -* Thực hiện chương trình

C â u 150. Trong bài toán kiểm tra một số nguyên dương A có phải là số nguyên tố
hav không, thì phát biểu nào dưới đây là đúng?

a. Đầu vào: số nguyên dương A. Đầu ra: Giải thuật kiểm tra A có phải là số
nguyên tố hay không
b. Đầu vào: số nguyên dương A và giải thuật kiểm tra số nguyên tố. Đầu ra:
rhông báo A là số nguyên tố hoặc không phải số nguyên tố
c. Dầu vào. só nguyên ilưưug A. Đàu ra: Giài ihuật kiẻm ưa só nguyên tó và
:hông báo A là số nguyên tố hoặc không phải số nguyên tố

d. Đầu vào: số nguyên dương A. Đầu ra: Thông báo A là sổ nguyên tố hoặc
ichông phải số nguyên tố

C â u 151. Phương pháp liệt kê tất cả các khả năng cùa lời giải, tiến hành thử để
tìm ra lời giải đúng là phương pháp nào dưới đây?
a. Phương pháp vét cạn
b. Fhương pháp chia

29
c. Phương pháp thử

d. Phương pháp lặp

C â u 152. Đâu là phát biểu đúng về thuật toán?

a. Thuật toán là dãy hữu hạn các thao tác và trình tự thực hiện các thao tác
đó
b. Thuật toán là phương pháp tìm ra lời giải tốt nhất cho vấn đề đặt ra

c. Thuật toán là một tập các hướng dẫn dành cho máy tính để giải quyết một
bài toán đặt ra

d. Thuật toán là phương pháp tìm ra lời giải cho vấn đề đặt ra

C â u 15 3 . Đâu không phải là đặc trưng của thuật toán?

a. Tính hữu hạn b. Tính riêng biệt

c. Tính xác định d. Tính hiệu quả

C â u 154. Đâu không phải là ngôn ngữ dùng để biểu diễn thuật toán?

a. Ngôn ngữ lập trình b. Ngôn ngữ tựa ngôn ngữ lập trình

c. Ngôn ngữ cơ thể d. Sơ đồ khối

C â u 155. Đâu là cách biểu diễn thuật toán trực quan nhất?

a. Sơ đồ khối b. Ngôn ngữ lập trình

c. Mã giả d. Ngôn ngữ tự nhiên

C â u 156. Đâu là phát biểu đúng về thuật toán đệ quy?

a. Là thuật toán đánh dấu khả năng chứa lời giải đã thực hiện để khi thử khả
năng mới có thể thực hiện nhanh chóng hơn

b. Phần cơ sờ trong thuật toán đệ quy là những trường hợp cần thực hiện lại
thuật toán

c. Thuật toán đệ quy thực hiện phân chia bài toán thành các bài toán con có
thể giải được

d. Kết quả của thuật toán đệ quy phụ thuộc vào kết quả của bài toán cùng
loại có mức độ thấp hom

30
C âi 157. Cho biết giá trị của A, B khi kết thúc đoạn mã giả:

A <- 0, B <- 1

if (A < B) then

A=B

B= A

end if

a. A = 0 và B = 1 b. A = 1 và B = 0

c. A = 1 và B = 1 d. A = 0 và B = 0

C at 158. Cho lưu đồ thuật toán

Ket luận nào sau đây là đúng?

a. a = 0, b= 1 0 ^ Phương trình vô nghiệm

b. a = 10, b = 0 Phương trinh vô nghiệm

c. a = 0, b = 10 Phương trình vô số nghiệm

c. a = 10, b = 10 Phương trình vô số nghiệm

31
C â u 159. Với mối quan hệ nào giữa hai số nguyên dương a và b thì thuật toán
được thể hiện bằng lưu đồ bên dưới đi theo trật tự:

( l ) - > ( 2 ) - ( 3 ) - ( 5 ) - ( 2 ) - ( 3 ) - ( 4 ) - (2 )-(6 )

a. a = 2b b. 2a = 3b
c. 2a = b d. 3a = 2b
Câu 160. Cho biết giá trị của MAX khi kết thúc đoạn mã giả:
A <- 3, B 1, c <- 5, MAX <- A
if (MAX < B) then
MAX <—B
end if
if (MAX < C) then
MAX <- c
end if
a. 1 b. 5
c. 3 d. Không xác định
C â u 161. Cho biết giá trị của A, B khi kết thúc đoạn mã giả:
A 4—0, B <— 1, c
if (A < B) then

32
c =B
B=A
A =c
end if
a. A = 0 và B = 1
b. A = 1 và B = 0
c. A = 1 và B = 1

d. A = 0 và B = 0

C â u 162. Cho biết giá trị của A khi kết thúc đoạn mã giả:
A < -0
for i = 1 to 5 do
A <- A+2
end do
a. A = 9 b. A = 1 0
c. A = 18 d. A = 20
C âu 163. Cho biết giá trị của s khi kết thúc đoạn mã giả:
i, s <—0
for i = 1 to 9 do
s <—s + i
end do
a. 0
b. 45
c. 55
d. 66
C âu 164. Cho biết giá trị cùa n khi kết thúc đoạn m ã^iả:
X <- 1, n <— 1
while (X < 1000) do
X <— 2X
n <—n + 1
end while

- r a r m iH
33
a. 4 b. 5
c. 6 d. 7
C â u 165. Cho biết giá trị của n khi kết thúc đoạn mã giả:
X « - 1, n <— 1

while(x < 1000) do


X < - 2*x

n <— n+1
end while
a. 9 b. 10
c. 11 d. 12
C â u 166. Cho biết giá trị của F(n) với n = 4 biết hàm F được tính đệ quy như sau:
F(0) <- 1
if (n>0) then
F(n) «—F(n-1) * n
end if
a. 0
b. 1
c. 24
d. 6
C â u 167. Hàm T(n) được định nghĩa đệ quy như sau:
• T (0)= 1 ;T (1 )= 1;
• T(n) = 2T(n-l) + 3T(n-2) với n>=2
Hãy cho biết giá trị của hàm T(4)?

a. 7 b. 20
c. 45 d. 41
C â u 168. Cho biết giá trị của F(n) với n = 5, biết hàm F được tính đệ quy như sau
F(0) <r- 0, F(0) <- 1
if (n>l) then
F(n) <—F(n-1) + F(n-2)
end if

34
a. 3
b. 4
c. 5
d. 6
Câu 169. Phát biểu nào về thuật giải heuristic là đúng?
a. Là thuật giái giúp tìm ra lời giải tốt nhất dễ dàng và nhanh chóng hơn các
phương pháp khác
b. Là sự mờ rộng tính xác định của thuật toán
c. Thường đưa ra lời giải gần đúng tốt cho các bài toán phức tạp khó tìm lời
giải đúng
d. Là thuật giài luôn tìm ra được lời giải tốt cho các bài toán phức tạp.

35
PHẢN III. LẬP TRÌNH

Câu 170. Ngôn ngữ lập trình c được xếp vào loại ngôn ngữ lập trình nào?
a. Ngôn ngữ máy b. Hợp ngữ
c. Ngôn ngữ lập trình bậc cao d. Ngôn ngữ lập trình logic
C âu 171. Phát biểu nào dưới đây về ngôn ngữ lập trình c là đúng?
a. Trình biên dịch sẽ dịch ngôn ngữ c thành mã máy
b. c là hợp ngữ
c. Máy tính có thể hiểu trực tiếp được ngôn ngữ c
d. Ngôn ngữ c hiện nay chi tồn tại với một phiên bản duy nhất
C âu 172. Trong những thành phần sau, chi ra một thành phần không thuộc dãy?
a. Hợp ngữ
b. Ngôn ngữ bậc cao
c. Thông dịch
d. Ngôn ngữ máy
Câu 173. Đâu là biểu diễn hằng số ở hệ cơ số 8 trong c ?
a. 2006 b. 0x2006
c. 0X2006 d. 02006
C âu 174. Chọn phát biểu đúng nhất về định danh trong c ?
a. Định danh là dãy ký tự chữ cái, chữ số hoặc dấu gạch dưới
b. Định danh là dãy ký tự chữ cái hoặc chữ số
c. Định danh là dãy ký tự chữ cái, chữ số hoặc dấu gạch dưới trong đó ký tự
đầu tiên không phài là số
d. Định danh là dãy ký tự chữ số hoặc dấu gạch dưới
Câu 175. Trong ngôn ngữ lập trình c , tên biến nào sau đây không được chấp ruhận?
a. KetQua b. ket qua
c. Ket Qua d. ketqua

36
C âu 176. Trong ngôn ngữ lập trình c , tên biến nào sau đây được chấp nhận?

a. Bien#2 c. ISoNguyen

b. So Nguyen d. So_Nguyen

Câu 177. Đâu là chú thích trong c ?

a. (* dòng chú thích *) c. { dòng chú thích }

b. // dòng chú thích d. <-- dòng chú thích -->

Câu 178. Chọn cách khai báo đúng tệp tiêu đề trong lập trình c ?

a. #include "tên_tệp_tiêu_đề" c. #include tên_tệp_tiêu_đề

b. include <tên_tệp_tiêu_đề> d. #include <tên_tệp_tiêu_đề>;

C âu 179. Trong cấu trúc cơ bản của chương trình c , thành phần nào bắt buộc phải
có?

a. Phần khai báo các tệp tiêu đề c. Phần khai báo các hàm nguyên mẫu

b. Định nghĩa kiểu dữ liệu mới d. Phần định nghĩa hàm main()

C âu 180. Giả thiết bộ chưcmg trình Turbo c 3.0 được cài đặt trên 0 đĩa D của một
máy tính. Hãy chỉ ra tên đầy đù của chương trình dịch Tc.exe

a. D:\TC\BIN\Tc.exe c. Tc.exe

b. D:\TC\BIN\Tc d. \TC\BIN\Tc

Câu 181. Khẳng định nào sau đây về ngôn ngữ lập trình là đúng?
a. Máy tính có thể chạy ngay một chương trình viết bằng ngôn ngữ assembly
b. Đe chạy một chương trình viết bằng ngôn ngữ máy thì trước hết ta phải
bicn địch
c. Đe chạy được một chương trinh viết bằng ngôn ngữ lập trình bậc cao,
trước hết cần biên dịch hoặc thông dịch chương trình
d. Tất cả các khẳng định trên là đúng
Câu 182. Ngôn ngữ lập trình dùng để
a. Viết chương trình
b. Soạn thào văn bản
c. Tính toán khoa học
d. Dịch chương trình nguồn sang chương trình đích

37
Câu 183. Việc biên dịch một chương trình viết bằng một ngôn ngữ lập trình bậc
cao sang chương trình dưới dạng ngôn ngữ máy được thực hiện bởi:
a. Chương trình dịch c. Hệ điều hành
b. Chương trình soạn thảo d. Người lập trình
Câu 184. Lựa chọn nào dưới đây chì ra thứ tự tàng của miền giá trị các kiểu dữ
liệu?
a. int, float, double, long c. int, float, long, double
b. int, long, float, double d. int, long, double, float
Câu 185. Trong những định danh sau đây, đâu là định danh hợp lệ?

a. char b. 1First

c. int d. intl

Câu 186. Trong ngôn ngữ lập trình c , tên biến nào sau đây là được chấp nhận?

a. While b. if
c. for d. Không có câu trả lời nào đúng

Câu 187. Trong ngôn ngữ lập trình c , khai báo nào sau đây là đúng cú pháp?

a. float int n; b. unsigned int n;

c. unsigned float n = 0; d. n : int;

Câu 188. Trong ngôn ngữ lập trình c , cách khai báo biến nào sau đây là sai cú
pháp?
a. int n = 0; b. unsigned int n = 0;
c. int n:=0; d. unsigned n = 0;
Câu 189. Trong ngôn ngữ lập trình c , câu lệnh nào dưới đây là khai báo đúng cho
một hằng ký tự?
a. #define HangSo A ; c. const char HangSo A ;
b. #defme HangSo 'A '; d. const char HangSo = 'A ';
Câu 190. Trong ngôn ngữ lập trình c , câu lệnh nào dưới đây là khai báo đúng cho
một hằng ký tự?
a. #defíne HangSo A b. #define HangSo 'A'
c. const char HangSo A ; d. const char HangSo = A ;

38
Câu 191. Trong ngôn ngữ lập trình c , câu lệnh nào dưới đây là khai báo đúng cho
một hằng số thực?
a. #define HangSo 2.78 c. const float HangSo 2.78 ;
b. #definc HangSo = 2.78 d. const HangSo = 2.78 ;
Câu 192. Trong ngôn ngữ lập trình c , câu lệnh nào dưới đây là khai báo đúng cho
một hằng số thực?
a. #define float HangSo 2.78 c. const float HangSo =2.78 ;
b. #dcfine HangSo = 2.78 d. const HangSo = 2.78 ;
Câu 193. Trong các khai báo sau, khai báo nào không có lỗi?

a. tfdefine MAX 10; b. #dcfine MAX=10

c.const int MAX 10; d. #define MAX 10


Câu 194. Dòng khai báo nào sai?
1: #define PI 3.1415;
2: const float g 9.81;
3: int i=0;
4: intj='a';

a. Dòng 2, 3, 4 b. Dòng 1,2

c. Dòng 1 ,2 ,3 d. Dòng 1 ,2 ,4

Câu 195. Trong ngôn ngữ lập trình c , với 2 biến thực A, B, biểu thức nào sau đây
không được chấp nhận?
a. A % B b. A / D
c. A -H- d. A + B
Zâu 196. Ket quả của phép chia 3.0/2 trong c bằng?
a. 1.5 b. 2
c. 1 d. 3

râu 197. Trong ngôn ngữ c , cho biết kết quả sau khi tính toán biểu thức 1.5*(ll/3)

a. 5.5 b. 4.5
c. 5.4999 d. Không thu được gì

39
Câu 198. Toán tử nào sau đây không phải là toán tử quan hệ?

a. = b. <

c. > d. >=

Câu 199. Toán tử = = có nghĩa là:

a. Phép so sánh bằng b. Phép so sánh khác

c. Phép gán d. Các phương án trên đều sai

C âu 200. Trong ngôn ngữ lập trình c, khai báo a, b là hai biến kiểu số nguyên
Câu lệnh gán nào là đúng cú pháp?
a. a = b; b. a <— b;
c. a:=b; đ. Cả 3 đáp án trên đều đúng
Câu 201. Khái niệm nào đề cập đến sự kết hợp của các toán tử và toán hạng?
a.Thứ tự kết hợp b. Biến
c. Độ ưu tiên d. Biểu thức
Câu 202. Cho khai báo int a, b;. Chi ra biểu thức không hợp lệ:
a. a -= b b. a = = b
c. a - b = 0 d. a = b
C âu 203. Cho biết giá trị của f = ( ( a = b ) II (b>4)) với khai báo sau:

unsigned int a = 7, b = 2, c = 5, d = 6;

a. 1 c. Biểu thức sai


b 0 d. Không trả về kết quả
Câu 204. Cho biết giá trị của biến a sau đoạn chương trình:
inta;

a. 0
c. 1 d. 7
Câu 205. Kết quả cùa biểu thức 7+5& &4<=l+3-2/3||5<2+l bằng:
a. 0 c. Không có kết quả nào ờ trên
b. 1 d. Biểu thức viết sai, không tính được kết qu;

40
Câu 206. Cho biết giá trị của biến a sau đoạn chương trình sau:
int a=l,b=2,c=3;

a={b>c)?++b:-H-c;
a. a= l c. a=2
b. a=3 d. a=4
Câu 207. Cho biết giá trị của biến a sau đoạn chương trình sau:
int -a,b = 0,c = 5,d = 6,e = 7,f = 8;
a = b?c:d?e:f;
a. a=5 b. a=7
c. a=6 d. a=8
Câu 208. Chi ra biểu thức kiểm tra ký tụ ch là 'a' hoặc 'b1:
a. ch = = 'a'11'b' c. ch = = 'a'l'b'
b. (ch = = 'a')||(ch = = 'b') d. (ch = = 'a')|(ch = ='b’)
C âu 209. Nếu X là biến nguyên thì sau khi thực hiện câu lệnh gán X = 13.6, giá trị
cùa X là:
a. 13 b. 14
c. 13.6 d. Báo lỗi, không có câutrả lờinào đúng
Câu 210. Giá trị cùa d sau khi thực hiện các lệnh là?

a. 3.5 b.3
c. 4 d. 0
Câu 211. Cho biéi giá trị cùa các bién a, b, c sau khi thực hiộn đoạn chương trình sau:

int a=7, b, c;

b=a++ + 1; c= - -a - b++;

a. a= 7, b= 9, c= -1 c. a= 7, b= 8, c= 0
b. a= 8, b= 8,c = - l d. a= 7, b= 10, c= -2
Câu 212. Cho biết giá trị của các biến a, b, c sau khi thực hiện đoạn chương trình sau:

int a=5,b,c;

b=a++; c= a++ + -H-b —1;

41
a. a=7, b=6, c=10 b. a=7, b=7, C=11
c. a=7, b=6, C=11 d. a=7, b=7, c=10

Câu 213. Biết a, b, c, d là các biến nguyên với giá trị hiện đang lưu trữ là a=8, b=9,
c=6. Hãy cho biết giá trị biến d sau khi thưc hiện lệnh gán

d= a/b*c+c++;

a. 5 b. 6

c. 1 1.3333 d. 12.3333
Câu 214. Hãy cho biết sau đoạn lệnh sau biến a nhận giá trị bàng bao nhiêu?

c. a = 0 d. a = 200
Câu 215. Giá trị của b sau khi thực hiện đoạn mã sau?

int a= -l,b = l;

b += a?2:l; n $
a. 2 b. 3

c. 4 d. 1
Câu 216. Trong ngôn ngữ lập trình c , khi đoạn chương trình sau được thực hiện,
các biến A, B, c có giá trị là bao nhiêu?

int A =4, B = 3, C;

c=
a. A = 3, B = 2, c =4 b. A = 3, B = 3, c = 3
c. A = 3 , B = 3, c = 4 d. A = 3, B /= 2 ,C = 3
Câu 217. Cho khai báo int a, b, c; Biểu thức nào sau đây cho phép xác định giá trị
c là giá trị nhò nhất trong hai số a và b?

a. c = (a>b)?a:b c. c = (a!=b)?a:b

b. c = (a<b)?a:b d. c = (a|b)?a:b

42
Câu 218. Sau khi thực hiện các câu lệnh sau một cách tuần tự
int a=5,c=2;
a=5,c=2
float b = ll;
I lO â i D—1 1 ,

ìnt d 3;
d - (int)b/c%5;
giá trị của biến d sẽ bằng?
a. 0 b. 3
c. 5 d. 1
Câu 219. Đe sử dụng hàm printf và scanf, cần khai báo tệp tiêu đề nào?
a. conio.h b. stdio.h
c. input.h d. output.h
Câu 220. Để sử dụng hàm getch(), cần khai báo tệp tiêu đề nào?
a. conio.h b. stdio.h
c. input.h d. output.h
Câu 221. Định dạng nào cho phép hiển thị tham số dưới dạng số nguyên trong hệ
thập phân?
a .%0 b. %d
c. %c d. %s
Câu 222. Trong ngôn ngữ lập trình c , cho biết kết quả hiển thị trên màn hình lchi
đoạn chương trình sau đuợc thực hiện?

int n = 10;

printf ("n = %d",n);

a. n = %d,n b. n = %d
c .n ~ % d ,1 0 d. n —10
Câu 223. Cho biết kết quả trên màn hình của lệnh sau (với □ là ký tự space):

prìntf("% 5.2f", 3.454);

a. o3.45 b. d 3.5

c. DD3.45 d. 3.454
Câu 224. Giả thiết □ là ký tự khoảng trắng. X là biến kiểu float và được khởi tạo
giá trị 12.345. Hãy cho biết câu lệnh nào đưa ra màn hình giá trị nni2 .3 5 ?
a. printf("% 7.2f\ X) b. printf(”%7.2e", X)
c. printf("%6.2f", X) d. printf("%8.2f', X)

43
Câu 225. Cho biết kết quả của đoạn chương trình

float f = 1.234;
■ - V..-.
printf ("f = % 3.2f',f);

a . f = 1.234 b. f = 1.2
c. f = 1.23 d. f = .23
Câu 226. Mệnh đề nào sau đây là đúng?
a. Khi đọc xâu ký tự, hàm scanf() và gets() cho phép nhập các ký tự dấu
cách, dấu tab

b. Khi đọc xâu ký tự, hàm gets() cho phép nhập các ký tự dấu cách, dấu tab,
còn hàm scanf() sẽ hiểu dấu cách, dấu tab đầu tiên báo hiệu kết thúc nhập
xâu ký tự

c. Khi đọc xâu ký tự, hàm scanf 0 cho phép nhập các ký tự dấu cách, dấu
tab, còn hàm gets()sỗ hiểu dấu cách, dấu tab đầu tiên báo hiệu kết thúc
nhập xâu ký tự

d. Khi đọc xâu ký tự, hàm scanf(), gets() hiểu ký tự dấu cách, dấu tab hay
xuống dòng là kết thúc nhập xâu ký tự

Câu 227. Cho biết kết quả in ra của câu lệnh:


printf("%c %d", 65, 6 6);

a. A B b. 65 B
c. A 66 d. 65 66
Câu 228. Lệnh printf("%d %d", 'A', 'B'); sẽ in ra:
a. 65 66 b. a b
c. 065 066 d. A B
C âu 229. Trong ngôn ngữ lập trình c , cho biết kết quà hiển thị trên màn hình khi
đoạn chương trình sau được thực hiện?

float f = 1.0;

a .f = 1.000 b. f = 0.333
c. f = 0.000 d. "f = % .3 f',f

44
Câu 230. Trong ngôn ngữ lập trình c , cho biết kết quả hiển thị trên màn hình khi
câu lệnh sau được thực hiện?

printf C'l\n2");

a. 12

b. I\n2
c. 1
2
d. 21
Câu 231. Cho một đoạn chương trình viết bằng ngôn ngữ lập trinh c như sau:

const int i=0;


■' ' - • '
printf("%d\n", i++);

Hãy chi ra lỗi của đoạn chương trình trên (nếu có)?
a. Khai báo i sai cú pháp
b. Toán từ ++ thiếu một toán hạng
c. Toán tử ++ áp dụng lên một hằng số
d. Đoạn chương trình trên không có lỗi cú pháp
Câu 232. Lệnh đúng để in ra màn hình hai số thực X, y theo định dạng :
Dòng 1: In giá trị X, căn lề trái, chiếm 10 vị trí trong đó có 2 vị trí cho phần
thập phân
Dòng 2: In giá trị y, căn lề phải, chiếm 6 vị trí trong đó có 3 vị tri cho phẩn
thập phân
a. p rin tf(" % -1 0 .2 f \n % 6 .3 f", X, y);

b. printf("%-10.3f \n%6.4f", X, y);


c. printf("%10.2f ", x) ;printf("%-6.3f ", y ) ;
d. printf("% 10.2f", x) ;printf("\n%-6.3f ", y ) ;
Câu 233. Cặp dấu hiệu nào để đánh dấu phạm vi một khối lệnh?

a. { } c. BEGIN và END

b. -> và d. ( và )

45
Câu 234. Tìm kết quả đúng của chương trình

#include <stdio.h>

void main()
{ int a, b ,c;
a= l 3/2;

b=++a+6;
c=(b>12)?(b+7):(a*a);


a. 6 12 20 c. 7 13 20

b. 6 13 20 d. 7 13 49

Câu 235. Giá trị của a sau khi thực hiện các lệnh sau:

int a=5; { int a = 7 ;}

a=a+4;

a. 11 c. 5
b. 9 d.Lỗi khai báo biến a

Câu 236. Trong ngôn ngữ lập trình c , phát biểu nào sau đây là sai đối với cấu trúc
if...else?
a. Tất cả các câu lệnh sử dụng cấu trúc if...else đều có thể thay thế bằng biểu
thức điều kiện? :
b. Các cấu trúc if...else có thể lồng nhau
c. Sau biểu thức điều kiện đi cùng với từ khóa if cho phép sử dụng khối lệnh

d. Sau từ khóa else cho phép sử dụng khối lệnh


Câu 237. Câu lệnh nào duới đây kiểm tra xem biến ký tự ch có phải là chữ cái không?

a. if(('A' <= ch) && (ch <= 'z'))

b. if( (('A' <= ch) && (ch <= 'Z')) && (('a' <= ch) && (ch <= 'z')))

c. if( (('A' <= ch) II (ch <= 'Z'» && (('a' <= ch) II (ch <= 'z')))
d. if( (('A' <= ch) && (ch <= 'Z')) II (('a' <= ch) && (ch <= 'z')))

46
Câu 238. Với a=5, b =5, c=4. Kết quả hiển thị của đoạn chương trình sau như thế nào?

m
if(a>b) printf("2");
else printfì("3"); printf("5");

a. 35 b. 5

c. 3 d. 2
Câu 239. Trong ngôn ngữ lập trình c, sau khi đoạn chương trình sau được thực
hiện thì 2 biến A và Bcó giá trị bao nhiêu?
int A = 0, B = 1;
if (A<B) {
A = B;
B = A;


a. A = 0 và B = 1 b. A = 1 và B = 0

c. A = 1 và B = 1 d. A = 0 và B = 0

Câu 240. Điền vào chỗ ... để hoàn thiện chương trình sau:
#include<stdio.h>
void main()

{
int a, b, max;
printf("Nhap gia tri a va b : ");
scanf("%d%d", &a, &b);
max = a;
else max = b;
printf("So lon nhat trong 2 so %d va %d la %d", a, b, max);

a. a>b b. a<b

c. a=b d. a!=b

47
Câu 241. Trong ngôn ngữ lập trình c , sau khi đoạn chương trình sau được thực
hiện thì 2 biến A và B mang giá trị bao nhiêu?
int A = 0, B = 1,C; i;
if(A <B ) {
c = B;
B = A;
A =c
} '

a. A = 0 và B = 1 c. A = 1 và B = 1

b. A = 1 và B = 0 d. A = 0 và B = 0

Câu 242. Cho một đoạn chương trình viết bằng ngôn ngữ lập trình c như sau:
int a = 5;
switch(a){
case 1: printfì("First");
case 2: printf("Second");
case 3 + 2: printf("Third");
case 5: printf("Final");break;
}
Hãy chỉ ra lỗi cú pháp của đoạn chương trình trên (nếu có)?

a. Không có câu lệnh break cuối mỗi nhãn case


b. Nhãn case không được phép sử dụng biểu thức 3+2
c. Hai nhãn case có cùng giá trị là 5
d. Đoạn chương trình trên không có lỗi cú pháp
Câu 243. Trong ngôn ngữ lập trình c , sau khi đoạn chương trình sau được thự(
hiện thì biến c mang giá trị bao nhiêu?
int A = 10, B = 20, c=l;
switch (A>B) {
case 0 : c = A ; break;
® case 1 : c = B ; break;
}
a. c =0 c. c=1
b. c = 20 d. c = 10

48
Câu 244. Cho một đoạn chương trình viết bằng ngôn ngữ lập trình c như sau:
int p = 10;

switch(P){
case 10: printfl["Case 1");

case 20: printf("Case 2");break;

case P: printfì("Case 2");break;

}
Hãy chi ra lỗi cú pháp của đoạn chương trình trên (nếu có)?

a. Không có câu lệnh break cuối mỗi nhãn case


b. Không có nhãn default
c. Nhãn case p sừ dụng một giá tri không phải là hằng số
d. Đoạn chương trình trên không có lỗi cú pháp
Câu 245. Cho đoạn chương trinh sau, hỏi kết quả hiện thí ra màn hình là như thế nào?
int a =10;
a = a/2;
switch(a){
case 3: a+=2;
case 4: a++;break;
default: a—;
}
printf("°/od", a);
a. 5 b4
c. 6 d.7
Câu 246. Trong ngôn ngữ lập trình c, sau khi đoạn chương trình sau được thực
hiện thì biến A mang giá trị bao nhiêu?
int i, A = 0;
for (i=0; i<10; i+=2) {
A = A+2;
}
a. A = 9
c. A = 1 8 d. A = 20

4-ỈÌ7THDC 49
C âu 247. Cho đoạn chương trình sau, tìm giá trị của sum:
int sum, i;
for ( i = 0; i+1 <= 10 ; i +=2)
i f ( i = 0)
sum = i;
else
sum += i;
a. 12 c. 30
b. 20 d. Lỗi cú pháp vì vòng lặp for thiếu dấu ngoặc
C âu 248. Cho biết giá trị của biến s khi thực hiện đoạn chương trình sau:
int i, S;
for(i =1; i < 10; i ++) s += i;
a. 0 c. 55
b. 45 d. Không xác định
C âu 249. Cho biết kết quả hiển thị trên màn hình?

int a;

for (a = 65; a < 69; a++)

printf("%c ", a);

a. 6566 67 68 b. A B c D
c. a a a a d. a b c d
C âu 250. Cho biết kết quả hiển thị trên màn hình?

int a; for(a= l; a<=10; a-H-) {


printf("%i ”,a); if(a%3) a= a+2; }

a. 1 4 7 c. 1 4 7 10
b. 1 3 5 7 9 d. 1 4 8
C âu 251. Đoạn chương trình sau sẽ in những gì ra màn hình?

int i=0; char c - 'c';

for(i=0; i<6; i=i+2){

c=c+i; printf ("%c ”, c);


■' •CjK,-te' if,
V
' r' { u'J'. 5v •'?'■W-T,v• ‘*:

50
a. c e i c. e i o
b. c e i o d. Tat cả đáp án đều sai

C âu 252. Khi thực hiện chương trình


#include <stdio.h>
void main(){
intx;
for(x=5;x>0;x~)
printf ("%2d ",x—);
:' ■
>
Ket quả nhận được trên màn hình là

a. 5 31 C.4 3 2 1 0

b. 5 4 3 2 1 d. 5 4 3 2 1 0

Câu 253. Cho đoạn chương trình sau, sau khi thực hiện xong kết quả hiển thị ra
màn hình là như thế nào?
int i;
for(i =0 ; i<5 ; i++);
printf("%d ", i);

a. 0 b. 0 12 3

c. 5 d. 0 1 2 3 4

Câu 254. Cho biết kết quả thực hiện đoạn chương trình sau?
#include<stdio.h>

void mainO {
ri
int i=0;
for( i<=5; i++)
if

printf("%đ", i);

}
a. 0 1 2 3 4 5 b. 5
c. 0 1 2 3 4 d. Lỗi cú pháp vòng lặp for

51
C âu 255. Phát biểu nào sau đây là sai đối với vòng lặp for?
a. Vòng lặp for thực hiện nhanh hơn vòng lặp while
b. Mọi đoạn lệnh sử dụng vòng lặp for có thể thay thế bằng vòng lặp while
và ngược lại
c. for ( ; ; ) ; là một vòng lặp vô tận
d. Các câu lệnh trong vòng lặp for có thể không được thực hiện lần nào.
Câu 256. Mệnh đề nào dưới đây là đúng?
a. Lệnh đ o ...while kiểm tra điều kiện vòng lặp trước rồi mới thực biện lệnh
b. Lệnh while thực hiện lệnh trước rồi mới kiểm tra điều kiện vòng lặp
c. Cấu trúc while và do..while được dùng để thực hiện lặp đi lặp lại một công
việc với số lần lặp xác định
d. Lệnh while kiểm tra điều kiện vòng lặp trước rồi mới thực hiện lệnh
Câu 257. Trong ngôn ngữ lập trình c, khi đoạn chương trình sau được thực hiện,
kết quả hiển thị trên màn hình là gì?
i n t i - 5;
nrl
while(i—:
a. 5 ,4 ,3 , 2, 1,0 c. 4, 3, 2, 1,0

b. 5, 4, 3, 2, 1 ,0 ,-1 d. 4 ,3 ,2 , 1, 0,-1

Câu 258. Trong 2 đoạn chưcmg trình sau, đoạn nào cho kết quả i= 1 2 ?
(A) inti=6;do i++; while(i<12);
(B) inti=6; while (i<12) i++;
a. B b. A

c. 0 2 4 6 8 d. 0 2 4 6 8 10

52
Câu 260. Trong ngôn ngữ lập trình c , cho biết kết quả hiển thị trên màn hình sau
khi đoạn chương trình sau được thực hiện?

int i = 0;

while (i<10) {

i = i+2;

printf("%d ",i);

}
a. 2 4 6 8 b. 0 2 4 6 8
c. 2 4 6 8 10 d. 0 2 4 6 8 10
Câu 261. Hãy cho biết sau đoạn chương trình sau kết quả in ra màn hình như thế nào?
void main(){
in ta = l,n = 0 ;
while (n<10) {a++;}
printf("a = %d", a);
}
a. a = 1 b. Chương trình lặp vô hạn và không dừng

c. a = 10 d. a = a
Câu 262. Trong c , đoạn mã sau hiển thị gì trên màn hình?
int i=0;

whilc(-H-i+l<=5) printfr% d",i);

a. 12345 c. 123456
b. 0 1 2 3 4 d. 1234

C âu 263. Trong ngôn ngữ lậptrình c , khi đoạn chương trình sau được thực hiện,
kết quả hiển thị trên màn hình là gì?
int i = 0;

while(++i <= 5)

printf("%d,", i);

a. 0, 1,2, 3 ,4 , 5, c. 1,2, 3 , 4 , 5
b. 1,2, 3 ,4 , 5, d. 1,2, 3, 4, 5, 6

53
Câu 264. Cho biết kết quả thực hiện đoạn chương trình sau?
int s =0 , d = 0 ;
while (d < 10){
s+=d;
d + = 2;
} ' - ” ' ’ 1
printf("%d", S);
a. 0 b. 10
c. 20 d. 45
Câu 265. Viết chương trình yêu cầu người dùng nhập vào một số n(0< n <100) .
Nếu người dùng nhập sai thì đưa ra thông báo và yêu cầu nhập lại cho đến
khi nào đúng,
int n;
printf("Nhap gia tri n thoa man 0<=n<=lỌ0:");
scanf("%d", &n);

{
printf{"Gia tri ban nhap khong dung, yeu cau nhap lai");
scanfì("%d", &n);

c ần điền đáp án nào vào dấu (........ ) để chương trình thực hiện như yêu cầu?

a. if ((n > 0) && (n < 100)) c. while (n <0 II n > 100)

b. while ((n<0) && (n>100)) d. if (n<0 II n >100)


Câu 266. Viết chương trình yêu cầu người dùng nhập vào một số n (0< n <100) .
Nếu người dùng nhập sai thì đưa ra thông báo và yêu cầu nhập lại cho đến
khi nào đúng,
in tn ;
do{
printf("Nhap gia tri n thoa man 0<=n<=100: ");
scanf("%d", &n);
i

54
cần điền đáp án nào vào dấu ... để chương trinh thực hiện như yêu cầu?
a. while (n>=0 II n <=100); b. while (n>=0 II n <=100)
c. while (n <0 II n >100) d. while (n<0 II n > 100);
Câu 267. Cho đoạn chương trình nhập vào từ bàn phím một số nguyên lớn hon
hoặc bằng 0, nếu nhập sai yêu cầu nhập lại. Chọn câu trả lời đúng cho biểu
thức A và B
int n;
do { scanf("%d",&n);
if (A) printf("Nhap sai, nhap lai\n");
} while (B);
a. A: n<0 B: n<0 b. A: n>=0 B: n>=0
c. A: n<0 B: n>=0 d. A: n>=0 B:n<0
Câu 268. Trong ngôn ngừ lập trình c , khi đoạn chương trinh sau được thực hiện,
biến A có giá trị bao nhiêu?
int i, A = 0;
for (i=0; i<1000; i+=13) {
continue;
A = A+ 1;
}
a. A = 0 b. A = 76
c. A =77 d. A =1000
C âu 269. Trong ngôn ngữ lập trình c , khi đoạn chương trình sau được thực hiện,
biến A mang giá trị bao nhiêu?
int i, A = 0;
for (i=0; i<100;i+=13) {
A = A + 100;
break;
}
a. 0 b. 100
c. 760 d. 10000
Câu 270. Cho biết kết quà hiển thị trên màn hình?
int i = 'a';
a,
while (i< = V )

55
if ( i = 'a ') continue;
printfỊ"%c", i); i+=l;

a. Chương trình bị lặp vô hạn c. In ra màn hình từ b đến z


b. In ra màn hình từ a đến z d. Các phương án khác đều sai
Câu 271. Trong ngôn ngữ lập trình c, cho biết kết quả hiển thị trên màn hình sau
khi đoạn chương trình sau được thực hiện?
■int i = Oị • V
while (i < 10)

I
i = i+2;
continue;
printf ("%đ ",i);

a. %d %d %d %d %d c. 0 2 4 6 8
b. i i i i i d. Không có kết quả nào được đưa ra màn hình
Câu 272. Cho biết kết quà hiện trên màn hình cùa đoạn chương trình sau?
int i= l;
w hile(l)

{
printf("°/od",i);
i++;

if(i%3==0) continue;
printf(7M);
if(i% 5 = 0 ) break;

a. 1/23/4/ c. 1/2/3/4
b. 1/23/4 d. Chương trình có lỗi

56
Câu 273. Cho biết kết quả hiển thị trên màn hình của đoạn chương trình sau?

int a, b = 0;

for(a = 1; a < 10; a++){

if(a%2 — 0) continue;

b = b + a;

printf("%5d",b);

}
a. 1 4 9 16 25 c. 14 10 16 24

b. 2 6 10 16 24 d. 1 6 10 16 25
Câu 274. Chi ra kết quả trên màn hình?

int a, b = l;

for(a=l;a<10;a++){

ifl[a% 2=0) continue;

b+=a;

printfC%d ", b);

}
a. 1 4 9 16 25 c. 2 4 10 16 24

b. 2 5 10 17 26 d. 2 6 10 16 25
Câu 275. Trong ngôn ngữ lập trình c , cho biết kết quả hiển thị trên màn hình khi
đoạn chương trình sau được thực hiện?
int i = 0;

while (i<10) {

i++;

if (i%2 = 0) break;

printf("%d ",i);

}
a. 0 2 4 6 8 b. 1
c. 1 3 5 7 9 d. 0 1 2 3 4 5 6 7 8 9

57
C âu 276. Cho biết kết quả hiển thị ra màn hình của đoạn mã dưới đây?

int n = 10;

while (1){

n~;

if (n%3 !=0) continue;

printf("% d", n*n);

if (n<3) break;

}
a. 81 36 9 b. 100 64 49 25 16 4
c. 100 64 49 2516 4 1 d. 81 36 9 0
Câu 277. Trong ngôn ngữ lập trình c , cho biết kết quả hiển thị trên màn hình sau
khi đoạn chương trình sau được thực hiện?

int i = 0;
while (i<10) {

i++; if (i%2 = 0) continue;

printf("%d ”,i);

}
a. %d %d %d %d %d b. 0 1 2 3 4 5 6 7 8 9
c. 0 2 4 6 8 d. 1 3 5 7 9
Câu 278. Trong ngôn ngữ lập trình c , cho biết kết quả hiển thị trên màn hình sau
khi đoạn ch ư ơ n g trinh sau đ ư ạ c thự c hiện?

int i = 0;

while (i<10){

if (i%2 = 0) continue;

printf("%d ",i);

i++;

58
a. 0 2 4 6 8
b. 0 1 2 3 4 5 6 7 8 9
c. 1 3 5 7 9
d. Vòng lặp vô tận, không có kết quả nào được hiển thị trên màn hình
Câu 279. Trong ngôn ngữ lập trình c, cho biết kết quả hiển thị trẽn màn hình sau
khi đoạn chương trình sau được thực hiện?

int i = 0;

while (i<10){

i++;

if (i%2 = 0) break;

printf("%d ",i);

}
a. 0 1 2 3 4 5 6 7 8 9 c. 1 3 5 7 9
b. 0 2 4 6 8 d. 1
Câu 280. Khi thực hiện đoạn chuơng trình

int i;

for(i=10; i > 1; ~i){

if (i%2) continue;

printf ("%3d",i);

if (i = 0 ) break;

}
Ket quà nhận được trên màn hình là:

a. 10 8 6 4 25 c. 10 8 6 4 2
b. 2 6 10 16 24 d. 16 6 8 10 25
râ u 281. Cho một đoạn chương trìnhviết bằng ngôn ngữ lập trình c như sau'
char ch;

-0 ;

w hile(x<=255){

59
Phát biểu nào sau đây là đúng về đoạn chương trình trên?

a. Đoạn chương trình trên lặp vô tận


b. Đoạn chương trình trên in ra các ký tự và mã ASCII của chúng
c. Đoạn chương trình trên có lỗi cú pháp không khai báo X

d. Đoạn chương trình trên có lỗi cú pháp sử dụng cấu trúc while
C âu 282. Trong c, nếu một màng có 25 phần tử, miền của chi số sẽ là:
a. Từ 1 đến 25 c. Từ 0 đến 24
b. T ừ -12 đ ế n +12 d.Từ0đến25
Câu 283. Phần khai báo biến sau trong c chiếm bao nhiêu byte trong bộ nhớ?
intM l[100];
float M2[ 100]
a. 600
c. 200 d. 400
Câu 284. Trong ngôn ngữ lập trình c , câu lệnh nào dưới đây khai báo đúng một
hàng là màng số nguyên?
a. #define Aư[5] {1,2, 3 ,4 , 5}
b. #defme Arr {1,2, 3 ,4 , 5}
c. const int Arr[5] {1,2, 3 ,4 , 5};
d. const int Arr[5] = {1,2,3};
Câu 285. Trong ngôn ngữ lập trình c , câu lệnh khai báo màng nào sau đây là đúng
cú pháp?
a. int A[10] := [0, 1, 2, 3 ,4 , 5, 6 ,7 , 8, 9];
b. int A[10] = [0, 1, 2, 3 ,4 , 5, 6, 7, 8, 9];
c. int A[10] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ];
d. int A[10] = {0, 1, 2, 3 ,4 , 5, 6 ,7 , 8, 9};
Câu 286. Cho khai báo sau int B[4]={1, 2, 3,4}. Giá trị của B[4] là?
a. 2 b. 4
c. 3 d. Không xác định

60
Câu 287. Cho biết kết quả hiền thị ra màn hình sau khi thực hiện chương trinh sau?

int i, k=5, a[10]={2,4, 5 ,4 , 5 ,6 , 3, 5,10, 5};

for( i=0;i<10;i++){

if(a [i]= k ) continue;

printf("%2d",i);

}
a. 2 4 4 6 3 10 b. 0 1 3 5 6 8

c. 2 4 7 10 d. 2 4 5 4 5 7 3 5 10

Câu 288. Cho biết kết quà hiển thị ra màn hình sau khi thực hiện chương trình sau?

int k=5, a[10]={2, 4, 5 ,4 , 5 ,6 ,3 , 5, 10, 5};

for(int i=0;i<10;i-H-){

ifỊa [i]= k ) continue;

printf("%2d",a[i]);

I
a. 2 4 4 6 3 10 b. 0 1 3 5 6 8

c. 2 4 7 10 d. 2 4 5 4 5 7 3 5 10

Câu 289. Cho biết kết quả hiển thị ra màn hình?

int i,k=3, a[]={2, 4, 5 ,4 , 5, 6, 3, 5, 9, 5};

for(i=0;i< 10;i++) {
if(a[i]% k = 0 ) continue;

printfT% 2d'\i);

i W ỉW ? i:
a. 2 4 5 4 5 b.o 1 2 3 4 7 9
c. 2 4 5 4 5 5 5 d. 6 3 9
Câu 290. Cho biết kết quả hiển thị ra màn hình?

irit i,k=3, a[]= {2 ,4, 5 ,4 , 5, 6, 3, 5 ,9 , 5};

for( i=0;i<10;i-H-){

61
if(a[i]%

printfl"'

}
a. 2 4 5 4 5
b. 0 1 2 3 4 7 9 d. 6 3 9
Câu 291. Cần nhập vào từ bàn phím n sốnguyên với n cũng được nhập từ bàn
phím (n là số dương nhò hơn hoặcbằng 100). Khai báo nào đúng nhất cho
mảng A để lưu trữ n số nguyên này?

a. int A[int n]; b. int A[n];

c. intA[]={ 1,2,3}; d. int A[100];


C âu 292. Giả sử a, b là hai biến mảng kiểu int có cùng số lượng phần tử. Đe gán
các giá trị của mảng b vào mảng a, cách nào sau đây là đúng?
a. Dùng lệnh gán a = b ;
b. Dùng cấu trúc lặp để gán từng phần tử của b cho a
c. Cả hai đáp án a, b đều sai
d. Cả hai đáp án a, b đều đúng
C âu 293. Cho biết giá trị của biến a sau khi thực hiện đoạn mã c duới đây?

int a;

in tx [5 ]= { l,9 , 6, 3,4};

a= x[2]/x[4];

a. 1.5 b. 3

c. 1 d. 0
C âu 294. Trong ngôn ngữ lập trình c , cho biết sau khi đoạn chương trình sau được
thực hiện thì phần tử A[0] của mảng mang giá trị bao nhiêu?

int A[10] = {-1, 5, -2, 7 ,3 , -1 0 ,9 ,0 , -1, 7};

int i j,k ;

fo r(i= l; i<10; i++)

for G = 9;j>= i;j~)

if(A [j]< A [j-l]){

62
k -A O ];

A [j-l] = A[j];

A |j] = k ;

}
a . -10 b . -1
c. 7 d. 9
Câu 295. Trong ngôn ngữ lập trình c, cho biết sau khi đoạn chương trình sau được
thực hiện thì phần ni A[9] của mảng mang giá trị bao nhiêu?

in tA [1 0J= 7, 3 ,- 1 0 ,9 ,0 ,- 1 , 7};

int ij,k ;

for(i=l; i<10; i++)

fo r(j= 9 ;j> = i;j")

if(A [j]< A [j-l]){

k = A[j];

A[j-1Ị = A[j];

A[j] = k;

}
a. 7 b .- l
c . -10 d. 9
C âu 296. Giá trị của biến m sau khi thực hiện đoạn chirrmg trình sail là?

float A [4 ]~ { 1 .1,1.2,1.3,1.4};

int i; float m=0;

for(i=0;i<=3;i++)

ifỊm<A[i]) m=A[i];

a. 0 b. 1.1
c. 1.4 d. 1.3

63
Câu 297. Trong ngôn ngữ lập trình c, cho biết sau khi đoạn chương trình sau được
thực hiện thi phần tử A[0] của mảng mang giá trị bao nhiêu?

b. 9
d. 5
Câu 298. Trong các câu lệnh khai báo sau, câu lệnh nào là sai cú pháp?
a. int A[2][3]; c. int A[2][3]={1, 2, 3, 4, 5, 6};
b. intA[2][3]=(l, 2, 3 ,4 , 5, 6); d. int A[2][3]={1, 2, 3};
Câu 299. Giá trị của M [l][2] là?

int M[4][5] = { 10, 2, -3, 17, 82, 9, 0, 5, 8, -7, 32, 20, 1,0, 14, 0, ( I, 8 ,7 ,6 };

a. 0 b. 5
c. 8 d. 2
Câu 300. Với khai báo sau, giá trị M[2][l] là?

int M[4][5] = { 10. 2. -3. 17. 82. 9. 0, 5. 8. -7. 32. 20. 1.0. 14. 0. ( I. 8 .7 ,6 }:

a. -7 b. 20
c. 8 d. 32
Câu 301. Cho biết kết quả thực hiện đoạn chương trình:

c. 5 d. Không xác định

64
Câu 302. Cho biết kết quả thực hiện đoạn chuơng trình sau:

int a=3, *p = &a;

printf("%d\n", a * *p * a + *p);

a. 18 b. 27
c. 30 d. 36
C âu 303. Mảng a có kiểu int. Phát biểu nào sau đây đúng nhất?
a. a tương đương với &a[0]
b. a + i tương đương với &a[i]
c. *(a + i) tương đương với a[i]
d. Cả a, b, c đều đủng
Câu 304. Cho:
int a,*p;
p=&a;
Chi ra biểu thức không hợp lệ:
a. *p = a b. *p = = a
c. *p + 1 = a d. * p + l = = a
C âu 305. px là con trò tới X, py là con trỏ tới y. Câu lệnh nào trong các câu lệnh
sau tương ứng với y = 3*x + z;
a. *py = 3*x + z; c. py = 3*x + z;
b. *py = 3*(*px) + z; d. Cả đáp án a và b
C âu 306. Cho hai khai báo sau:
1: float (*p)[30];
2: float *p[30];
Phát biểu nào sau đây đúng?
a. 1 khai báo con trò kiểu fl(^t[30] và 2 khai báo mảng 30 con trỏ kiểu float
b. 1 khai báo mảng 30 con ưỏ kiểu float và 2 khai báo con trỏ kiểu float[30]
c. Cả hai đều khai báo con trỏ kiểu float[30]
d. Cá hai đều khai bao mảng 30 con trỏ kiểu float

5-Brniõí 65
C âu 307. Trong ngôn ngữ lập trình c, khi đoạn chương trình sau được thực hiện,
xâu "BKHN" được in ra bao nhiêu lần?
intx;
for(x=-l; x<=10; x++){

printf("BKHN");

a. Vô hạn lần b. 0 lần


c. 5 lần d. 10 lần
C âu 308. Cho đoạn chương trình sau
int i = 3, j = 6; int *pl, *p2;
pl = &i;
p2 = &j;
*pl = *p2;
Biết rằng trước lệnh gán cuối cùng thì

Biến Địa chỉ G iá trị


i FFEC 3

j FFEE 6

pl FFDA FFEC

p2 FFDC FFEE

Cho biết địa chi và giá trị của p l?


a. Địa chi FFDA, giá trị FFEC c. Địa chi FFDA, giá trị FFEE
b. Địa chì FFDC, giá trị FFEC d. Địa chi FFDC, giá trị FFEE
Câu 309. v ẫn đoạn chương trình trên, cho biết địa chì và giá trị của i?
a. Địa chi FFEC, giá trị 3 b. Địa chỉ FFEC, giá trị 6
c. Địa chi FFEE, giá trị 3 d. Địa chỉ FFEE, giá trị 6

66
Câm 310. v ẫ n đoạn chương trình trên, chi sửa lại lệnh gán cuối cùng là pl=p2.
Cho biết địa chi và giá trị của p l?
a. Địa chi FFDA, giá trị FFEC c. Địa chi FFDA, giá trị FFEE
b. Địa chi FFDC, giá trị FFEC d. Địa chi FFDC, giá trị FFEE
Câui 311. v ẫ n đoạn chương trình trên, chi sửa lại lệnh gán cuối cùng là pl=p2.
Cho biết địa chỉ và giá trị cúa i?
a. Địa chì FFEC, giá trị 3 b. Địa chi FFEC, giá trị 6
c. Địa chi FFEE, giá tri 3 d.Địa chi FFEE, giá trị 6
Câui 312. Cho biết kết quả hiển thị ra màn hỉnh?

c h a r!

a. 01234 b. 0123456789
c. 012345 d. \0
C âu I 313. Cho khai báo sau:

char B[6] = "Hanoi";

Cho biết giá trị của B[6] là:

a. 'i' b. Không xác định


c. 'o' d. '\0'
Câu 314. Trong các hàm dưới đây, hàm nào không thuộc tệp tiêu đề string.h?
a. strcat b. strcpy
c. strcm p d, T ất cả các h àm trôn đ ề u thuộc str ing.h
Câu .315. Cho biết kết quả hiển thị ra màn hình?

inti;

c. hello d.hell

67
a. sl="thu do ha noi" , s2= ""
b. s l= "thu do ha", s2="noi" d. Chương trình báo lỗi
Câu 317. Cho khai báo biến sau

char thudo[10]= "Hanoi";

Hòi bộ nhớ cấp phát bao nhiêu Byte cho biến thudo?

a. 10 byte c. 11 byte
b. 5 byte
Câu 318. Đoạn mã sau sai dòng nào?

char ■

s= '

gets(t); //d o n g 3 ỊfPSỊp$

a. dòng 1
b. dòng 2 d. Không sai dòng nào
Câu 319. Phát biểu nào sau đây là đúng?
a. Ký tự 'A' được lưu trữ trong 1 byte, xâu ký tự "A" được lưu trữ trong 2 byte
b. Ký tự 'A' được lưu trữ trong 2 byte, xâu ký tự "A" được lưu trữ ừong 1 byte
c. K ý tự 'A' được lưu trữ trong 1 byte, xâu ký tự "A" đư ợc lưu trữ trong 1 hyte

d. Ký tự 'A' được lưu trữ trong 2 byte, xâu ký tự "A" được lưu trữ trong 2 byte
C âu 320. Cho biết kết quả hiển thị trên màn hình sau đoạn chương trình:

68
Câm 321. Trong ngôn ngữ lập trình c, câu lệnh nào dưới đây khai báo đúng nhất
một hằng xâu ký tự?
a. #defme Xau[5] "BKHN" b. #defme Xau "BKHN"
c. const char Xau = "BKHN"; d. const Xau = "BKHN";
Câui 322. Trong ngôn ngữ lập trình c, câu lệnh nào dưới đây khai báo đúng một
hằng là xâu ký tự?

a. #define Xau = "BKHN" c. const char Xau[5] = "BK.HN";

b. #defĩne char Xau[5] "BKHN" d.const char Xau = "BKHN";

Câiu 323. Trong ngôn ngữ lập trình c, cho biết sau khi đoạn chương trình dưới đây
được thực hiện, kết quả hiển thị trên màn hình là gì?

a. %s b. 0123443210

c. 9876556789 d. 9876543210

C âui 324. Trong ngôn ngữ lập trình c, cho đoạn chương trình sao chép nội dung
xâu s 1 sang S2 theo thứ tự đảo ngược như sau :

char S I[20], S2[20];


int i, n;

n = strlen(Sl);

for( ( A ) ; ( B ) ; i— )

S 2 [ n - i- l] = Sl[i];

Hãy cho biết nội dung của các biểu thức (A), (B)?

a. ( A ) : i = 0, ( B ) : i<= n/2 c. ( A ) : i = n-1 , ( B ) : i >=0


b. ( A ) : i = 0, (B) : i <=n d. ( A ) : i = n, (B) : i >=0

69
C âu 325. Trong ngôn ngữ lập trình c, giả sử S I, S2 là hai xâu kí tự. Để ghép nội
dung xâu S2 vào sau S l, chương trình có thể thực hiện theo cách nào dưới đây?
a. Dùng lệnh strcm p(S l,S2); c. Dùng lệnh strcat(Sl,S2);
b. Dùng lệnh strcpy(Sl,S2); đ. Cả 3 cách trên đều sai
C âu 326. Cho biết kết quả thực hiện đoạn chương trình sau:

char S[10] = "Hello";

int d = 0;

while(S[d] l= W ịd + + i

printf("%d",d);

a. 0 b. 3
c. 5 d. 7
C âu 327. Trong ngôn ngữ lập trình c , cho đoạn chương trình đảo ngược nội dung
một xâu ký tự như sau:

char S[20], tmp;

int i, n;

n - strlen(S);

fo r((A );(B );i+ + ){

tmp = s[i]; s[i] = s[n-i-l]; s[n-i-l] = tmp;

Hãy cho biết nội đung cùa các biểu thức (A), (B)?

a. (A ) : i —0, (B ) : i < n/2 c. (A ) : i - 1, (B ) : i < n/2

b. ( A ) : i = 0, ( B ) : i <= n/2 d. ( A ) : i = 0, ( B ) : i < (n-l)/2


Câu 328. Cho đoạn chương trinh sau, hòi kết quả hiển thị ra màn hình là như thế nào?

char a[50] = "Xin chao";

char b[50] = "cac ban";

strcat(b, a);

strcpy(a, b);

ifỊstrcmp(a, b)>0)

70
sưcat(b, a);

printf("%s", a);

a. Xin chao b. cac ban


c. cac banXin chao d. Xin chao cac ban
Câu 329. Cho kiều cấu trúc được khai báo như sau trong Turbo C++3.0:

typedef struct {

char MSSVflO];

char Hoten[20];

float Diem; }SV;

Một biến thuộc kiểu s v sẽ được cấp phát bao nhiêu byte để lưu trữ?

a. 34 b. 38
c. 36 d. 40
C âu 330. Cho khai báo trong Turbo C++3.0:

struct {

char Ten[10];

char Mau[5];

int X, Y;

}Diem[5];

Bộ nhớ sê cấp phát bao nhiêu byte cho mảng Diem?

a. 19 b. 85
c. 95 d. 50
Câu 331. Cho cấu trúc:

struct sinh_vien{

71
Cách khai báo biến cấu trúc nào sau đây là đúng?
a. struct sinh_vien sinh_vien_l;
b. typedef struct sinh vien sinh_vien;
sinh vien sinh_vien_l;
c. Cả hai đáp án a, b đều đúng
d. Cả hai đáp án a, b đều sai
C âu 332. Cho struct sinhvien có dạng:

struct {

char hoten[50];

int diemTinDC;

}sinhvien;

Và một mảng sinhvien sv[50] đã được nhập đầy đủ dữ liệu, hỏi đoạn
chương trình sau thực hiện công việc gì?

in ti;

for (i=0;i<50;i++){

ifì(sv[i].dieniTinDC < 4) continue;

printfì("Ho ten sinh vien: %s", sv[i].hoten);


____ _ " _
printf("Diem Tin dai cuong: %d", sv[i].diemTinDC);

}
a. In ra màn hình thông tin họ tên và điểm tin đại cương của các sinh viên có
đ iểm tin đại cư ơ n g >=4.

b. In ra màn hình thông tin họ tên và điểm tin đại cương của các sinh viên có
điểm tin đại cương < 4.
c. In ra màn hình thông tin họ tên và điểm tin đại cương của các sinh viên có
điểm tin đại cương = 4.
d. In ra màn hình thông tin họ tên và điểm tin đại cương của các sinh viên có
điểm tin đại cương < 5.
C âu 333. Phát biểu nào dưới đây là không đúng về biến trong ngôn ngữ c ?
a. Vùng nhớ dành cho biến cục bộ sẽ được giải phóng khi ra khỏi phạm vi
khai báo biến

72
b. Biến toàn cục có thể được sử dụng ở tất cả các hàm ở sau vị trí khai báo biến
c. Biến static có phạm vi sử dụng giống biến toàn cục
d. Biến static chỉ được sử dụng trong phạm vi khai báo biến
Câu 334. Cho biết kết quả hiện trên màn hình?

int BP(int x){ int y=x*x ; x=y; return y; }

void main(){ int a=5; printf("%d%d",BP(a),a);}

a. 255 C.2525
b. 55 d. Chương trình có lỗi
Câu 335. Cho hàm kiểm tra xem một số >2 có phải là sổ nguyên tố không. Hàm trả
về 1 nếu là số nguyên tố, ngược lại trả về 0. Giá trị của M, N là bao nhiêu?

return k;

ì
a. M=1 N=0 c. M=1 N=1
b. M=0 N=1 d. Chương trình không làm đúng yêu cầu
C âu 336. Chọn khai báo nguyên mẫu hàm không đúng:
a. int TienGui(int, int);

b. float TienGui(SoTien, LaiSuat);


c. void TienGui(int);

d. void TienGui(int SoTien, float LaiSuat);

Câu 337. Hãy cho biết đoạn chương trình sau in kết quả ra màn hình như thế nào?

int ThayDoi(int x){


■• : ■ • J -V*,; t 'i
X++;
:■■ - í - - !' '
M M ĩM Ế Ẽ m é: ĨÌK-ư&sC- *■■■■;; ■

73
int x= 4;
printf("%d%d", ThayDoi(x), ThayDoi(x));

}
a. 55 b. 45
c. 56 d. 44
Câu 338. Cho biết kết quả hiện trên màn hình của đoạn chương trình sau:
int Tang(int x){
int y=3* ++x; x=y;
return y ; }
void main(){
int a=3;
printf("% d% d”,Tang(a),a);

a. 1212 b. 912

c. 93 d. 123

Câu 339. Cho biết kết quả hiện trên màn hình của đoạn chương trình sau:
int BienDoi(int x){
in t y = x*x; X = y;
return y;

void main(){
int a=2;
printf("°/od%d", BienDoi(a), a);

a. 92 b. 62

c. 42 d. 69

Câu 340. Hòi kết quả hiển thị trên màn hình?
int x,y;
int f^int x){ y = x -l; x= y-l; return x + y ;}
void mainO{

74
x=25;y=f(x);
printf("x=%d, y=%d", X, y);
}

a. x=23, y=24 b. x=23, y=47

c. x=24, y=47 d. x=25, y=47

C âu 341. Cho chương trình viết bang ngôn ngữ c sau :


#include<stdio.h>
void main(){
printfì("%f\n", sqrt(36.0));
' . . - v ĩ ■!!'■ ■
}
c ầ n thêm khai báo tệp tiêu đề nào để khi biên dịch chương trinh trên không
có lỗi?

a. #include<conio.h> c. #include<stdlib.h>
b. #include<math.h> d. #include<dos.h>
Câu 342. Cho một hàm viết bằng ngôn ngữ lập trình c như sau :
long fiin(int n){

for(i=0; i<=n; i++)


R = R * i;
return R;
ì ■

Phát biểu nào sau đây là đúng vềhàm fìin()?

a. Hàm tính toán giá trị 1" c. Hàm tính toán giá trị n!
b. Hàm tính căn bậc 2 của n d. Hàm trả về giá trị 0
C âu 343. Cho đoạn chương trình sau hỏi kết quả hiển thị ra màn hình là như thế
nào?
in t X y

intTinh(intx){
y = x - l ; x = y - 1;

75
c. Ca a và b đêu sai
d. Chương trình không thực hiện được vì có lôi cú pháp
Câu 344. Xét chương trình sau:

liilK

}
Ket quả sẽ là:

a. 4.1 5.2 b. 4.10 5.20


c. 5.2 4.1 d. 5.20 4.10
Câu 3 4 5 . X ác định lời gọi hợ p lệ cho hàm có tên C h u an H o aX au với g iá trị trả vị
CÓ kiểu String:
a. char *Bien;
ChuanHoaXau(XauGoc) = Bien;
b. float Bien;
Bien = ChuanHoaXau(XauGoc);
c. char *Bien;
Bien = ChuanHoaXau(XauGoc);
d. float Bien;
Bien = ChuanHoaXau XauGoc;

76
C âu 346. Phát biểu nào về tệp dưới đây là đúng?
a. Việc truy cập cùng lúc vào nhiều phần tử của tệp là có thể nếu chế độ mở
tệp cho phép
b. Tệp văn bản là trường hợp đặc biệt của tệp nhị phân
c. Sau mỗi thao tác đọc, ghi trên tệp, con trỏ tệp sẽ tự động trò về vị trí đầu
tiên của tệp
d. EOF là một hằng số nguyên được định nghĩa trong thư viện conio.h
C âu 347. Khi dùng hàm fopen thì kiểu nào sau đây làm đối số của hàm này, dùng
để mở một tệp để ghi bồ sung theo kiều văn bản, nếu tệp chưa tồn tại thì tạo

a. (1) điên FILE *f; (2) điên fclose(f);


b. (1) điền FILE f; (2) điền fclose(f);
c. (1) điền FILE f; (2) điền close(f);
d. (1) điền FILE *f; (2) điền FCLOSE(f);

77
PHẢN IV. BÀI TẬP Tự LUẬN LẬP TRÌNH

IV. 1. Phần bài tập có lời giải


Bài 1:
(3 x 2 - 2 x + 5 V x > 0
Cho hàm số: / 0 0 = 1 2x^+1 v 0
^ X
Viết chương trình con tính giá trị của hàm số trên. Trong chương trình chính
nhập giá trị của đối số từ bàn phím, gọi chương trình con này và hiển thị kế
quả ra màn hình.
L ời giải:
#include <stdio.h>
#include <conio.h>
float f(float x); // Khai bao nguyen mau ham
int main(){
float x;
printf("Nhap vao gia tri doi so x: ");
scanf("%f',&x);
printf("Ket qua goi ham la: % 6.2f', f(x));
getch();
return 0;
}
float f(float x){
if(x>=0) return (3*x*x - 2*x + 5);
else return ((2*x*x+l)/x);
}

78
Bài 2:
—X30 + co s0 .2 5 x — 5 n ếu X < 10

Íln (x 2 + 1) + X

9+ X
nếu 10 < X < 20

nếu X > 20
Viết chương trình hoàn chinh thực hiện các công việc sau:
a) Viết hàm F(x)
b) Nhập k số thực và lưu vào màng Q (5 < k < 1 00)
c) Sử dụng hàm đã viết, tính giá trị hàm F tại các phần tử của mảng Q và lưu
các phần từ không âm vào mảng Y.
d) Tính số lượng các phần tử của mảng Y có giá trị nằm trong khoảng (10, 100)
Lời giải:
#include <stdio.h>
#inđude <conio.h>
#include <math.h>
float F(float); // Khai bao nguyen mau ham
int main(){
float Q[100], Y[100];
int k, s, i, d;
/* Nhap so k */
do{
printf("\n Nhap k : "); scanf("%d", &k);
}while((k<5) II (k> 100));
/* Nhap k so thuc, luu vao mang Q */
for(i=0; i<k; i++){
printf("\nNhap 80 thuc tliu %d. ", i+ 1); scanfl[''%r',&Q[i]);

}
/* Tinh gia tri ham F tai cac phan tu cua mang Q, luu cac gia tri khong am
vao mang Y*/
d = 0;
for(i=0; i<k; i++)
if(F(Q[i])>=0){
Y[dl = F(Ọ[i]);
d++;
}

79
/* Tinh so luong cac phan tu cua mang Y co gia tri trong (10, 100) */
s = 0;
for(i=0; i< d ; i++) if((Y[i]>10) & & (Y[i]<100)) S++;

printf("\nSo luong phan tu cua mang Y thoa man la %d", s);


getch();
return 0;

}
/* Dinh nghia ham F */
float F(float x){
if(x<10) return -pow(x,10) + cos(0.25*x-5);
else if(x>20) return 9+x;
else return log(x*x+l)+x;

}
Bài 3:
Viết chương trình tính chu vi và diện tích hình tròn theo giá trị bán kính r
nhập từ bàn phím. Chu vi đường tròn: cv = 2 x n * r; diện tích hình tròn:
dt = n x r 2
Lòi giải:
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main(){
float r, cv, đt; // K hai bao 3 bien thuc
printf("\n Nhap vao ban kinh r = ");
scanf("% f’,&r);
cv = 2*M_PI*r; // Tinh chu vi
đt = M_PI*r*r; // Tinh dien tich
printf("\nChu vi = %10.2f\nDien tich = % 10.2f',cv, dt);
getch();
return 0;

80
Bài 4:
Hãy v iế t chương trình nhập vào các số nguyên a, b, c từ bàn phím. Tính và
đưa ra màn hình giá trị của a, b, c sau khi thực hiện các biểu thức:
• a++ + -H-b
• —a - b— * ++C
với a,b,c là các số nguyên nhập vào từ bàn phím.
Lời giải:
#include<stdio.h>
#include<conio.R>
int main(){
int a, b. c, z;
printf("Nhap vao a = "); scanf("%d",&a);
printf("\nNhap vao b = "); scanf("%d",&b);
printf("\nNhap vao c = "); scanf("%d",&c);
z = a++ + ++b;
printf("\nBicu thuc 1 = %d, a = %d, b = %d", z, a, b);
z = ~ a - b—* ++c;
printf("\nBicu thuc 2 = %d, a = %d, b = %d, c = %d", z, a, b, c);
getch();
return 0;
}

Bài 5:
Dùng biểu thức điều kiện ? : để đưa ra số lớn nhất trong 3 số thực nhập vào
từ bàn phím.
Lời giải:
#include<stdio.h>
#include<conio.h>
int main(){
float a, b, c, z;
printf("\nNhap vao so a = "); scanf("%f',&a);

81
printf("\nNhap vao so b - "); scanf("%f',&b);
printf("\nNhap vao so 9 = "); scanf("%f',&c);
z = (a>b)?(a>c?a:c):(b>c?b:c);
printf("\nSo Ion nhat = %0.2f\n", z);
getch();
return 0;

Bài 6:
Hãy viết một chương trình c hoàn chinh thực hiện nhiệm vụ sau: Nhập vào
từ bàn phím một xâu ký tự có độ dài không quá 25 ký tự, nếu nhập xâu có độ
dài quá 25 ký tự thì yêu cầu nhập lại cho đến khi thỏa mẫn yêu cầu. Sau đó
hiển thị ra màn hình số lần xuất hiện ký tự đầu tiên trong xâu.
L ời giải:
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main(){
char s[26], c;
int 1, n;
■ do{
printf("Nhap vao mot xau co do dai khong qua 25 ki tu :");
gcts(s);
}while(strlen(s)>25);
c = s[0]; n = 0;
for(i=0;i<strlen(s);i-H-) if(s[i] — c) n++;
printf("So lan xuat hien chu cai dau tien %c trong xau la %d", c, n);
getch();
return 0;
}

82
Bài 7:
Viết chương trình nhập vào từ bàn phím họ và tên của một người, sau đó in
phần tên ra màn hình. Ví dụ: "Tran Hung Dao" thì in ra "Dao".
Lời giải:
#include<stdio.h>
#include<conio.h>
#include<string.h>
int inain(){
char t[30],*s, *p; int i;
printf("Nhap vao mot xau ho va te n :");
gets(t);
/* Loai bo ky tu cach o dau va cuoi xau*/
s = chuanhoa(t);
/* Dung ham stưchr duyet nguoc tu cuoi xau, tim vi tri đau tien cua mot ky
tu va tra ve con tro tro đen ky tu đo */
p = strrchr(s,''); // Tim ky tu trong dau tien tu cuoi xau s
p = p + 1;
printf("\nPhan ten la: %s\n",p);
getchO;
return 0;

}
/* Dinh nghía ham loai bo ky tu cach o dau va cuoi xau*/
char *chuanhoa(char *x){
while(*x = ' ’) X= X++;

while(*(x + strlen(x)) = " ) X = X—;


return x;

}
Bài 8:
Viết chương trình nhập n số nguyên từ bàn phím (1 0 < n < 100), kết thúc
quá trình nhập số khi nhập một chữ cái hoặc đã nhập 100 số. Tìm xem có
bao nhiêu số thỏa mãn điều kiện: số đó bằng số đứng trước nó cộng 3, in ra
màn hình các số đó.

6 -B T T H Đ C 83
L ời giải:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
int main(){
int n = 0, i, sl = 0, a[ 100];
char s[5];
do{
printf("\nNhap vao so thu % d :", n+1);
scanf("%s",s);
/*Kiem tra neu la ki tu thi thoat khoi vong lap*/
if(isalpha(s[0])) break;
/*Dung ham atoi chuyen doi dang chuoi thanh dang so*/
a[n] = atoi(s); n++;
}while(n<100);
printf(”\nCac so thoa man dieu kien bang so dung truoc cong 3 la: \n");
for(i=l;i<n;i++)
if(a[i]=(afi-l]+3)){
sl++;
printf("%d\t",a[i]);

}
p rin tf("\n S o luong cnc so thoa man dicu kicn la: % d", sl);

getchO;
retum 0;

Bài 9:
Viết chưcmg trình tìm ước số chung lớn nhất của hai số nguyên dương a, b
được nhập vào từ bàn phím.

84
Lời giải:
Cách ì:
#include <stdio.h>
#include <conio.h>
int Itiain(){
unsigned int a, b;
printf("Nhap so thu n h a t:"); scanf("%d",&a);
printf("\nNhap so thu h a i:"); scanf("%d",&b);
while(a!=b){
if(a>b)a -=b;
else b -=a;
}
printf("\nUSCLN la %d",a);
getch();
return 0;

Cách 2:
#include <stdio.h>
#include <conio.h>
int main(){
unsigned int a, b, min, i;
p rin tf("N h ap so thu nhat: "); scunf("% U ",& a),

printf("\nNhap so thu hai: "); scanf("%d",&b);


/*Tim ra so nho hon trong hai so*/
min = a<b?a:b;
/*Dung vong lap duyet nguoc tu so nho hon toi 1*/
for(i=m in;i>=l;i~)
if((a% i= 0 )& & (b % i= 0 )) {
printf("\nUSCLN la %d",i);
break;

85
}
getch();
return 0;

Bài 10:
Viết một chương trình thực hiện các công việc sau:
a. Đọc vào máy từ bàn phím một số nguyên dương n
b. Tính tổng s = 1 + 2+ 3 + ....+ n
L ờ i giải:
#include <stdio.h>
#include <conio.h>
/*Khai bao nguyen mau ham*/
unsigned long sum (unsigned int n);
/♦Chuông trinh chinh*/
int main(){
unsigned int n;
unsigned long tong;
printf("Nhap n: "); scanf("%d",&n);
tong = sum(n);
printf("\nTong can tinh la: %d", tong);

getchO;
return 0;

}
unsigned long sum (unsigned int n){
unsigned long s = 0;
int i;
for(i=l;i<=n;i++) s+=i;
return s;

86
Bài 11:
Viết hàm hoán đổi giá trị hai biến số nguyên.
Lòi giải:
#include <stdio.h>
#include <conio.h>
void swap( int* , int* ); /* Khai bao nguyen mau ham */
int main(){
int X, y ;

printf("Nhap vao so nguyen thu nhat X = "); scanf("%d",&x);


printf("Nhap vao so nguyen thu hai y = "); scanf(”%d",&y);
swap(&x, &y);
printf("Sau khi hoan doi gia tri hai bien, X = %d, y = %d", X, y);
getch();
return 0;

}
void swap( int* X, int* y){ /* Dinh nghia ham swap */
int temp;
temp = *x;
*x = *y;
*y = temp;
}

Bài 12:
Viết chương trình tính giá trị hàm Fibonaci với tham số n được nhập từ bàn
phím. Biết rằng:
• fibonaci(O) = 0; fibonaci( 1) = 1;
• fibonaci(n) = fibonaci(n-l) + fìbonaci(n-2) Vn>l
Lòi giải:
#include <stdio.h>
#include <conio.h>
long fíbo( lo n g ); /* Khai bao nguyen mau ham */

7-BTTHĐC
87
int main() {
long result, n;
printf("Hay nhap vao mot so nguyen: ");
scanf("%ld", &n);
result = fibo(n);
printf("\nFibonaci cua %ld la: %ld", n, result);
getchO;
return 0;

}
/* Dinh nghia de quy ham fibonaci */
long fibo( long n){
if ( n = 0 II n — 1 )retum n;
else return fibo(n-l) + fibo(n-2);
}

Bài 13:
Thông tin về một học sinh lưu trong một cấu trúc gồm các trường: M ã số
ký tự), Họ tên (không quá 30 ký tự), Điểm toán (số thực). Hãy viết n
chương trình hoàn chinh thực hiện các công việc sau:
a) Nhập vào danh sách học sinh của một lớp (biết rằng lớp này có không (
30 học sinh). Quá trình nhập kết thúc khi đã nhập đủ 30 học sinriì nbạc
nhập Mã số là xâu "$$$".
b) Sắp xếp danh sách học sinh theo thứ tự giảm dần cùa Điểm toán và hiên
danh sách này ra màn hinh.
Lời giải:
#include <stdio.h>
#include <conio.h>
#include <string.h>
typedef struct {
char maso[9];
char hoten[31];
float diemtoan;

88
}HOCSINH;
HOCSINH ds[30], tg;
int main() {
int ij,n = 0;
float diemtoan;
char maso[9];
charhoten[31];
for(i=0; i<30; i++){
printf("\nNhap ma so sv thu %d: ",i+l);
fflush(stdin); scanf("%s",maso);
/*Neu nhap ma so la xau "$$$" thi dung viec nhap*/
if(strcm p(m aso,"$$S")=0) break;
n++;
strcpy(ds[i] .maso,maso);
printf("\nNhap ho ten: "); fflush(stdin); gets(hoten);
strcpy(ds[i].hoten,hoten);
printf("\nNhap diem toan: "); scanf("%f',&diemtoan);
ds[i].diemtoan = diemtoan;
}
/* Sap xep danh sach hoc sinh theo thu tu khong tang cua diem toan */
for(i=0; i< n-l; i++)
fo r(j= i+ l;j< n ;j+ + )
it(ds[iJ.diemtoan < ds[jJ.diemtoan){
tg = ds[i];
ds[i] = ds[j];
ds[j] = tg;
}
/* Hien thi danh sach ra man hinh */
printf("\n DANH SACH HOC SINH SAU KHI SAP XEP THEO DIEM
TOAN");
printf("\n+-------- +-------------------------------- .+.---------- 1-");

89
printf("\n| Ma so I Ho ten |Diem toan|");
printf("\n+-------- •+■-------------------------------- +------------ ■+");
for(i=0;i<n;i++) printf("\n|%8s|%30s|%9.1f|", ds[i].maso, ds[i].hoten,
ds[i].diemtoan);
printf("\n+--------- + ---------------------------------- + ---------- +\n");
getch();
return 0;

Bài 14:
Viết một chương trình thực hiện các công việc sau:
a. Đọc một dãy số nguyên 10 phần tử từ bàn phím vào mảng a.
b. Ghi dãy vừa đọc lên tệp "SONGUYEN.SL" ở thư mục gốc cùa ổ c.
c. Đọc tệp trên vào mảng b và hiển thị lên màn hình.
Lòi giải:
#include <stdio.h>
#include <conio.h>
int main(){
FILE *f; int i, a[10], b[10];
for(i=0;i<10;i-H-){

printf("\na[%d]= ",i);
scanf("°/od",& a[i]);

}
/*Mo tep SONGUYEN.SL de ghi theo che do nhi phan*/
f = fopen("C:\\SONGUYEN.SL", "wb");
fwrite(a, sizeof(a), 1, f);

fclose(f);
/*Mo tep SONGUYEN.SL de doc theo che do nhi phan*/
f=fopen("C:\\SONGUYEN.SL","rb");
fread(b, sizeof(a), 1, f);

90
fclose(f);
/*Hien thi ra man hinh*/
printf("\nDay so doc duoc la:");
for(i=0;i<10;i++) printf("\n%d", b[i]);
getch();
return 0;

Bài 15:
Viết chương trình sao chép tệp ở chế độ nhị phân.
Lời giải:
^include <stdio.h>
#include <conio.h>
^include <stdlib.h>
int main(){
int c;
char tl [25], t2[25];
FILE * fl, *f2;
printf("\nTEP NCiUON:"); gets(tl);
printf("\nTEP DICH:"); gets(t2);
fl=fopen(tl,"rb");
if(fl==NULL){
printf("\nTEP %s KHONG TON TAI",tl);
getch();
exit(l);

}
f2=fopen(t2,"wb");
while((c=fgetc(fl))!=EOF) fputc(c,f2);
fclose(fl); fclose(f2);

91
printf("\nDa sao chep xong...");
getch();
return 0;

Bài 16:
Thông tin về trẻ em sinh ra tại một bệnh viện bao gồm: Họ và tên là một xâu
không quá 30 kí tự; T háng sinh là một số nguyên; Năm sinh là một số
nguyên; C ân nặng (theo kg) là một số thực; Giói tính là một số nguyên chi
nhận hai giá trị 0, 1 với quy ước 1 là bé trai, 0 là bé gái.
Giả sử dữ liệu khá lớn, không thể lưu trữ ờ bộ nhớ trong.
Hãy viết chương trình thực hiện những công việc sau:
a. Nhập thông tin của các trẻ sơ sinh và ghi vào tệp nhị phân SOSINH.DAT
trên ổ D. Quá trình nhập kết thúc khi nhập giá trị Cân nặng là 0. Nếu gặp
lỗi khi tạo tệp, thông báo "Khong tao duoc tep" cho người sử dụng.
b. Nhập tháng T (1 < T < 12) và năm N (2 0 0 0 < N < 2 0 1 3 ) từ bàn
phím. Đọc tệp SOSINH.DAT và hiển thị ra màn hình danh sách các trẻ so
sinh được sinh ra trong tháng T năm N đó.
Danh sach tre so sinh thang.... nam.............
STT Ho va ten Can nang Gioi tinh
Quy cách hiển thị: Họ và tên trên 32 vị trí, cân nặng trên 5 vị trí với 2 chữ SC
thập phân, giới tính in nam hoặc nữ tùy theo giá trị lưu trong tệp là 1 hay c
trên 5 vị trí.
Nếu không có em nào được sinh trong tháng năm đó, thông báo: "Khong cc
em nao sinh trong thang....nam ............
c. Ghi ra tệp văn bản KETQUA.TXT ờ thư mục hiện hành ti lệ sinh bí
trai/bé gái trong năm 2012. Nếu số bé gái sinh ra bàng 0 thì ghi giá trị -1.
Lời giải:
#include <stdio.h>
#include <conio.h>
int main() {
struct {

92
char ht[30]; // Ho va ten
int ths, ns, gt; // Thang sinh, nam sinh, gioi tinh
float cn; // Can nang
}te; // Tre em
FILE *f;
float trl; // Trong luong
int t, n, dem = 0, stt = 0, bt = 0, bg = 0;
if((f=fopen("D: WSOSINH.DAT","w b"))=N U L L ) {
puts("\nKhong tao duoc tep");
getch(); exit(l);

}
else{
do{
printf("\nNhap trong luong: "); scanf("%f',&trl);
if(trl > 0){
printf("\nNhap ho te n :"); fflush(stdin); gets(te.ht);
printf("\nNhap thang sin h :"); scanf("%d",&te.ths);
printf("\nNhap nam sin h :"); scanf("%d",&te.ns);
printf("\nNhap gioi tinh (1: nam; 0: nu):"); scanf("%d",&te.gt);
te.cn = trl;
fwrite(&te, sizeof(te), 1, f); //G hi len tep
}
}whilc(ưl > O);
fclose(f); // Dong tep

}
printf("\nNhap thang va nam: "); scanf("%d%d",&t, &n);
f=fopen("D: \\SOSINH.DAT","rb");
printf("\nDanh sach tre so sinh thang %d nam %d", t, n);
while(fread(&te, sizeof(te), 1, f)){
if((te.ths = t) && (te.ns = n)){
if ( te .g t= 1)

93
printf("\n %3d %32s % 5.2f nam", stt++, te.ht, te.cn);
else printf("\n %3d %32s % 5.2f nu", stt++, te.ht,
te.cn); dem++;
}
}
if(!dem)
printf("\nKhong CO em nao sinh trong thang %d nam %d", t, n);
fclose(f);
/* Tinh ti le sinh be trai/be gai nam 2012 */
f=fopen("D:\\ SOSrNH.DAT","rb");
while(fread(&te, sizeof(te), 1, f)){
if((te.ns = 2012) && ( te .g t= l) ) bt++;
if((te.ns = 2012) && (te.gt==0)) bg++;
}
fclose(f);
/* Ghi ket qua len tep KETQUA.TXT 0 thu muc hien hanh */
f=fopen("KETQUA.TXT","wt");
if(bg>0) fprintf(f, "Ti le sinh be trai/be gai nam 2012: % 6.2f', ((float)
bt)/bg);
else fprintf(f, "Ti le sinh be trai/be gai nam 2012: %6d", -1);
fclose(f);
getch();
return 0;

94
IV.2. Phần bài tập bạn đọc tự giải
Bài 1:
Hãy viết một chương trình c hoàn chinh thực hiện những nhiệm vụ sau:
a. Viết hàm tính giá trị f(x) = 3x2+5 (x là số thực).
b. Nhập vào từ bàn phím một số thực. Hiển thị ra màn hình các giá trị của
hàm số với 20 giá trị đối số tăng dần bắt đầu từ số vừa nhập với bước tăng
là Ax = 0.05.
Bài 2:
Hãy viết một chương trình c hoàn chỉnh thực hiện những nhiệm vụ sau:
a. Viết hàm tính giá trị f(x) = 2x4 - 3 (x là số thực).
b. Nhập vào từ bàn phím một số thực. Hiển thị ra màn hình các giá trị của
hàm số với 20 giá trị đối số giảm dần bắt đầu từ số vừa nhập với bước
giảm là Ax = 0.02
Bài 3:

Viết chương trình con tính giá trị của hàm số trẽn. Trong chương trình chính,
nhập giá trị của đối số từ bàn phím, gọi chương trình con này và hiển thị kết
quà ra màn hình.
Bài 4:
Viết chương trình nhập n số nguyên từ bàn phím (2 < n < 52), kết thúc
quá trình nhập số khi nhập một chữ cái hoặc đã nhập 52 số. Đếm xem có bao
nhiêu số chia hết cho 3, in ra màn hình các số đó.
Rải 5:
Viết chương trình tìm bội số chung nhỏ nhất của hai số nguyên dương a, b
được nhập vào từ bàn phím.
Bài 6:
Viết chương trình tìm ước số chung lớn nhất của ba số nguyên dương a, b, c
được nhập vào từ bàn phim.
Bài 7:
Viết chương trình tính tổng sau:
s = ! + X + X2 + X3 + ... + xn
với hai số n nguyên dương và X được nhập vào từ bàn phím.

95
Bài 8:
Viết chương trình tính tổng sau:
S = 1 - x + x2 - x 3 + ... + (-l)".xn
với hai số n nguyên dương và X được nhập vào từ bàn phím.

Bài 9:
Viết chương trình thực hiện các công việc sau:
a. Đọc từ bàn phím một dãy n số thực, với n đọc từ bàn phím.
b. Đếm xem có bao nhiêu số dương, tính tổng của chúng. Đưa kết quả ra
màn hình.
Bài 10:
Viết chương trình thực hiện các công việc sau:
a. Nhập vào một dãy n số thực, với n nhập vào từ bàn phím và n < 100.
b. Sắp xếp dãy số ữên theo thứ tự không giảm, hiển thị dãy số sau khi sắp
xếp ra màn hình.
Bài 11:
Địa chi e-mail là một chuỗi ký tự có chứa duy nhất một ký tự a còng/a móc
'@ ' phân cách phần tên tài khoản và phần tên miền, tên tài khoản và tên miền
không chứa dấu cách/khoảng trắng.
Viết một chương trình c hoàn chỉnh, nhập vào từ bàn phím một chuỗi ký tự
và kiểm tra xem đó có phải là một địa chi e-mail không. Nếu đúng là địa chi
e-mail thì hiển thị thông báo "La dia chi e-m a ir, ngược lại thì hiển thị
"Khong p h a i dia chi e-mail". Giả sử người dùng nhập chuỗi chi bao gồm
dấu cách, ký tự ký tự dấu chấm 7 , các chữ số, các ký tự trong bảng chữ
cái L atin.

Bài 12:
Viết một chương trình c hoàn chinh, nhập vào từ bàn phím một xâu ký tự,
sau đó chuyển toàn bộ ký tự chữ thường trong xâu thành ký tự chữ hoa và
hiển thị ra màn hình xâu ký tự đã xử lý này cùng với số lượng ký tự đã
chuyển thành ký tự chữ hoa. Giả sử người dùng nhập xâu đầu vào chi gồm
các ký tự trong bảng chữ cái Latin và/hoặc dấu cách.
Bài 13:
Viết chương trình thực hiện nhập n xâu từ bàn phím (n cũng được nhập từ
bàn phím). Hiển thị ra màn hình xâu cuối cùng có độ dài lớn nhất.

96
Bài 14:
Viết chương trình nhập một chuỗi ký tự từ bàn phím (giả sử có độ dài không
quá 100 ký tự kể cả ký tự trắng), đếm xem có bao nhiêu từ, đưa ra màn hình
số từ và xâu sau khi loại bỏ các ký tự trắng (các từ được ngăn cách bời một
hoặc nhiều ký tự trắng).
Bài 15:
Nhập một xâu từ bàn phím, quá trình nhập dừng khi gặp ký tự hoặc độ
dài cùa xâu vượt quá 50 kí tự. Các từ được ngăn cách bởi một hoặc nhiều ký
tự trắng.
a. Có bao nhiêu từ bắt đầu bằng ký tự "H"?
b. Đưa ra màn hình theo thứ tụ ngược lại sau khi đã xóa hết các ký tự trắng trong
xâu. Ví dụ: Xâu ban đầu là "thi chuyen he", xâu đưa ra là "ehneyuhciht".
Bài 16:
Viết chương trình đệ quy tính giá trị của dãy số được xác định theo công
thức sau:
Ị Ul = u 2 = 1
Ị u n = 4 u n_ ! + 3 u „ _ 2 V n > 3

Bài 17:
Hai số được gọi là nguyên tố cùng nhau nếu chúng có ước số chung lớn
nhất bằng một. Viết hàm kiểm tra hai số có nguyên tố cùng nhau hay
không bằng cách:
a. Sử dụng vòng lặp.
b. Sử dụng kĩ thuật đệ quy.
Bài 18:
Viết chương trình đệ quy tính giá trị của giai thừa cách n!! được định nghĩa
như sau:
• Nếu n = 2k+l thin!! = 1.3 .5 ...(2 k + 1)
• Nếu n = 2k thì n!! = 2.4.6.,.(2k)
Bài 19:
Thông tin về một n hân viên lưu trong một cấu trúc gồm các trường: Họ tên
(không quá 30 ký tự), Địa chỉ (không quá 50 ký tự), Bậc lương (số nguyên).
Hãy viết một chương trình hoàn chỉnh thực hiện các công việc sau:

97
a. Nhập vào danh sách nhân viên của một cơ quan (biết rằng cơ quan này có
không quá 70 nhân viên). Quá trình nhập kết thúc khi đã nhập đù 70 nhân
viên hoặc khi nhập Họ tên là xâu "###".
b. Sắp xếp danh sách nhân viên theo thứ tự tăng dần của Bậc lương và hiển
thị danh sách này ra màn hình.
Bài 20:
Biết rằng số học sinh trong lớp học nhỏ hơn 50. Một học sinh có các thông tin
sau: Họ tên, Năm sinh, Địa chỉ, Điểm toán. Hãy thực hiện các thao tác sau:
a) Xây dựng kiểu dữ liệu để lưu thông tin học sinh biết rằng Họ tên học sinh
có độ dài không quá 30 ký tự và Địa chỉ có độ dài không quá 100 ký tự.
b) Nhập danh sách học sinh cùa lớp học. Quá trình nhập dừng lại khi đã có đù
50 học sinh hoặc khi trả lời "No" khi được hỏi.
c) Sắp xếp danh sách học sinh theo điểm toán theo thứ tự giảm dần.
d) In ra màn hình họ tên những sinh viên có điểm toán thấp nhất trong lớp.
Bài 21:
Biết rằng trong một cơ quan có không quá 100 nhân viên. Một nhân viên có
các thông tin sau: Họ tên, Năm sinh, Địa chỉ, Mức lưtmg. Hãy thực hiện
các thao tác sau:
a. Xây dựng kiều dữ liệu để lưu thông tin nhân viên biết rằng Họ tên cán bộ
có độ dài không quá 30 ký tự và Địa chi có độ dài không quá 100 ký tự.
b. Nhập hồ sơ nhân viên của cơ quan. Quá trinh nhập dừng lại khi đã có đù
100 nhân viên hoặc khi trả lời "No" khi được hòi.
c. Sắp xếp danh sách nhân viên theo Năm sinh theo thứ tự giảm dần về tuổi.
d. In ra m àn h ìn h tên v à m ứ c Urơng của n h ữ n g n hân v iên có tuôi cao n h ât
trong cơ quan.
Bài 22:
Số lượng xe ô-tô do một đơn vị quản lý không quá 50 xe. Mỗi hồ sơ xe có
các thông tin sau: N hãn hiệu xe, Biển số xe, Tên hãng sản xuất, Dung tích
xi lanh. Hãy thực hiện các thao tác sau:
a. Xây dựng kiểu dữ liệu để lưu hồ sơ xe biết rằng Tên hãng sản xuất, Nhãn
hiệu xe, Biển số xe là các xâu ký tự có độ dài không quá 50 ký tự.
b. Nhập hồ sơ xe của cơ quan. Quá trình nhập dừng lại khi đã có đủ 50 xe
hoặc khi trả lời "No" khi được hỏi.

98
c. sắp xếp danh sách xe theo Dung tích xi lanh theo thứ tự giảm dần.
d. In ra màn hình Nhãn hiệu xe và Dung tích xi lanh của niiững xe códung
tích xi lanh nhỏ nhất.
Bài 23:
Biết rằng trong một kho hàng có không quá 100 mặt hàng. Một m ặt hàng có
các thông tin sau: Tên m ặt hàng, Ngày nhập, s ố lượng, G iá, C hủng loại.
Hãy thực hiện các thao tác sau:
a. Xây dựng kiểu dữ liệu để lưu trữ thông tin mặt hàng biết rằng Tên mặt
hàng và Chủng loại có độ dài không quá 100 ký tự.
b. Nhập thông tin mặt hàng. Quá trình nhập dừng lại khi đã có đù 100 mặt
hàng hoặc khi trả lời "No" khi được hỏi.
c. Sắp xếp danh sách các mặt hàng theo giá giảm dần.
d. In ra màn hình tên và số lượng của những mặt hàng có giá thấp nhất
trong kho.
Bài 24:
Hãy viết một chương trình c hoàn chinh thực hiện nhiệm vụ sau: Nhập vào
từ bàn phím một dãy các số nguyên, quá trình nhập sẽ kết thúc khi số lượng
số nguyên nhập vào đủ 30 số hoặc tổng cùa tất cả các số nhập vào lớn hơn
1000. Hiển thị ra màn hình số lần xuất hiện của số đầu tiên trong dãy.
Bài 25:
Quy tắc tính tiền điện tiêu thụ trong một tháng cùa một hộ dân như sau:
100 số đầu giá 550 đ/số, 50 số kế tiếp giá 1.000 đ/số và các số tiếp theo được
tính giá 1.500 đ/số. Ví dụ: nếu một hộ tiêu thụ 165 số điện trong tháng thì
tiền điện hộ đó phải trả là = 100 số X 550 đ/số + 50 số X 1000 đ/số + 15 số X
1500 đ /só = 127.500 đ.

a. Viết chương trình con hàm double TIENDIEN(int sodien) nhận tham số
vào là số điện năng tiêu thụ trong tháng của hộ dân và trả về số tiền điện
mà hộ dân phải thanh toán.
b. Nhập từ bàn phím số hộ dân N trong một thôn (điều kiện N < 40).
c. Nhập vào số điện tiêu thụ trong một tháng của N hộ dân đó, tính số tiền
mỗi hộ phải ừả và lưu các giá trị này vào một mảng p.
d. Tính và hiển thị tổng số tiền điện mà thôn phải trả trong tháng đó.

99
Bài 26:
Thông tin về nguồn vốn viện trợ ODA mà các quốc gia viện trợ cho Việt
Nam từ năm 2000 đến 2007 được lưu trong cấu trúc kiểu ODA gồm có: Tên
quốc gia (xâu không quá 30 ký tự thường); số tiền (mà quốc gia đó tài trợ,
đơn vị: triệu USD), Năm (năm tài trợ).
Giả sử thông tin trên đã được lưu trữ trong tệp TAITRO.DAT tại thư mục
gốc ổ D. Lập chương trình thục hiện những công việc sau:
a. Nhập thêm vào cuối file ưên thông tin về sự tài trợ của các quốc gia ưong
năm 2008. Điều kiện kết thúc là khi nhập tên quốc gia là xâu "$$$".
b. Nhập vào một số N (2000 < N < 2008). Đọc file trên, đưa ra tên, số tiền
tài trợ cùa các quốc gia cho Việt Nam trong năm N theo quy cách: 30 vị
trí cho phẩn tên quốc gia, 6 vị tri cho phần số tiền tài trợ, mỗi quốc gia
trên một dòng.
c. Nhập vào một xâu ký tự s thể hiện tên một quốc gia. Đọc lại file trên và
đưa ra tổng số tiền từ năm 2003 đến nay mà quốc gia đó đã tài trợ cho
Việt Nam. Nếu không tìm thấy thì thông báo "KHÔNG TÌM THÁY".
Bài 27:
Thông tin về xe máy được lưu trong cấu trúc gồm: H ãng sản xuất (xâu
không quá 20 ký tự), Năm sản xuất (số nguyên). Hãy viết một chương trình
c thực hiện những công việc sau:
a. Nhập vào từ bàn phún thông tin về 30 xe máy và lưu vào một mảng cấu trúc.
b. Duyệt mảng này, đưa ra màn hình tổng số xe được sản xuất bời hãng
"Honda" và thông tin năm sản xuất của từng chiếc xe này.
Bài 28:
Thông tin về đôi giầy được lưu trong cấu trúc gồm: N hà sản xuất (xâu
không quá 25 ký tự), Kich thước (số nguyên). Hăy viết một chương trinh c
thực hiện những công việc sau:
a. Nhập vào từ bàn phím thông tin về 100 đôi giầy và lưu vào một màng cấu trúc.
b. Duyệt mảng này, đưa ra màn hình tồng số đôi giầy do Nhà sàn xuất "Binh
Tien" sản xuất và thông tin kích thước của từng đôi giầy này.
Bài 29:
Hãy viết một chương trình c hoàn chinh thực hiện những nhiệm vụ sau:
a. Định nghĩa hàm có tên C hỉnhPhuong với đầu vào là một số nguycn. Hàm
trả về 1 nếu số đầu vào là số chính phương, nguợc lại trả về 0.

100
b. Nhập vào từ bàn phím một số nguyên dương n thỏa mãn 10 < n < 20.
Nhập n số nguyên từ bàn phím và lưu vào mảng A. Sử dụng hàm
C hinhPhuong, hãy in ra màn hình các số chính phương có trong mảng.
Bài 30:
Hãy viết một chương trình c hoàn chỉnh thục hiện những nhiệm vụ sau:
a. Định nghĩa một cấu trúc dữ liệu biều diễn một phân số với tử số, mẫu số là
các số nguyên.
b. Định nghĩa 02 hàm: hàm N hap cho phép người dùng nhập một phân số từ
bàn phím. Hàm SoSanh cho phép so sánh hai phân số. Hàm so sánh ứả về
0 nếu hai phân số bàng nhau, 1 nếu phân số thứ nhất lớn hơn phân số thứ
hai, ngược lại trả về -1.
c. Trong hàm main yêu cầu người dùng nhập vào hai phân số và cho biết
phân số nào lớn hơn.

TÀI LIỆU THAM KHẢO

Trần Đình Khang và các tác già, Giáo trình tin học đại cương, NXB Bách
K h o a -H à Nội, 2012.

101
..........................
BÀI TẬP TIN HỌC ĐẠI CƯƠNG

NHÀ XUÁT BẢN BÁCH KHOA - HÀ NỘI


Ngõ 17- T ạ Quang Bửu - Hai Bà Trưng - Hà Nội
Điện thoại: 04.38684569; Fax:04. 38684570
Website: http://nxbbk.hut.edu.vn

Chịu trách nhiệm xu ấ t bản:


TS. PHÙNG LAN HƯƠNG

Phản biện: PGS. TS. ĐẶNG VÃN CHUYÉT


GVC. TS. PHẠM ĐẢNG HẢI
Biên tập: ĐỎ THANH THÙY
Sứa bàn in: v ũ THỊ HÀNG
TRÀN THỊ PHƯƠNG
Trình bày: TRẦN TRUNG HIẾU

In 800 cuốn khổ 16 X 24cm tại Công ty TNHH in và thương mại Sông Lam,
số 1 Phùng Chí Kiên, p. Nghĩa Đô, c ầ u Giấy, Hà Nội.

Số đăng ký KHXB: 58-2013/CXB/90-01/BKHN; ISBN: 9786049113406,


do Cục Xuất bàn cấp ngày 10/1/2013.

Số QĐXB: 205/QĐ-ĐHBK-BKHN, ngày 9/8/2013.

In xong và nộp lưu chiểu quý III năm 2013.

You might also like