Đề thi cuối kỳ học phần Kỹ thuật lập trình năm 2024 - 2025 | Trường Đại học Khoa học tự nhiên, Đại học Quốc gia Thành phố Hồ Chí Minh

Tài liệu đề thi cuối kỳ học phần Kỹ thuật lập trình năm 2024 - 2025 được sưu tầm và biên soạn dưới dạng PDF gồm 02 trang. Tài liệu giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời bạn đón xem.

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

Bình luận

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

Đề thi cuối kỳ học phần Kỹ thuật lập trình năm 2024 - 2025 | Trường Đại học Khoa học tự nhiên, Đại học Quốc gia Thành phố Hồ Chí Minh

Tài liệu đề thi cuối kỳ học phần Kỹ thuật lập trình năm 2024 - 2025 được sưu tầm và biên soạn dưới dạng PDF gồm 02 trang. Tài liệu giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời bạn đón xem.

30 15 lượt tải Tải xuống
Câu 1
Một chương trình đơn giản để qun lý thông tin các khách hàng, mỗi khách hàng lưu các
thông tin sau:
- Mã s khách hàng (chui gm tối đa 14 ký tự) ;
- H và tên khách hàng (chui ký t có kích thước biến động) ;
- Địa ch (chui ký t có kích thước biến động) ;
- S đin thoi (chui ký t có kích thước biến động) ;
- Địa ch email (chui ký t có kích thước biến động)
Yêu cu: Hãy viết mã ngun khai báo d liệu để lưu trữ thông tin ca mi khách hàng.
Câu 2
Kiu
vector<T>
của thư viện chuẩn STL được hướng dn s dng trong bng sau:
Phương thức
Ý nghĩa
size( );
Tr v kích thước hin hành ca mng.
resize(int
newsize);
Thay đổi kích thước mng, nếu mng co lại (kích thưc mi nh
hơn cũ) thì một s phn t b xóa khi mng.
push_back(T x)
Thêm phn t x (có kiu T vào cui mng), mng t động giãn ra.
pop_back();
Xóa phn t cui cùng ca mng, mng t động giảm kích thưc
bt 1 phn t.
Người ta s dng kiu
vector<T>
để cài đặt một ngăn xếp gm các s nguyên. ngun
đưc viết trước mt phn trong bảng sau đây:
#include <vector>
using namespace std;
typedef struct {
vector<int> data;
} IntStack;
void push(IntStack& q, int x);
int pop(IntStack& q);
bool isempty(IntStack& q);
Yêu cu: Hãy viết nguồn đầy đủ cho các hàm
push( )
,
pop( )
,
isempty( )
theo như
định nghĩa của ngăn xếp.
K THUT LP TRÌNH
(120 phút, không dùng tài liu)
Câu 3
Hãy tìm s thc ln nht trong mng mt chiều được khai báo như sau: float
FindMax(float a[], int n); Đây là hàm trả v s ln nht trong mng, nếu nhiu
s ln nht trùng nhau thì tr v s đầu tiên.
Yêu cu: Hãy viết mã ngun cho hàm này với điều kin không được s dng bt k mt
cu trúc lp nào (tc là không dùng vòng lặp để lp trình cho câu hi này).
Câu 4
Hãy viết hàm ghép chui với khai báo như sau: char* strAdd(char* str1, char* str2);
Hàm này tr v chui kết qu
str2
ghép tiếp thep
str1
, chng hn li gi hàm
strAdd
(“ABCDE”, “FGHI”) sẽ tr v chui có nội dung là “ABCDEFGHI”. Cần chú ý v vn
đề bảo đảm s ng
byte
để lưu chuỗi ký t kết qu.
Tùy chn. Bn tiếp tc làm bài, chn một trong hai câu sau đây.
Câu 5A.
a) Trình bày khái nim v
đệ quy tuyến tính
”.
b) Hãy cho biết hàm sau đây có phải là
đệ quy tuyến tính
hay không (giải thích cn k
cho câu tr li ca bn):
int Bob(int A, int n) {
if (n <= 0)
return A;
else if (n % 2 == 0)
return (n/2)*Bob(A, n/2);
else
return (3*n+1)*Bob(A, n-1);
}
Câu 5B
Mt danh sách liên kết thành phn d liu các s nguyên kiu int đưc khai báo
như sau:
#include <iostream>
struct Node {
int data;
Node* pNext;
};
a) Hãy viết hàm tr v phn t cui cùng ca danh sách liên kết phn t đầu
head
, hàm được khai báo như sau: Node* getTail(node* head);
b) Viết hàm xóa phn t cui cùng ca danh sách liên kết phn t đầu
head
,
hàm được khai báo như sau: void deleteLast(Node* &head);
----- HT -----
| 1/2

Preview text:

KỸ THUẬT LẬP TRÌNH
(120 phút, không dùng tài liệu) Câu 1
Một chương trình đơn giản để quản lý thông tin các khách hàng, mỗi khách hàng lưu các thông tin sau:
- Mã số khách hàng (chuỗi gồm tối đa 14 ký tự) ;
- Họ và tên khách hàng (chuỗi ký tự có kích thước biến động) ;
- Địa chỉ (chuỗi ký tự có kích thước biến động) ;
- Số điện thoại (chuỗi ký tự có kích thước biến động) ;
- Địa chỉ email (chuỗi ký tự có kích thước biến động)
Yêu cầu: Hãy viết mã nguồn khai báo dữ liệu để lưu trữ thông tin của mỗi khách hàng. Câu 2
Kiểu vector của thư viện chuẩn STL được hướng dẫn sử dụng trong bảng sau: Phương thức Ý nghĩa size( );
Trả về kích thước hiện hành của mảng. resize(int
Thay đổi kích thước mảng, nếu mảng co lại (kích thước mới nhỏ newsize);
hơn cũ) thì một số phần tử bị xóa khỏi mảng.
push_back(T x) Thêm phần tử x (có kiểu T vào cuối mảng), mảng tự động giãn ra.
Xóa phần tử cuối cùng của mảng, mảng tự động giảm kích thước pop_back(); bớt 1 phần tử.
Người ta sử dụng kiểu vector để cài đặt một ngăn xếp gồm các số nguyên. Mã nguồn
được viết trước một phần trong bảng sau đây: #include using namespace std;
typedef struct { vector data; } IntStack;
void push(IntStack& q, int x);
int pop(IntStack& q);
bool isempty(IntStack& q);
Yêu cầu: Hãy viết mã nguồn đầy đủ cho các hàm push( ), pop( ), isempty( ) theo như
định nghĩa của ngăn xếp. Câu 3
Hãy tìm số thực lớn nhất trong mảng một chiều được khai báo như sau: float
FindMax(float a[], int n); Đây là hàm trả về số lớn nhất trong mảng, nếu có nhiều
số lớn nhất trùng nhau thì trả về số đầu tiên.
Yêu cầu: Hãy viết mã nguồn cho hàm này với điều kiện không được sử dụng bất kỳ một
cấu trúc lặp nào (tức là không dùng vòng lặp để lập trình cho câu hỏi này). Câu 4
Hãy viết hàm ghép chuỗi với khai báo như sau: char* strAdd(char* str1, char* str2);
Hàm này trả về chuỗi kết quả là str2 ghép tiếp thep str1, chẳng hạn lời gọi hàm
strAdd(“ABCDE”, “FGHI”) sẽ trả về chuỗi có nội dung là “ABCDEFGHI”. Cần chú ý về vấn
đề bảo đảm số lượng byte để lưu chuỗi ký tự kết quả.
Tùy chọn. Bạn tiếp tục làm bài, chọn một trong hai câu sau đây. Câu 5A.
a) Trình bày khái niệm về “đệ quy tuyến tính”.
b) Hãy cho biết hàm sau đây có phải là “đệ quy tuyến tính” hay không (giải thích cặn kẽ
cho câu trả lời của bạn):
int Bob(int A, int n) { if (n <= 0) return A;
else if (n % 2 == 0)
return (n/2)*Bob(A, n/2); else
return (3*n+1)*Bob(A, n-1); } Câu 5B
Một danh sách liên kết có thành phần dữ liệu là các số nguyên kiểu int được khai báo như sau: #include struct Node { int data; Node* pNext; };
a) Hãy viết hàm trả về phần tử cuối cùng của danh sách liên kết mà có phần tử đầu là
head, hàm được khai báo như sau: Node* getTail(node* head);
b) Viết hàm xóa phần tử cuối cùng của danh sách liên kết mà có phần tử đầu là head,
hàm được khai báo như sau: void deleteLast(Node* &head); ----- HẾT -----