Câu hỏi: PRF192 Cơ sở lập trình – Đề thi lại kỳ SP26
49 câu trắc nghiệm kèm lời giải của môn PRF192 - Cơ sở lập trình, xếp đúng thứ tự trong đề. Trang 3/3 — câu 41–49.
Danh sách câu hỏi
void swap(int a, int b){
int t = a;
a=b;
b=t;
}What is the problem with a and b after executing the swap (a, b) function?
Đáp án đúng: "a and b do not change values.". C truyền tham số theo giá trị: lúc gọi hàm, hai đối số được sao chép vào hai biến cục bộ trùng tên bên trong swap. Mọi phép đổi chỗ sau đó chỉ xáo trộn bản sao, và khi hàm kết thúc các bản sao biến mất, hai biến ở chỗ gọi vẫn nguyên như trước. Muốn đổi thật thì tham số phải là con trỏ và thân hàm phải làm việc qua phép lấy nội dung. Ý "cannot execute the swap(a,b) function." sai vì hàm hoàn toàn hợp lệ, nó dịch được và chạy được, chỉ là không có tác dụng ra bên ngoài. Ý "a has the old value of b, and b has the new value of t." sai vì điều đó chỉ đúng với hai bản sao cục bộ và chỉ tới thời điểm trước khi hàm trả về. Ý "a and b change values for each other; " sai vì đó chính là ngộ nhận mà câu hỏi muốn phá: việc đổi chỗ có xảy ra nhưng không chạm tới ô nhớ của hai biến gốc.
#include <stdio.h>
#include <stdlib.h>
int main() {
int *p = (int*) malloc(sizeof(int));
*p = 50;
printf("%d", *p);
free(p);
return 0;
}char words[4][11];
strcpy(words[0], "apple");
strcat(words[0], "juice");
printf("%s\n", words[0]);applejuiceapplejuicejuiceappleint a = 5, b = 10;
printf("%d", !(a > b || b == 10));int x[5] = {0};
printf("%d", x[3]);