Assignment Help logo
Trò Chuyện Trực Tuyến

Loading...

Score %0 (0 correct0 incorrect20 unanswered)

Câu hỏi 1. Kết quả của đoạn mã này là gì?

vector<int> v(22);
bool b = (v[6]);
printf("%d", !b);
  • Sai
  • 0
  • 1
  • Đoạn mã này có lỗi.

Câu hỏi 2. Trong số các lý do sau đây, việc sử dụng dòng này được coi là một thói quen xấu vì sao? (Lựa chọn thay thế: Tại sao việc sử dụng dòng này được coi là một thói quen xấu?)

using namespace std;
  • Mã được biên dịch luôn lớn hơn do tất cả các ký hiệu đã được nhập.
  • Nếu mã sử dụng một hàm được xác định trong hai thư viện khác nhau với cùng một nguyên mẫu nhưng có thể có các cài đặt khác nhau, sẽ có lỗi biên dịch do sự mơ hồ.
  • Nó tự động bao gồm tất cả các tệp tiêu đề trong thư viện tiêu chuẩn (cstdint, cstdlib, cstdio, iostream, vv).
  • Nó khiến trình biên dịch bắt buộc bao gồm độc quyền các tệp tiêu đề thuộc thư viện tiêu chuẩn, tạo ra một lỗi biên dịch khi bao gồm một tệp tiêu đề khác.

Tham khảo

Câu hỏi 3. Kích thước nhỏ nhất mà một biến của loại child_t có thể chiếm trong bộ nhớ là bao nhiêu?

typedef struct{
    unsigned int  age    : 4;
    unsigned char gender : 1;
    unsigned int  size   : 2;
}child_t;
  • 7 bit.
  • 25 byte.
  • 1 bit.
  • 1 byte.

Tham khảo

Câu hỏi 4. Các vector v1 và v2 sau khi thực thi đoạn mã là gì?

std::vector<int> v1{1,2,3},v2;
v2=v1;
v1.push_back(4);
v2.push_back(5);
  • Lỗi
  • v1:{1,2,3,4}; v2:{5};
  • v1:{1,2,3,4,5}; v2:{1,2,3,4,5};
  • v1:{1,2,3,4}; v2:{1,2,3,5};

Câu hỏi 5. Câu nào sau đây là một câu tốt về sự khác biệt giữa con trỏ và trình duyệt?

  • Trong khi con trỏ là biến chứa địa chỉ bộ nhớ, trình duyệt là các hàm tổng quát được sử dụng để duyệt qua các container. Hàm này cho phép người lập trình triển khai mã đọc và ghi khi container được duyệt qua.
  • Tăng một trình duyệt luôn có nghĩa là truy cập vào phần tử tiếp theo trong container (nếu có), không phụ thuộc vào container. Tăng một con trỏ có nghĩa là trỏ đến phần tử tiếp theo trong bộ nhớ, không luôn là phần tử tiếp theo.
  • Con trỏ là biến chứa địa chỉ bộ nhớ trong khi trình duyệt là số nguyên không dấu tham chiếu đến offset trong mảng.
  • Tất cả trình duyệt được triển khai với con trỏ nên tất cả trình duyệt đều là con trỏ nhưng không phải tất cả con trỏ là trình duyệt.

Tham khảo

Câu hỏi 6. Dung lượng được chiếm bởi u1 là gì?

union {
    uint16_t a;
    uint32_t b;
    int8_t c;
} u1;
  • 4 byte
  • 7 byte
  • 8 byte
  • 2 byte

Tham khảo

Câu hỏi 7. Trong số các toán tử sau đây có thể được nạp chồng?

  • ?:
  • new
  • ::
  • .

Tham khảo

Câu hỏi 8. Câu nào sau đây cho thấy nội dung của vector mà v1 và v2 trỏ đến sau khi chạy đoạn mã này?

std:: vector<int> *v1 = new std::vector<int>({1,2,3});
std:: vector<int> *v2;
v2=v1;
v1->push_back(4);
v2->push_back(5);
  • *v1:{1,2,3,4}; *v2:{5};
  • *v1:{1,2,3,4,5}; *v2:{1,2,3,4,5};
  • Lỗi
  • *v1:{1,2,3,4}; *v2:{1,2,3,5};

v1 và v2 trỏ vào cùng một vector.

Câu hỏi 9. Câu nào sau đây không phải là một sự khác biệt giữa một lớp và một cấu trúc?

  • Vì các cấu trúc là một phần của ngôn ngữ lập trình C, nên có một số phức tạp giữa cấu trúc C và C++. Điều này không đúng với các lớp.
  • Các lớp có thể có các hàm thành viên; các cấu trúc là private.
  • Bộ chỉ mục truy cập mặc định cho các thành viên của một cấu trúc là public, trong khi đối với các thành viên của lớp, nó là private.
  • Tham số loại mẫu có thể được khai báo với các lớp, nhưng không với từ khóa struct.

Các mẫu có thể được sử dụng với cả lớp và cấu trúc Tham khảo Tham khảo

Câu hỏi 10. Giả sử bạn cần giữ một cấu trúc dữ liệu với quyền truy cập vào một số nguồn tài nguyên dựa trên các ngày trong tuần, nhưng bạn không thể sử dụng một biến bool cho mỗi ngày. Bạn cần sử dụng một bit cho mỗi ngày trong tuần. Cài đặt nào sau đây là đúng cho ứng dụng này?

  • A
typedef struct {
    int sunday:1;
    int monday:1;
    // more days
    int friday:1;
    int saturday:1;
} weekdays;
  • B
typedef char[7]: weekdays;
  • C
typedef struct {
    bit sunday:1;
    bit monday:1;
    // more days
    bit friday:1;
    bit saturday:1;
} weekdays;

  • D
typedef struct {
    bit sunday;
    bit monday;
    // more days
    bit friday;
    bit saturday;
} weekdays;

Tham khảo LƯU Ý: Cú pháp đúng là mỗi biến có kích thước 1 bit. bit không phải là một kiểu trong C++.

Câu hỏi 11. Lvalue là gì?

  • Đó là một biểu thức hằng số, có nghĩa là một biểu thức được tạo thành từ các hằng số và các hoạt động.
  • Đó là một biểu thức biểu diễn một đối tượng có địa chỉ.
  • Đó là một biểu thức phù hợp cho toán hạng bên trái trong một phép toán nhị phân.
  • Đó là một giá trị vị trí, có nghĩa là một địa chỉ bộ nhớ phù hợp để gán cho một con trỏ hoặc tham chiếu.

Câu hỏi 12. Cụm từ kiểu auto làm gì trong dòng mã này (từ C++11)?

auto x = 4000.22;
  • Nó chỉ định rằng kiểu của x sẽ được suy luận từ bộ khởi tạo - trong trường hợp này là double.
  • Nó chỉ định rằng kiểu của x là tự động có nghĩa là nó có thể được gán các loại dữ liệu khác nhau trong toàn bộ chương trình.
  • Nó chỉ định rằng x là một biến với thời gian lưu trữ tự động.
  • Nó chỉ định rằng nhiều bộ nhớ hơn sẽ được cấp phát cho x trong trường hợp nó cần nhiều không gian hơn, tránh mất dữ liệu do tràn.

Câu hỏi 13. Một mẫu lớp là _?

  • lớp được viết với mô hình lập trình chung, chỉ định hành vi dưới dạng tham số kiểu chứ không phải là kiểu cụ thể.
  • superclass trống dành cho việc kế thừa và đa hình.
  • lớp chỉ gồm một biến thành viên, không có hàm tạo, hàm hủy hoặc các hàm thành viên.
  • mã nguồn mẫu cho một lớp nơi người lập trình phải điền vào các phần cụ thể để xác định các loại dữ liệu và thuật toán được sử dụng.

Tham khảo

Câu hỏi 14. Toán tử ba ngôi tương đương với đoạn mã này là gì?

if(x)
    y=a;
else
    y=b;
  • y=a?b:x;
  • y=if(x?a:b);
  • y=(x&a)?a:(x&b)?b:0;
  • y=x?a:b;

Tham khảo

Câu hỏi 15. Kết quả của đoạn mã dưới đây là gì?

#include <iostream>

int main(){
    int x=10, y=20;
    std::cout << "x = " << x++ << " and y = " << --y << std::endl;
    std::cout << "x = " << x-- << " and y = " << ++y << std::endl;
    return(0);
}
  • x = 10 và y = 20
    x = 11 và y = 19
  • x = 11 và y = 19
    x = 10 và y = 20
  • x = 10 và y = 19
    x = 11 và y = 20
  • x = 11 và y = 20
    x = 10 và y = 19

Câu hỏi 16. Ý nghĩa của hai phần được chỉ định giữa dấu ngoặc đơn trong một vòng lặp dựa trên phạm vi, được phân tách bởi dấu hai chấm là gì?

  • Phần đầu tiên là một khai báo biến sẽ chứa một phần tử trong một chuỗi. Phần thứ hai là chuỗi để duyệt qua.
  • Phần đầu tiên là một bộ lặp, và phần thứ hai là giá trị tăng thêm vào bộ lặp.
  • Phần đầu tiên là biến lặp. Phần thứ hai là std::pair xác định phạm vi (bắt đầu và kết thúc) mà biến sẽ lặp qua.
  • Phần đầu tiên là một đối tượng container. Phần thứ hai là một std::pair xác định phạm vi (bắt đầu và kết thúc) mà các phần tử sẽ được truy cập trong vòng lặp.

Câu hỏi 17. Kết quả của đoạn mã dưới đây là gì?

int8_t a=200;
uint8_t b=100;
if(a>b)
    std::cout<<"greater";
else
    std::cout<<"less";
  • Không có kết quả vì có một ngoại lệ khi so sánh int8_t với uint8_t.
  • lớn hơn
  • nhỏ hơn
  • Không có kết quả vì có lỗi biên dịch.

Ghi chú: một biến thể của câu hỏi dưới đây.

Câu hỏi 18. Kết quả của đoạn mã dưới đây là gì?

int8_t a=200;
uint8_t b=100;
std::cout<<"a="<<(int)a;
std::cout<<", b="<<(int)b;
  • a=-56, b=100
  • a=-55, b=100
  • a=200, b=-156
  • a=200, b=100

Ghi chú: Chuyển đổi ngầm định từ 'int' sang 'int8_t' (tức là 'signed char') làm thay đổi giá trị từ 200 thành -56

Câu hỏi 19. Kết quả sau khi thực thi đoạn mã dưới đây là gì?

int x=5, y=2;
if(x & y) {
    /*_part A_*/
}
else {
    /*_part B_*/
}
  • Phần A thực thi vì x==5 (đúng) và y==2 (đúng), vì vậy phép AND được đánh giá là đúng.
  • Phần B thực thi vì (x & y) kết quả là 0, hoặc sai.
  • Phần A thực thi vì (x & y) kết quả là một giá trị khác không, hoặc đúng.
  • Phần B thực thi vì câu lệnh (x & y) là không hợp lệ, do đó sai.

Tham khảo

Câu hỏi 20. Định nghĩa hợp lệ cho hàm get_length, trả về độ dài của một chuỗi kết thúc bằng null là gì?

  • A
int get_length(char *str) {
    int count=0;
    while(str[count++]);
    return count-1;
}
  • B
int get_length(char *str) {
    int count=0;
    while(str!=NULL){
        count++;
        str++;
    }
    return count;
}
  • C
int get_length(char *str) {
    int count=0;
    while((*str)++)
        count++;
    return count;
}
  • D
int get_length(char *str) {
    int count=0;
    while(str++)
        count++;
    return count;
}