You are on page 1of 1

Đề thi giữa kì CTDLGT - cơ điện tử

(thời gian 30 phút, được sử dụng tài liệu)

Câu 1: (8.5 điểm)


Khai báo danh sách móc nối biểu diễn đa thức như sau:

typedef struct Polynom {


int coeff;
int pow;
struct Polynom *link;
} poly;

Hoàn thành hàm dưới đây biết rằng đầu vào hàm là con trỏ px trỏ tới một đa thức bất kì có dạng
P(x)=a0 + a1x +a2x^2 +....+anx^n (với n là số nguyên >=0), đầu ra hàm là con trỏ trỏ tới một danh
sách mới biểu diễn đa thức là kết quả của phép nhân đa thức P(x)*G(x) với G(x) = (1+2x).

poly *tichdathuc(poly *px){...}

Câu 2: (1.5 điểm)

Khai báo danh sách móc nối đôi như sau:

typedef struct _List {


int info;
struct _List *link1;
struct _List *link2;
} list;

a. Hoàn thành hàm sau biết rằng đầu vào hàm là con trỏ p trỏ tới mảng hai chiều 9x9 chứa các số
nguyên, đầu ra là con trỏ trỏ tới nút đầu (nút trái trên cùng) của một danh sách móc nối đôi có dạng
9 hàng và 9 cột như hình vẽ 1.a:
list *CreateSudokuList(int **p){…}

Hình 1.a Hình 1.b

b. Sudoku là một trò chơi câu đố sắp xếp chữ số dựa trên logic theo tổ hợp. Mục tiêu của trò chơi là
điền các chữ số vào một lưới 9×9 sao cho mỗi cột, mỗi hàng, và mỗi phần trong số chín lưới con
3×3 cấu tạo nên lưới chính đều chứa tất cả các chữ số từ 1 tới 9. (Ví dụ hình 1.b)
Viết 1 hàm đầu vào là con trỏ trỏ tới một danh sách móc nối đôi có dạng như hình 1.a, để kiểm tra
xem danh sách này có thỏa mãn là một bảng Sudoku 9x9 hay không? Nếu đúng trả về 1, sai trả về
0.
int CheckSudokuCondition(list *head) {….}

You might also like