Câu hỏi ôn tâp học kỳ 2 Để lưu trữ ngày, tháng, năm, một HS đã định nghĩa và khai báo biến 1 bản ghi như sau: Type date = record day, month, year : integer; End; Var D: date; Câu 1)Để nhập giá trị cho trường day ta viết lệnh nào sau đây: a) Readln(day); b) Readln (date.day); c) Readln (D.date); d) Readln (D.day); Câu 2)Lệnh gán nào sau đây là không hợp lệ: a) D.day:= - 28; b) D.year:= 2010; c) D. Month:= 10.5; d) D. Day:= 0; Câu 3)Với khai báo Var birthdays : array[1 10] of date, lệnh gán nào sau đây không hợp lệ: a) Birthdays.month := 3; b) Birthdays[2].day := 26; c) Birthday[1].year := birthdays[10].year; d) Birthdays[4].month := 12; Câu 4)Để lưu trữ danh sách học sinh gồm các thông tin: họ tên, lớp, điểm trung bình, ta dùng kiểu dữ liệu nào sau đây: a) Xâu, số nguyên, số thực. b) Một mảng các xâu, số thực. c) Một mảng các bản ghi. d) Xâu và số thực. Câu 5)Khai báo biến xâu nào sau đây là không hợp lệ: a) Var st: string[1]; b) Var st:string [256]; c) Var st: string; d) Var st: string[100]; Câu 6)Cho 2 xâu sau: a:= ‘ thien ho duong’; b:= ‘THIENHODUONG’; Phát biểu nào là đúng: a) Xâu a bằng xâu b. b) Xâu a > xâu b. c) Xâu a < xâu b. d) Xâu a < = xâu b Câu 7)Cho xâu s1:= ‘hau my’. Để có xâu ‘my’, ta dùng chương trình con nào sau đây: a) delete(s1,1,4) b) delete(s1,5,2) c) copy(s1,5,2) d) d. cả a và c đều đúng. Câu 8)Hàm pos(‘la’, ‘la la la’) trả lại giá trị là bao nhiêu: a) 1 1 b) 2 c) 4 d) 7 Câu 9)Để đọc tệp, ta theo trình tự nào sau đây: a) Mở tệp gắn tên tệp đọc tệp đóng tệp. b) Gắn tên tệp mở tệp đọc tệp đóng tệp c) Mở tệp đọc tệp gắn tên tệp đóng tệp d) Một trình tự khác. Câu 10) Ý nghĩa của đoạn chương trình sau: for i:=1 to n do if a[i] mod 2 = 0 then write(a[i],’la so chan’) else write(a[i],’ la so le’); a) Đếm số lượng số chẵn, số lẻ trong chương trình. b) Kiểm tra các phần tử trong dãy là số chẵn hay số lẻ. c) Tính tổng số chẵn trong dãy. d) Tính tổng số lẻ trong dãy. Câu 11) Trong NNLT Pascal đoạn chương trình sau thực hiện việc nào trong các việc sau (a là mảng có N phần tử) S:=0; For i:=1 to n do S:=S+a[i]; a) Tính tổng các phần tử của mảng a. b) In ra màn hình mảng a c) Đếm số phần tử của mảng a. d) Không thực hiện việc gì cả. Câu 12) Trong NNLT Pascal để nhập các phần tử cho mảng hai chiều A, ta sử dụng lệnh nào sau đây? a) for i:=1 to n do for j:=1 to m do begin write(‘Phan tu o dong’, i, ’cot ‘,j); readln(A[i,j]); end; b) for i:=1 to n do for j:=1 to m do begin write(‘Phan tu o dong’, i, ’cot ‘,j); write(A[i,j]); end; c) for i:=1 to n do for j:=1 to m do begin write(‘Phan tu o dong’, i, ’cot ‘,j); writeln(A[i,j]); end; d) for i:=1 to n do for j:=1 to m do begin 2 write(‘Phan tu o dong’, i, ’cot ‘,j); readln(A[i.j]); end; Câu 13) Trong NNLT Pascal để in các phần tử cho mảng hai chiều A ra màn hình, ta sử dụng lệnh nào sau đây? a) for i:=1 to n do begin for j:=1 to m do write(A[i,j]); writeln; end; b) for i:=1 to n do begin for j:=1 to m do write(A[i;j]); writeln; end; c) for i:=1 to n do begin for j:=1 to m do read(A[i,j]); writeln; end; d) for i:=1 to n do begin for j:=1 to m do readln(A[i,j]); writeln; end; Câu 14) Trong NNLT Pascal , để nhập các phần tử cho mảng một chiều A, ta viết lệnh như thế nào là đúng ? a) for i:=1 to n do begin write(‘Phan tu thu: ‘,i, ‘ la’); read(A.i); end; b) for i:=1 to n do begin write(‘Phan tu thu: ‘,i, ‘ la’); read(A[i]); end; c) for i:=1 to n do begin write(‘Phan tu thu: ‘,i, ‘ la’); read(A(i)); end; d) for i:=1 to n do begin write(‘Phan tu thu: ‘,i, ‘ la’); read(A-i); 3 end; Câu 15) Trong NNLT Pascal, để in các phần tử cho mảng một chiều A ra màn hình, ta viết lệnh như thế nào là đúng ? a) for i:=1 to n do write(A[i]); b) for i:=1 to n do read(A[i]); c) for i:=1 to n do write(A.i); d) for i:=1 to n do readln(A[i]); Câu 16) Trong NNLT Pascal với việc khai báo như sau:Var A : array [1 100,1 100] of integer; Thì việc truy xuất đến các phần tử như thế nào là đúng ? a) A(i,j) b) A[i,j] c) A[i][j] d) A[i;j] Câu 17) Trong NNLT Pascal, về mặt cú pháp câu lệnh nào sau đây là đúng ? a) Var mang = array [ 1 100] of char; b) Var mang: array [ 1 100] of char; c) Var mang : array [ 1- 100] of char; d) Var mang : array ( 1 100) of char; Câu 18) Trong NNLT Pascal khai báo nào sau đây là đúng? a) Var < tên biến mảng> = array [ kiểu chỉ số] of < kiểu phần tử>; b) Var < tên biến mảng> : array [ kiểu chỉ số] of < kiểu phần tử>; c) Var < tên biến mảng> : array [ kiểu chỉ số] of < kiểu phần tử> d) Var < tên biến mảng> := array [ kiểu chỉ số] of < kiểu phần tử>; Câu 19) Trong NNLT Pascal khai báo nào sau đây là đúng? a) Var < tên biến mảng> = array [ kiểu chỉ số dòng, kiểu chỉ số cột ] of < kiểu phần tử>; b) Var < tên biến mảng> : array [ kiểu chỉ số dòng, kiểu chỉ số cột ] of < kiểu phần tử>; c) Var < tên biến mảng> : array [ kiểu chỉ số dòng, kiểu chỉ số cột ] of < kiểu phần tử> d) Var < tên biến mảng> := array [ kiểu chỉ số dòng, kiểu chỉ số cột ] of < kiểu phần tử>; Câu 20) Trong NNLT Pascal, về mặt cú pháp câu lệnh nào sau đây là đúng ? a) Type mang2c = array [1 100,1 100] of integer; b) Type mang2c = array [1 - 100,1 - 100] of integer; c) Type mang2c : array [1 100,1 100] of integer; d) Type mang2c := array [1 100,1 100] of integer; Câu 21) Trong NNLT Pascal với việc khai báo như sau:Var A : array [1 100] of integer; Để nhập giá trị cho phần tử thứ 10 ta dùng lệnh: a) Readln(A[10]); b) Readln(A(10)); c) Readln(A.10); d) Readln(A-10); Câu 22) Với khai báo type arr = array[1 5,1 10] of real; var A: arr; thì tham chiếu đến phần tử ở hàng 5 cột 9 của biến mảng ta viết: a) arr[5,9] b) A[1 5,1 9] c) arr[1 5,1 9] d) A[5,9] Câu 23) Kết quả sau khi chạy đoạn chương trình sau là gì? 4 Uses crt; Var f:text; a, b, x, y: integer; Begin Assign (f, ‘d:\tep.txt’); Rewrite (f); a:= 5; b:=10; write (f,a:4,b:4); reset (f); readln (f,x,y); x:= x*2; y:= y*2; write (x:4, y:4); close (f); readln; end. a) Ghi vào tep.txt giá trị 5 và 10. b) Hiển thị ra màn hình giá trị 10 và 20. c) Ghi vào tep.txt giá trị 5 và 10 đồng thời hiển thị ra màn hình giá trị 10 và 20. d) Ghi vào tep.txt giá trị 5 và 10 và không hiển thị ra màn hình kết quả nào cả. Câu 24) Kiểu phần tử của mảng 1 chiều là: a) Kiểu nguyên. b) Kiểu bản ghi. c) Kiểu Mảng. d) Kiểu bất kỳ. Câu 25) Kiểu chỉ số của mảng là : a) Kiểu số nguyên. b) Kiểu số thực. c) Kiểu ký tự d) Cả a và c đều đúng. Câu 26) Đoạn chương trình sau làm gì? S:= 0; For i:= 1 to m do For j:= 1 to n do if i = j then s := s+ a[i,j]; a) Tổng các phần tử giống nhau trong mảng 1 chiều. b) Tổng các phần tử giống nhau trong mảng 2 chiều. c) Tổng các phần tử trên các đường chéo của mảng 2 chiều. d) Tổng các phần tử có chỉ số hàng bẳng chỉ số cột. Câu 27) Đoạn chương trình sau làm gì? S:= 0; For i:= 1 to m do For j:= 1 to n do if d[i,j] mod 2 <> 0 then s := s+ 1; a) Tổng các phần tử ở vị trí lẻ trong mảng 2 chiều. b) Tổng các phần tử là số chẵn trong mảng 2 chiều. c) Đếm các phần tử là số lẻ trong mảng 2 chiều. 5 d) Tổng các phần tử là số lẻ trong mảng 2 chiều. Câu 28) Chọn phát biểu đúng: a) Dữ liệu kiểu bản ghi dùng mô tả các đối tượng có cùng một số thuộc tính mà các thuộc tính có kiểu dữ liệu giống nhau. b) Dữ liệu kiểu bản ghi đùng để mô tả các đối tượng có cùng một số thuộc tính mà các thuộc tính có kiểu dữ liệu khác nhau. c) Dữ liệu kiểu bản ghi dùng để mô tả các đối tượng có các thuộc tính khác nhau. d) Cả a, b, c đều sai. Câu 29) Để gán tên tệp ta dùng thủ tục a) Clrscr. b) Readln c) Assign d) Close. Câu 30) Để mở tệp ra chuẩn bị ghi, ta dùng thủ tục: a) Reset. b) Rewrite c) Close d) Writeln Câu 31) Qui trình làm việc với tệp gồm các thủ tục a) Gán tên tệp mở tệp chuẩn bị ghi ghi tệp đóng tệp. b) Gán tên tệp mở tệp chuẩn bị đọc đọc tệp đóng tệp. c) Gán tên tệp mở tệp đọc tệp ghi tệp đóng tệp. d) Cả a và b đều đúng. Câu 32) Để đọc dữ liệu từ tệp, ta dùng cú pháp: a) Readln(<tên tệp>, <danh sách biến>); b) Readln(< biến tệp>,< danh sách kết quả>); c) Readln(<Biến tệp>,< danh sách biến>); d) Readln(<tên tệp>, < danh sách kết quả>); Câu 33) Để ghi dữ liệu vào tệp, ta dùng cú pháp nào sau đây: a) Write/ writeln (<danh sách kết quả>); b) Write/ writeln (< biến tệp>, <danh sách biến>); c) Write/ writeln (<biến tệp>, <danh sách kết quả>); d) Write/ writeln (<tên tệp>, <danh sách kết quả>); Câu 34) Để đảm bảo đọc hết dữ liệu từ tệp ta dùng cú pháp nào sau đây: a) While EOF (< biến tệp>) do readln(<biến tệp>, <danh sách biến>); b) While not EOLN (< biến tệp>) do readln(<biến tệp>, <danh sách biến>); c) While not EOF (< biến tệp>) do readln(<biến tệp>, <danh sách biến>); d) Cả b và c đều đúng. Câu 35) Giả sử ta có bản ghi học sinh được khai báo như sau: Type hocsinh = record Sobaodanh: integer; Hoten: string [32]; Toan, van, trungbinh: real; End; Var hs1, hs2: hocsinh; Để truy cập vào thuộc tính hoten của bản ghi học sinh ta dùng cú pháp nào sau đây: 6 a) Hocsinh.hoten b) Hoten. c) Hs.hoten d) Hs1.hoten hoặc hs2.hoten Câu 36) Với khai báo bản ghi ở câu 35 biến hs1 chiếm dung lượng bao nhiêu byte? a) 34 b) 36 c) 40 d) 52 Câu 37) Với khai báo biến bản ghi ở câu 35, khi đó: a) hs1:= hs2; b) hs2:= hs1; c) Cả a và b đều sai. d) Cả a và b đều đúng. Câu 38) Để tính điểm trung bình cho các học sinh ở câu 35, ta dùng câu lệnh nào: a) Trungbinh:= (toan + van)/ 2; b) Trungbinh:= (hocsinh.toan + hocsinh.van)/ 2; c) Hocsinh.trungbinh:= (hocsinh.toan + hocsinh.van)/ 2; d) Hs1.trungbinh:= (hs1.toan + hs1.van)/ 2; Câu 39) Để nhập vào 1 mảng các số nguyên và tìm số lớn nhất của mảng số nguyên đó, ta dùng các chương trình con nào sau đây: a) Procedure nhap (var A: mang; N: integer); function max (A: mang; N: integer): integer; b) Procedure nhap (var A: mang; Var N: integer); function max (A: mang; N: integer): integer; c) Procedure nhap (A: mang; N: integer); function max (A: mang; N: integer): integer; d) Cả a, b, c đều đúng. Câu 40) Kết quả đoạn chương trình sau là gì? Nếu nhập x = 2, y = 3, z = 4 Program thamtri_thambien; Var x, y: integer; Procedure nhan ( var so2: integer ; so1, sonhan: integer); Begin So1:= so1*sonhan; So2:=so2*sonhan; End; Begin Write (‘nhap x, y, z:’); Readln(x, y, z); Nhan(x, y, z); Write (x:4, y:4); End. a) 8 3 b) 8 12 c) 2 12 d) 2 3 Câu 41) Chọn phần đầu chương trình con sai: a) Function f (r,i: real, t:integer): real; b) Function f (a, b, c: integer): integer; 7 c) Function f ( x: real; var y: real): real; d) Function f (var x, y: integer) : real; Câu 42) Chọn phát biểu sai: a) Cấu trúc của chương trình con gồm có 3 phần. b) Phần đầu của chương trình con có thể có hoặc không. c) Phần đầu của chương trình con có thể có hoặc không. d) Phần thân của chương con được đặt trong cặp begin …end; Câu 43) Xét hàm: Function f(k: integer): string; Begin If k mod 2 = 0 then f:= ‘chan’ else f:= ‘le’; End; Muốn gán X:= f (5) thì biến X phải khai báo kiểu gì? a) Byte b) Integer. c) String d) Một kiểu dữ liệu khác. Câu 44) Xét hàm: Function f (k: integer): string; Begin If k mod 2 = 0 then f:= ‘chan’ else f:= ‘le’; End; Muốn write (f(y)); thì biến y phải khai báo kiểu nào? a) String. b) Byte. c) Integer. d) Một kiểu dữ liệu khác. Câu 45) Chọn phát biểu đúng: a) Biến cục bộ được khai báo trong chương trình chính. b) Biến cục bộ có thể sử dụng ở mọi nơi trong chương trình. c) Biến cục bộ có thể có tên giống biến toàn cục. d) Tên biến cục bộ phải khác biến toàn cục. Câu 46) Chọn phát biểu sai: a) Chọn chương trình con là hàm nếu kết quả trả về là một kiểu xác định. b) Khai báo phần đầu của hàm như sau: function <tên hàm> (<danh sách tham số>); c) Trong phần thân của hàm cần có lệnh: <tên hàm>:= <kết quả trả về cuối cùng>. d) Pascal dùng từ khóa var để phân biệt tham biến với tham trị Câu 47) Khi chạy chương trình: Var x, y: real; Function f(x, y: real): real; Begin F:= x; If x< y then f:= y; End; Begin X:= 10; 8 Y:= 15; Write ( f(x, y): 4:1); End. a) 10 b) 15. c) 0 d) Một kết quả khác. Câu 48) Xét thủ tục: procedure hoandoi(var x, y: integer); var tg: integer; begin tg:= x; x:= y; y:= tg; end; Lời gọi thủ tục nào sau đây là hợp lệ: a) Hoandoi(4,7); b) Hoandoi(m,n); c) Cả a, b đều đúng. d) Hoandoi; Câu 49) Chọn phát biểu sai: a) Kiểu mảng, kiểu bản ghi,kiểu xâu, kiểu tệp là những kiểu dữ liệu có cấu trúc. b) Lập trình theo kiểu chương trình con là lập trình có cấu trúc. c) Có thể xây dựng kiểu dữ liệu chuẩn dựa vào kiểu dữ liệu có cấu trúc. d) Kiểu dữ liệu có cấu trúc được xây dựng dựa trên kiểu dữ liệu chuẩn. Câu 50) Nói về biến toàn cục, phát biểu nào sau đây là đúng: a) Biến toàn cục chỉ có tác dụng trong chương trình chính. b) Biến toàn cục chỉ có tác dụng trong chương trình con. c) Biến toàn cục có tác dụng trong toàn bộ chương trình. d) Tên biến toàn cục phải khác tên biến cục bộ. 9 . 40 d) 52 Câu 37) Với khai báo biến bản ghi ở câu 35, khi đó: a) hs1:= hs2; b) hs2:= hs1; c) Cả a và b đều sai. d) Cả a và b đều đúng. Câu 38) Để tính điểm trung bình cho các học sinh ở câu 35,. đây không hợp lệ: a) Birthdays.month := 3; b) Birthdays [2] .day := 26 ; c) Birthday[1].year := birthdays[10].year; d) Birthdays[4].month := 12; Câu 4)Để lưu trữ danh sách học sinh gồm các thông tin:. Câu hỏi ôn tâp học kỳ 2 Để lưu trữ ngày, tháng, năm, một HS đã định nghĩa và khai báo biến 1 bản ghi như sau: Type date = record day, month, year : integer; End; Var D: date; Câu 1)Để