You are on page 1of 5

ĐỀ THI HỌC KỲ Họ tên SV:

Môn : Hệ thống máy tính và ngôn ngữ C Mã số SV:


Thời gian : 70 phút Nhóm/lớp:

ĐỀ SỐ 1
Bảng trả lời câu hỏi:

1 2 3 4 5 6 7 8 9 1 11 1 13 1 15 16 1 18 19 20
0 2 4 7
A
B
C
D

21 2 23 24 2 26 2 28 29 3 31 3 33 3 35 36 3 38 39 40
2 5 7 0 2 4 7
A
B
C
D

Chú ý:
 Sinh viên đánh dấu chéo (X) vào ô cần chọn
 Nếu chọn sai thì sinh viên tô đen ô chọn trước đó rồi chọn câu khác
 Chỉ những câu có trả lời trong Bảng trả lời câu hỏi mới được chấm điểm
 Sinh viên được phép sử dụng tài liệu
------------------------------------------------------------------------------------------------------------
Câu 1: if(x&01) b++;
Cho đoạn code: printf("%d",b);
unsigned x = 0x1234, y; Kết quả in ra là:
y = (x>>2) & ~(~0<<3); a. 0
printf("%d",y); b. 1
Kết quả in ra là: c. 2
a. 3 d. 3
b. 5
c. 7 Đoạn chương trình sau dùng cho câu 4 và 5:
d. 9 Chương trình LC-3 đang thực thi lệnh bắt đầu tại địa
Câu 2: chỉ x3000 như sau
Cho khai báo: x3000 1001010001111111
const y = 012UL; x3001 0101001001000010
Khi đó giá trị của y sẽ là: x3002 0001001001101001
a. 12 x3003 0001001001000011
b. 10 Câu 4:
c. -12 Sau khi thực thi xong lệnh ở địa chỉ x3001, thanh ghi
d. -10 R1 chứa giá trị là:
Câu 3: a. Trị rác
Cho đoạn code: b. 0
unsigned x = 9; c. 1
int b; d. 2
for(b=0; x!=0; x>>=1) Câu 5:

1
Sau khi thực thi xong lệnh ở địa chỉ x3003, thanh ghi d. Cả 3 câu trên đều sai
R1 chứa giá trị là 17. Thanh ghi R3 chứa giá trị là: Câu 11:
a. 6 Hàm đệ quy:
b. 7 a. Là hàm mà tại một vị trí nào đó trong thân
c. 8 của một hàm đó gọi lại chính hàm đó
d. Cả 3 câu trên đều sai b. Là hàm mà tại vị trí nào đó của hàm main
Câu 6: gọi lại chính hàm đó
Câu lệnh return: c. Là hàm có vòng lặp và có điều kiện giới hạn
a. Kết thúc hàm hiện hành, không thực hiện d. Các câu trên đều sai
các câu lệnh tiếp theo và trở về hàm main Câu 12:
b. Thực hiện các câu lệnh tiếp theo đến khi kết Cho đoạn code:
thúc hàm và trở về hàm main int fun(int *i)
c. Thực hiện các câu lệnh cho tới câu lệnh exit {
và trở về hàm main *i += 5;
d. Thực hiện các câu lệnh tiếp theo đến khi kết return *--i>6?1:0;
thúc hàm và trở về hàm hàm đã gọi hàm }
chứa lệnh return void main()
Câu 7: {
Cho đoạn chương trình sau: static int x=3;
#include <stdio.h> x += fun(&x);
#include <conio.h> printf(“%d”, x);
main(){ }
double *p1, *p2; Kết quả sau khi chạy hàm main là :
int a[10]; a. 7
p1 = (double *)&a[0]; b. 8
p2 = (double *)&a[5]; c. 9
printf("Khoang cach giua hai phan tu la %d\ d. Sai cú pháp
n", p2 - p1); Câu 13:
getch(); Cho đoạn code:
} void main()
Khi đó, kết quả in ra màn hình sẽ là: {
a. Khoang cach giua hai phan tu la 1 int a[]={1,2,3,4,5}, *p, *q;
b. Khoang cach giua hai phan tu la 3 p=a; q=&a[1];
c. Khoang cach giua hai phan tu la 5 p = q++;
d. Khoang cach giua hai phan tu la 7 *q=4; *p=5;
Câu 8: printf("%d %d", a[1],a[2]);
Cho: int testarray[][2] }
[2]={1,2,3,4,5,6,7,8,9,10,11,12} Kết quả sau khi chạy hàm main là :
Khi đó, giá trị của phần tử testarray[1][0][1] sẽ là: a. 5 4
a. 4 b. 4 5
b. 5 c. 5 3
c. 6 d. 2 3
d. 7 Câu 14:
Câu 9: Cho đoạn code:
Khi muốn set bit thứ 4 của biến unsigned x lên 1 ta void foo(int [][3] );
sử dụng lệnh nào sau đây: void main(){
a. x &= 0x0008; int a [3][3]= { { 1,2,3} , { 4,5,6},{7,8,9}};
b. x |= 0x0008; foo(a);
c. x ^= 0x0008; printf("%d" , a[1][1]);
d. x ~= 0x0008; }
Câu 10: void foo( int b[][3]){
3B5H trong hệ thập lục phân có giá trị trong hệ bát ++ b;
phân như sau: b[1][1] +=9;
a. 1564O }
b. 110110011B Kết quả in ra màn hình là:
c. 1665O a. 4

2
b. 5 {
c. 6 printf ("Moi nhap hai so: ");
d. Sai cú pháp scanf ("%d %d", &a, &b);
Câu 15: }
Cho lệnh sau viết bằng hợp ngữ của LC-3: main()
ADD R4, R1, # -4 {
Mã của lệnh trên dịch ra ngôn ngữ máy LC-3 là: nhap_tri (a, b);
a. 0101100001111100 a += 2;
b. 0001100001111100 b -= 5;
c. 0101100001011100 printf("Sau khi goi ham nhap_tri a = %d, b =
d. 0001100001011100 %d\n", a, b);
Câu 16: getch();
Cho đoạn chương trình sau: }
void main() Khi sử dụng hàm nhập trị, người sử dụng nhập a = 5,
{ b = 4. Khi đó màn hình xuất ra giá trị của a và b lần
{static int x=3;} lượt là:
x += ++x + x++; a. a = 0, b = 0
printf("%d", x); b. a = 5, b = 4
} c. a = 2, b = -5
Giá trị in ra khi thực thi đoạn chương trình trên là: d. Các kết quả trên đều sai
a. 12 Câu 21:
b. 13 Cho đoạn code sau:
c. 14 #define CHAR_BIT 8
d. Chương trình báo lỗi main() {
Câu 17: int p = 'A';
Cho các khai báo: p = (p<<CHAR_BIT)|'B';
int *p; float *q; void *v; printf("%X", p);
Hãy chọn các phát biểu đúng: }
a. p = (int *)1; Kết quả in ra màn hình là:
b. p = 1; a. 6566
c. p = q; b. 6588
d. p = v = q; c. 8866
Câu 18: d. 4142
Biểu thức: (v&(1<<2)?1:0; Câu 22:
có giá trị 1 hoặc 0 tùy thuộc vào bit thứ mấy trong v? Vị trí của các hàm trong C:
a. Thứ nhất a. Phải luôn nằm trước hàm main
b. Thứ hai b. Phải luôn nằm sau hàm main
c. Thứ ba c. Trước hay sau hàm main đều được
d. Thứ tư d. Trước hay sau hàm main là do quy định
Câu 19: trong hàm main
Cho đoạn code sau: Câu 23:
main(){ Chọn phát biểu đúng:
enum {EXTERNAL = 02, STATIC = 04}; a. Biến toàn cục được khai báo trong thân hàm
int flags = 0xABCD; và vùng bộ nhớ lưu trữ biến toàn cục được
flags |= EXTERNAL|STATIC; giải phóng khi chương trình kết thúc
printf("%x", flags); b. Biến toàn cục được khai báo trong thân hàm
} và vùng bộ nhớ lưu trữ biến toàn cục được
Kết quả in ra màn hình là: giải phóng khi hàm kết thúc
a. abcd c. Biến toàn cục được khai báo ngoài thân hàm
b. abce và vùng bộ nhớ lưu trữ biến toàn cục được
c. abcf giải phóng khi hàm kết thúc
d. Các kết quả trên đều sai d. Biến toàn cục được khai báo ngoài thân hàm
Câu 20: và vùng bộ nhớ lưu trữ biến toàn cục được
Cho đoạn code sau: giải phóng khi chương trình kết thúc
int a , b; Đoạn chương trình sau dùng cho câu 24 và 25:
void nhap_tri (int a, int b)

3
Cho đoạn chương trình viết bằng hợp ngữ của LC-3 Câu 29:
như sau: Cho khai báo biến sau:
01 ; START int a, *p1; double **p2;
02 .ORIG x3000 char c, *pc=&c;
03 AND R2, R2, #0 Hãy chọn các phát biểu đúng:
04 ADD R2, R2, #11 a. a=(int) (&p1–(int **)p2);
05 AND R1, R1, #0 b. p2=(double *) p1+ (int *)a;
06 ADD R1, R1, #1 c. p1 = (double *) p2 – a =1;
07 AND R4, R4, #0 d. *pc= &a - &c;
08 ADD R4, R4, #3 Câu 30:
09 LOOP ADD R4, R4, R1 Cho đoạn chương trình sau:
10 ADD R2, R2, #-2 struct { int x, y; } a, b,*p=&b;
11 BRp LOOP main()
12 TRAP x25 { p->x = 1;
13 .END p->y = 2;
Câu 24: a = b;
Sau khi thực hiện chương trình, thanh ghi R2 chứa printf("%d %d", a.x, a.y);
giá trị là: }
a) 1 Giá trị in ra là:
b) 0 a. 0 0
c) -1 b. 1 2
d) -3 c. 2 2
Câu 25: d. Chương trình sai cú pháp
Sau khi thực hiện chương trình, thanh ghi R4, chứa Câu 31:
giá trị là: Cho khai báo: char *p = “abc”;
a) 7 Hãy chọn các câu lệnh sai:
b) 8 a. p++;
c) 9 b. p[1] = d;
d) 10 c. p[1] = “abc”[1];
Câu 26: d. *p - *(“abc”+2);
Khai báo thư viện: Câu 32:
a. Phải nằm ở đầu chương trình Cho khai báo:
b. Nằm sau phần khai báo các hàm union uni { float a,b; double c,d;};
c. Có thể nằm ở bất kỳ vị trí nào trong chương struct str { double a,b; union uni c;}e;
trình Biến e chiếm:
d. Có thể không khai báo vì các thư viện này a. 8 byte bộ nhớ
đã có trong thư mục lib b. 16 byte bộ nhớ
Câu 27: c. 24 byte bộ nhớ
Cho khai báo: d. 32 byte bộ nhớ
struct abc {int a:1, b:16, c:16;} x; Câu 33:
Biến x chiếm mấy word: Mã định dạng %5.2lf có nghĩa
a. 1 a. In số thực kiểu float có 5 số lẻ, phần nguyên
b. 2 có độ dài là 2
c. 3 b. In số thực kiểu float có 2 số lẻ, phần nguyên
d. Giá trị khác có độ dài là 5
c. In số thực kiểu double có 5 số lẻ, phần
Câu 28: nguyên có độ dài là 2
Cho đoạn chương trình sau: d. In số thực kiểu double có 2 số lẻ, phần
int a=0x6141, *pint; nguyên có độ dài là 5
double x, *pd; Câu 34:
char c, *pc; Cho đoạn code:
Chọn các phát biểu để in ra ký tự ‘A’: void main()
a. pint = &a; printf(“%c”, *pint); {
b. pd = a; printf(“%c”, *pd); int i=3, j=5, *p=&i, *q=&j, *r;
c. pc = &a; printf(“%c”, *pc); *(r=&j)*=*p;
d. pc = &a+1; printf(“%c”, *pc); printf("%d" , j);

4
} b. stdio.h
Kết quả in ra là: c. stdlib.h
a. 3 d. math.h
b. 5 Câu 37:
c. 15 Chọn phát biểu đúng:
d. Sai cú pháp a. Biến cục bộ được khai báo trong thân hàm
Câu 35: và vùng bộ nhớ lưu trữ biến cục bộ được
Cho đoạn code: giải phóng khi chương trình kết thúc
void main() b. Biến cục bộ được khai báo trong thân hàm
{ và vùng bộ nhớ lưu trữ biến cục bộ được
double a[2], *p, *q; giải phóng khi hàm kết thúc
p = a; c. Biến cục bộ được khai báo ngoài thân hàm
q = p + 1; và vùng bộ nhớ lưu trữ biến cục bộ được
printf("%d ",q-p); giải phóng khi hàm kết thúc
printf("%d ",(int)q-(int)p); d. Biến cục bộ được khai báo ngoài thân hàm
} và vùng bộ nhớ lưu trữ biến cục bộ được
Kết quả in ra là: giải phóng khi chương trình kết thúc
a. 1 8 Câu 38:
b. 1 2 Cho mảng a: [6 -7 -3 15 2]
c. Kết quả khác Khi đó, giá trị của a[1] là:
d. Sai cú pháp a. 6
b. -7
Câu 36: c. -3
Hàm fabs() nằm trong thư viện: d. 2
a. conio.h

-----------------------------------------------------HẾT-------------------------------------------------
CHÚC CÁC ANH/CHỊ SINH VIÊN LÀM BÀI TỐT

You might also like