Cấu trúc dữ liệu và giải thuật | Trần Minh Khoa 1 BÀI TẬP THỰC HÀNH TRÊN LỚP TUẦN 01 ÔN TẬP KỸ THUẬT LẬP TRÌNH PHẦN 1 CON TRỎ VÀ CẤP PHÁT BỘ NHỚ ĐỘNG Câu 1 Giải thích tại sao trên hệ điều hành 32 bit,[.]
Trang 1Cấu trúc dữ liệu và giải thuật| Trần Minh Khoa 1
BÀI TẬP THỰC HÀNH TRÊN LỚP TUẦN 01
ÔN TẬP KỸ THUẬT LẬP TRÌNH
PHẦN 1 CON TRỎ VÀ CẤP PHÁT BỘ NHỚ ĐỘNG
Câu 1 Giải thích tại sao trên hệ điều hành 32-bit, kích thước của biến con trỏ luôn cố định là
4-byte (32-bit) mà không phụ thuộc vào kiểu dữ liệu (của biến con trỏ)? Cho biết kiểu dữ liệu của biến con trỏ đóng vai trò gì?
Câu 2 Hãy viết hàm swap để đoạn chương trình sau in ra kết quả là 20 10.
int a = 10;
int b = 20;
swap(a, &b);
printf("%d %d", a, b);
Câu 3 Gọi a là mảng số nguyên gồm n phần tử Hãy viết câu lệnh in ra giá trị của phần tử thứ i (
0 i n 1) mà không sử dụng cặp toán tử ngoặc vuông (a[i]) để truy xuất như thông thường Giải thích cho cách viết của mình
Câu 4 Giả sử một chương trình yêu cầu hệ điều hành cấp phát (động) khối bộ nhớ có kích thước
n-byte và biết rằng tổng vùng nhớ chưa được sử dụng trong vùng nhớ tự do (vùng nhớ dành riêng cho dữ liệu được cấp phát động) lớn hơn n-byte Hãy cho biết trong trường hợp nào thì hệ
điều hành không thể cấp phát vùng nhớ theo yêu cầu của chương trình?
PHẦN 2 ĐỆ QUY
Câu 1 Cho hàm tính giai thừa của số tự nhiên n được viết đệ quy như sau:
long GiaiThua(unsigned int n) {
if (n == 0)
return 1;
return n*GiaiThua(n – 1);
}
Yêu cầu: Hãy sửa lại hàm trên (có thể thay đổi số lượng tham số truyền vào) để cho lần gọi đệ
quy cuối cùng (GiaiThua(0)) trả về ngay giá trị của n! mà không cần phải lần ngược lên các
lần gọi đệ quy trước đó (GiaiThua(1), GiaiThua(2), …, GiaiThua(n)) để thực hiện phép nhân còn bị nợ
Câu 2 Dãy Fibonacci {F n} được định nghĩa truy hồi như sau:
F F F F F với n ≥ 2.
Trang 2Cấu trúc dữ liệu và giải thuật| Trần Minh Khoa 2
Yêu cầu:
1) Viết hàm đệ quy tính F n với mọi số tự nhiên n ≥ 2 sao cho
a) Trong thân hàm có đúng hai lần gọi đệ quy.
b) Trong thân hàm có đúng một lần gọi đệ quy.
2) Viết hàm không đệ quy tính F n với mọi số tự nhiên n ≥ 2.
Câu 3 Cho hai dãy số nguyên dương {x n } và {y n } được định nghĩa như sau (với a là số nguyên
dương tham gia vào dữ liệu nhập):
x1= a
y1 = 2a + 1
x n – 1 = x n – 2y n – 1 với n > 1
y n = 2x n – 1 + y n – 1 với n > 1
Với mỗi giá trị cụ thể của a, ta tính được dãy số {x n } và dãy số {y n} cụ thể
Yêu cầu: Cho số nguyên dương a Hãy viết các hàm đệ quy để tính giá trị của x n và y n với mọi n
nguyên dương