You are on page 1of 103

ỈẠN ĐÌNH KHANG NGUYỄN HỒNG PHƯƠNG

5 BÁ LÂM, NGUYỄN LINH GIANG

BÀI TẬP

EBOOKBKMT.COM

HÔ TRỢ TÀI LIỆU HỌC TẬP

, 4 I t * * •

NHÀ XUẤT BẢN BÁCH KHOA - HÀ NỘ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

EBOOKBKMT.COM

HỎ TRỢ TÀI LIỆU HỌC TẬP


• . • • •

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ắ: 964-2012/CXB/ỉ 7-42/BKỈÌN

Biên mục trên xuất bãn phẩm của Thư viện Quốc gla 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ách khoa Hả Nội, 2012. - lOOtr. : hlnh vẽ,
bảng; 24cm
Thư mục: tr. 99

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 - dcl4
BKH0012p-CIP

2
LỜI NÓI ĐẤU
Cuốn Bài tệp Tin học đại cương được biên soạn theo chương trinh môn học
Tin học đại cương giảng dạy tại Tnrờng Đại học Bách Khoa Hà Nội. Sách được sử
dụng để bổ trợ 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 Trưởng Đại học Bách Khoa Hà Nội, cũng như cảc trưởng Đại học, Cao
đẳng kỹ thuật và công nghệ trong cả nước.

Vởi mục 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 tập và kinh nghiệm cùa nhiều thầy, cô giáo trong Viện Công nghệ
thông tin và Truyề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 này.

Bổ cục sá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 căn bản, Giải quyết bài toán và Lập trinh.

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ố bà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ả xỉn 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 Việ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á trinh biên soạn giáo trình. Đặc
biệt, xin gửi lởi cảm ơn sâu sắc tới PGS. Đặng Văn Chuyết và TS. Phạm Đăng Hải
đã dành thời gian đọc bản thảo và cho những ý kiến đóng góp quý báu.

Trong quá trinh 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 hơn.
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ọc Bách Khoa Hà Nội, số 1 Đại cồ Việt, Hai Bà Trưng, Hà Nộỉ.

CÁC TÁC GIẲ

3
EBOOKBKMT.COM

HÔ TRỌ TÀI LIỆU HỌC TẬP

MỤC LỤC

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

PHẲNI. TIN HỌC CĂN BẢN___________________________________________ 5

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

PHÀN m. LẬP TRÌNH____ .............____________________________ ________ 36

PHẢN IV. BÀI TẬP Tự LUẬN LẬP TRÌNH............... .......................................... 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. Trì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. Phá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ưởí 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. Chọn câu trả lời chính xác nhất: Quy trinh xử lý thông tin có trình tự là?

a. Nhậ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

c. Nhập dữ liệu -> Xử lý -> Lưu trữ —> Xuất dữ liệu

d. Nhập dữ liệu -> Xử lý -> Xuất dữ liệu

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

a. Tin 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. Thuật ngữ công nghệ thông tin và truyền thông vả Internet lả như nhạu

d. Công nghệ thông tin chỉ 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-I 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 điglT

Câu 7. Số 5678 có thể ỉà 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-45 = 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à?
33.1
a. 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ệ co số 8 là?
a. 1451 b. 4451

c. 6241 đ. 6244

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


a. 61.21 b. 31.22

c. 31.21 d. 61.22

Câu 15. Để 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?
a. Cơ số 2 b. Cơ sổ 8
c. 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?
a. Cơ sổ 2 b. Cơ số 8
c. 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?
a. Ví nó là hệ đểm mà mảy tính có thể hiểu được
b. Vì nó là hệ đếm cơ số lớn nhất
c. Vì nó dễ hiểu vói con người vả được con người sử dụng
d. Vì nó biểu diễn ngằn gọn hệ đếm nhị phân
Câu 18. 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
nhiêu chữ số?
a. 8 b. 10
c. 11 d.4
Câu 19. Số thập phân 19.75 trong hệ nhị phân được biểu diễn là?
a. 1011.11 b. 10011.11
c. 1011.011 d. 10011,101
Câu 20. Bit là gì?
a. Là chữ sổ nhị phân
b. Là đơn vị nhỏ nhẫt để biểu diễn thông tin
c. Là đơn vị nhô nhất để lưu trữ thông tin
d. 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. 2[0 B b. 210 TB
c. 210 KB d.220KB
Câu 23. Một Gigabyte bằng?

a. 1024KB b. 220 B
c. 210 KB d. 220KB
Câu 24. Một Terabyte bẳng?
a. 210 GB b, 210 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. 211 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. ỉOOKB
c. 10 MB
d. 1 GB
Câu 27. Sừ dụng 4 bít 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à bạo nhiêu?

a. 16 b.15
c. 8 d.7
Câu 29. Sử dụng 1 ỉ 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

8
Câu 30. 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à?
a. +85 b. -85
c. -43 đ. +43
Câu 31. Số nguyên -86 được biểu diễn dưới dạng số nhị phân 8 bit là?
a. 0101 0101 b. 0011 0011
c. 10101010 d. 1010 1001
Câu 32. Cho các sổ nguyên không dấu X =6Aitì, Y=1538, z =10510. Thứ tự sẳp
xép giảm dần sẽ là?
a. X, Y, z b. Y, X, z
c. z, Y, X d. Y, z, X
Câu 33. Cho 4 số nguyên 16 bít cỏ dấu cỏ mã hexa là: 5931, AC43, B571, E755.
Số lớn nhất là?

a. 5931
b. B571
c. AC43
d. 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 chúng ta biểu
diễn số nguyên có dấu băng mã bù 2 bởi vỉ ưu điểm của phương pháp này
lả?
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 +, -
đ. 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
khô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ừ 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ố nguyê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ương
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 đấu thì không cần hiệu chỉnh 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, sau khi
chuyển số bị chia và số chia thành số dương thỉ thực hiện phép chia. Trường
hợp nào phải đảo lại dấu của cà thương và số dư?
a. số bị chia dươ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ố nguyên
không dấu 8 bít 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 là bao nhiêu?
a. 338 b.
256
C.0 d. 82
Câu 41. Cho 2 giá trị Ạ = +95, B = +43 được biẻu diễn dưới dạng sổ nguyên có
dấ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
được là bao nhiêu?
a.+138 b. +127
C.-118 d. “138

10
Câu 42. Cho 2 giá trị A = +95, B = -43 dược biểu diễn dưới dạng số nguyên có
dấu 8 bít 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
được lả bao nhiêu?
a.+138 b.-118
c. -1 d. +127
Câu 43. Cho 2 giả trị A = -43, B = -95 được biểu diễn dưới dạng số nguyên có
dấ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
được là bao nhiêu?
a.-138 b. -118
c.+118 d.+256
Câu 44. 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
bit? NOT 106(10)
a. 00010110 b. 00010101
c. 10010110 d. 10010101
Câu 45. Kết quả cùa biểu thức 10010110 XOR 01101001 là bao nhiêu?
a. 10010110 b. 00000000
c. 11111111 d. 01101001
Câu 46. Theo chuần IEEE 754/85, với cách biểu diễn số thực độ chính xác đon
(dùng 32 bít) thì số bit dùng biểu diễn phần mã lệch (e) sẽ là?

a. 7 bít b. 9 bit
c. 8 bit d. 6 bít
Câu 47. Theo chuẩn IEEE 754/85, biểu diễn số thục độ chính xác kép (64 bit) thi
số bit dùng biểu diễn phần mẵ lệch (e) sẽ là?
a. 8 bit b. 10 bit
c. 9 bit d. 11 bit
Câu 48. Bỉều diễn sổ thực X = 9.6875 dưới dạng sổ dấu chấm động theo chuẩn
IEEE 754 với 32 bit thì phần mã lệch (e) có giá trị là bao nhiêu?

a. 1000 0001 b.1000 0010


c. 1000 0011 d. 0000 0011
Câu 49. 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
IEEE 754 với 32 bit như sau;
0011 1111 1000 0000 0000 0000 0000 0000
a. 1 b. -1
c. 0 d. 2
Câu 50. Trong chuẩn IEEE 754/85, NaN là một giá trị đặc biệt không biểu diễn
cho một số. Phát biểu nào sau đâ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ó gíá trị khác 0
c. Tất cả các bit phần mã lệch bằng 0, tất cả các bít phần định trị bằng ỉ
d. Tất cả các bít 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ới?
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 lần
số lượng bít 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 đơn
c. SỐ thực độ chính xác kép biểu diễn sổ thực cỏ dấu, trong khi sổ thực độ
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ép
nhiều gấp 2 lần so với khi biểu diễn ở dạng số thực độ chính xấc đơn.

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 bít để biểu diễn ký tự

c. Bộ mã ASCH 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ã ASCH?
a. Mỗi ký tự trong bộ mã ASCII cố độ dải 2 byte
b. Bộ mã ASCII không biểu diễn dượ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 ma hỏa một báng mẫ gồm 100 ký tự phải sử dựng tối thiễu bao
nhiêu bit nhị phân cho mỗi từ?
a. 5bit b. 6bit
c.7bit d.50bit

Ĩ2
Câu 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' > ỉ b. '9' > 'A'
c. 'a'<'B' d. 'a'<’r
Câu 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. 216 d. 16*2®

Câu 57. Bảng mã ký tự Unicode là gì?


a. Lả bảng m2 ký tự chuẩn tiếng Latin dùng trên Internet
b. Là bảng mã ký tự chuẩn 8 bít tiếng Việt
c. Lả bảng mẫ ký tự chuẩn 32 bỉt của thế giới
d. Là bảng mã ký tự chuẩn 16 bit cùa thế giới

Câu 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âu 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 bi 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
d. Bộ xử lý trung tâm, bộ nhớ chính, hệ thống vào ra, liên kết hệ thống

Câu 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. Trinh tự thực hiện hợp lý là?
a. 1,2, 3, 4 b. 1,3, 2,4
c. 4,2,1,3 d. 3,2,4,1
Câu 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
d. Input-Output System, Bus, Bộ nhớ chính

13
Câú 62. Thành phần nào trong CPU đàm nhận việc thực hiện các phép xử 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 chỉ ra sự kết hợp đúng của A, B, c trong hình.

Luồng điều khiển I » 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. Điều khiển nhận lệnh
b. Chứa các thông tin phục vụ cho hoạt động của CPU
c. Vận chuyển thồng tin giữa các thành phần trong máy tính
d. Không có câu trà ỉời nào ờ trê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 cu, ALU vả tập các thanh ghi
b. CPU hoạt động theo chương trình 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. Tố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 ổ cứng
b. Khối điều khiển CU trong CPU điều khiển hoạt động của tất cả các bộ
phận khác trong máy tính
c. Tập các thanh ghi của CPU là một số ngăn nhớ có địa chỉ xác định cùa bộ
nhớ chính
d. Khối tính toán số học và logic ALU trong CPU thực hiện với các dữ liệu
nằ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à ổ cứng
b. Bộ nhớ chính được chia thành các ngăn nhớ có kích thước ỉ 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. Lưu trữ chương trinh dùng để khởi động máy tính
d. Tất cả các đáp án trên
Câu 70. Bộ nhớ đệm nhanh cache dùng để?
a. Tăng cường dung lượng nhớ của CPU thay cho các thanh ghi
b. Nhằm giảm độ chênh lệch tỗc độ giữa CPU và bộ nhớ chírih (RAM)
c. E>ể có thể ỉưu dữ liệu khi mất điện
d. Tấ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ớ ngoài
b. Nội đung của ngăn nhớ cỏ thể thay đổi nhưng địa chi ngăn nhớ thỉ cố đị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 chỉ 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, ƯSB Memory stick, CD-ROM
Câu 73. Chì ra lựa chọn tương ứng với các thành phần thuộc bộ nhớ ngoài:
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 chi 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 chỉ ra thử tự tăng tốc độ trao đổi dữ liệu cù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 ghỉ, 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 gỉẳi thích việc dung lượng của bộ 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 chỉ của CPU
đ. Vỉ hệ thống vảo ra cho phép ghép nối vổi bộ nhớ cỏ đung 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à
mô-đ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. Mỗ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ếụ
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 đ. Máy chiếu
Câu 80. Ổ đĩa cứng được xếp loại là:
a. Thiết bị vào b. Thiết-bị ra
c. Thiế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 tín 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ớ
chính là bao nhiêu biết mỗi ô nhớ có kích thước 1 Byte?
a. 4 GB
b. 232*8 Byte
c. 4 Byte
d. Không giới hạn
Câu 83. Một máy tính có độ rộng bús địa chỉ (Address Bus) lả 32 bít, độ rộng bus
dữ liệu (Data bus) là 24 bit Hỏỉ 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. 4GB b. 4 byte

c. 16MB d. 3 byte

17
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 toong bộ nhở RAM
b. Đỉa chỉ tệp tin trên ổ cứng
c. Địa chỉ ngăn nhớ chứa lệnh cần nạp vào CPU
d. Địa chỉ 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 toong máy tính
b. Giải thuật do 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 trinh = cấu trúc dữ liệu + Xử lý
b. Chương trinh = Dữ liệu + Xử lý
c. Chương trình = cấu trúc dữ liệu + Giải thuật
d. Chương trinh = 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 chỉ 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 trinh được
thực hiện ở bựớc?
a. Bước thực hiện chương trinh
b. Bước biên dịch
c. Đước xây dựng chương trình
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ảó lố mạng diện rộng ?
a. LAN b. WAN
c. Internet d.Intranet

18
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. Telnet 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, đườ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 tính, card mạng, dườ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ạỉ mạng?


a. LAN b.GAN
c. WAN d. Peer to Peer
Câu 98. Đâu là một địa chỉ email hợp lệ?
a. gmail.com b. yahoo.com.vn
c. www.gmail.CMn.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.fecebook.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 trình đả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 trinh dịch
d. Tất cả đều đúng
Câu 102. Chọn phát biểu đúng về vaỉ 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 trinh 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 trong hệ
điều hành Windows?
a. ♦, I b. 1
c. 1,% đ.
Câu 105. Trong hệ điều hành MS-DOS, tên tệp tin nào sau đây được chấp nhận?
a. KET/ \QUA7.TXT b. *KETQUA.TXT
c. KETQƯ@.TXT d. KETQƯA:TXT

20
Câu 106. Trong hệ điều hành MS-DOS, tên tệp tin nào sau đây không được chấp
nhận?
a. HOCKYf.TXT b. KETQUAS.TXT
c. HOCKY@.TXT d. KETQUA7.TXT
Câu 107. Trong hệ điều hành MS-DOS, tên thư mục nào sau đây không được
chấp nhận?
a. C:\KETQUA b. KETQU@
c. KETQU@.TXT d. Cả 3 cách đặt tên trên.
Câu 108. Trong hệ điều hành MS-DOS, tên thư mục nào được chấp nhận?
a. C:\THIHOCKY b. \THIHOCKY
c. THIHOCKY d. Cả 3 cách đặt tên trên
Câu 109. 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ên hệ điểu hành WINDOWS?
a. TXT b.EXE
c. JPG d. MP3
Câu 110. 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. Dạng cây d. Dạng thư mục
Câu 111. Khi tìm kiếm tệp với tên tìm kiếm là baitap?.* thì những tệp nào có thể
là kết quả cùa việc tim kiếm, biết rằng có các tệp: baitap5.pdf, baitap9.doc,
baitaplO.doc và baitap8.pdf?
a. baitap5.pdf
b. baitap5.pdf và baitap8.pdf
C.baitap5.pdf, baitap9.docvabaitap8.pdf
d. baitap5.pdf, baitap9.doc, baitaplO.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
(khi cài đặt Windows sẽ có)?
a. Paint b. Microsoft Excel
c. Microsoft Word d. Turbo c
Câu 113. Trong Windows Explorer, để chọn tất cả các tệp và thư mục con trong
thư mục đang xẻt, đù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 4- Alt +Deỉ
c. Ctrl + Fl 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ùng 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 đụ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ự độ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 thiết bj 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 trinh dịch:
a. Dịch chương trinh viết bằng ngôn ngữ cấp cao thảnh chương trình dưới
dạng mã íhá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
thườ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. Khô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. Để loại bỏ một chương trinh không còn sử dụng nữa, người dùng thực
hiện:
a. Xóa bỏ biểu tượ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 trình đó trên mản hình

d. Đùng chương trinh 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 trinh 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 đánh giá qua yếu tố?
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
đ. 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 mỉễ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 úc trong giấy phép đỉ
kèm.
d. Là các phần mềm chỉ dành cho hệ điều hành Linux

Câu 130. Quy Ú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ỏỉ 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 trinh 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 hơn font Arial
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 ý tưở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 2007?

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 frò 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. Trinh 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 chỉ 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 chỉ 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ị nhd nhất ttong các ô được chọn
c. Giá trị trung bỉnh ửong 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 đữ 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 142. 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ở dtt liệu phải đảm bảo việc lưu trữ dữ liệu lâu đà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 đưói đây về thương mại điện tử là đúng?
a. Các hoạt động cùa thương mại điệ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á
đ. Thương mại diệ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 đị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
đ. Giúp người tiêu dùng có nhiều lựa chọn hơn 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 hơn
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 trí 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à ngườ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 trinh -*
Hiệu chỉnh chương trình -* Thực hiện chương trinh -*■ 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 đựng thuật giải
-» Cài đặt chương trì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 chỉnh chương trình Thực hiện chương trinh

d. Xác định bài toán -»Lựa chọn phương pháp giải -* Xây dựrig thuật giải -»
Cài đặt chương trinh -» 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 ưa một sổ nguyên dương A cỏ phải là số nguyên tố
hay 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 ưa 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:
Thông báo A là số nguyên tố hoặc không phải sá nguyên tố

c. Đầu vào: Số nguyên dương A. Đầu ra: Giải thuật kiểm tra số nguyên tố và
thô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
khô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. Phươ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 153. Đâ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ữ ỉập trinh
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 trinh

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 cọn 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
lọại có múc độ thấp hơn

30
Câu 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 = ỉ b. A = 1 vả B = 0

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

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

Kết luận nào sau đây là đủng?

a. a = 0, ly= 10 ■> 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 trinh 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 đươ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 <- 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 = Ovà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 =10
c. A=18 d. A = 20
Câu 163. Cho biết giá trị cùa s khỉ kết thúc đoạn mã giả:
i,s<-0
fori=lto9do
s<-s + i
end do
a. 0
b. 45
C.55
d. 66
CÂU 164. Cho biết giá trị của n khỉ kết thúc đoạn mã giả:
x<- 1, n <- 1
while (X < 1000) do
X<-2x

n <-n+ 1
end while

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
J1 <- 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. I
c. 24
d. 6
Câu 167. Hàm T(n) được định nghĩa đệ quy như sau:

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) 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 trinh c được xép vào loại ngôn ngữ lập trinh 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 chỉ 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, chỉ 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 ỉà 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 nhận?
a. KetQua b. ket_qua
c. Ket Qua ' d. ketqua

36
Câu 176. Trong ngôn ngữ ỉậ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 trinh 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ưởng trình Turbo c 3.0 được cài đặt trên ổ đĩ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\BINVTc 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. Để 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
biên dịch
c. Để chạy được một chương trình 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 ưê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 trinh dịch c. Hệ diề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 chi ra thứ tự tăng của miền giá ưị các kiểu dữ
liệu?
a. ỉnt, 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. 1 First

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. ỉnt 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. //define 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. //define 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. #defìne HangSo 2.78 c. const float HangSo 2,78 ;


b. #define 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 dày là khai báo đúng cho
một hằng số thực?

a. tfdefine float HangSo 2.78 c. const float HangSo = 2.78 ;


b. #defĩne 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. #defíne MAX 1 ũ; b. ^define MAX=10

c.const intMAX 10; d. #defíneMAX 10


Câu 194. Dòng khai bảo nào sai?
^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 ỉ, 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/B

c. A -H- d. A + B
Câu 196. Kết quà cùa phép chia 3.0/2 trong c bằng?

a. 1.5 b. 2

c. 1 d. 3

Câ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; d. 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;. Chỉ 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:

int a:
a=a-i<7<5;

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:
inta=l,b=2,c=3;
a=(b>c)?++b:+-l-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 'b':
a. ch = = 'a'||'b' c. ch = = 'a'|'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âu trả lời nào đúng
Câu 210. Giá trị của d sau khi thực hiện các lệnh là?
int a=5, b=7, c=2, d=4;

d= b/c%a;

a. 3.5 b.3
c. 4 d. 0
Câu 211. 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=7, b, c;

b=a++ + 1; C— - -a - b++;

a. a=7, b=9, c=-l c. a= 7, b= 8, c= 0


b. a= 8, b= 8, c= -1 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:

inta=5,b,c;

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

41
a. a=7, b=6, c=10 b. a-7, b-7, c-11
c. a=7, b=6, c=ll 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. 11.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?

int a,b=10,c=20;

a=b>c?l 00:200;

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

inta=-l,b=l;

b+= a?2:l;

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 > B)? A- : —B;

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;
float b=l 1;
int 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. Để 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 khi
đoạn chưomg trình sau được thực hiện?

int n — 10;

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

a. n = %d,n b. n = %d
c.n = °/od,10 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):

printf("%5.2f ", 3.454);

a. ũ3.45 b. ũ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ị □□12.35?
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

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:

a. A B b. 65 B
c. A 66 d. 65 66
Câu 228. Lệnh printf("%d %d", 'A', 'Bj 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 ưình sau được thực hiện?

float 1.0;

f= 1/3;

printf ("fí= %.3f",f);

a. f= 1.000 b. f = 0.333
c. f= 0.000 d. "f = %.3f',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?

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 trình c như sau:

const inti-0;

printf("%d\n", Í++);

Hãy chì 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ị trí cho phần
thập phân
a. printf("%-10.2f\n%6.3f", 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°/o-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=13/2;

b—++a+6;

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

printf("\n %4d %4d %4d ", a, b, c);

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:

inta=5; { int a=7; } . b. ■ ị

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 dướ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( (CA’ <= 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?

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 trinh c, sau khi đoạn chương trình sau được thực
hiện thì 2 biến A và B có 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);
if(...) 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;
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:
inta = 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 ưình c, sau khi đoạn chương trình sau được thực
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 trinh viết bằng ngôn ngữ lập trình c như sau:

int p = 10;

switch(P){

case 10: printf("Case 1");

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

case P: printf("Gfise 2");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. Không có nhãn default
c. Nhãn case p sử dụng một giá trị 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 trình 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 b.4
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 b. A=10
c. A =18 d. A = 20

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 +-T)
if(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. 65 66 67 68 b. A B c D
c. aaaa d. abcd
Câu 250. Cho biết kết quả hiển thị trên màn hình?

inta; for(a=l; a<=10; a-!-+) {

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);

50
a. c e i c. e i 0
b. c e i o d. Tất cả đáp án đều sai

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


//include <stdio.h>
void main(){
int x;
for(x=5;x>0;x—)
printf ("%2d ",x-)ỉ

Kết quả nhận được trên màn hình là

a. 5 3 1 C.4 3 2 1 0

b. 54321 d. 543210

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 ỉ;
for(i =0 ; i<5 ; i++);
printf("%d ", i);

a. 0 b. 0 1 2 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 main() {
int i=0;
for( i<=5; i++)
printf("%d ", 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 do...while kiểm tra điều kiện vòng lặp trước rồi mới thực hiệ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ì?
int i = 5;
while(i- >= 0) printf("%d,", 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ương trình sau, đoạn nào cho kết quà i = 12?
(A) int i=6; do i++; while (i<12);
(B) int i=6; while (i< 12) i++;
a. B b. A
c. Cà A và B d. Không có đoạn nào
Câu 259. 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) {
printf ("%d ",i);
i — i+2;

a. %d %d %d %d %d b. i i i i i

c. 02468 d. 02468 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<l 0) {

i = i+2;

printf("%d ",i);

a. 24 6 8 b. 0246 8
c. 24 6 8 10 d. 024 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(){
int a =1, n=0;
while (n<10) {a-H-;}
printf("a = %d", ạ);

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;

while(++i+1 <=5) printf("%d",i);

a. 12345 c. 123456
b. 01234 d. 1234
Câu 263. 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ì?
int i = 0;

while(++i <= 5)

printf("%d,", i);

a. o, 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;
I
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; '7'^77
printf("Nhap gia tri n thoa man 0<=n<=100:");
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.
int n;
do{
printf("Nhap gia tri n thoa man 0<=n<=100: ");
scanf("%d", &n);
}...... .

54
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. 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 trinh nhập vào từ bàn phím một số nguyên lớn hơn
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
intn;
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 trinh c, khi đoạn chương trình sau được thực hiện,
biến A có giá trị bao nhiêu?
int í, 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 trinh 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;
fơr(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';
while (i <= 'z')

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ị ừên màn hình sau
khi đoạn chương trình sau được thực hiện?
int I -- I'.
while (i < 10)

.{
i = i+2;
continue;

printf ("%d ”,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?

im i=l;

whilefl)
{
printf("%d",i);
i++;
if(i%3=0) continue;
printff"/");

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 trinh 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. 1 4 10 16 24
b. 2 6 10 16 24 d. 1 6 10 16 25
Câu 274. Chỉ ra kết quà trên màn hình?

int a, b=l;

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

if(a%2==0) continue;

b+=a;

printf("%d ",b);

■HhHHHHMHHMBHhÌHhHÌ
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ưomg trình sau được thực hiện?

int i = 0;

while (i<l0) {

- i++;
if (i%2 — 0) break;

printf("%d ",i);

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

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 1=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 25 16 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("°/od ”,i);

a. %d %d %d %d %d b. 0 1 2 3 4 5 6 7 8 9
c. 02468 d. 13579
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ương trình sau được thực hiện?

int i = 0;

while (Ỉ<10){

if (i%2 = 0) continue;

printf("%d ”,i);

Ị++;

58
a. 0 2 4 6 8
b. 0123456789
c. 1 3 5 79
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 trinh 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;

príntf("%d ",i);

a. 0123456789 c. 13579
b. 024 6 8 d. 1
Câu 280. Khi thực hiện đoạn chương trinh

int i;

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

if (i%2) continue;

printf ("%3d",i);

if (i =0) break;

Kết 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
Câu 281. Cho một đoạn chương trình viết bằng ngôn ngữ lập trình c như sau:

■ c^ar c^ỉ
x = 0;

while(x<=255){

59
printf("Ma ASCII cua ky tu %c là %d\n", X, x);

x++;

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ã ASCIl 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ử, mịền của chì 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ớ?
int Ml[100];
float M2[100];
a. 600 b. 300
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 Arr[5] {1,2, 3, 4, 5}
b. //define 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 trình 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. 24463 10 b. 013568

c. 247 10 d. 24545735 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++){

if(a[i]==k) continue;

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

a. 24463 10 b. 013568

C.24710 d.24 5 4 5 73 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;

printf("%2d",i);

a. 2 4 5 4 5 b.o 1 2 3 4 7 9
c. 2454555 d. 639
Câu 290. 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++){

61
if(a[i]% k) continue;

printf("%2d",i);

} ' • .. -ể' '■■ 1


a. 24545 c. 568
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ặc bă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. inl A[j={ 1,2,3}; d. intA[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ử. Để 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 dưới đây?

int a;

int x[5]={ 1, 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 trinh 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, -10, 9, 0, -1, 7}; .

int i j,k;

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

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

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

62
k = A[j];

AU-l] = A[j];

ADJ = k;

a.-10 b.-l
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 thi phần tử A[9] của mảng mang giá trị bao nhiêu?

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

int i j,k;

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

for(j=9;j>=i;j--)

if(A[j]<A[j-l]){
k = ẠĨj];

AU-1] = AG];

ADJ = k;

a. 7 b.-l
c.-io d. 9
Câu 296. Giá trị của biến m sau khi thực hiện đoạn chương trình sau là?

float A[4]={ 1.1,1.2,13,1.4};

int i; float m=0;

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

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

a.o 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 thì phần tử A[0] của mảng mang giá trị bao nhiêu?

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

int i,k;

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


-
k = A[i];

A[i]=A[9-i];

A[9-i] = k;

a. 0 b. 9
c. 4 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,0,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, 0, 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:

int A[3][4] = { {1}, {4,5}};

printf("%d",A[l][l] + A[2][2]);

a. 0 b. 1
c. 5 d. Không xác định

64
Câu 302. Cho biết kết quả thực hiện đoạn chươ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;
Chỉ 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 float[30] và 2 khai báo mảng 30 con trỏ kiểu float
b. 1 khai báo mảng 30 con trỏ 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 báo màng 30 con trỏ kiểu float

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 "BK.HN" được in ra bao nhiêu lần?

i II I x;
for(x—1; x<=10; x++){
if(x < 5)
continue;
else
break;
pfintff'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


inti = 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ỉ Giả trị


i FFEC 3

j FFEE 6

pl FFDA FFEC
p2 FFDC FFEE

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


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 chi FFEE, giá trị 6

66
Câu 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 chì và giá trị của pl?

a. Địa chi FFDA, giá trị FFEC c. Địa chì FFDA, giá trị FFEE
b. Địa chi FFDC, giá trị FFEC d. Địa chỉ FFDC, giá trị FFEE
Câu 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 chi FFEC, giá trị 3 b. Địa chi FFEC, giá tri 6
c. Địa chỉ FFEE, giá trị 3 d.Địa chi FFEE, giá trị 6
Câu 312. Cho biết kết quả hiển thị ra màn hình?

char s[20]="0123456789";

s[5]='\0';

printf("%s",s);

a. 01234 b.0123456789
c. 012345 d.\0
Câu 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. strcmp d. Tất cả các hàm trên đều thuộc string.h
Câu 315. Cho biết kết quà hiển thị ra màn hình?

int i;
char str[]="helloworldl"; char words[10];

tor(i=0;i<strien(str)/z;ir-tj
rn=cfrri4-i
woruS|_ij—oirLi 1 1 J) VVVI V

printf("%s\n", words);

a. ellow b.ello
c. hello d.hell

67
Câu 316. Khi người dùng nhập vào xâu: thu do ha noi. Nội dung xâu sl, s2 là gì?

char si [20], s2[21];

scanf("%s", si); gets(s2);

a. si -'thu do ha noi", s2= "" c. sl="thu", s2= " do ha noi"


b. sl= "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 thudọỊ 10]= "Hanoi"; 7,’■ỈỂỂă ■’’ỉỉả;' -K-.&


-’~ỉ: ■''ỉ "‘S'

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 d. 6 byte
Câu 318. Đoạn mã sau sai dòng nào?

char *s, t[25]; // dong 1

s = "Tin hoc"; // dong 2

gets(t); //dong3

a. dòng 1 c. dòng 3
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ữ ừong 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ữ trong 1 byte
c. Ký tự 'A' được lưu trữ trong 1 byte, xâu ký tự "A" được lưu trữ trong 1 byte
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 hinh sau đoạn chương trình:

char strl [4]= "ạbc";

char str2[I0]= "def";

printf("%d", strcmp(strl, Str2));

a. 1 b. 0
c. -1 d. báo lỗi

68
Câu 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. #define Xau[5] "BKHN" b. //define Xau "BKHN"


c. const char Xau = "BK.HN"; d. const Xau = "BKHN";
Câu 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] = "BKHN";

b. //define char Xau[5] "BKHN" d.const char Xau = "BKHN";

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

chars[l1] = "0123456789";

/inti.L;

L = strlen(s);

for(i=0; i<strlen(s); i++)

s[i] = s[L-l-i];

printf("%s",s);

%s
a. b. 0123443210

c. 9876556789 d.9876543210

Câu 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 SI[20], S2[20];

int i, n;

n = strlen(Sl);

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

S2[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ử SI, S2 là hai xâu kí tự. Đổ ghép nội
dung xâu S2 vào sau s 1, chương trình có thể thực hiện theo cách nào dưới đây?
a. Dùng lệnh strcmp(S 1 ,S2); c. Dùng lệnh sừcat(Sl,S2);
b. Dùng lệnh strcpy(Sl,S2); d. 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:

int d = 0;

while(S[d] 1= '\0') d ++;

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);

for( (A); (B); i++){

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

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 = 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 trình 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
strcat(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 MSSV[10];

char Hoten[20];

float Diem; }SV;


Một biến thuộc kiểu sv 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{

char ma_so_SV[10];

char ho_ten[30];

float diem;

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ì?

int i;

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

if(sv[i].diemTinDC < 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ương >=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ị ưí 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?

int SONGUYENTO (int n){

ỉnt i; intk = M ;

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

if ((n% i)==0) k=N;

return k;

a. M=1 N=o c. M=1 N=1


b. M=o 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 ưình sau in kết quả ra màn hình như thế nào?

int ThayDoi(int x){

x++;

return x;
}
voidmain(){

73
int X- 4;
printf("°/od%d", ThayDoi(x), ThayDoi(x));

O'- } ' wWIOoOS :.


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ưomg trình sau:
int Tang(int x){
inty=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ưorng trình sau:

int BienDoi(int x){


int y - x*x; x = y;
return y;
}
void main(){
int a=2;
printf("%d%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; < / ị V ..L>.


int f(int x){ y=x-l; x=y-1; return x+y;}
void main(j{

74
x=25; ỵ=f(x);
printf("x=%d, y=°/od", 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 bằng ngôn ngữ c sau :
#include<stdio.h>
void main(){
printf("%f\n", sqrt(36.O));

Cần thêm khai báo tệp tiêu đề nào để khi biên dịch chương trình 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 fun(int n){
int i;
long R=l;
for(i=0; i<=n; Í++)
R = R * i;
return R;

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

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?
int x,y;
int Tinh(intx){
y = x- l;x = y- 1;

75
return X 4- y;
}
void main(){
x = 10; y = Tinh(x);
printf("x = %d , y = %d", x,y);

■SHEHHBHRHRHHHHhHHBSI
a. x = 8 , y = 17
b. x= 10, y= 17
c. Cả a và b đều sai
d. Chương ưì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:
void hoan_vi(float X, float y){
float z; z = x; X = y; y = z;

void main(){
float x,y; x = 4.1;y = 5.2;
hoan_vi(x,y);
printf("%0.2f %0.2f',x,y);

Kết 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 345. Xác định lời gọi hợp lệ cho hàm có tên ChuanHoaXau với giá ưị 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ị ưí đầ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
tệp mới?
a. "at" b. "wt"
c. "w+t" d. "ab"
Câu 348. Điền vào chỗ trống để hoàn thiện chương trình sau:
nrn — m Hi—I'M':1" mum III wwtfiiiiiiww imnnwwinftrw*1!if ĩitríiiì Ihirinniww—
#include<stdio.h> v4S'-‘4i'' <- ' -r ' *•

void main(){
.......(1)...............

f = fopen("sol ieu.txt","wt");
fprintf(f, "%2d\n%2d",l 1,09);
.......(2)........

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àil:
'3x2 — 2x 4- 5 Vx > 0
Cho hàm số: f(x) =
Vx < 0
K 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 trinh con này vả hiển thị kết
quả ra màn hỉnh.
Lời giải:
#include <stdío.h>
^include <conio.h>
float f(float x); // Khai bao nguyên mau ham
int main(){
float x;
printff'Nhap vao gia tri doi so x:");
scanf("o/of",&x);
printf("Ket qua goi ham la: f(x));
getch();
return 0;
}
float f(float x){
if(x>=0) return (3*x*x - 2*x 4- 5);
else return ((2*x*x+l)/x);
}

78
Bài 2:
-X30 + cos0.25x — 5 nếu X < 10
Cho hàm số: F(x) = < ln(x2 +1) + X nếu 10 < X < 20
19+ x nếu X > 20
Viết chương trình hoàn chỉnh 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 < 100)
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:
#ịnclude <stdio.h>
#include <conio.h>
#include <math.h>
float F(float); // Khai bao nguyên mau ham
int main(){
float Q[I00],Y[100];
int k, s, i, d;
/* Nhap so k */
do{
printf("\n Nhap k:"); scanf("%d", &k);
}while((k<5) II (k>l 00));
/* Nhap k so thuc, luu vao mang Q */
for(i=0; i<k; i++){
printf("\nNhap so thuc thu %d:", i+1); scanfC'^fi&Qfi]);

/* 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[d] = F(Q[iJ);
d++;
}

79
/♦ Tinh so luong cac phan tu cua mang Y co gia tri trong (10,100) */
s = 0;
for(i=0; ì<d; i++) ífi[(Y[i]> 10) && (Y[i]<100)) s++;
printf("\nSo luong phan tu cua mang Y thoa man la %d", s);
getchO;
return 0;
}
/* Dinh nghĩa ham F */
float F(float x){
if(x<10) return -pow(x,10) + cos(0.25*x-5);
else ií(x>20) return 9+x;
else return log(x*x+l)+x;
}
Bài 3:
Viểt chương trinh 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*n*r; diện tích hỉnh tròn:
dt = nxr2
Lài giải:
#include<stdio.h>
#include<conio.h>
#include<math.h>
int mainOÍ
float r, cv, dt; // Khai 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 tích
printfỊ"\nChu vi» %10.2f\nDien tích * %10.2f’,cv, dt);
getch();
return 0;
}

80
Bài 4:
Hãy viết chương trinh 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.h>
intmain(){
inta, b,c, z;
printf("Nhap vao a = "); scanf("%d,,1&a);
príntfi["\nNhap vao b = "); scanf("%d",&b);
printf("\nNhap vao c =scanf(’’%d">&c);
z = a++ + ++b;
printf("\nBieu thuc 1 = %d, a = %d, b = %d", Zj a, b);
z = —a - b— ♦ -H-c;
printf("\nBieu 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 ?: để đua 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 tnainộỉ
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 c = "); scanf("%f’,&c);
z = (a>b)?(a>c?a:c):(b>c?b:c);
printf("\nSo Ion nhat = %0.2f\n", z);
getchO;
return 0;

Bài 6:
Hây viết một chương trình c hoàn chỉnh 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 maỉn(){
char s[26], c;
int i, n;
do{
printf("Nhap vao mot xau co do dai khong qua 25 ki tu: ");
gets(s);
} while(strlen(s)>25);
c = s[0]; n = 0;
for(i=0;i<strỉen(s);i++) 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ủà 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 main(){
char t[3O],*s, *p; int i;
printf("Nhap vao mot xau ho va ten: ");
gets(t);
/* Loai bo ky tu each o dau va cuoỉ xau*/
s = chuanhoa(t);
/* Dung ham strrchr 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 each 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 (10 < n <100), kết thúc
quá trình nhập số khi nhập một chữ cái hoặc đã nhập Ị 00 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ẻ đó.

83
Lời giảù
^include <stdio.h>
^include <conio.h>
//include <string.h>
#include <ctype.h>
int main(){
int n = 0, i, sl = 0, a[100J;
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 chuyên doi dang chuôi 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;r<ìi;i++)
if(a[i]==(a[i-I]+3)){
sl++;
printf("%d\t",a[i]);
}
printf("\nSo luong cac so thoa man dieu kien la: %d", sl);
getch();
return 0;
}

Bải 9:
Viết chương 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 1':^,'
^include <stdio.h>
#include <conio.h>
int main(){
unsigned int a, b;
printfĩ"Nhap so thu nhat:"); scanfì["%d*',&a);
prìntf("\nNhap so thu hai:"); scanf("%đ"í&b);
whiỉe(a!=b){
if(a>b)a -=b;
else b -=a;
}
printf("\nưSCLN la %d",a);
getch();
return 0;
}

Cách 2:
^include <stdio.h>
^include <conio.h>
int main(){
unsigned int a, b, min, i;
printf("Nhap so thu nhat:"); scanf("%dH,&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 dụyet nguoc tu so nho hon toi 1 */
for(p=rnin;i>= 1 ;i~)
íf((a%ỉ=0)&&(b%iS!i=0)){
printf("\nUSCLN la %d",i);
break;

85
getchO;
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 nguyên mau ham*/
unsigned long sum(unsỉgned ỉnt n);
/*Chuong trinh chinh*/
int main(){
unsigned int n;
unsigned long tong;
printfif"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;Ì-H-) s-Ị-=i;
return s;
} •

8Ổ
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 nguyên mau ham */
int main(){
int X, y;
printf('rNhap vao so nguyên thu nhat X ="); scanf("%d",&x);
printf("Nhap vao so nguyên thụ hai y =H); scanf["%d",&y);
swap(&x, &y);
printf("Sau khi hoan doi gia tri hai bỉen, 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àỉ 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:

• fíbonaci(0) = 0; fibonaci(l)= 1;
• ỉíbonacỉ(n) ~ fíbonaci(n-l) + fíbonaci(n-2) Vn>l
Lời giải:
#include <stdio.h>
^include <conio.h>
Jong fỉbo< long ); /♦ Khai bao nguyên mau ham ♦/

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ỗ (8
ký tự), Họ tên (không quá 30 ký tự), Điểm toán (sổ thực). 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:
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 quá
30 học sinh). Quá trình nhập kểt thúc khi đã nhập đủ 30 học sinh hoặc khi
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 thi
danh sách này ra màn hỉnh.
Lời giải:
^include <stdio.h>
^include <conio.h>
#include <string.h>
typedef struct {
char maso[9];
charhoten[31];
float diemtoan;

88
IHOCSINH;
HOCSINH ds[30], tg;
int main(){
int i j,n = 0;
float diemtoan;
char maso[9];
charhoten[31];
for(i"0; i<30; i++){
printf("\nNhap ma so SV thu %d: h,i+1);
fflush(stdin); scanff%s",maso);
/*Neu nhap ma so la xau "$$$" thi dung viec nhap*/
if(strcmp(maso),,$$$")=0) break;
n++;
strcpy(ds[i] .maso,maso);
printfl["\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++)
for(j=i+l; j<n; j++)
if(ds[i].diemtoan < ds[j].diemtoan){
tg = ds[i];
ds[i] = ds[j];
dsfj] = tg;
}
/* Hien thi danh sach ra man hỉnh */
printfi["\n DANH SAGH HOC SINH SAU KHI SAP XEP THEO DEEM
TOÀN’*);
printf("\n+--------- 4--------------------------------- +—-—+"); .

89
príntf("\nỊ Ma so I Ho ten |Diem toan[");
printf("\n+--------- 1-----------------------------------1----------- 1-");
for(i=0;i<n;i++) printf('V%Ss|%30s|%9.1fr, 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]- ",í);

scanf("%d,'>&a[i]);
}
/*Mo tep SONGUYEN.SL de ghi theo che do nhi phan*/
f=fopen(’*C:\\SONGUYEN.SL", "wb");
fwrite(a, sizeofita), 1, í);
fclose(f);

/*Mo tep SONGUYEN.SL de doc theo che do nhi phan*/


f=fopen("C:\\SONGUYEN.SL","rb");
fread(b, sizeof(a), 1,0;

90
fclose(f);
/*Hien thi ra man hĩnh*/
printf("\nDay so doc đuoc 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:

#ìnclude <stdio.h>
^include <conio.h>
^include <stdlib.h>
int main(){

ỉntc;
char tỉ [25], t2[25];
FILE*fl,*f2;
printf("\nTEP NGUON:"); gets(tl);

printf("\nTEP DICH:"); gets(t2);


fl^fopenftl^rb");
NULL){
printff'\nTEP %s KHONG TON TAI",tl);

getch();

exit(l);
ì
Í2=fopen(t2('twb");
whíle((c=fgetc(fI))!=EOF) Íputc(c,f2);

fclose(fl); fclose(f2);

91
printf("\nDa sao chop 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ự; Thá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 chỉ
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.
HSy 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ơ sình 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 (2000 <N < 2013) 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ẻ sơ
sinh được sinh ra trong tháng T năm N đó.
Death sctch tre so sình thang nam..........
STĨ 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ữ số
thập phân, giới tính ìn nam hoặc nữ tùy theo giá trị lưu trong tệp là 1 hay 0
trẽn 5 vị trí.
Nếu không có em nào được sinh trong tháng năm đó, thông báo; "Không co
em nao sinh trong thang.,. .nam............
c. Ghi ra tệp văn bản KETQUA.TXT ở thư mục hiện hành tỉ lệ sinh bé
traỉ/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>
Sinclude <conio.h>
intmaín(){
struct {

92
charhtpo]; //Hovaten
int ths, ns, gt; // Thang sinh, nam sinh, gioi tinh
float cn; // Can nang
}te; // Tre em
FILE *f;
float tri; // Trong luong
int t, n, dem = 0, stt - 0, bt = 0, bg = 0;
if((f-fopen("D: WSOSINH.DAT", "wb")>=NULL){
puts("\nKhong tao duoc tep");
getchO; exit(l);
}
else{
do{
printf("\nNhap trong luong:"); scanf("%f",&trl);
if(trl>0){
printf{"\nNhap ho ten:"); fflush(stdin); gets(te.ht);
printf("\nNhap thang sinh:scan ths);
printf("\nNhap nam sinh: "); scan^”%d”,&te.ns);
printf("\nNhap gioi tinh (1: nam; 0: nu):"); scanf("%d",&te.gt);
te.cn ® tri;
fwrite(&te, sizeoflde), 1, f); // Ghi len tep

}
}while(trl > 0);
fclose(f); // Dong tep
}
printfi^Nhap thang va nam:"); scanf("%d%d",&t, &n);
f=fopen("D: WSOSINH.DAT", "rb");
printfC’XnDanh sach tre so sinh thang %d nam %d", t, n);
while(fread(&te, sizeof(te), 1, f)){
if((te.ths — t) && (terns = n)){
ỈÍỊte.gt =■ 1)

93
printfC*\n %3d %32s %5.2f nam", stt++, te.ht, te.cn);
else prmtf("\n %3d %32s %5.2f nu", stt++, te.ht,
te.cn); dem++;
}
}
if(!dern)
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 */
Mopen(”D:\\ SOS1NH.DAT","rb");
while(fread(&te, sizeof(te), 1, f)){
if((te.ns = 2012) && (te.gt=l)) bt++;
if((te.ns = 2012) && (te.gt=O)) bg++;
}
fclose(f);
/* Ghi ket qua len tep KETQUA.TXT o 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)
btybg);
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 chỉnh 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:
(32* + 5 VxS 0
Cho hàm số: f(x) = ' 2 logs (-*)+!
Vx< 0
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 ưlnh nhập n số nguyên từ bản phím (2 s 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ố đổ.

BÀỈ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 trinh 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 phím.
Bài 7:
Viểt chương trình tính tổng sau.*
s = 1 +x + x2 + x3 + ...
với haì 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 - X3 + ... + (-l)a.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ổ trẽ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 chì 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 trinh c hoàn chinh, 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 chỉ e-mai! không. Nếu đúng là địa chỉ
e-mail thi hiển thị thông báo "La dia chi e-maỉr, ngược lại thl hiển thị
"Khong phai đìa chi e-maiF. Giả sử người dùng nhập chuỗi chỉ bao gồm
dấu cách, ký tự ký tự dấu chấm các chữ số, các ký tự trong bâng chữ
cái Latin.
Bài 12:
Viết một chương trình c hoàn chỉnh, nhập vào từ bàn phím một xâu ký tự,
sau đỏ chuyển toản bộ ký hr 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ử ỉý 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 chl 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ímtn 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 trinh nhập một chuỗi ký tự từ bàn phún (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à "thỉ chuyên 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:
(Ui = u2 = 1
(Un = 4un„i + 3Un_2 Vn > 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 thi nĩí - 1.3.5.,.(2k+ 1)
• Nếu n - 2k thì nĩ! = 2.4.6...(2k)
Bài 19:
Thông tin về một nhậ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 trinh hoàn chỉnh thực hiện các công việc sau:

97
a. Nhập vàọ 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 so. 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 ,fNo" khi được hỏi.
c) Sấp xểp danh sách học sình 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 tỉn sau: Họ tên, Năm sinh, Địa chỉ, Mức lương. 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á trình 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ình tên và mức lương cửa những nhân viên có tuổi cao nhấ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: Nhãn hiệu xe, Biển sổ xe, Tên hăng sản xuất, Dung tích
xi lanh. HSy 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 xì lanh theo thứ tự giảm dần.

d. In ra màn hình Nhãn hiệu xe vả Đung tích xi lanh cửa nhữ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 tín sau: Tên mặt hàng, Ngày nhập, sổ lượng, Giá, Chủ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à ỉời ’No" khỉ đượ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 chỉnh thực hiện nhiệm vụ sau: Nhập vào
từ bàn phún 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 trinh con hàm double TĨENĐIEN(int sođien) 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ỉr bàn phím sổ hộ dân N trong một thôn (điều kiện N 5 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 trả và hni 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 ỉư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 trên thông tin về sự tài trợ của các quốc gia trong
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ị trí 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ím thông tín 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 hang
"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ề đôỉ giầy được lưu trong cấu trúc gồm: Nhà sản xuất (xâu
không quá 25 ký tự), Kích thước (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ỉ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 hlnh tổng số đôi giầy đo 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 ChinhPhuong với đầu vào là một số nguyên. Hàm
trả về 1 nếu số đầu vào là số chính phương, ngượ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
ChinhPhuong, 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 Nhap 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 trả 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ề-ỉ.
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 tín học đợi cương, NXB Bách
Khoa-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://nxbbachkhoa.hut.edu.vn

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


Giám đốc — Tổng Biên tập: GVC. TS. PHÙNG LAN HƯƠNG

Chịu trách nhiệm nội dung:


Tác giờ: TRẦN ĐỈNH KHANG, NGUYỄN HÒNG PHựơNG,
ĐÓ BÁ LẦM, NGUYỄN LINH GIANG
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


Chế bàn: vũ THỊ HẰNG
TRẦN THỊ PHƯƠNG
Trình bày bìa: TRẰN TRUNG HIẾU

In 5200 cuổn khồ 16 X 24cm tại Công ty TNHH in và thương mại Sông Lam.
Giấy xác nhận đẵng ký kể hoạch xuất bản số: 964-20ỉ 2/CXB/17-42/BKHN,
do Cục Xuất bản cấp ngày 14/8/2012.
In xong và nộp lưu chiểu quý m năm 2012.

You might also like