BÀI 11: KIỂU MẢNG Mảng một chiều là dãy Các phần tử có thứ tự. Hữu hạn các phần tử cùng kiểu. Vô số các phần tử có giá trị Các số nguyên hoặc số thực Khai báo biến mảng một chiều có dạng: Var :array[kiểu chỉ số] of ; Type :array[kiểu chỉ số] of ; Var =array[kiểu chỉ số] of ; Type =; Phát biểu nào dưới đây về chỉ số của mảng là phù hợp nhất ? Dùng để truy cập đến một phần tử bất kì trong mảng; Dùng để quản lí kích thước của mảng; Dùng trong vòng lặp với mảng; Dùng trong vòng lặp với mảng để quản lí kích thước của mảng; Để khai báo số phần tử của mảng trong PASCAL, người lập trình cần Khai báo một hằng số là số phần tử của mảng; Khai báo chỉ số bắt đầu và kết thúc của mảng; Khai báo chỉ số kết thúc của mảng; Không cần khai báo gì, hệ thống sẽ tự xác định; Var X: ARRAY[0..100] OF INTEGER; biến mảng X có thể nhập tối đa bao nhiêu phần tử? 101 100 202 90 Cho khai báo mảng như sau : Var m : array[0..10] of integer ; Phương án nào dưới đây chỉ phần tử thứ 10 của mảng ? a[10] a(10) a[9] a(9) Cho khai báo mảng như sau : Var m : array[0..10] of integer ; Với khai báo trên mảng A có thể nhập tối đa bao nhiêu phần tử ? 100 10 11 9 Cho khai báo mảng như sau : Var m : array[0..100] of integer ; Với khai báo trên, mảng A máy cung cấp cho bao nhiêu byte? 100 200 202 50 Phương án nào dưới đây là khai báo mảng hợp lệ ? mang : ARRAY[0..10] OF INTEGER; mang : ARRAY[0..10] : INTEGER; mang : INTEGER OF ARRAY[0..10]; mang : ARRAY(0..10) : INTEGER; Var A:ARRAY [1..200] OF REAL. Biến A máy cung cấp cho bao nhiêu byte? 200 1200 6 100 Với khai báo var a:array[1..10] of integer; Sau khi thực hiện đoạn chương trình, giá trị s =? S:=0; for i:=1 to 10 do a[i]:=i; for i:=5 downto 1 do s:=s+a[i]; 20 10 5 15 Cho khai báo sau: VAR A: array [0..16] of integer; Câu lệnh nào sẽ in ra tất cả các phần tử của mảng trên For k :=1 to 16 do write(a[k]); For k :=16 downto 0 do write(a[i]); For k :=0 to 15 do write(a[k]); For k := 16 downto 0 do write(a[k]); Kết quả của đoạn chương trình sau: d:=0; x[1]:=10; x[2]:=20; x[3]:=30; x[4]:=150; for i:=1 to 3 do if x[i] mod 3=0 then d:=d+1; 1 60 30 180 Giả thiết M và N là hai mảng một chiều được khai báo như sau: Var M,N:array[1..20] of integer; Giả sử giá trị M[i] và N[i] (i nhận giá trị từ 1 đến 20) đã được xác định. Xét đoạn chương trình sau: d:=0; for i:=1 to 20 do if M[i] N[i] then d:=d+1; writeln(d); Đoạn chương trình trên thực hiện công việc gì dưới đây? Đếm số phần tử của M khác các phần tử của N. Đếm số phần tử khác nhau của M và N. Đếm số cặp phần tử tương ứng khác nhau của M và N Cả 3 câu còn lại sai Giả sử mảng a có giá trị như sau: a[1]=3, a[2]=-1, a[3]= 0, a[4] =-3, a[5]=8. Muốn in giá trị tất cả các phần tử trong mảng ra màn hình ta dùng câu lệnh: For i:=1 to 5 do read(a[i]); For i:= 1 to 5 do write(a(i)); For i:=1 to 5 do write(a[i]); For i:=0 to 5 do read(a[i]); Cho khai báo mảng và đoạn chương trình như sau : Var a : array[0..50] of real ; k := 0 ; for i := 1 to 50 do if a[i] > a[k] then k := i ; Đoạn chương trình trên thực hiện công việc gì dưới đây ? Tìm phần tử nhỏ nhất trong mảng; Tìm phần tử lớn nhất trong mảng; Tìm chỉ số của phần tử lớn nhất trong mảng; Tìm chỉ số của phần tử nhỏ nhất trong mảng var a:array[1..10] of integer; s,i:integer; begin s:=0; for i:=1 to 10 do a[i]:=i; for i:=5 downto 1 do s:=s+a[i]; writeln(s); end. Sau khi thực hiện chương trình trên, giá trị hiển thị lên màn hình là gì? 20 10 5 15 Cho khai báo mảng và đoạn chương trình như sau : Var a : array[0..50] of real ; k := 0 ; for i := 1 to 50 do if a[i] > a[k] then k := i ; Đoạn chương trình trên thực hiện công việc gì dưới đây ? Tìm phần tử nhỏ nhất trong mảng; Tìm phần tử lớn nhất trong mảng; Tìm chỉ số của phần tử lớn nhất trong mảng; Tìm chỉ số của phần tử nhỏ nhất trong mảng; BÀI 12. Kiểu xâu Độ dài tối đa của kiểu dữ liệu string là bao nhiêu? 255 256 65535 tùy ý Var s: string[20] Với khai báo trên; xâu có thể nhập tối đa bao nhiêu kí tự bao nhiêu ? 255 256 20 tùy ý Hãy cho biết ký hiệu nào sau đây dùng để ghép nhiều xâu thành 1 xâu ? & - * + Để khai báo kiểu xâu ta trực tiếp sử dụng cú pháp nào? Var : ; Var : String[độ dài của lớn nhất của xâu] ; Var = ; Var = String[độ dài lớn nhất của xâu]; Chọn đáp án đúng ? var s: string; var s: string[1..20] var s:string var s:text; Trong các phát biểu sau, phát biểu nào sai ? Xâu A lớn hơn xâu B nếu độ dài xâu A lớn hơn độ dài xâu B; Xâu A lớn hơn xâu B nếu kí tự dầu tiên khác nhau giữa chúng kể tử trái sang trong xâu A có mã ASCII lớn hơn; Nếu A và B là các xâu có độ dài khác nhau và A là đoạn đầu của B thì A nhỏ hơn B; Hai xâu bằng nhau nếu chúng giống nhau ho àn toàn; Cho hai xâu s1=’c’ và xâu s2=’aaaaaaaaaaaa’. So sánh xâu nào có độ dài lớn hơn? s2 s1 s1=s2 tùy ý Cho hai xâu s1=’c’ và xâu s2=’aaaaaaaaaaaa’. So sánh xâu nào LỚN hơn? s1 s2 s1 trùng với s2 tùy ý Hàm POS(S1,S2) cho kết quả là gì? Sao chép S2 từ S1 Vị trí đầu tiên của S2 trong S1 Vị trí đầu tiên của xâu S1 trong S2 Xoá S1 trong S2 Cho 2 xâu s1=’ab’ và s2=’efab cbab’. Hàm Pos(s1,s2) trả về kế quả là bao nhiêu: 1 8 3 2 Hãy cho biết khai báo biến xâu nào sau đây là đúng? Var St:string[1..20]; Var St:string of Char; Var St:string[10]; Var St:string[500]; Thủ tục hay hàm nào sau đây viết sai cú pháp ?(trong đó st,st1,st2 là các biến xâu). Length(st,5) Copy(St,4,3) Pos(St1,st2) Upcase(St[5]) Cho s=’viet nam’. Hàm length(s) trả về giá trị? 8 7 6 9 Cho s=’viet nam’. Hàm Upcase(s[4]) in hoa kí tự thứ mấy trong xâu? 4 5 6 9 Cho xâu S1 := ‘abc’ ; và xâu S2 := ‘bac’ ; Hãy cho biết kết quả của S2 sau khi thực hiện thủ tục INSERT(S1,S2,3)? ‘abcbac’ ‘bacabc’ ‘baabcc’ ‘abbacc’ Xâu có độ dài bằng không được gọi là: Xâu rỗng Tên xâu Tên kiểu xâu Xâu S Xét đoạn chương trình sau: Var S: string; Begin S:= ‘tin hoc lop 11’; S[1]:= Upcase(S[1]); Write (St); End. Sau khi thực hiện đoạn chương trình trên thì xâu S có giá trị là: ‘tin Hoc Lop 11’ ‘Tin hoc lop 11’ ‘TIN HOC LOP 11’ ‘tin HOC LOP 11’ Trong pascal đoạn chương trình sau thực hiện công việc gì? For i:=1 to length(s) do S[i]:=Upcase(s[i]); Đổi xâu s thành chữ thường In hoa kí tự đầu của mỗi từ Đổi xâu s thành chữ in hoa Đếm kí tự trong xâu s Cho S1 = 'abc'; S2 = ' deft'. Kết quả gọi thủ tục Insert (S2,S1,3) là: 'abdeftc' 'abcfted' 'eftcabd' 'abcdeft' Cho S = 'chuc cac ban', kết quả hàm length(S) là: 12 16 22 18 Xét đoạn chương trình sau: Var S: string; i : integer; Begin S:= ‘tin hoc lop 11’; S[1]:= Upcase(S[1]); For i:=2 to (length(S)-1) do If S[i] = ‘ ’ then S[i+1]:=Upcase(S[i+1]); Write (S); End. Sau khi thực hiện đoạn chương trình trên thì xâu S có giá trị là: ‘tin Hoc Lop 11’ ‘Tin hoc lop 11’ ‘TIN HOC LOP 11’ ‘Tin Hoc Lop 11’ Cho đoạn chương trình sau; nhập xâu s=’345THPT78’ kết quả cho ra màn hình là: n:=length(s);i:=1; while i<=n do begin if (s[i] >='0') and(s[i]<='9') then begin delete(s,i,1);n:=n-1;i:=i-1; end; i:=i+1; end; write(s); THPT 5THPT7 34578 78 Giả sử đã khai báo biến mảng và các biến khác; đoạn chương trình dưới đây làm gì? For i:= 1 to n - 1 do For j: = i+1 to n do If a[i]>a[j] then Begin tg := a[i]; a[i] := a[j]; a[j] := tg; End; Hoán đổi các vị trí của mảng cho nhau. Sắp xếp các phần tử của mảng theo trật tự giảm dần. Sắp xếp các phần tử của mảng theo trật tự tăng dần. Sắp xếp lại giá trị chỉ số của mảng. Cho st:=’abcde’. Kết quả khi sử dụng thủ tục Delete(st,2,3) là: st=’ab’ st=’bc’ st=’ae’ st=’ac’
Tài liệu đính kèm: