Trắc nghiệm ngôn ngữ lập trình C

1 - Chọn (các) phát biểu đúng. Biết rằng mã ASCII của ’A’ là 65.

 

[a]--Mã ASCII hệ 16 của ký tự ’D’ là 44h

[b]--Mã ASCII hệ 2 của ’E’ là 01000101b

[c]--Mã ASCII hệ 10 của ’L’ là 76

[d]--Tất cả các câu trên đều đúng

 

2 - Để phép cộng trên hai số cho kết qủa đúng, hai số này phải được biểu diễn bằng:

[a]--Mã nhị phân của chúng

[b]--Mã thập phân của chúng

[c]--Mã ASCII của ký số

[d]--Tất cả đều sai

 

3 - Khi gán trị mới cho một dữ liệu thì .

[a]--Giá trị cũ còn tồn tại

[b]--Giá trị cũ tạm thời mất đi

[c]--Trị cũ bị mất đi

[d]--Tùy thuộc vào người sử dụng có sao lưu hay không

 

4 - Một lệnh máy (chỉ thị mà CPU phải thực thi) là

[a]--Một lệnh nhị phân.

[b]--Một lệnh thập phân.

[c]--Một lệnh theo một ngôn ngữ cấp cao.

[d]--Tất cả đều sai

 

5 - Chương trình máy tính là .

[a]--Một tập các phát biểu theo một ngôn ngữ cấp cao.

[b]--Chương trình word.exe.

[c]--Một tập các lệnh máy

[d]--Tất cả các câu trên đều sai.

 

doc105 trang | Chia sẻ: netpro | Lượt xem: 4485 | Lượt tải: 5download
Bạn đang xem trước 20 trang tài liệu Trắc nghiệm ngôn ngữ lập trình C, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
àm nhập mật khẩu như sau: char *Password(){ char c, *t, *s;  s = t = (char *)malloc(20);  printf("\nType pasword: "); while ((c=getch()) != "\x0D") { putch("\x2A"); *s++ = c; } *s = "\0"; return t;  } Bạn có nhận xét gì? [a]--Khi gõ mật khẩu không nhìn thấy gì trên màn hình [b]--Khi gõ mật khẩu, các ký tự hiện ra thành chữ D [c]--Khi gõ mật khẩu, các ký tự hiện ra thành dấu sao(*) [d]--Khi gõ mật khẩu, các ký tự hiện ra thành chữ A 8 - Đoạn chương trình sau đây có chức năng chuyển vị một ma trận vuông, tức là đảo hàng thành cột và cột thành hàng nhưng chưa được thử nghiệm:  1/ for (int i = 0; i < n; i++) 2/ for (int j = i + 1; j < n; j++) 3/ { int x = m[i][j];  4/ m[j][i] = m[i][j];  5/ m[j][i] = x;  6/ } Bạn có dự đoạn gì về kết quả của đoạn chương trình này? [a]--Ma trận trở thành đối xứng qua đường chéo chính [b]--Ma trận không hề thay đổi [c]--Ma trận chuyển vị đúng như ý đồ lập trình [d]--Ma trận chuyển vị không như ý đồ lập trình 9 - Đoạn chương trình sau dùng để in lên màn hình một mảng hai chiều dưới dạng bảng có n hàng và m cột, nhưng khi chạy kết quả lại không đúng như ý đồ lập trình vì dòng thứ 4 bị sai:  1/ for (int i = 0; i < n; i++) 2/ { for (int j = 0; j < m; j++) 3/ printf("%4d", a[i][j]);  4/ printf("\t"); 5/ } Bạn hãy chọn phương án sửa dòng sai đó: [a]--printf("/n"); [b]--printf("\n"); [c]--printf("\b"); [d]--printf("\o") 10 - Khi thực hiện đoạn lệnh sau chương trình sẽ bị lỗi nhưng vẫn in kết quả x1 và x2.  1| float a = 1.0, b = 2.0, c = 4.0, x1 = 0.0,  2| x2 = 0.0; delta = b*b - 4 * a*c;  3| if (delta < 0.0) printf("\nVo nghiem"); 4| else if (fabs(delta) <= 0.0001) x1 = x2 = -b/2/a;  5| else 6| x1 = (-b + sqrt(delta))/2/a;  7| x2 = (-b - sqrt(delta))/2/a;  8| printf("\nx1 = %8.2f, x2 = %8.2f", x1, x2);  Cho biết giá trị x1 và x2 mà chương trình in ra: [a]--x1 = 0.00, x2 = 0.00 [b]--x1 = 0.00, x2 = +NAN] [c]--x1 = 0.00, x2 = -2.00 [d]--Tất cả đều sai Bottom of Form    Solutions! --------  Question 1 a Question 2 d Question 3 a Question 4 c Question 5 b Question 6 b Question 7 c Question 8 a Question 9 b Question 10 b Trắc nghiệm ngôn ngữ lập trình C - Bài 11 Top of Form 1 - Câu lệnh return được sử dụng để : [a]--Kết thúc hàm [b]--Mô tả một hàm là không có giá trị trả về [c]--Mô tả kiểu của hàm [d]--Trả giá trị về cho một hàm 2 - Cho hàm sau:  void Invers(char *s)  { char *t = s + strlen(s) - 1;  while (s < t)  { char c = *s;  *s++ = *t;  *t-- = c;  } } Cho xâu S = "ESTIH". Lời gọi Invers(S);  sẽ làm xâu S thay đổi như thế nào? [a]--"EHIST" [b]--"EstiH" [c]--"HITSE" [d]--"estih" 3 - Lệnh in sau đây cho kết quả trên màn hình như thế nào? printf("\nPI = %8.3f", M_PI);  biết M_PI = 3.1415926. [a]--3.14 [b]--3.142 [c]--3.142 [d]--3.1415926 4 - Kiểu int của ngôn ngữ Turbo C trên máy PC có miền giá trị trong khoảng nào ? [a]---128 đến 127 [b]--0 đến 255 [c]--0 đến 65535 [d]---32768 đến 32767 5 - Kiểu unsigned char của ngôn ngữ Turbo C có giá trị trong khoảng nào? [a]---128 đến 127 [b]--0 đến 255 [c]--0 đến 65535 [d]---32768 đến 32767 6 - Cho khai báo sau:  struct HocSinh { char HoTen[20]; float DTK; }; void Nhap(HocSinh *h)  { printf("\nHo va ten : "); gets(h->HoTen);  printf("\nDiem tong ket: ");  float x; scanf("%f", &x); h->DTK = x;  } Bình thường dịch đoạn này không có lỗi, nhưng khi cài đặt lại Borland C thì dịch lại có lỗi. Cho biết một nguyên nhân của hiện tượng trên. [a]--Chương trình dịch bị sai [b]--Máy có trục trặc [c]--Tệp chương trình có phần mở rộng .C [d]--Chưa khai báo đủ 7 - Cho đoạn chương trình sau:  int a = 5, b = 6, c = 7, d = 8;  int k = a == b or c == d;  k bằng bao nhiêu? [a]--0 [b]--1 [c]--2 [d]--3 8 - Cho đoạn chương trình sau: clrscr(); gotoxy(20, 5);  printf("%d", a);  Cho biết khi thực hiện đoạn chương trình này, giá trị a sẽ được in ra ở vị trí nào trên màn hình. [a]--Cột 20 dòng 5 [b]--Cột 5 dòng 20 [c]--Cột 0 dòng 25 [d]--Góc trái trên cùng của màn hình 9 - Cho đoạn chương trình sau: int f = creat("DULIEU.DAT", S_IREAD);  int a = {1, 2, 3, 4}; write(f, a, 6);  close(f)  f = creat("DULIEU.DAT", S_IWRITE);  write(f, a, 8);  close(f);  Cho biết sau khi thực hiện đoạn chương trình này, tệp DULIEU.DAT trên đĩa có dung lượng bao nhiêu byte. [a]--4 [b]--6 [c]--8 [d]--16 10 - Cho hàm sau: void Invers(char *s)  { int i = 0, j = strlen(s) - 1;  while (i < j)  { char c = s[i];  s[i++] = s[j];  s[j--] = c;  } } Cho xâu S = "VIET NAM". Lời gọi Invers(S);  Sẽ làm xâu S thay đổi như thế nào? [a]--" AEIMNTV" [b]--"viet nam" [c]--"Viet Nam" [d]--"MAN TEIV" Bottom of Form    Solutions! --------  Question 1 d Question 2 c Question 3 b Question 4 d Question 5 b Question 6 c Question 7 a Question 8 d Question 9 b Question 10 d Trắc nghiệm ngôn ngữ lập trình C - Bài 12 Top of Form 1 - Cho biết kết quả thực hiện đoạn chương trình sau: i = s = 0;  while (i <= 10)  s += i++; [a]--45 [b]--55 [c]--65 [d]--75 2 - Cho biết biến f sau khi thực hiện sau dòng lệnh sau có giá trị bao nhiêu:  float f = 3/5; [a]--0.60 [b]--0.75 [c]--0.00 [d]--0.33 3 - k trong biểu thức sau đây nhận giá trị là bao nhiêu:  int k = (a > b or c > d);  biết a = 1, b = 2, c = 4, d = 3. [a]--0 [b]--1 [c]--2 [d]--3 4 - Cho đoạn chương trình sau: int a = 0;  switch (a)  { case 0: printf("Red "); case 1: printf("Green "); break;  case 2: printf("Blue "); case 3: printf("White "); break;  } Kết quả thực hiện cấu trúc trên đây sẽ như thế nào? [a]--Red [b]--Red Green [c]--Red Green Blue [d]--Green Blue 5 - Cho đoạn chương trình sau:  a = 1;  if (a)  b = 0;  else b = 1;  Cho biết sau khi thực hiện đoạn lệnh này b có giá trị là bao nhiêu? [a]--0 [b]--1 [c]--2 [d]--3 6 - Cho đoạn chương trình sau: int f = creat("test.dat", S_IWRITE);  int a[] = {1, 2, 3}; write(f, a, 4);  close(f);  Cho biết tệp test.dat sau khi thực hiện đoạn trình này có dung lượng bao nhiêu byte. [a]--6 [b]--5 [c]--4 [d]--3 7 - Cho đoạn lệnh sau:  a = 0;  if (a == 5)  b = 0;  else b = 1;  Cho biết sau khi thực hiện đoạn lệnh này b có giá trị là bao nhiêu? [a]--0 [b]--1 [c]--5 [d]--6 8 - Đoạn chương trình sau đây có chức năng chuyển vị một ma trận vuông, tức là đảo hàng thành cột và cột thành hàng nhưng chưa được thử nghiệm:  1/ for (int i = 0; i < n; i++) 2/ for (int j = i + 1; j < n; j++) 3/ { int x = m[i][j];  4/ m[i][j] = m[j][i];  5/ m[j][i] = x;  6/ } Bạn có dự đoạn gì về kết quả của đoạn chương trình này? [a]--Ma trận có thay đổi nhưng không chuyển vị [b]--Ma trận không hề thay đổi [c]--Ma trận chuyển vị đúng như ý đồ lập trình [d]--Ma trận chuyển vị không như ý đồ lập trình 9 - Sau khi thực hiện các lệnh sau, bạn thấy gì trên màn hình:  clrscr(); textattr(YELLOW + (RED << 4));  cprintf("ESTIH"); [a]--Dòng chữ ESTIH màu vàng trên nền đỏ [b]--Dòng chữ ESTIH màu đỏ trên nền vàng [c]--Dòng chữ ESTIH nhấp nháy [d]--Không hiển thị gì 10 - Cho đoạn chương trình sau:  int a = 1;  switch (a)  { case 0: printf("Red "); case 1: printf("Green "); break;  case 2: printf("Blue "); case 3: printf("White "); break;  } Kết quả thực hiện cấu trúc trên đây sẽ như thế nào? [a]--Red Green [b]--Green [c]--Blue [d]--Red Green Blue Bottom of Form    Solutions! --------  Question 1 a Question 2 c Question 3 b Question 4 b Question 5 a Question 6 c Question 7 b Question 8 c Question 9 a Question 10 b Trắc nghiệm ngôn ngữ lập trình C - Bài 13 Top of Form 1 - Đoạn chương trình sau thì có 2 lỗi. Chỉ cần thay đổi vị trí của một lệnh trong đó thì cả hai lỗi cùng được sửa.  1/ int n = 0, A[1000];  2/ do { 3/ printf("\nCho mot so nguyen: "); 4/ scanf("%d", &A[n++]); 5/ printf("\nBan co muon nhap nua khong?");  6/ char c;  7/ c = getch(); 8/ } while (c == "c" or c == "C"); Bạn sẽ sửa như thế nào? [a]--Cho dòng 1 vào trong vòng lặp [b]--Cho dòng 5 ra ngoài vòng lặp [c]--Xoá bỏ dòng số 6 [d]--Đưa dòng 6 lên trước vòng lặp 2 - Cho khai báo sau:  typedef struct HocSinh { char HoTen[20];  float DTK; };  void Nhap(HocSinh *h)  { printf("\nHo va ten : "); gets(h.HoTen);  printf("\nDiem tong ket: "); float x; scanf("%f", &x); h.DTK = x;  } HocSinh H[50];  Khi chạy chương trình này và dùng hàm trên đây để nhập các thành phần của mảng H thì chỉ bản ghi đầu tiên cho phép nhập trường HoTen. Cho biết cách xử lý. [a]--Khai báo mảng H nhỏ đi [b]--Thêm lệnh fflush(stdin) vào chỗ thích hợp [c]--Thay lệnh gets bằng lệnh scanf [d]--Thay lệnh gets bằng lệnh fgets 3 - Khi chạy đoạn chương trình sau đây thì chương trình bị quẩn không thoát ra được:  1/ int n = 0, A[1000];  2/ char c;  3/ do { 4/ printf("\nCho mot so nguyen: "); 5/ scanf("%d", &A[n++]); 6/ printf("\nBan co muon nhap nua khong?");  7/ c = getch(); 8/ } while (!(c == "c" && c == "C")); Bạn chọn cách sửa nào trong số các phương án sau: [a]--Dòng 5 : scanf("%d", &A[n]); [ [b]--Xoá bỏ dòng 7 [c]--Dòng 8 : } while (!(c == "c" or c == "C")); [d]--Xoá bỏ dòng 4 4 - Hàm sau đây dùng để phân loại một học sinh theo điểm tổng kết :  char *PL(float d)  { if (d >= 8.0) return "gioi"; else if (d >= 6.0) return "kha"; else if (d >= 5) return "trung binh"; else if (d < 5) return "kem"; } Khi dịch nhận được cảnh báo: Function should return a value. Cần phải sửa lại dòng lệnh cuối cùng của hàm thế nào cho đúng? [a]--else return "kem"; [b]--else if (d 0) return "kem"; [c]--else if (d <= 5) return "kem"; [d]--return "kem" 5 - Cho đoạn chương trình sau:  int f = creat("DULIEU.DAT", S_IREAD);  int a = {1, 2, 3, 4};  write(f, a, 8);  close(f)  Cho biết sau khi thực hiện đoạn chương trình này, tệp DULIEU.DAT trên đĩa có dung lượng bao nhiêu byte. [a]--0 [b]--4 [c]--6 [d]--8 6 - Cho hàm sau:  void Upper(char *s)  { while (*s)  { if (*s >= 97 && *s <= 122)  *s -= 32;  s++; } } Cho xâu S = "ha noi" thì kết quả của lời gọi hàm:  Upper(S);  Sẽ làm xâu S thay đổi như thế nào? [a]--"ion ah" [b]--" ahino" [c]--"HA NOI" [d]--"Ha Noi" 7 - Cho biết kết quả thực hiện đoạn chương trình sau:  c = "a"- 1;  while (c < "d") printf("%c", ++c); [a]--aaaa [b]--abdc [c]--acbd [d]--abcd 8 - Kiểu int của ngôn ngữ Turbo C trên máy PC chiếm mấy byte trong bộ nhớ? [a]--4 [b]--3 [c]--2 [d]--1 9 - Cho biết kết quả của đoạn chương trình sau:  for (i = 1, s = 0; i <= 10; s += i++); [a]--s = 33 [b]--s = 55 [c]--s = 77 [d]--s = 99 10 - Bảng mã ASCII mở rộng có bao nhiêu ký tự? [a]--128 [b]--256 [c]--512 [d]--65535 Bottom of Form    Solutions! --------  Question 1 d Question 2 b Question 3 c Question 4 a Question 5 d Question 6 c Question 7 d Question 8 c Question 9 b Question 10 b Trắc nghiệm ngôn ngữ lập trình C - Bài 14 Top of Form 1 - Sau khi thực hiện đoạn chương trình sau, a có giá trị là bao nhiêu?  i = a = 0;  do { a += i++; } while (i <= 8); [a]--8 [b]--16 [c]--26 [d]--36 2 - Cho biết hàm sau đây có thể dùng để tính giai thừa cho số nguyên dương lớn nhất là bao nhiêu?  int GT(int n)  { int g = 1;  for (int i = 2; i <= n; i++) g *= i;  return g;  } [a]--7 [b]--9 [c]--10 [d]--20 3 - Cho biết khi thực hiện câu lệnh sau. biến k có giá trị là bao nhiêu? int k = (a > b)? 10:20;  Biết a = 200, b = 100. [a]--10 [b]--20 [c]--100 [d]--200 4 - Cho các dòng khai báo sau:  void main() { int m[5] = {2, 3, 7}; printf("%d", m[4]);  Cho biết dòng trên đây in ra số nào? [a]--7 [b]--3 [c]--0 [d]--Không thể biết trước 5 - Cho các dòng khai báo sau:  int m[5] = {2, 3, 7}; void main() { printf("%d", m[4]);  Cho biết dòng trên đây in ra số nào? [a]--7 [b]--2 [c]--0 [d]--3 6 - k trong biểu thức sau đây nhận giá trị là bao nhiêu:  int k = (a > b && c > d);  biết a = 1, b = 2, c = 4, d = 3. [a]--0 [b]--1 [c]--2 [d]--3 7 - Cho đoạn chương trình sau:  int a = 5, b = 5, c;  if (--a > --b)  c = 10;  else if (--a > b--) c = 20;  else c = 30;  Cho biết khi thực hiện xong đoạn trình này c có giá trị là bao nhiêu? [a]--5 [b]--10 [c]--20 [d]--30 8 - Cho đoạn chương trình sau:  clrscr(); gotoxy(20, 5);  cprintf("%d", a);  Cho biết khi thực hiện đoạn chương trình này, giá trị a sẽ được in ra ở vị trí nào trên màn hình. [a]--Cột 5 dòng 20 [b]--Cột 20 dòng 5 [c]--Góc phải dưới cùng của màn hình [d]--Góc trái trên cùng của màn hình 9 - Lệnh clrscr() dùng để làm gì? [a]--Xoá sạch màn hình [b]--Xoá sạch bộ nhớ [c]--Xoá sạch vùng đệm bàn phím của C [d]--Chờ nhấn một nút bất kỳ 10 - Lệnh fflush(stdin) dùng để làm gì? [a]--Xoá sạch màn hình [b]--Xoá sạch bộ nhớ [c]--Xoá sạch vùng đệm bàn phím của C [d]--Chờ nhấn một nút bất kỳ Bottom of Form    Solutions! --------  Question 1 d Question 2 a Question 3 a Question 4 d Question 5 c Question 6 a Question 7 d Question 8 b Question 9 a Question 10 c Trắc nghiệm ngôn ngữ lập trình C - Bài 15 Top of Form 1 - Cho biết kết quả thực hiện đoạn chương trình sau:  i = s = 0;  while (i++ <= 10)  s += i++; [a]--45 [b]--35 [c]--25 [d]--10 2 - Trong phần định nghĩa hàm dưới đây, chương trình dịch phát hiện có lỗi. Đó là lỗi nào?  int IsPrime(int n)  { int i = 2;  while (i*i <= n)  if (!(n%i)) return 0 else i++; return 1;  } [a]--Return statement mising ; [b]--Function should return a value [c]--While statement mising ) [d]--Tất cả đều sai 3 - Cho khai báo sau:  1/ typedef struct HocSinh { char HoTen[20];  2/ float DTK; };  3/ void Xuat(HocSinh h)  4/ { printf("\nHo va ten : %s", h->HoTen);  5/ printf("\nDiem tong ket: %6.2f", h->DTK);  7/ } Dòng 4 và dòng 5 của đoạn này có lỗi biên dịch. Hãy chọn phương án sửa hợp lý: [a]--Sửa h-> thành ->h [b]--Sửa h-> thành *h. [c]--Sửa h-> thành h* [d]--Sửa h-> thành h. 4 - Trong môi trường Turbo C trên máy PC, biến kiểu int khác biến kiểu char về bản chất ở điểm nào? [a]--char là kiểu ký tự, còn int là kiểu số nguyên [b]--int có miền giá trị âm, char mặc định là không â [c]--char chiếm 1 byte trong bộ nhớ, int chiếm 2 byte [d]--Không tính toán được trên kiểu char 5 - Muốn dùng hàm khai căn một số thực sqrt phải khai báo tệp tiêu đề nào? [a]--conio.h [b]--stdlib.h [c]--string.h [d]--math.h 6 - Cho biết hàm sau đây có chức năng gì? unsigned long Factorial(int n)  { if (n == 1) return 1;  else return n*Factorial(n-1);  } [a]--Tính tổng n số tự nhiên đầu tiên [b]--Tính giai thừa của một số nguyên dương [c]--Tính luỹ thừa bậc n của một số nguyên [d]--Tính tổng n số lẻ đầu tiên 7 - Cho dòng khai báo sau:  int m[] = {2, 3, 7}; Cho biết trình biên dịch của C sẽ cấp phát cho mảng m bộ nhớ đủ cho bao nhiêu phần tử. [a]--3 [b]--4 [c]--5 [d]--6 8 - Đoạn chương trình sau tính tổng các phần tử của một mảng hai chiều n hàng m cột nhưng kết quả khi chạy thử lại sai hoàn toàn:  1/ int T = 0;  2/ for (int i = 1; i <= n; i++) 3/ for (int j = 0; j < m; j++) 4/ T += m[i][j];  Bạn hãy chọn phương án sửa dòng sai đó: [a]--Sửa dòng 2 thành for (int i = 0; i < n; i++) [b]--Sửa dòng 3 thành for (int j = 1; i <= n; i++) [c]--Sửa dòng 4 thành T = T + m[i][j]; [d]--Sửa dòng 1 thành float T = 0; 9 - Giả sử trên đĩa đã có tệp TEST.DAT có dung lượng 20 byte. Cho thực hiện đoạn chương trình sau:  int f = open("TEST.DAT", O_RDONLY/O_BINARY);  int a[11];  for (int i = 0; i < 11; i++) a[i] = 0;  int k = read(f, a, 22);  Bạn dự đoán xem sau lệnh read phần tử a[10] có giá trị là bao nhiêu. [a]--100 [b]--60 [c]--22 [d]--0 10 - Hàm định nghĩa dưới đây nhằm tìm số lớn nhất trong một mảng số nguyên nhưng có một ký tự bị xoá và thay vào đó là dấu ba chấm.  int Max(int *m, int n)  { int M = m[0];  for (int i = 1; i < n; i++) if (M ... m[i]) M = m[i];  return M;  } Ký tự bị xoá là ký tự nào? [a]--> [b]--= [c]--+ [d]--< Bottom of Form    Solutions! --------  Question 1 c Question 2 a Question 3 d Question 4 c Question 5 d Question 6 b Question 7 a Question 8 a Question 9 d Question 10 d Trắc nghiệm ngôn ngữ lập trình C - Bài 16 Top of Form 1 - Cho biết hàm sau đây có chức năng gì:  float T(float *m, int n)  { float t = 0.0;  for (int i = 0; i < n; i++) t += m[i];  return t;  } [a]--Tìm phần tử lớn nhất trong mảng [b]--Tính giá trị trung bình của mảng [c]--Tính tổng các phần tử của mảng [d]--Tính tổng các số chẵn 2 - Kiểu float của ngôn ngữ Turbo C trên máy PC chiếm mấy byte trong bộ nhớ? [a]--4 [b]--2 [c]--1 [d]--0 3 - Cho đoạn chương trình sau:  int a = 5, b = 5, c;  if (++a > ++b)  c = 10;  else if (++a > b++) c = 20;  else c = 30;  Cho biết khi thực hiện xong đoạn trình này c có giá trị là bao nhiêu? [a]--5 [b]--10 [c]--20 [d]--30 4 - Cho khai báo sau:  1/ struct HocSinh { char HoTen[20]; float DTK; }; 2/ void Nhap(HocSinh *h)  3/ { printf("\nHo va ten : "); gets(h->HoTen);  4/ printf("\nDiem tong ket: "); 5/ float x; scanf("%f", &x); h->DTK = x;  6/ } Khi dịch chương trình thì dòng thứ 2 của đoạn này có lỗi: 'HocSinh cannot start a parameter declaration'.  Cho biết một cách khắc phục. [a]--Thêm từ khoá typedef vào đầu dòng 1 [b]--Thêm từ khoá typedef vào dòng có lỗi [c]--Sửa lại tên HocSinh thành chữ thường [d]--Xoá bỏ dòng 5 5 - Một mảng động gồm n phần tử số nguyên được cấp phát bằng lệnh sau:  int *m = (int *)malloc(n*sizeof(int));  Nếu n = 10 thì mảng này chiếm bao nhiêu byte trong bộ nhớ? [a]--10 byte [b]--20 byte [c]--40 byte [d]--80 byte 6 - typedef struct CanBo { char *HoTen; int NamSinh;};  void Nhap(CanBo *cb)  { char ht[20];  printf("\nHo va ten : "); gets(ht);  cb->HoTen = (char *)malloc(strlen(ht)+1);  strcpy(cb->Hoten, ht); printf("\nNam sinh : ");  scanf("%d", &cb->NamSinh);  } Với cách tổ chức dữ liệu như trên thì các bản ghi kiểu CanBo thực tế trong khi chương trình làm việc được cấp phát lượng bộ nhớ cố định hay không? [a]--Cố định [b]--Không cố định [c]--Tuỳ theo chiều dài của họ tên nhập vào [d]--Tất cả đều sai. 7 - Cho đoạn chương trình sau:  int a = random(3);  switch (a)  { case 0:;  case 1:;  case 2: printf("Blue "); break;  case 3: printf("White "); break;  } Sau khi thực hiện cấu trúc trên đây sẽ thấy gì trên màn hình? [a]--Blue [b]--White [c]--Blue White [d]--Không có gì 8 - Đoạn chương trình sau đây có chức năng chuyển vị một ma trận vuông, tức là đảo hàng thành cột và cột thành hàng nhưng chưa được thử nghiệm:  1/ for (int i = 0; i < n; i++) 2/ for (int j = 0; j < n; j++) 3/ { int x = m[i][j];  4/ m[i][j] = m[j][i];  5/ m[j][i] = x;  6/ } Bạn có dự đoán gì về kết quả của đoạn chương trình này? [a]--Ma trận có thay đổi nhưng không chuyển vị [b]--Ma trận không hề thay đổi [c]--Ma trận chuyển vị đúng như ý đồ lập trình [d]--Ma trận chuyển vị không theo ý đồ lập trình 9 - Cho đoạn chương trình sau:  int a = 5, b = 6, c = 7, d = 8;  int k = a = b && c - d;  k bằng bao nhiêu? [a]--0 [b]--1 [c]--2 [d]--3 10 - Cho khai báo sau:  typedef struct CanBo { char HoTen[20]; int NamSinh;};  void Nhap(CanBo *cb)  { printf("\nHo va ten : "); gets(cb->HoTen);  printf("\nNam sinh : ");  scanf("%d", &cb->NamSinh);  } Với cách tổ chức dữ liệu như trên thì các bản ghi kiểu CanBo thực tế trong khi chương trình làm việc được cấp phát lượng bộ nhớ cố định hay không? [a]--Cố định [b]--Không cố định [c]--Tuỳ theo chiều dài của họ tên nhập vào [d]--Tất cả đều sai Bottom of Form    Solutions! --------  Question 1 c Question 2 a Question 3 c Question 4 a Question 5 b Question 6 c Question 7 a Question 8 b Question 9 b Question 10 a Trắc nghiệm ngôn ngữ lập trình C - Bài 17 Top of Form 1 - Cho đoạn lệnh sau: a = 0;  if (a)  b = 0;  else b = 1;  Cho biết sau khi thực hiện đoạn lệnh này b có giá trị là bao nhiêu? [a]--0 [b]--1 [c]--2 [d]--3 2 - Hàm sau đây sắp xếp một mảng một chiều tăng dần:  1/ void SapXep(int *m, int n)  2/ { for (int i = 0; i < n - 1; i++) 3/ for (int j = i + 1; j < n; j++) 4/ if (m[j] < m[i])  5/ { int t = m[j];  6/ m[i] = m[j];  7/ m[i] = t;  8/ } 9/ } Nhưng khi chương trình chạy lại cho kết quả sắp xếp sai. Nguyên nhân lỗi ở dòng nào? [a]--2 [b]--4 [c]--6 [d]--8 3 - Cho đoạn chương trình sau:  1/ int b;  2/ int f = open("DULIEU.DAT", O_RDONLY/O_BINARY);  3/ read(f, b, 2);  4/ close(f);  Đoạn chương trình trên có lỗi về kiểu dữ liệu. Cho biết phương án sửa. [a]--Dòng 1 sửa thành: char b; [b]--Dòng 2 sửa thành: FILE *f = open(.... [c]--Dòng 3 sửa thành: read(f, &b, 2); [d]--Dòng 4 sửa thành: close(&f) 4 - Giả sử trên đĩa đã có tệp TEST.DAT có dung lượng 20 byte. Cho thực hiện đoạn chương trình sau:  int f = open("TEST.DAT", O_RDONLY/O_BINARY);  int a[40];  int k = read(f, a, 40);  Bạn dự đoán xem sau lệnh read biến k có giá trị là bao nhiêu. [a]--60 [b]--40 [c]--30 [d]--20 5 - Trong phần định nghĩa hàm dưới đây, chương trình dịch phát hiện có lỗi. Đó là lỗi nào?  int IsPrime(int n)  { int i = 2;  while (i*i <= n)  if (!(n%i)) return 0;  else i++; } [a]--Return statement mising ; [b]--Function should return a value [c]--Do statement mising } [d]--Tất cả đều sai 6 - Mã ASCII của ký tự "A" viết trong hệ thập phân là bao nhiêu? [a]--41 [b]--75 [c]--65 [d]--97 7 - Sau khi thực hiện đoạn chương trình sau, a có giá trị là bao nhiêu?  i = a = 0;  do { a += ++i;  } while (i <= 8); [a]--25 [b]--45 [c]--65 [d]--85 8 - Cho khai báo sau:  typedef struct HocSinh { char HoTen[20];  float DTK; };  HocSinh *H;  void main() { int n;  printf("\nCho so hoc sinh: "); scanf("%d", &n);  H = (HocSinh *)malloc(n*sizeof(HocSinh));  Cho biết nếu n nhập vào là 40 thì lượng bộ nhớ cấp phát cho mảng H là bao nhiêu byte? [a]--960 byte [b]--1026 byte [c]--4096 byte [d]--1048 byte 9 - Kiểu double của ngôn ngữ Turbo C trên máy PC chiếm mấy byte trong bộ nhớ? [a]--2 [b]--4 [c]--8 [d]--16 10 - Một biến thuộc cấu trúc sau đây chiếm bao nhiêu byte trong bộ nhớ: [a]--25 [b]--26 [c]--27 [d]--28 Bottom of Form    Solutions! --------  Question 1 b Question 2 b Question 3 c Question 4 d Question 5 b Question 6 c Question 7 b Question 8 a Question 9 c Question 10 b Trắc nghiệm ngôn ngữ lập trình C - Bài 18 Trắc nghiệm ngôn ngữ lập trình C - Bài 19 Top of Form 1 - Giả sử có các khai báo biến và các phép gán như sau :  int i, *p;  float x, *q;  1. p = &i;  2. q = i;  3. p = &x;  4. q = x;  5. q = & x;  Các phép gán không hợp lệ là [a]--1, 3, 4, 5 [b]--3, 4 [c]--1, 2 , 4 [d]--2, 3, 5 2 - Trong đoạn chương trình sau có một dòng bị lỗi, trong đó cần điền thêm một ký tự vào chỗ có dấu chấm chấm:  if (i == 5)  { k += m + ...;  t *= k;  } else printf("\nKet thuc.");  Chọn một trong các ký tự sau để điền vào chỗ chấm chấm theo ý bạn sao cho hợp lý: [a]--< [b]--> [c]--- [d]--+ 3 - Cho đoạn chương trình sau: int a = 0;  switch (a)  { case 0: printf("Red "); case 1: printf("Green "); break;  case 2: printf("Blue "); case 3: printf("White "); break;  } Kết quả thực hiện cấu trúc trên đây sẽ như thế nào? [a]--Red [b]--Red Green Blue [c]--Red Green [d]--Green Blue 4 - Cho đoạn chương trình sau: int f = creat("test.dat", S_IWRITE);  int a[] = {1, 2, 3}; write(f, a, 4);  close(f);  Cho biết tệp test.dat sau khi thực hiện đoạn trình này có dung lượng bao nhiêu byte [a]--1 [b]--2 [c]--3 [d]--4 5 - Đoạn chương trình sau đây có chức năng chuyển vị một ma trận vuông, tức là đảo hàng thành cột và cột thành hàng nhưng chưa được thử nghiệm:  1/ for (int i = 0; i < n; i++) 2/ for (int j = i + 1; j < n; j++) 3/ { int x = m[i][j];  4/ m[i][j] = m[j][i];  5/ m[j][i] = x;  6/ } Bạn có dự đoạn gì về kết quả của đoạn chương trình này? [a]--Ma trận chuyển vị đúng như ý đồ lập trình [b]--Ma trận không hề thay đổi [c]--Ma trận có thay đổi nhưng không chuyển vị [d]--Ma trận chuyển vị không như ý đồ lập trình 6 - Cho đoạn chương trình sau:  int a = 1;  switch (a)  { case 0: printf("Red "); case 1: printf("Green "); break;  case 2: printf("Blue "); case 3: printf("White "); break;  } Kết quả thực hiện cấu trúc trên đây sẽ như thế nào? [a]--Red Green Blue [b]--Blue [c]--Green [d]--Red 7 - Hàm sau đây dùng để phân loại một học sinh theo điểm tổng kết :  char *PL(float d)  { if (d >= 8.0) return "gioi"; else if (d >= 6.0) return "kha"; else if (d >= 5) return "trung binh"; else if (d < 5) return "kem"; } Khi dịch nhận được cảnh báo: Function should return a value. Cần phải sửa lại dòng lệnh cuối cùng của hàm thế nào cho đúng? [a]--else if (d 0) return "kem"; [b]--else if (d <= 5) return "kem"; [c]--else return "kem"; [d]--return "kem" 8 - Cho hàm sau:  void Upper(char *s)  { while (*s)  { if (*s >= 97 && *s <= 122)  *s -= 32;  s++; } } Cho xâu S = "ha noi" thì kết quả của lời gọi hàm:  Upper(S);  Sẽ làm xâu S thay đổi như thế nào? [a]--"Ha Noi" [b]--"ion ah" [c]--"ahino" [d]--"HA NOI" 9 - Cho biết kết quả thực hiện đoạn chương trình sau:  c = "a"- 1;  while (c < "d") printf("%c", ++c); [a]--abcd [b]--acbd [c]--aaaa [d]--adbc 10 - Cho biết hàm sau đây có thể dùng để tính giai thừa cho số nguyên dương lớn nhất là bao nhiêu?  int GT(int n)  { int g = 1;  for (int i = 2; i <= n; i++) g *= i;  return g;  } [a]--5 [b]--6 [c]--7 [d]--8 Bottom of Form    Solutions! --------  Question 1 b Question 2 d Question 3 c Question 4 d Question 5 a Question 6 c Question 7 c Question 8 d Question 9 a Question 10 c Trắ

Các file đính kèm theo tài liệu này:

  • docTrắc nghiệm ngôn ngữ lập trình C.doc
  • pdfThi C -90cau.pdf