NEW
Font size
WorksheetsCTDL_1
Total questions: 50
Worksheet time: 38mins
Hàm TinhTong(n) là hàm tính tổng các số nguyên dương n đầu tiên. Hãy cho biết kết quả của hàm TinhTong(10).
55
17
10
1
Diều kiện nào dưới đây trong ngôn ngữ lập trinh C kiểm tra một số nguyên n có là số chính phương hay không?
n==sqrt(n)
n==sqrt(n)*sqrt(n)
n==0
n==1
Trong ngôn ngữ lập trình C, lệnh "continue" trong thân vòng lặp có tắc dụng gì?
Thoát khỏi vòng lặp
Không làm gì cả
Quay lại đầu vòng lăp
Thoát khỏi chương trình
Với khai báo nguyên mẫu hàm void hoanvi(int a, int b) là hàm hoán vị hai giá trị của a, b cho nhau. Đoạn chương trình sau cho kết quả như thế nào?
int main(){
int a=8; b=10;
hoanvi(a,b);
printf("a=%d, b=%d",a,b);
}
a=10, b=8
a=8, b=8
a=10, b=10
a=8, b=10
Cho thời gian thực hiện một giải thuật T(n)= 10n2+100n+c (c là hằng số, n là kích thước dữ liệu đầu vào). Cho biết dộ phức tạp của giải thuật với thời gian thực hiện đã cho.
O(n2)
O(nlgn)
O(n)
O(1)
Cho biết độ phức tạp của giải thuật nhập vào hai hai số nghuyên, int ra tổng bình phương của hai số nguyên vừa nhập?
O(n)
o(n4)
O(n2)
O(1)
Tìm mô tả đúng cho giải thuật sau:
int Tinh(int n){
if(n==1) return 1;
return Tinh(n-1) +n;
}
}
Hàm tính tổng các bình phương của n số tự nhiên đầu tiên.
Hàm tính tổng các lập phương của n số tự nhiên đầu tiên.
Hàm tính tỏng số tự nhiên đầu tiên.
Hàm tính tổng căn bậc hai của n số tự nhiên đầu tiên.
Phần cơ sowrcuar giải thuật đệ quy tính tổng các nghịch đảo của n số nguyên dương đầu tiên là khi kiểm tra n= ?
n==n
n==1
n==3
n==4
Cho giait thuật:
float Tinh(float n){
if(n==1) return 0,5;
return Tnh(n-1) + n/(n+1);
}
Giải thuật đệ quy trên phần nào là phần cơ sở?
Tinh(n-1) +n/(n+1);
float Tinh(float n)
return Tinh(n-1)+n/(n+1);
if(n==1) return 0.5;
Cho giải thuật sau:
int Tinh(int n){
if(n==1) return 1;
return Tinh(n-1)+n;
}
Giải thuật trên phần nào là phần đệ quy?
if(n==1) return 1;
retrn Tinh(n-1) +n;
int Tinh(int n)
return 1;
Cho dãy Fbonacni được xác định như sau:
f(1)=f(2)==1, f(n)=f(n-1)+f(n-2)
Khi viết chương trình đệ quy tính số Fibonanci thứ n (n nguyên dương, cho trước ) thì điều kiên dừng của chương trình đệ quy là?
if(n==3)
if(n==2)
if(n<3)
if(n>2)
Hàm sau trả về giá trị bao nhiêu khi n=1:
float Tinh(float n){
if(n==1) return 0.5;
return Tinh(n-1)+1/(2*n);
}
1
0.5
0
1.5
Lựa chọn định nghĩa đúng nhất về danh sách:
Danh sách là tất cả các phần tử có kiểu dữ liệu xác định và giữa chúng xác định một mối liên hệ.
Số phần tử của danh sách gọi là chiều dài của danh sách đó.
Một danh sách có chiều dài bằng 0 là một danh sách rỗng.
Cả 3 phương án trên.
Cho khai báo sau:
#define Maxlength 1000
typedef struct { int a[Maxlenght]; int Last; } List;
Cho biếu số phần tử tối đa của mảng a.
1000
10
1
Last
Cho một danh sách đặc lưu trữ các số nguyên, khi khai báo cấu trúc dữ liệu của dnah sách này thì mỗi danh sách gồm những trường nào?
Một số nguyên lưu trữ số phần tử hiện tại của danh sách.
Mối danh sách gồm 2 trường: Một mảng chứa các số nguyên, 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ố nguyên
Không có trường nào.
Danh sách liên kết L có một phần tử, L là loại danh sách nào để phần liên kết của L trỏ tới chính L?
Danh sách liên kết đơn
Danh sách đặc
Danh sách liên kết vòng
Danh sách liên kết kép
cho khai bóa danh sách dặc như sau:
typedef struct list { int a[100]; int Last; } List;
List L;
Với điều kiện nào của p thì xóa được phần tử ở vị trí thứ p ra khỏi dnah sách dặc L.
p>0
0<p<=Last
p>Last
p<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;
Lệnh nào dùng để vào dữ liệu cho phần tử i trong danh sách đặc L kiểu List?
scanf("%d",&L.a[i]);
scanf("%d",&L.Last);
Printf("%d",a[i]);
gets(a[i]);
Phát biểu nào sau đây đúng nhất?
Nút gốc là nút có cha
Nút lá là nút có mọt con
Nút gốc là nút vừa có cha vừa có con.
Nút gốc là nút không có cha, chỉ có con; Nút là là nút không có con chỉ có cha.
B, A, E, F, D, J, I, T, K, H.
H, D, A, B, F, E, K, I, J, T
A, B, D, E, F, H, u, K, T.
H, K, T, I, J, D, F, E, A, B.
Gần đầy
Lệch phải
Đầy đủ
Hoàn chỉnh
Tam phân
Nhị phân
Tứ phân
Nhất phân
16 * 35 + 65+ 10 *30.
+ * 16 + 35 65 * 10 30.
* 16 + 35 65 * 10 30+
16 + 35 65 * 10 30+*
10 * 25 + 40-6030/
10 *25 40 + 60/30
10 25 40+ * 6030/-
- * 10* 25 40/60 30
Cho giải thuật sau:
B1: k=0;
B2: IF(M[K] == X) && (K<N)
B2.1: k++.
B2.2: Lặp lại B2.
B3: IF(k< N) Thông báo tìm thấy tại vị trí k.
ELSE Không tìm thấy.
B4: Kết thúc.
Tìm kiếm nhị phân phần tử X.
Tìm kiếm phần tử nhỏ nhất của mảng X bao gồm N phần tử.
Tìm kiếm tuyến tính phần tử có giá trị X
Tìm giá trị lớn nhất của M
Tư tưởng của phương pháp sắp xếp chọn để sắp xếp mảng a theo thứ tự không giảm dần là:
Hoán vị a[min] với phần tử giữa dãy.
Tím vị trí min tại đó a[min] đạt giá trị lớn nhất.
Hoán vị a[min] với phần tử cuối cùng của dãy.
Tìm vị trí min tại đó a[min] đạt giá trị nhỏ nhất trong dãy, hoán vị a[min] với phần tử đầu tiên của dãy cần sắp xếp và lặp lại với vị trí thứ 2, 3,... trong dãy.
Trong phương pháp sắp xếp nổi bọt ta tiến hành đưa phần tử nỏ lên đầu dãy bằng cách xuất phát từ....................., Tiến hành hoán vị hai phần tử kề nhau nếu có thể đưa phần tử nhỏ nhất lên đầu dãy. Quá trình trên lặp lặp lại n-1 lần sẽ thu được dãy sắp xếp. Chọn phương án để điền vào chỗ chống.
đầu dãy
Cuối dãy
giữa dãy
giá trị nhỏ nhất
Với giải thuật sắp xếp chọn một mảng số nguyên không giảm dần, ta thấy rằng sau mỗi vòng lặp lựa chọn được 1 phần tử................ đưa về đầu dãy, các phần tử còn lại hầu như không ảnh hưởng kết quả vòng lặp trước không ảnh hưởng đến kết quả vòng lặp sau. Chọn phương án điền vào chỗ trống:
Lớn nhất
nhỏ nhất
trung bình
bất kì
Nếu ta có một đống thì giá trị khóa ở nút gốc ("đỉnh đống") bao giờ cũng có giá trị?
Trung bình trong dãy khóa ứng với đống đó.
Bất kỳ.
Lớn nhất trong dãy khóa ứng với đống đó.
Nhỏ nhất trong dãy khóa ứng với dãy đó.
Cho biết độ phức tạp của gải thuật sắp xếp một mảng số nguyên gồm n phần tử theo thứ tự không giả dần bằng phương pháp sắp xếp nhanh (QuickSort).
O(n2)
O(2n)
O(nlog2n)
O(log2n)
Trông chương trình sau, câu lệnh printf("\nChao cac ban minh la: ", ten); có chức năng hiển thị dòng thông báo và tên đã nhập nhưng khi chạy chương trình không hiển thị được tên đã nhập. Hãy sửa lỗi của câu lệnh này:
#include<stdio.h>
int main(){ char ten(30); puts("Ten minh la: "); gets(ten); printf("\nChao cac ban minh la: ", ten);}
printf("\nChao cac ban minh la: %s", ten);
printf("\nChao cac ban minh la: %d", ten);
printf("\nChao cac ban minh la: %c", ten);
printf("\nChao cac ban minh la: %f", ten);
Cho thủ tục sau:
int main(){ int dem=1;
while(dem<6){ printf("\n Dem= %d", dem); dem++;
continue; printf("\n Dem= %d", dem);
}
Xác định kết quả in ra màn hình:
Dem = 1
Dem = 1, Dem = 2, Dem= 3, Dem = 4, Dem = 5
Dem =2
Dem = 1, Dem = 2, Dem= 3, Dem = 4, Dem = 5, Dem = 6
Cho đoạn chương trình sau, cho biết đoạn lệnh đó thực hiện công việc gì:
do{ printf("\nn="); scanf("%d", &n);
printf("\nm="); scanf("%d", &m);
}while(m<n|| m<=0||n<=0);
Nhập n thỏa mãn: n<=0
Nhập m, n đồng thỏa mãn: m>=n, m>0 và n>0.
Nhap m, n bất kỳ.
Nhập m thỏa mãn: m<=0
Hàm Tinh(float n) đã cho giải quyết bài toán nào?
float Tinh(float n){
if(n==1) return 0.5;
return Tinh(n-1) +1/(n*(n+1));}
S(n)=1/(1*2) +1/(2*3)+1/(n*(n+1))
S(n)=12+22+32+...+n2
S(n)=1+2+3+4+...+n
S(n)= n+ (n+1)
Mô tả nào đúng cho giải thuật sau:
float Function(float x, int n){
if(n==0) return 1;
if(n<0) return Function(x,n+1)*1/x;
return Function(x,n-1)*x; }
Hàm tính x mũ n với n là số nguyên dương.
Hàm tính x mũ n với n là số nguyên.
Hàm tính x mũ n với n là số thực.
Hàm tính x mũ n với n là số nguyên âm.
Cho giải thuật sau:
float Funcition(float n) {
if(n ==1 ) return sqrt(2);
return sqrt(2+Funcition(n-1);}
Yêu cầu nào sau đây đúng với giải thuật trên?
Tıˊnh s(n)=n
Tıˊnh S(n) = 2+2+... +2
Tıˊnh S(n)=...2
Tıˊnh S(n)=n2
Cho khai báo: typedef struct ds { int a[100], int Last; }List;
int p,q; List L;
Với khai báo trên nếu ý nghĩa câu lệnh trên:
for(q=p; q<L.Last;q++) L.a[q]=L.a[q+1];
Gán giá trị tại vị trí p trong danh sách cho phần tử p+1.
Dịch chuyển các phần tử từ vị trí 1 đến vị trí p sang phải 1 vị trí.
Dịch chuyển các phần tử từ vị trí p+1 đến cuối danh sách sang trái một vị trí.
Dịch chuyển các phần tử từ đầu danh sách đến cuối danh sách sang trái một vị trí.
Phát biểu nào sau đây đúng nhất với danh sách đặc?
Danh sách đặc là danh sách mà không gian lưu trữ các phần tử được đặt liên tiếp nhau trong bộ nhớ.
Danh sách đặc là danh sách mà không gian bộ nhớ thường được cấp phát tự động.
Danh sách đặc là danh sách thường được biểu diển dưới dạng con trỏ.
Không phát biểu nào đúng.
Cho khai báo: typedef struct ds{ int Data[1000]; int Count; }List;
Trong ngôn ngữ lập trình C, nguyên mẫu nào được khai báo đúng?
int Insert_K(List L,int x);
int Insert_K(List *L,int x);
int Insert_K(List &L,int x);
int Insert_K(List **L,int x);
Cho cấu trúc lưu trữ dữ liệu cho cây nhị phân tìm kiếm:
typedef struct node{ int key; struct node *Left,*Right; }NODE;
typedef struct NODE *TREE; TREE t;
Điều kiện nào đúng để đếm số nút trên cây nhị phân tìm kiếm t có giá trị chia hết cho 2 và 3?
(t->key%3==0)
(t->key%2==0)
(t->key%6==0)
(key%6==0)
Số lượng nút tối đa các nút ở mức thứ i trên một câu nhị phân là:
2i (i>0)
2i + 1 (i>0)
2i+1 (i>0)
2i-1 (i>0)
Cây nhị phân được lưu trữ kế tiếp ( bằng mảng ) thì nút thứ i có các con là:
2*i và 2*i+1
2*i
2*i+1
i+1
Cho mảng a gồm n =8 phần tử: 96,84,72,60,48,36,24,12. Quá trình tìm kiếm cây nhị phân trên mảng số trên với giá trị tìm kiếm x= 75, x lần lượ được so sánh với giá trị nào?
48,72,84
96,84,72,60,48,36,24,12.
60, 84,72
96,48,12
Cho dãy số sau: a=(20,2,80,5,11,6,4,15). Cho biết kết quả của lần lặp thứ 4 hi sắp xếp dãy tăng dần trên theo phương pháp trèn trực tiếp.
2,5,11,20,80,6,4,15.
2,5,20,80,5,11,6,4,15.
2,20,80,5,11,6,4,15.
2,5,6,11,20,80,4,15.
Cho ý tưởng sau: Tiến hành đưa phần tử nhỏ lên đầu dãy bằng cách xuất phát từ cuối dãy tiến hành hoán vị hai phần tử kề nhau nếu có thể đưa phần tử nhỏ nhất lên đầu dãy. qua trình trên lặp lại n-1 lần sẽ thu dduowvj dãy sắp xếp.
Ý tưởng trên ứng với phương pháp sắp xếp nào?
Phương pháp sắp xếp phân đoạn
Phương pháp sắp xếp chọn trực tiếp
Phương pháp sắp xếp nổi bọt
Phương pháp sắp xếp chèn trực tiếp
Viết hàm tính tổng sau: S(n)=1/2+2/3+3/4+n/(n+1), với n cho trước. Giải thuật nào dưới đây giải quyết bài toán trên?
float Tinh(float n) { if(n==1) return 0.5; }
float Tinh(float n) { if(n==1) return 0.5;
return Tinh(n-1)+n/(n+1);}
float Tinh(float n) { return Tinh(n-1)+1/(n*(n+1));}
float Tinh(float n) { if(n==1) return 1;}
Trong giải thuật tìm giá trị lớn nhất trong mảng số nguyên bất ki, độ phức tạp của giải thuật trong trường hợp tốt nhất và tồi nhất là bao nhiêu?
Tốt nhất: O(n) - Tồi nhất : O(n2)
Tốt nhất: O(1) - Tồi nhất : O(1)
Tốt nhất: O(n) - Tồi nhất : O(n)
Tốt nhất: O(log2n) - Tồi nhất : O(n)
Trong ngôn ngữ lập trình C, cho khai báo danh sách kép như sau:
typedef struct node{ int data; struct node *next, *prev; }DNode;
typedef struct list{DNode *Head,*Tail;}DList;
Hàm Init(DNode *L) là hàm khởi tạo danh sách rỗng, trong thân của hàm này sẽ chứa lệnh nào dưới đây?
L.Head=L.Tail=NULL;
(*L).Head=L.Tail=NULL;
L.Head=(*L).Tail=NULL;
L->Head=L->Tail=NULL;
Cho khai báo và hàm sau:
typedef struct node(int key; struct node*Left,*Right; }NODE;
typedef NODE *TREE;
TREE CreatNode(int x){ TREE p= (NODE)*malloc(sizeof(NODE));
p->key=x; p->Left=p->Right=NULL; return p;}
Hàm CreatNode(int x) có chức năng gì?
Thêm p vào cây.
Thêm x vào cây.
Tạo cây con trái của p bằng rỗng.
Tạo một nút có giá trị x và trả về vị trí nút vừa tạo.
Đối với phương pháp sắp xếp nổi bọt môt mảng số nguyên theo thứ tự không giảm dần có tối đa ............. lần tráo đổi. Chọn phương án đúng điền vào phần chấm.
1
n
n-1
n(n-1)
