





Preview text:
lOMoAR cPSD| 58583460
CHƯƠNG 3: CẤU TRÚC DỮ LIỆU CƠ BẢN – MẢNG (ARRAY)
CÂU HỎI TRẮC NGHIỆM
Câu 1: Trong ngôn ngữ lập trình C, mảng là gì?
a. Một tập hợp chứa nhiều giá trị
b. Một loại dữ liệu số nguyên c. Một chuỗi ký tự d. Một hàm số
Câu 2: Trong C, các phần tử của mảng có thể chứa các kiểu dữ liệu khác nhau. a. Đúng b. Sai
Câu 3: Trong các câu lệnh sau khai báo mảng M sau, câu lệnh nào là ĐÚNG: a. int [5][3] M; b. int M[][] ; c. int M[5][3];
d. Không có câu lệnh nào ĐÚNG;
Câu 4: Trong ngôn ngữ lập trình C, vị trí (index) phần tử cuối cùng của mảng là bao nhiêu? a. -1 b. 0 c. 1
d. N-1 (với N là số phần tử của mảng)
Câu 5: Cách nào sau ây ược sử dụng ể truy xuất vào phần tử thứ 4 của mảng myArray? a. myArray[4]; b. myArray(4); c. get(myArray, 4); d. myArray.get(4);
Câu 6: Câu lệnh nào sau ây ể tạo một mảng số nguyên có kích thước 10 với phần tử ầu tiên
trong mảng có giá trị bằng 1 trong C? a. int arr[10] = {0}; b. int arr[10] = {1}; c. int arr[10] = {};
d. Không có câu lệnh nào ĐÚNG;
Câu 7: Con trỏ trong C là gì?
a. Biến chứa một giá trị
b. Biến chứa ịa chỉ của một biến khác c. Biến chứa một hàm
d. Biến chứa một số nguyên
Câu 8: Để khai báo một con trỏ kiểu integer trong C, bạn sử dụng cú pháp nào sau ây? a. int pointer; b. integer* pointer; c. int* pointer; d. pointer int;
Câu 9: Để lấy ịa chỉ của một biến trong C và gán cho một con trỏ, bạn sử dụng toán tử nào? lOMoAR cPSD| 58583460 a. * b. & c. -> d. .
Câu 10: Khi một con trỏ ược khai báo, nó sẽ trỏ ến? a. Giá trị ngẫu nhiên b. Giá trị 0 c. Không trỏ ến âu cả
d. Đến ịa chỉ của biến null
Câu 11: Để giải phóng bộ nhớ ược cấp phát cho một con trỏ, bạn sử dụng hàm nào? a. free() b. malloc() c. allocate() d. deallocate() Câu 12:
Cho oạn chương trình như sau: int x = 5,y = 3;
int *a = &x, *b = &y; int c = *x + *y;
Cho biết giá trị của c sau khi kết thúc oạn chương trình trên a. 3. b. 4. c. 5. d. Tất cả ều sai. Câu 13:
Cho oạn chương trình như sau: int x = 5,y = 3;
int *a = &x, *b = &y; *a = *b; int c = x + y;
Cho biết giá trị của c sau khi kết thúc oạn chương trình trên a. 4. b. 5. c. 6. d. Tất cả ều sai.
Đoạn chương trình sau dùng cho 2 câu dưới: lOMoAR cPSD| 58583460 int M[3] = {-1,9,6}; int S = 0;
for (int i = 2;i>=0;i--) {
if (M[i]%2 == 1) S = S + M[i]; else S = S - M[i]; printf("%d ",S); }
Câu 14: Cho biết giá trị của S sau khi chạy oạn chương trình trên: : a. 4. b. 5. c. 7. d. 9.
Câu 15: Cho biết kết quả in ra màn hình sau khi chạy oạn chương trình trên: a. 6 3 4 b. 6 4 3 c. 3 4 6
d. Tất cả ều sai.
Đoạn chương trình sau dùng các câu dưới:
int M[3][3] = {{-1,4,2},{4,2,7},{1,5,4}};
for (int i = 2;i>=0;i--) {
for (int j = 2;j>=0;j--) {
if (M[i][j]>M[j][i]) M[i][j] = M[j][i]; }
printf("%d ",M[i][i]); }
Câu 16: Cho biết giá trị của phần tử M[1][1] sau khi chạy oạn chương trình trên: a. -1 b. 1 c. 2 d. 4
Câu 17: Cho biết giá trị của phần tử M[2][0] sau khi chạy oạn chương trình trên: a. -1 b. 1 c. 4 d. 5
Câu 18: Cho biết kết quả in ra màn hình sau khi chạy oạn chương trình trên: a. 4 2 b. 4 2 -1 c. 5 4 2 -1 d. Tất cả ều sai.
Đoạn chương trình sau dùng các câu dưới: lOMoAR cPSD| 58583460 int M[3][3] =
{{2,5,2},{1,6,7},{1,5,4}}; int a =
M[0][0]; for (int i = 0;i<3;i++) {
for (int j = 0;j<3;j++) { if (M[i][j]>a) { M[i][j] = a; a = M[i][j]; } } printf("%d ",M[i][i]); }
Câu 19: Cho biết giá trị của phần tử M[1][2] sau khi chạy oạn chương trình trên: a. 6. b. 1. c. 4. d. 2.
Câu 20: Cho biết giá trị của phần tử M[2][1] sau khi chạy oạn chương trình trên: a. 2. b. 1. c. 4. d. 5.
Câu 21: Cho biết kết quả in ra màn hình sau khi chạy oạn chương trình trên: a. 4 2 2. b. 2 2 2. c. 5 4 2 2. d. Tất cả ều sai
Đoạn chương trình sau dùng các câu dưới: int M[5] = {-1,3,2,4,7};
for (int i = 0;i<4;i++)
{ if (M[i]>M[i+1]) M[i] = M[i+1]; else printf("%d",M[i]); }
Câu 22: Cho biết giá trị của phần tử M[2] sau khi chạy oạn chương trình trên: a. -1. b. 3. c. 2. d. 4.
Câu 23: Cho biết giá trị của phần tử M[4] sau khi chạy oạn chương trình trên: a. 2. b. 3. c. 4. d. 7.
Câu 24: Cho biết kết quả in ra màn hình sau khi chạy oạn chương trình trên: a. -124 b. -12 lOMoAR cPSD| 58583460 c. -13 d. Tất cả ều sai.
Đoạn chương trình sau dùng các câu dưới:
int tong = 0, tich = 1; int M[2][2] = {{-1,4},{2,5}};
for (int i = 0;i<2;i++) {
for (int j = 0;j<2;j++) {
if (i > j) tong = tong + M[i][j];
else tich = tich * M[i][j]; } printf("%d ", tong); }
Câu 25: Cho biết giá trị của biến tong sau khi chạy oạn chương trình trên: a. 1. b. 2. c. 3. d. Tất cả ều sai.
Câu 26: Cho biết giá trị của biến tich sau khi chạy oạn chương trình trên: a. -4. b. -2. c. -10. d. Tất cả ều sai.
Câu 27: Cho biết kết quả in ra màn hình sau khi chạy oạn chương trình trên: a. 0 2. b. 0 3. c. 1 6. d. Tất cả ều sai.
BÀI TẬP THỰC HÀNH Bài 1:
Viết chương trình tạo một mảng số nguyên 1 chiều 10 phần tử, cho phép người sử dụng nhập
vào các giá trị cho mảng. Hiển thị mảng sau khi nhập ra màn hình. Bài 2:
Viết chương trình tạo một mảng số nguyên 2 chiều 3x3 (3 hàng, 3 cột), cho phép người sử dụng
nhập vào các giá trị cho mảng. Hiển thị mảng ra màn hình theo úng hàng-cột. Bài 3:
Tạo sẵn một dữ liệu (mảng M: 1 chiều số nguyên 20 phần tử) có các giá trị ngẫu nhiên. Hiển
thị mảng ban ầu ra màn hình.
Thực hiện lọc trung bình x3 theo công thức sau: lOMoAR cPSD| 58583460
M[i] = (M[i-1] + M[i] + M[i+1])/3 M[0] = (M[0] + M[1])/2
M[20] = (M[20]+ M[19])/2
Xuất giá trị của dữ liệu sau khi lọc ra màn hình. Bài 4:
Viết chương trình tạo một mảng số nguyên 1 chiều 10 phần tử với các giá trị cho trước. Cho
phép nhập giá trị x, tìm và in vị trí phần tử của mảng có giá trị bằng x (Nếu mảng không có
phần tử bằng với x thì in giá trị “Not found”). Bài 5 :
Viết chương trình tạo một mảng số nguyên 1 chiều 100 phần tử với các giá trị ngẫu nhiên. In
ra màn hình tất cả các giá trị phần tử là duy nhất trong mảng (phần tử duy nhất là phần tử có
giá trị không trùng với bất kì phần tử nào khác trong mảng). Bài 6:
Viết chương trình tạo một mảng số nguyên 1 chiều 100 phần tử với các giá trị ngẫu nhiên. Cho
phép nhập giá trị x, in ra màn hình tất cả các tổ hợp 3 giá trị phần tử có tổng bằng x. Bài 7:
Viết câu lệnh ịnh nghĩa hàm int Max (int A[], int size) có chức năng tìm giá trị phần tử lớn nhất trong mảng. Bài 8 :
Viết câu lệnh ịnh nghĩa hàm int Find (int A[], int size, int x) có chức năng tính tìm vị trí của
phần tử có giá trị bằng x (trả về -1 nếu không thấy giá trị phù hợp). Bài 9:
Viết câu lệnh ịnh nghĩa hàm void Insert (int A[], int size, int x, int n) có chức năng chèn
thêm giá trị x vào vị trí n trong mảng. Bài 10:
Viết câu lệnh ịnh nghĩa hàm void Delete (int A[], int size, int n) có chức năng xóa phần tử tại vị trí n trong mảng.