Đề thi môn Kỹ thuật lập trình - Đề 1

Đề thi môn Kĩ thuật lập trình – CNTT K52 (thày Vũ Đức Vượng) – Đề số 1  
Đề thi số 1  
Môn : Kĩ thuật lập trình (IT3040)  
Thời gian : 90 phút  
SV được phép sử dụng tài liệu, nhưng không được dùng máy tính,  
điện thoại DĐ  
Câu 1 : (1,0 đ)  
Đoạn lệnh dưới đây dùng để loại bỏ kí tự cuối cùng của một xâu str[ ].  
Hãy tiến hành kiểm thử và hiệu chỉnh đoạn code để đoạn lệnh sau sẽ luôn  
đúng trong mọi trường hợp.  
int i = 0;  
while (str[i] != ‘\0’)  
i++;  
str[ - -i] = ‘\0’;  
Câu 2 : (0,75 đ)  
Một lập trình viên chuyên nghiệp tiến hành tinh chỉnh chương trình  
bằng cách sửa các đoạn khai báo : char MaTran [80][30]; thành : char  
MaTran [80][32]; Em hãy cho biết ý nghĩa, tác dụng của việc sửa đổi đó ?  
Câu 3 : (0,75 đ)  
Với a là một biến int, dòng lệnh : scanf( “%d”, a) ; gây ra lỗi buid_time  
hay Run_time, giải thích tại sao ?  
Câu 4 : (0,75 đ) Tính giá trị của các phần tử của mảng A sau khi thực hiện  
đoạn lệnh dưới đây :  
int A[ ] = {6, 13, 34, 19} ;  
int *p = A ;  
*p ++ ;  
*p += 2 ;  
p += 2 ;  
*p += 2 ;  
1
Đề thi môn Kĩ thuật lập trình – CNTT K52 (thày Vũ Đức Vượng) – Đề số 1  
Câu 5 : (1,0 đ)  
Hãy tinh chỉnh đoạn mã lệnh sau bằng mọi kỹ thuật và tạo mọi vị trí có  
thể và giải thích lý do ( Biết rằng n > 20, x,y,z là các số nguyên và các  
hàm trong đoạn lệnh đã tối ưu).  
for ( int i = 0 ; i < n ; i++ ) {  
if ( x == y *8 ) {  
DoOneThing(i);  
}
else if ( x == y/4 + z/4 ) {  
DoSomeThingElse(i);  
}
else {  
DoAnotherThing(i);  
}
}
Câu 6 : (0,75 đ)  
Hãy cải tiến đoạn mã lệnh sau ( a là hằng số) :  
for ( i = 0; i < 10; i ++ ) {  
printf (“%f\n”, i*5*sin(a));  
}
Câu 7 : (1,0 đ)  
Hàm sau đây được xóa một phần tử khỏi một danh sách liên kết đơn. Hãy  
cho biết nó thực hiện được hay không, nếu được, hãy chỉ ra các bước khi  
danh sách đã có 4 phần tử và ta muốn xóa phần tử cuối cùng. Nếu không, chỉ  
ra điểm gây lỗi.  
/*  
* remove : Loại bỏ 1 phần tử khỏi danh sách  
* a_list là biến tổng thể.  
2
Đề thi môn Kĩ thuật lập trình – CNTT K52 (thày Vũ Đức Vượng) – Đề số 1  
* T_node là kiểu phần tử thuộc danh sách  
*/  
void remove ( T_node *p)  
{
T_node **i = &a_list ;  
for ( ; (*i) != NULL && (( *i) != p) ; *i = ((*i) -> next) ) ;  
if ( *i != NULL)  
( *i) = (*i) -> next;  
if ( p != NULL)  
nodepree (p); //giải phóng node trỏ bởi p  
}
Câu 8 : (2,0 đ)  
Cho x và y là hai mảng được cấp phát động với kích thước bằng đúng số  
phần tử của mảng và chứa hai dãy các số thực X = [x1, x2, … , xn]  
và  
Y = [y1, y2, … , ym]  
Sử dụng ngôn ngữ lập trình C/C++ để viết hàm … DiffSym(…) với :  
Đầu vào : danh sách X và danh sách Y (và các tham số khác nếu cần …)  
Đầu ra : con trỏ đến danh sách Z; danh sách này bao gồm :  
- Tất cả các số thuộc X và không thuộc Y  
- Tất cả các số thuộc Y và không thuộc X  
Bên cạnh đó, thông qua tham số truyền, gửi ra số phần tử của mảng kết quả Z  
Yêu cầu : phong cách lập trình thống nhất, chú thích đầy đủ, áp dụng các  
kĩ thuật viết mã nguồn hiểu quả, bẫy lỗi và lập trình phòng ngừa.  
Liệt kê các kỹ thuật viết mã nguồn hiểu quả, bẫy lỗi và lập trình phòng  
ngừa đã áp dụng.  
3
Đề thi môn Kĩ thuật lập trình – CNTT K52 (thày Vũ Đức Vượng) – Đề số 1  
Câu 9 : (2 đ)  
Cho một danh sách liên kết đơn với các nút được khai báo như sau :  
struct node  
{
int info;  
struct node *next;  
};  
Hãy xây dựng hàm (hoặc phương thức) Sort để sắp xếp danh sách theo thứ  
tự tăng dần của info  
4
pdf 4 trang Thùy Anh 16500 Free
Bạn đang xem tài liệu "Đề thi môn Kỹ thuật lập trình - Đề 1", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfde_thi_mon_ky_thuat_lap_trinh_de_1.pdf