NEW
Font size
WorksheetsCTDL_5
Total questions: 50
Worksheet time: 50mins
Cho biết sự khác biệt giữa hai lệnh:
gets(hten) ; scanf("%s", hten);
với biến hten được khai báo: char hten[50];
gets(hten) nhập vào chuỗi hten có thể chứa dấu cách, còn lệnh scanf("%s", hten); nhập chuỗi hten nhưng hten không chứa dấu cách
Hai lệnh hoàn toàn giống nhau
scanf("%d", hten) nhập vào chuỗi cho hten có thể chứa dấu cách , còn lệnh gets(hten); thì hten không chứa dấu cách
lệnh gets(hten); hiển thị chuỗi hten, lệnh scanf("%d", hten); nhập chuỗi
Trong ngôn ngữ lập trình C cú pháp sau dùng để khái báo biến gì
char<tên biến>[số kí tự tối đa]
Khai báo mảng số nguyên
Khai báo chuỗi
Khai báo mảng số thực
Khai báo con trỏ kiểu char
Cho biết ý nghĩa của lệnh sau với khai báo int *pa;
pa=(int)*malloc(sizeof(int));
Xóa bộ nhớ đã cấp phát bộ nhớ cho con trỏ số nguyên pa
Xin cấp phát bộ nhớ cho con trỏ số thực pa
Xin cấp phát bộ nhớ cho con trỏ số nguyên pa
Xóa bộ nhớ đã cấp phát cho con trỏ số thực pa
Cho biết ý nghĩa của câu lệnh sau với khai báo int *pa;
free(pa)
Khai báo chuỗi
Thu hồi bộ nhớ con trỏ số nguyên pa
xóa bộ nhớ đã cấp phát cho con trỏ số thực pa
Xin cấp phát bộ nhớ cho con trỏ số thực pa
Hàm sum(n) là hàm tính tổng các bình phương của của n số nguyên dương đầu tiên. Hãy cho biết kết quả của hàm Sum(10)
55
385
100
386
Cho biết ý nghĩa của câu lệnh sau
for(i=1;i<n+1;i++)
sum+=i*i;
Tính tổng n số nguyên dương đầu tiên
Tính tổng n số nguuyeen dương cuối cùng
Tính tổn các bình phương của n số nguyên dương đầu tiên
Tính bình phương của số nguyên dương n.
Cho hàm kt(n) và số nguyên m=199. Cho biết kết quả khi gọi kt(m).
int kt(int n){
if(n==0) return 1;
if(n%2==1) return 0;
if(n%2==0) return kt(n/10);
}
kt(m) trả về 1
kt(m) trả về 2
kt(m) trả về 22
kt(m) trả về 0
Với giải thuật sau, khi n=10 sẽ cho kết quả bằng bao nhiêu?
int Tinh(int n){
if(n==1) return 1
return Tinh(n-1) +n*n;
}
388
386
387
385
Khi viết hàm T(n) = 1+2+3+...+n, n là số tự nhiên bằng giải thuật đệ quy, lời gọi đệ quy nào được gọi cuối cùng?
T(1)
T(n)
T(n+1)
T(n-1)
Cho biết kết quả khi gọi Tinh(-10) của hàm sau:
float Tinh(float n){
if(n<=0) return 0;
if(n==1) return 0.5
return Tinh(n-1)+(2*n+1)/(2*n+2);
}
0.5
1.5
0
1
Cho biết kết quả khi gọi Tinh(1) của hàm sau:
int Tinh(int n){
if(n==0) return 0;
if(abs(n)==1) return 1;
return Tinh(abs(n)-1) +n*n;
}
0
1
0.5
5
Cho biết phần cơ sở của hàm sau:
int Tinh(int n){
if(n==0) return 0;
if(abs(n)==1) return 1;
return Tinh(abs(n)-1) +n*n;
}
if(n==0) return 0;
if(abs(n)==1) return 1;
if(n==0) return 0;
if(abs(n)==1) return 1;
return Tinh(abs(n)-1) +n*n;
Cho khai báo sau:
#define Max 200;
typedef struct {
int data[Max];
int count;
} List;
cho biết phần tử tối đa của mảng
100
200
1
count
Khi khai báo cấu trúc dữ liệu của danh sách đặc lưu trữ các số thực thì danh sách gồm những trường nào?
Danh sách gồm hai trường: Một mảng chứa các số thực, một phần tử lưu số phần tử hiện tại của danh sách
Một mảng chứa các số thực
Một số thực lưu trữ số phần tử hiện tại của danh sách
không có trường hợp nào
Cho khai báo danh sách đặc sau:
typedef struct list{
int data [100];
int Last;
}List ;
List L;
Với điều kiện nào của p thì không xóa được phần tử ở vị trí thứ p ra khỏi danh sách đặc L.
p<=L.Last
p>0
0<p<=L.Last
(p>L.Last) || (p<0)
Cho khai báo cấu trúc dữ cho danh sách đặc như sau:
typedef struct list {
float a[100];
int Last;
}List;
List L;
Lệnh nào được dùng để nhập dữ liệu cho phần tử i trong danh sách đặc L kiểu List
scanf("%d", &L.a[i])
scanf("%f", &L.a[i])
scanf("%f", &L.Last])
gets(a[i])
Cho danh sách đặc L có kiểu dữ liệu là cấu trúc List, Count là biến nguyên lưu trữ số phần tử hiện tại của L, lệnh nào sau đây được sử dụng để kiểm tra danh sách khác rỗng
return (L.Count==0)
return (L.Count <>0)
return (L.Count !=0)
return (L.Count ><0)
Cho khai báo cấu trúc dữ liệu cho danh sách đặc như sau:
typedef struct list {
int a[100];
int Last;
}List;
List L;
Khi xóa một phần tử ra khỏi L thì được danh sách rỗng. Ban đầu danh sách L có bao nhiêu phần tử?
L.Last=1;
L.Last=2;
L.Last=3;
L.Last=0;
Đồ thị là đồ thị gì
Đồ thị vô hướng có trọng số
Đồ thị vô hướng không có trọng số
Đồ thị vô có hướng không có trọng số
Đồ thị vô có hướng có trọng số
Đồ thị sau là đồ thị gì?
Đồ thị vô hướng có trọng số
Đồ thị vô hướng không trọng số
Đồ thị có hướng có trọng số
Đồ thị hướng không có trọng số
cho cây sau cho biết kết quả duyệt cây theo thứ tự trước (NLR)
41,20,11,29,32,65,50,91,72,99
99,72,91,50,65,32,29,11,20,41.
32,29,11,20,41,99,72,91,50,65.
50,65,32,29,11,20,41,99,72,91.
cho cây sau cho biết kết quả duyệt cây theo thứ tự sau (LRN)
32,29,11,20,41,99,72,91,50,65
32,29,11,20,41,99,72,91,50,65
11,32,29,20,50,72,99,91,65,41
99,72,91,50,65,32,29,11,20,41.
cho cây sau cho biết kết quả duyệt cây theo thứ tự giữa (LNR)
20,11,29,32,60,50,91,72,99
11,20,29,32,35,50,60,72,91,99
32,29,11,20,35,99,72,91,50,60
35,20,11,29,32,60,50,91,72,99
Cho biểu thức sau tính giá trị của biểu thức trên cây
340000
440000
540000
640000
Trong ngôn ngữ lập trình C , chọn khái báo nguyên mẫu hàm tìm kiếm tuần tự số nguyên x trên mảng số nguyên arr gồm n phần tử, hàm trả về vị trí đầu tiên tìm thấy .
int search( int arr [ ], int x);
int search( int x );
int search( int arr [ ], int n, int x );
int search(int n, int x );
Trong ngôn ngữ lập trình C , chọn khái báo nguyên mẫu hàm tìm kiếm nhị phân số nguyên x trên mảng số nguyên arr gồm n phần tử, hàm trả về vị trí đầu tiên tìm thấy .
int search ( int arr [ ], int n, int x);
int search ( int x);
int Search ( int arr [ ],int x);
int binarySearch ( int arr [ ], int n, int x);
Cho Thuật toán sắp xếp mảng K gồm n số nguyên, thuật toán dưới đây thuộc phương pháp sắp xếp nào?
Bước 1: i=0;
Bước 2: Tìm min sao cho K[min] nhỏ nhất trong dãy K[i]...K[n]
Bước 3: Nếu min khác i thì đổi chỗ K[i] cho K[min]
Bước 4: Nếu i<n-1 thì tăng i thêm 1 vị trí (i=i+1), quay lại Bước 2, ngược lại thì dừng, dãy đã cho đã sắp xếp đúng vị trí
Phương pháp sắp xếp đổi chỗ trực tiếp
Phương pháp sắp xếp nhanh
Phương pháp sắp xếp trộn
Phương pháp sắp xếp chọn trực tiếp
Cho giải thuật sắp xếp mảng K gồm n số nguyên, thuật tonas dưới đây thuộc phương pháp sắp xếp nào?
Bước 1: t=K[i]; //Giữ lại giá trị
Bước 2: So sánh t với K[i-1];
nếu t<K[i-1] thì K[i] = K[i-1] ; i=i-1;
Bước 3: Nếu (i>0 && t<K[i]) thì lặp lại bước 2, ngược lại nếu bằng thì dừng
Quá trinhg trên lặp lại n-1 lần và ta giả sử ban đầu dãy chỉ gồm phần tử đã sắp xếp >
Phương pháp sắp xếp nhanh
Phương pháp sắp xếp trèn trực tiếp
Phương pháp sắp xếp đổi chỗ trực tiếp
Phương pháp sắp xếp trộn
Cho mảng số nguyên, cho kết quả của lần lặp đầu tiên để sắp xếp mảng tăng dần theo phương pháp chọn trực tiếp:
7,6,9,5,3,4,8,2.
2,6,9,5,3,4,8,7
2,3,9,5,6,4,8,7
2,3,,4,5,6,9,8,7
7,6,9,5,3,4,8,2
Cho mảng số nguyên, cho kết quả của lần lặp đầu tiên để sắp xếp mảng tăng dần theo phương pháp chèn trực tiếp:
7,6,9,5,3,12,1,8,10
7,6,9,5,3,12,1,8,10
1,3,9,5,6,12,7,8,10
1,6,9,5,3,12,7,8,10
6,7,9,5,3,12,1,8,10
Đánh giá độ phức tạp của thuật toán sau :
s= 1; p=1;
for ( i=1;i<=n;i++){
p=p*x/i;
s=s+p;
}
O(n)
O(n2)
O(log2n)
O(n3)
Đánh gia sđộ phức tạp của thuật toán tính s=n*(n-1)/2; n là giá trị đầu vào
O(n3)
O(log2n)
O(1)
O(n2)
Đánh gái độ phức tạp của thuật toán sau:
for(i=1; i<=n;i++)
for(j=1; j<=n;j++)
a[i,j]= a[j,i]
O(n)
O(n2)
O(log2n)
O(n3)
Ý tưởng "Chừng nào mà số n còn lớn hơn ), ta sẽ tăng giá trị đếm 1 đơn vị, và sau đó chia nguyên n với 10 để bỏ chữ số cuối của nó" là ý tưởng của thuật toán nào
Tính tổng các chữ số của n
Đếm số chữ số của số nguyên dương n.
Kiểm tra số n có chia hết cho 10 không
Đảo ngược số nguyên dương n
Cho biết mô tả đúng nhất của hàm sau:
int DigitCount( int n) {
if(n<0) return -1;
if(n==0) return 0;
return 1+ DigitCount (n/10)
}
Đếm số chữ số của số nguyên dương n.
Kiểm tra số n có chia hết cho 10 không
Tính tổng các chữ số của n
Đảo ngược số nguyên dương n
Cho biết kết quả khi gọi DigitCount (2345) với hàm DigitCount được xây dựng như sau:
int DiagitCount(int n){
if(n<0) return -1;
if( n==0) return 0;
return 1 +DigitCount(n/10);
}
14
0
4
5432
Trong danh sách liên kết đơn L, hàm khởi tạo danh sách L thuộc kiểu List sẽ được xây dựng như thế nào
void Init (Listlink *L) { L =NULL; }
void Init (Listlink *L) { (*L).Head=NULL; (*L).Tail=NULL; }
void Init (Listlink *L) { (*L).Count=0; }
void Init (Listlink *L) { (*L) =NULL; }
Trong danh sách đặc L, hàm khởi tạo danh sách L thuộc kiểu List sẽ được xây dựng như thế nào
void Init (List *L) { (*L).Count=0; //Count so phan tu hien tai cua danh sach }
void Init (Listlnk *L) { (*L)=NULL }
void Init (Listlnk *L) { L=NULL }
void Init (DList *L) { (*L).Head=0 (*L).Tail=NULL; }
Trong danh sách liên kết kép L, hàm khởi tạo danh sách L thuộc kiểu List sẽ được xây dựng như thế nào?
void Init ( List *L) { (*L).Head=NULL; (*L).Tail=NULL; }
void Init ( Listlink *L) { (*L)=NULL; }
void Init ( List *L) { (*L).Count=0; }
void Init ( Listlink *L) { L=NULL; }
Quá trình tìm nút có giá trị bằng 29 trên cây nhị phân tìm kiếm dưới đây phải duyệt qua những nút có giá trị nào
2->11->20->29
45->20 ->29
45->29
45->65->50->20->29
Cây nhị phân tìm kiếm được xây dựng bằng cách lần lượt thêm các số nguyên 60,20,65,11,2,15,29,32,50,91,72,99 . Cho biết kết quả của phép duyệt trước (NLR) cây vừa xây dựng
2,15,11,32,29,20,50,72,99,91,65,60.
2,11,15,20,29,20,50,72,99,91,65,60.
60,20,11,2,15,29,32,65,50,91,72,99.
2,11,15,20,29,32,50,72,99,91,65,60.
Cho biết cây có kết quả sau khi thêm nút có giá trị bằng 35
Cây có kết quả gióng cây ban đầu
Cây kết quả có 2 nút có giá trị bằng 35
Cây kết quả loại bỏ nút có giá trị 35
Cây rỗng
Hãy điền vào chỗ chấm chấm trong hàm binarySearch:
int binarySearch (int arr[], int l, int r, int x){
if(r>=l){
int mid=1+(r-1)/2;
if(arr[mid] ==x)
...............................
if(arr[mid]>x)
return binarySearch (arr,l,mid-1,x);
return binarySearch(arr,mid+1,r,x);
}
return;
return mid;
return x;
return r;
Cho hàm search tìm kiếm x trong mảng arr, hãy điền vào chỗ chấm trong hàm sau:
int search (int arr[], int n, int x){
int i;
for( i=0; i<n;i++)
if(.......................)
return i;
return -1;
}
arr[i]==x
arr[i]=x
arr[i]!=x
arr[i]<>x
Hãy điền vào chỗ chấm trong hàm SelectionSoft:
void SelectionSoft (int K [ ], int n){
int i ; int j;
for(i=0;i<n-1;i++){
.............................
for(j=i+1; j<n-1;j++){
if (K [j] <K[min] )
min=j;
}
if( min!=i) swap(&K[i], &K[min] );
}
}
i=min
min=i;
i==min
min==i
Đánh giá độ phức tạp của giải thuật sau, biết " lệnh 1, lệnh 2" là các lệnh có độ phức tạp là O(1), m, n, x,z là đầu vào.
for( i=1; i<=n;i++){
for(u=1; u<=m; u++)
for(v=1; v<=n;v++)
//lệnh 1
for(j=1;j<=x;j++)
for(k=1;k<=z;k++)
//lệnh 2
}
O(n*max(n*m, x*z))
O(n*min(n*m, x*z))
O(max(m,n))
O(max(m,n))
Tìm mô tả đúng nhất của hàm sau:
float T( int x, int y){
if(y==0) return 1;
else
if(y<0) return T(x,y+1)*(float)1/x;
else return x*T(x,y-1);
}
Tính y mũ x
Tính y mũ x+1
Tính x mũ y
Tính x mũ y+1
Hàm loại bỏ phần tử ở vị trí k trong danh sách đặc
Hàm loại bỏ phần tử ở vị trí k trong danh sách liên kết vòng
Hàm loại bỏ phần tử ở vị trí k trong danh sách liên kết kép
Hàm loại bỏ phần tử ở vị trí k trong danh sách liên kết đơn
hàm PreOrder thực hiện chức năng gì?
Duyệt câu root theo thứ tự sau
Duyệt câu root theo thứ tự trước
Duyệt câu root theo thứ tự giữa
Tìm kiếm nút trên cây
Trong phương pháp sắp xếp nhanh , trường hợp xấu nhất độ phức tạp của gải thuật là gì?
O(nlog2n)
O(n2)
O(n3)
O(n)
