You are on page 1of 6

Cá voi vượt vũ môn

Đề ôn tập Nhập môn Lập trình


SAB in HCMUS
Câu 1
Cho mảng số nguyên a gồm n phần tử ﴾a0 , a1 , ..., an−1 ﴿. Hãy viết hàm tìm vị trí i xuất
hiện đầu tiên trên mảng đã cho thỏa điều kiện:
a0 + a1 + ... + ai−1 = ai+1 + ai+2 + ... + an−1
Nếu không tìm được giá trị i nào thỏa điều kiện thì hàm sẽ trả ra giá trị ‐1. Ví dụ:
• Với mảng a = {7, 1, 2, 3, 5}, hàm sẽ trả ra giá trị 2 vì
a0 + a1 = a3 + a4
7+1=3+5

• Với mảng a = {7, 1, 8, 2, 3, 5}, hàm sẽ trả ra giá trị ‐1.

Câu 2 ﴾struct + file﴿


Giờ làm việc của công ty FIT‐HCMUS từ 8:00 sáng đến 18:00 chiều. Công ty muốn
chấm công cho tất cả nhân viên hai lần mỗi ngày ﴾lần 1: giờ đi làm buổi sáng, và lần
2: giờ ra về buổi chiều﴿. Mỗi nhân viên sau khi chấm công sẽ được tính công cho
ngày đó theo quy tắc sau:
• Nếu buổi sáng chấm công trước ﴾≤﴿ 8:00 và buổi chiều chấm công sau ﴾≥﴿
18:00 thì được tính là một ﴾01﴿ ngày công.
• Nếu buổi sáng chấm công sau ﴾>﴿ 8:00 ﴾gọi là đi trễ ﴿ hoặc buổi chiều chấm
công trước ﴾<﴿ 18:00 ﴾gọi là về sớm﴿ thì được tính là nửa ﴾0.5﴿ ngày công.
• Nếu đi làm trễ và ra về sớm ﴾vi phạm cả hai﴿ thì được tính là không ﴾0﴿ ngày
công.
Dữ liệu vào ﴾input.txt﴿: thời gian điểm danh của 1 nhân viên.
Mỗi dòng là thời gian điểm danh trong 1 ngày bao gồm 4 số, lần lượt là số giờ, số
phút buổi sáng, số giờ, số phút buổi chiều
Dữ liệu ra ﴾output.txt﴿: Hãy thực hiện các yêu cầu sau ﴾có sử dụng struct﴿ đối với
một nhân viên của công ty
1. Viết hàm nhập vào giờ chấm công ﴾thông tin giờ, phút﴿ buổi sáng và buổi
chiều.
2. Dựa vào dữ liệu chấm công ở câu a, viết hàm xác định số ngày đi trễ, số ngày
về sớm và số ngày vừa đi trễ vừa về sớm của nhân viên đó. In các kết quả trong
1 hàng, cách nhau 1 dấu cách.
3. Dựa vào dữ liệu chấm công từ câu a, viết hàm tính số ngày công cho nhân viên
đó. In kết quả dưới dạng 1 chữ số thập phân.

Trang 1
input.txt output.txt
10 30 19 10 110
07 20 18 30 2.0
08 00 15 30

Câu 3 ﴾struct﴿
Đa giác là một đối tượng quen thuộc trong hình học Euclide. Một định nghĩa về đa
giác được nêu phía dưới và minh họa bằng hình 1.
Đa giác là một đường gấp khúc phẳng khép kín, nghĩa là gồm những đoạn thẳng
nối tiếp nhau cùng nằm trên một mặt phẳng và khép kín ﴾điểm nối đầu trùng với
điểm nối cuối﴿. Phần mặt phẳng giới hạn bởi đường đa giác được gọi là hình đa giác.

Hình 1: Một ví dụ về đa giác có 5 đỉnh. ﴾Nguồn: Wikipedia﴿

Bạn hãy sử dụng struct để cài đặt chương trình nhập dữ liệu tính chu vi của một đa
giác ﴾là độ dài đường bao quanh hình đa giác đó ﴿.
Dữ liệu vào:
• Dòng đầu tiên nêu N là số lượng đỉnh của đa giác.
• N dòng tiếp theo, mỗi dòng gồm 1 cặp tọa độ (xi , yi ) biểu thị vị trí của đa giác.
Các đỉnh được liệt kê theo chiều kim đồng hồ.
Dữ liệu ra:
• Một số thực duy nhất là chu vi của đa giác.

Câu 4
Cho số nguyên dương N, viết hàm in ra màn hình tất cả các cặp số nguyên tố có tổng
bằng N, hãy in theo thứ tự tăng dần của số nguyên tố đầu tiên trong cặp. Không in

Trang 2
cặp trùng nhau. Nếu không tìm thấy, hãy in ra “NULL”.

Ví dụ

• Với N = 16 thì in ra kết quả ﴾3, 13﴿, ﴾5, 11﴿


• Với N = 1 thì in ra kết quả “NULL”

Câu 5 ﴾xử lý mảng 2 chiều﴿


Sắp xếp tăng dần các số trên đường chéo chính của một mảng 2 chiều kích thước
NxN cho trước và xuất ra mảng sau khi sắp xếp.
Dữ liệu vào:
• Dòng 1 có N là kích thước cạnh của mảng 2 chiều
• N dòng tiếp theo mỗi dòng có n số nguyên là các phần tử của mảng.

input output
5 13672
23672 22544
27544 81505
81105 31378
31378 40127
40125

Câu 6
Cho dãy số Fibonacci ﴾viết tắt là Fib﴿ như sau:
F ib(0) = 0
F ib(1) = 1
F ib(n) = F ib(n − 1) + F ib(n − 2) ∀n ≥ 2

Tìm ước chung lớn nhất của 2 số Fib﴾a﴿ và Fib﴾b﴿. Vì UCLN có thể rất lớn nên ta chỉ
cần xuất kết quả của UCLN sau khi chia lấy dư cho một số M.
Dữ liệu vào:

Trang 3
• Một dòng duy nhất chứa 3 số nguyên dương a, b, M.

Dữ liệu ra:

• Một số nguyên dương là kết quả của bài toán.

input output
6 9 10 2

Giải thích ví dụ

• Fib﴾6﴿ = 8, Fib﴾9﴿ = 34, UCLN﴾8, 34﴿ = 2.

• Vì UCLN﴾8, 34﴿ = 2 và 2 % 10 = 2 nên ta chỉ cần xuất ra 2.

Câu 7
Viết hàm tìm tất cả dãy con trong một mảng có tổng bằng 0 ﴾các phần tử thứ tự
không nhất thiết phải liền kề nhau﴿ và xuất ra màn hình các dãy con đó.

input output
4 1 ‐1
1 0 ‐1 2 0
1 0 ‐1

Câu 8
Tìm số lượng phần tử của dãy con tăng dài nhất trong một mảng chứa số nguyên
và in ra số đó.
Ví dụ:
Một dãy cho trước như sau

0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15

Dãy con tăng dài nhất trong chuỗi số trên có độ dài 6 phần tử

0, 2, 6, 9, 11, 15

Trang 4
Nhưng dễ dàng thấy rằng, dãy này không phải là duy nhất, ngoài ra còn những dãy
khác cũng thỏa mãn là dãy con tăng dài nhất
0, 4, 6, 9, 11, 15 hoặc 0, 4, 6, 9, 13, 15S
Dữ liệu vào:
• Dòng đầu tiên là số N là số phần tử của mảng
• Dòng 2 gồm n phần tử trong mảng cách nhau bởi dấu cách

input output
6 3
432793

Giải thích ví dụ: Dãy con tăng dài nhất là 4 7 9 hoặc 3 7 9 hoặc 2 7 9

Câu 9
Viết chương trình cho phép nhập vào từ bàn phím một số nguyên n ﴾1 ≤ n ≤ 20﴿,
thực hiện tính toán và in ra màn hình giá trị của S được định nghĩa thông qua công
thức dưới đây:
1 × 2 × ··· × n
S=
2 + 4 + 8 + · · · + 2n
Ví dụ, với n = 5 thì S = 1.93548. Lưu ý: Không sử dụng hàm có sẵn để tính giá trị lũy
thừa.

Câu 10
Một số nguyên dương có tính chất V nếu các chữ số của nó bắt đầu từ trái giảm
dần đến một vị trí rồi tăng dần. Ví dụ, số nguyên 97248 là một số có tính chất V vì
từ trái sang phải ta có 9 > 7 > 2 < 4 < 8
a﴿ Đề xuất thuật toán ﴾thể hiện ở dạng lưu đồ﴿ giúp kiểm tra một số nguyên
dương a có tính chất V không.
b﴿ Sử dụng thuật toán đề xuất ở trên, viết chương trình cho người dùng nhập từ
bàn phím số nguyên dương α, kiểm tra và xuất ra màn hình cho biết α có tính
chất V không

Trang 5

You might also like