Viết đoạn lệnh in ra màn hình mảng A gồm 8 phần tử là các số nguyên

Phòng GD & ĐT TP Long Xuyên KIỂM TRA HỌC KỲ II Họ tên, chữ ký giám thò  Năm học : 2010 – 2011 GT1:…………………………… GT2:…………………………… MÔN : TIN HỌC - KHỐI : 8 Thời gian : 45 phút (Không kể thời gian phát đề)Trường THCS Lý Thường KiệtHọ và tên:………………….…………………Lớp:………………………………………… SBD:………………… Phòng……………… Điểm bài thi Họ tên, chữ ký giám khảoBằng số Bằng chữI. TRẮC NGHIỆM: 6 điểm (Mỗi câu đúng 0,5 điểm)1. Câu lệnh nào sau đây là câu lệnh nhập cho phần tử thứ 10 của biến mảng A? a. Readln(A[10]); b. Readln(A[k]);c. Readln(A[i]); d. Readln(A10);2. Hãy cho biết đâu là câu lệnh lặp với số lần chưa biết trước hợp lệ?A. X:=10; While X=10 do X:=X+5;B. S:=0; n:=0; While S<=10 do begin n:=n+1; S:=S+n; end;C. X:=10; While X:=10 do X=X+5;D. Tất cả đều khơng hợp lệ.3. Trong số các hoạt động dưới đây, hoạt động nào sẽ được thực hiện lặp lại với số lần chưa biết trước?A. Tính tổng của 20 số tự nhiên đầu tiên.B. Nhập 1 số hợp lệ, ví dụ số ngun trong khoảng từ 0 đến 10 vào máy tính. Nếu số nhập vào khơng hợp lệ thì được u cầu nhập lại.C. Nhập các số ngun từ bàn phím cho đến khi đủ 50 số.D. Khơng có hoạt động nào.4. Hãy cho biết đâu là phần khai báo biến mảng A gồm 20 phần tử thuộc kiểu dữ liệu số ngun?A. var A: array[11 30] of integer; B. var A: array[1 20] of real;C. var A: array[1 20] of integer; D. var A: array[11 30] of real;5. Đoạn chương trình Pascal sau in ra màn hình kết quả là gì?Begin for i:=1 to 100 do; End; A. xuất chữ do 100 lần B. Khơng in gìC. xuất chữ end 100 lần D. Tất cả đều sai.6. Khai báo nào sau đây khơng hợp lệ:A. Var a: array [1 10] of real; B. Var a: array [10 10] of integer;C. Var a: array [11 20] of integer; D. Var a: array [1…100] of real;7. Trong Pascal, cách khai báo mảng đúng là:A. Tên mảng : array[ ] of ; B. Tên mảng : array[: ] of ;C. Tên mảng : array[ ] : ;D. Tên mảng : array[, ] of ;8. Nêu lợi ích của việc khai báo và sử dụng biến mảng?A. Có thể thay thế nhiều câu lệnh nhập B. In dữ liệu ra màn hình bằng một câu lệnh lặp.C. Câu a và b đúng. D. Tất cả đều sai.9. Các cách nhập dữ liệu cho biến mảng sau, cách nhập nào khơng hợp lệ?A. B[1]:= 8; B. readln(chieucao[i]); C. readln(chieucao5); D. read(dayso[9]);10. Hãy cho biết đâu là lệnh lặp hợp lệ?A. For i:=10 to 1 do writeln('B'); B. For i:=1 to 10 do; writeln('B');C. For i:=1 to 50 do writeln('Tong S= ',S:8:2); D. For i:=1.5 to 20 do writeln('B'); GK 1:…………………GK 2:…………………11. Hãy cho biết đâu là lệnh lặp For do để in chữ O?A. For i:=1.5 to 10.5 do writeln('O'); B. For i:=1 to 10 do writeln('O');C. For i:=100 to 1 do writeln('O'); D. For i:=1 to 10 do; writeln('O'; 12. Cho đoạn chương trình Pascal sau:For i:= 0 to 25 do begin … end;Đoạn chương trình trên thực hiện lặp bao nhiêu lần? A. 25 lần B. 24 lần C. 26 lần d. không lặpPhần trả lời trắc nghiệm:Câu hỏi 1 2 3 4 5 6 7 8 9 10 11 12Trả lờiII. TỰ LUẬN: 4 điểm.1. Hãy viết các câu lệnh, khai báo theo yêu cầu sau: (2điểm)Yêu cầu Câu lệnh và khai báoa. Khai báo mảng A gồm 50 phần tử thuộc kiểu dữ liệu số thựcb. Phần tử thứ 5 của mảng A được gán giá trị là 8c. Khai báo mảng dayso gồm 50 phần tử thuộc kiểu dữ liệu số thựcd. Nhập giá trị cho phần tử thứ 2 trong mảng diem2. Thuật toán sau máy tính thực hiện bao nhiêu lần lặp. (0,5đ).Bước 1: S 20, a2.5Bước 2: S<= 7, chuyển đến bước 4Bước 3: SS – a và quay lại bước 2.Bước 4: Xuất S và kết thúc thuật toán Khi kết thúc S bằng bao nhiêu? (0,5đ)Dựa vào thuật toán viết các câu lệnh Pascal tương ứng. (1đ)………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………ĐÁP ÁNĐỀ THI TIN HỌC 8 – HỌC KÌ II NĂM HỌC 2010-2011 II. TRẮC NGHIỆM: 6 điểm(mỗi câu đúng 0,5 điểm)Câu hỏi 1 2 3 4 5 6 7 8 9 10 11 12Trả lời a b b c b d a c c c b cII. TỰ LUẬN: 4 điểm1. Hãy viết các câu lệnh, khai báo theo yêu cầu sau: (2điểm)Yêu cầu Câu lệnh và khai báoa. Khai báo biến mảng A gồm 50 phần tử thuộc kiểu dữ liệu số thựca. Var A: array[1 50] of real; (0,5đ)b. Phần tử thứ 5 của biến mảng A được gán giá trị là 8 b. A[5]:=8; (0,5đ)c. Khai báo biến mảng dayso gồm 50 phần tử thuộc kiểu dữ liệu số thựcc. Var dayso: array[10 50] of integer;(0,5đ)d. Nhập giá trị cho phần tử thứ 2 trong mảng diem d. readln(diem[2]); (0,5đ)2. Máy tính thực hiện 6 lần lặp. (0,5đ).Khi kết thúc S bằng 5. (0,5đ)Các câu lệnh Pascal tương ứng. (1đ)Bước 1: S 20, a2.5Bước 2: S<= 7, chuyển đến bước 4Bước 3: SS – a và quay lại bước 2.Bước 4: Xuất S và kết thúc thuật toán beginS:=20; a:=2.5; (0,25đ)While S>7do (0,25) S:=S – a; ( 0,25đ)Writeln(S); (0,25đ)End.GV ra đề Trương Ngọc Tuyết

Bài 9: Làm việc với dãy số – Câu 5 Trang 78 SGK Tin học 8. Viết chương trình sử dụng biến mảng để nhập từ bàn phím các phần tử của 1 dãy số.Độ dài của dãy cũng được nhập từ bàn phím

Advertisements (Quảng cáo)

Viết chương trình sử dụng biến mảng để nhập từ bàn phím các phần tử của 1 dãy số.Độ dài của dãy cũng được nhập từ bàn phím

Lời giải : 

uses crt;

var n,i:integer;

a:array[1..100] of integer;

begin

clrscr;

write(‘nhap so phan tu cua day:’);readln(n);

Advertisements (Quảng cáo)

for i:=1 to n do

begin

write(‘a[‘,i,’]=’);readln(a[i]);

end;

writeln(‘day so da nhap:’);

for i:=1 to n do write(a[i]:2);

readln;

end.

Giải Bài Tập Tin Học 11 – Bài 11: Kiểu mảng giúp HS giải bài tập, giúp cho các em hình thành và phát triển năng lực sử dụng công nghệ thông tin và truyền thông:

  • Sách Giáo Viên Tin Học Lớp 11

Chúng ta chỉ xét hai kiểu mảng thông dụng với nhiều ngôn ngữ lập trình là kiểu mảng một chiều và kiểu mảng hai chiều.

1. Kiểu mảng một chiều

-Mảng một chiều là một dãy hữu hạn các phần tử có cùng kiểu. Mảng được đặt tên và mỗi phần tử mang một chỉ số. Để mô tả mảng một chiều cần xác định kiểu của các phần tử và cách đánh chỉ số các phần tử.

– Với mảng một chiều ta quan tâm đến:

+ Tên kiểu mảng một chiều.

+ Số lượng phần tử trong mảng.

+ Kiểu dữ liệu của phần tử.

+ Cách khai báo biến mảng.

+ Cách tham chiếu đến phần tử.

Tại sao ta lại phải sử dụng mảng?

Giả sử ta muốn đo nhiệt độ trung bình trong 1 tháng và đưa ra những ngày nào cao hơn nhiệt độ trung bình. Nếu chỉ sử dụng kiến thức ta biết từ đầu chương trình đến giờ. Ta sẽ phải khai báo 30 biến để lưu giữ giá trị nhiệt độ các ngày trong tháng. Sau đó phải gõ lại rất nhiều lệnh if gây ra sự nhàm chán.

a) Khai báo.

Cách 1: Khai báo trực tiếp biến mảng một chiều

Var :array[kiểu chỉ số] of ;

Cách 2: Khai báo gián tiếp biến mảng qua kiểu mảng một chiều

Type=array[kiểu chỉ số] of ; Var:;

Trong đó:

+ Kiểu chỉ số thường là đoạn số nguyên liên tục có dạng n1..n2, với n1 là chỉ số đầu và n2 là chỉ số cuối (n1≤n2).

+ Kiểu phần tử là kiểu dữ liệu của các phần tử mảng.

+ Tham chiếu đến phần tử mảng ta viết :

[chỉ số];

Ví dụ:

Var nhietdo:array[1..30] of integer;

Muốn tham chiếu tới phần tử thứ 20 ta sẽ viết là nhietdo[20].

b) Một số ví dụ

Ví dụ 1. Tìm phần tử lớn nhất của dãy số nguyên

Input: Số nguyên dương N (N<=250) và dãy N số nguyên dương A1,A2,..,An,mỗi số đều không vượt quá 500.

Output: Chỉ số và giá trị của phần từ lớn nhất trong dãy số đã cho (nếu có nhiều phần tử lớn nhất thì chỉ cần đưa ra một trong số chúng.

program vidu1; uses crt; var arrayint:array[1..250] of integer; n,i,mi:integer; begin clrscr; writeln('nhap vao so phan tu '); readln(n); for i:=1 to n do begin writeln('phan tu thu ',i,'='); readln(arrayint[i]); end; mi:=1; for i:=2 to n do begin if arrayint[i]>arrayint[mi] then mi:=i; end; writeln('gia tri lon nhat la ',arrayint[mi],' chi so la ',mi); readln; end.

Ví dụ 2: Sắp xếp dãy số nguyên bằng thuật toán tráo đổi.

program sapxep; uses crt; const Nmax=250; var N,i,j,t:integer; A:array[1..Nmax] of integer; begin clrscr; write('nhap so luong phan tu cua day N='); readln(N); for i:=1 to N do begin write('phan tu thu ',i,'='); readln(A[i]); end; for j:=N downto 2 do for i:=1 to j-1 do if A[i]>A[i+1] then begin t:=A[i]; A[i]:=A[i+1]; A[i+1]:=t; end; writeln('day da duoc sap xep la '); for i:=1 to N do write(A[i]:4); readln; end.

Kết quả:

Viết đoạn lệnh in ra màn hình mảng A gồm 8 phần tử là các số nguyên

Ví dụ 3: Tìm kiếm nhị phân.

Bước 1: Nhập N, các số hạng a1, a2… aN và khóa k.

Bước 2: Dau <— 1, Cuoi <-N;

Bước 3: Giua <—[ Dau + Cuoi]/2

Bước 4: Nếu Agiữa = k thì thông báo chỉ số Giua rồi kết thúc;

Bước 5: Nếu Agiữa> k thì đặt Cuối= Giữa-1 rồi chuyển đến bước 7;

Bước 6: Nếu Nếu Agiữa ≤ k Dau;

Bước 7: Nếu Dau > Cuoi thì thông báo dãy A không có số hạng có giá trị bằng k rồi kết thúc;

Bước 8: Ọuay lại bước 3.

Từ thuật toán của bài toán, chúng ta rút ra được một số điều cơ bản cần phải lưu ý, đó là:

– Mảng đã dược sắp xếp tăng dần.

– Trong thuật toán, việc tìm kiếm thực chất là lặp một số lần (chưa xác định được trước) các thao tác sau: chọn số hạng ở “giữa” dãy, so sánh số hạng đó với k, căn cứ vào kết quả so sánh này để hoặc kết luận đã tìm thấy (trường hợp xảy ra bằng) hoặc thu hẹp phạm vi tìm kiếm(trường hợp không bằng).

– Khi nào quá trình lặp nói trên dừng lại? Quá trình lặp đó cần dừng lại với một trong hai sự kiện sau xảy ra gồm đã tìm thấy hoặc không gian tìm kiếm đã trở nên bằng rỗng (nghĩa là không còn đoạn nào của dãy cho ta hy vọng chứa phân tử cần tìm).

– Phạm vi tìm kiếm trên dãy là một đoạn được xác định bởi các biến nguyên Dau và Cuoi, tương ứng cho biết bắt đầu từ phần tử có chỉ số Dau của dãy cho đến phần tử có chỉ số Cuoi của dãy. Từ đó, ta đưa ra được công thức xác định phân tử ở “giữa” phạm vi tìm kiếm và công thức xác định lại giá trị cho biến Dau hay Cuoi trong mỗi trường hợp thu hẹp phạm vi tìm kiếm.

Viết đoạn lệnh in ra màn hình mảng A gồm 8 phần tử là các số nguyên

2. Kiểu mảng hai chiều

Mảng hai chiều: Là bảng các phần tử cùng kiểu.

Ta có thể coi mảng hai chiều là mảng một chiều mà mỗi phần tử của mảng một chiều lại là một mảng khác.

Ví dụ:

Var b:array[1..9] of array[1..10] of integer;

Khai báo b là một mảng một chiều gồm 9 phần tử. Mỗi phần tử của mảng b là một mảng một chiều gồm 10 phần tử.

Cách khai báo:

Ngoài khai báo theo cách trên. Ta có thêm 2 cách nữa để khai báo mảng 2 chiều.

Cách 1:

Var:array[kiểu chỉ số hang,kiểu chỉ số cột] of ;

Cách 2:

Type=array[kiểu chỉ số hang,kiểu chỉ số cột] of ; Var:;

Ví dụ:

Var b:array[1..9,1..10] of integer;

Hoặc

Type mang2chieu=array[1..9,1..10] of integer; Var B:mang2chieu;

Muốn tham chiếu đến phần tử trong mảng 2 chiều ta sử dụng 2 chỉ số là chỉ số hàng và chỉ số cột.

Ví dụ:

Mang2chieu[5,6]

b) Một số ví dụ:

Ví dụ 1: Tính và in ra bảng nhân.

program bangnhan; uses crt; var bnhan: array[1..9,1..9] of integer; i,j:integer; begin clrscr; for i:=1 to 9 do for j:=1 to 9 do bnhan[i,j]:=i*j; for i:=1 to 9 do begin for j:=1 to 9 do write(bnhan[i,j]:4); writeln(); end; readln end.

Kết quả:

Viết đoạn lệnh in ra màn hình mảng A gồm 8 phần tử là các số nguyên

Ví dụ 2. Chương trình sau nhập vào từ bàn phím các phần tử của mảng hai chiều B gồm 5 hàng, 7 cột với các phần tử là các số nguyên và một số nguyên k. Sau đó, đưa ra màn hình các phần tử có giá trị nhỏ hơn k.

program vidu2; uses crt; var arr: array[1..5,1..7] of integer; i,j,k:integer; begin clrscr; for i:=1 to 5 do for j:=1 to 7 do begin write('a[',i,']','[',j,']='); readln(arr[i,j]); end; write('k='); readln(k); write('cac phan tu nho hon k la:'); for i:=1 to 5 do for j:=1 to 7 do if arr[i,j]Lưu ý: Ngoài mảng một chiều và hai chiều ta có thể có các mảng nhiều chiều.