230+ câu trắc nghiệm Ngôn ngữ lập trình có đáp án - Phần 7
29 câu hỏi
Chọn kết quả hợp lí cho chương trình sau:
void main()
{
struct sv
{
float d;
char ht[10];
};
struct sv m, *p;
p = &m;
printf("%p", &m);
printf("%p", p);
};
“FFE6FFE6”.
“FFE6FFE7”.
“FFE66EFF”.
Kết quả khác.
Chọn kết quả đúng cho chương trình sau:
#include <stdio.h>
void main()
{
clrscr();
struct sv
{
float d;
char ht[10];
};
struct sv m, *p;
p=&m;
(*p).d=p->d=10;
strcpy(m.ht,"NguyenVanTuan");
printf("%0.1f",m.d);
printf("%s",m.ht);
};
“10.000000NguyenVanTuan”
“10.0NguyenVanTuan”
Kết quả khác. (“NguyenVanTuan”)// ht[10]. – Kết quả trên máy.
Chương trình bị lỗi.
Chọn kết quả đúng cho chương trình sau:
#include <stdio.h>
#include <string.h>
void main()
{
struct S1
{
float d;
float d1;
float d2;
};
struct S1 m={12, 1};
printf("%0.1f%0.1f%0.1f",m.d, m.d1, m.d2);
};
“12.01.00.0”
“12.0000001.0000000.000000”
Kết quả khác.
Chương trình bị lỗi.
Chương trình sau cho kết quả là gì:
#include <stdio.h>
void main()
{
int *px, *py;
int a[]={1,2,3,4,5,6};
px=a;
py=&a[5];
printf("%d",++px-py);
};
-4.
2.
5.
Không có kết quả đúng.
Có bao nhiêu cách khai báo biến cấu trúc:
1.
2. (Có đặt tên cấu trúc và không đặt tên cấu trúc)
3.
4.
Khi sử dụng từ khóa typedef trước định nghĩa cấu trúc thì:
Khai báo biến cho cấu trúc đó ta không cần sử dụng từ khóa “struct” nữa.
Khai báo 1 biến cho loại cấu trúc đó ta cần sử dụng từ khóa “struct”.
Không thể khai báo thêm biến cấu trúc nào nữa.
Lưu ý: Test trên Turbo C++ 3.0 không thấy có sự khác biệt.
Cho khai báo sau:
struct Date
{
unsigned int ngay:5;
unsigned int thang;
unsigned int nam: 11;
} sn1;
Số lượng bít sử dụng trong biến cấu trúc trên là bao nhiêu:
16.
20.
32.
48.
Đâu là định nghĩa đúng về cấu trúc tự trỏ:
Là một cấu trúc có một trường là con trỏ chứa địa chỉ của một biến cấu trúc.
Là dạng cấu trúc có một trường là con trỏ chứa địa chỉ của một biến cấu trúc có dạng dữ liệu giống nó.
Là dạng cấu trúc có một trường có kiểu dữ liệu giống nó.
Tất cả các ý trên.
Trong các khai báo sau, khai báo nào không đúng:
struct Date{int ngay, thang, nam;};
struct { int ngay, thang, nam;} D1,D2;
typedef struct { int ngay, thang, nam;} Date;
struct Date
Đâu là phát biểu đúng về danh sách móc nối:
Độ dài danh sách không thể thay đổi.
Các phần tử của nó được lưu trữ rải rác trong bộ nhớ RAM.
Để cài đặt danh sách móc nối phải sử dụng đến cấu trúc tự trỏ.
Chỉ có thể xóa được phần tử đầu tiên của danh sách.
Phát biểu nào không đúng về union:
Tất cả các trường chỉ dùng chung một vùng nhớ, và kích thước union bằng kích thước trường lớn nhất.
Các trường nằm rải rác trong bộ nhớ RAM và kích thước của các trường bằng tổng kích thước các trường.
Có thể khai báo các biến trong union có nhiều kiểu khác nhau.
Tại một thời điểm ta không thể chứa dữ liệu tại tất cả các thành phần của một biến union được.
Cho đoạn chương trình:
struct ng
{
unsigned ngay;
unsigned thang;
unsigned nam;
};
struct diachi
{
int sonha;
char tenpho[20];
};
union u
{
struct ng date;
struct diachi address;
} diachi_ngaysinh;
Kích thước của biến u là bao nhiêu byte:
20.
22.
28.
Đáp án khác.
Cho một danh sách móc nối với các phần tử trong danh sách có kiểu S1 được định nghĩa như sau:
struct S1{ int info; struct S1 * next;} *head;
Biết con trỏ “head” lưu địa chỉ của phần tử đầu tiên trong danh sách. Cho biết mục đích của câu lệnh sau:
c
head->next->next->info=111;
Câu lệnh bị lỗi.
Giá trị “info” trong phần tử thứ 3 đã bị thay đổi.
Giá trị “info” trong phần tử thứ 2 đã bị thay đổi.
Giá trị “info” trong phần tử bất kì đã bị thay đổi.
Cho một danh sách móc nối với các phần tử trong danh sách có kiểu S1 được định nghĩa như sau:
struct S1{ int info; struct S1 * next;} *head;
Biết con trỏ “head” lưu địa chỉ của phần tử đầu tiên trong danh sách. Cho biết mục đích của câu lệnh sau:
(head->next)=(head->next)->next;
Loại bỏ phần tử thứ nhất ra khỏi danh sách.
Loại bỏ phần tử thứ 2 ra khỏi danh sách.
Loại bỏ phần tử thứ 3 ra khỏi danh sách.
Câu lệnh bị lỗi.
Một danh sách trong đó tất cả các thao tác chèn thực hiện tại một đầu, thao tác xóa được thực hiện tại đầu kia của danh sách gọi là:
Stack.
Queue.
Cây nhị phân.
Cả 3 đáp án trên.
Đâu là phát biểu đúng về danh sách móc nối:
Chỉ có thể thêm phần tử mới vào đầu danh sách.
Không thể thêm phần tử mới vào cuối danh sách.
Có thể thêm phần tử mới vào vị trí bất kì trong danh sách.
Không câu nào đúng.
Đâu là phát biểu đúng về danh sách:
Chỉ có thể xóa phần tử đầu tiên trong danh sách.
Chỉ có thể xóa phần tử cuối cùng trong danh sách.
Có thể xóa một phần tử tại vị trí bất kì trong danh sách.
Tất cả đều sai.
Hàm dùng để cấp phát bộ nhớ động cho kiểu nhớ động do lập trình viên tự định nghĩa như (union, struct):
calloc();
malloc();
realloc();
Cả 3 đáp án trên.
Cho một danh sách móc nối với các phần tử trong danh sách có kiểu S1 được định nghĩa như sau:
struct S1 { int info; struct S1 *next; } *head;
Biết con trỏ *head lưu địa chỉ của phần tử đầu tiên trong danh sách. Nhóm câu lệnh nào sau đây thêm một phần tử vào đầu danh sách:
p->next = head; head = p;
p->next = head; head->p; head = p->next;
head->next = p; p = head;
Không có câu nào đúng.
Cho một danh sách móc nối với các phần tử trong danh sách có kiểu S1 được định nghĩa như sau:
c
struct S1 { int info; struct S1 *next; } *head;
Biết con trỏ *head lưu địa chỉ của phần tử đầu tiên trong danh sách. Nhóm câu lệnh nào sau đây xóa phần tử đầu tiên ra khỏi danh sách:
head->next = head;
head = head->next;
head = head->next->next;
2, 3.
Đâu là phát biểu sai khi nói về danh sách liên kết:
Mỗi phần tử trong danh sách liên kết phải có ít nhất một trường dùng để lưu địa chỉ.
Sử dụng danh sách liên kết thường tiết kiệm bộ nhớ hơn dùng mảng.
Sử dụng danh sách liên kết thường tốn bộ nhớ hơn dùng mảng.
Tất cả các đáp án đều sai.
Câu nào không nói đến ưu điểm của việc sử dụng cấu trúc:
Bạn có thể xử lí một cách hỗn hợp các kiểu dữ liệu trong một đơn vị.
Bạn có thể lưu dữ xâu kí tự có độ dài khác nhau vào trong một biến cấu trúc.
Dữ liệu có thể lưu trữ trong một module và dưới dạng phân cấp.
Cần ít nhất một bộ nhớ cho cùng dữ liệu.
Làm thế nào có thể biểu diễn phần tử “hoten” của SV1:
struct SV {
char hoten[20];
} SV1, *p;
p = &SV1;
SV1.hoten;
p->hoten;
&hoten;
1 và 2.
Đâu là phát biểu sai:
Có thể truyền tham số là một biến struct cho hàm.
Có thể truyền tham số là một biến con trỏ cho hàm.
Có thể truyền tham số là một biến con trỏ struct cho hàm.
Không thể truyền tham số là phần tử của struct cho hàm.
Cho mảng A gồm các phần tử kiểu struct, phát biểu nào là đúng khi truy cập đến các trường của các phần tử:
A[chỉ số].tên_trường;
A.tên_trường;
&A.tên_trường;
&A[chỉ số].tên_trường;
Dấu hiệu nào dưới đây cho biết danh sách liên kết đơn rỗng:
(p->right==NULL);
(p->info==NULL);
(p==NULL);
(p->next==NULL);
Dấu hiệu nào cho biết node phải của p có cây con bên phải:
(p->right!=NULL);
(p->left!=NULL);
(p->right!=NULL)&&(p->right->right==NULL);
(p->right!=NULL)&&(p->right->right!=NULL);
Cơ chế nào dưới đây được cài đặt cho Stack:
FILO.
Tuần tự.
Round Robin.
FIFO.
Chọn đáp án đúng khi sử dụng trường kiểu bit:
Độ dài các trường không vượt quá 16 bít.
Áp dụng được cho các trường có kiểu số nguyên và số thực.
Cho phép lấy địa chỉ trường kiểu nhóm bít.
Xây dựng được các mảng kiểu nhóm bít.






