Bài tập và thực hành 3

- 0 / 0
(Tài liệu chưa được thẩm định)
Nguồn:
Người gửi: Hua Thanh Van
Ngày gửi: 20h:49' 24-11-2008
Dung lượng: 70.5 KB
Số lượt tải: 546
Nguồn:
Người gửi: Hua Thanh Van
Ngày gửi: 20h:49' 24-11-2008
Dung lượng: 70.5 KB
Số lượt tải: 546
Số lượt thích:
1 người
(Đinh Thị Kim Quyên)
CHƯƠNG IV
KIỂU DỮ LIỆU CÓ CẤU TRÚC
BÀI TẬP VÀ THỰC HÀNH 3
GV: HỨA THANH VÂN, THPTBC TX GÒ CÔNG
Bài 1: Tạo mảng A gồm n (n<=100) số nguyên, mỗi số có trị tuyệt đối không vượt quá 300. Tính tổng các phần tử của mảng là bội số của một số nguyên dương k cho trước.
1a) Hãy tìm hiểu và chạy thử chương trình sau đây….
Program Sum1 ; (1)
uses crt ; (2)
const nmax = 100 ; (3)
type MyArray = array [1..nmax] of integer ; (4)
var A : MyArray ; (5)
s,n,i,k : integer ; (6)
Begin (7)
clrscr ; randomize ; (8)
write(`nhap n= `) ; readln(n) ; (9)
for i:=1 to n do A[i] := random(300) - random(300) ; (10)
for i:=1 to n do write(A[i]:5) ; (11)
writeln ; (12)
write(`nhap k= `) ; readln(k) ; (13)
s:=0 ; (14)
for i:=1 to n do (15)
if A[i] mod k =0 then s := s+A[i] ; (16)
writeln(`tong can tim la: `,s) ; (17)
readln (18)
end. (19)
Câu hỏi:
MyArray là tên của kiểu dữ liệu hay tên biến?
Vai trò của nmax và n khác nhau thế nào? Có thể bỏ khai báo hằng nmax và viết n thay cho nmax trong khai báo kiểu mảng được không? Ví sao?
Những dòng lệnh nào tạo ra mảng A?
Lệnh gán A[i] := random(300) – random(300) ; (dòng 10) có ý nghĩa gì?
Câu lệnh s := s+A[i] (dòng 16) thực hiện bao nhiêu lần?
1b) Hãy đưa các câu lệnh sau đây vào những vị trí cần thiết nhầm sửa đổi chương trình trong câu a) để có được chương trình đưa ra số các số dương và số các số âm trong mảng.
Posi, neg: integer ;
Posi := 0 ; neg := 0 ;
if A[i] > 0 then posi := posi + 1 ;
else if A[i] , 0 then neg := neg +1 ;
Write (posi :4, neg :4) ;
Bài 2: viết chương trình tìm phần tử có giá trị lớn nhất của mảng và đưa ra màn hình chỉ số và giá trị của phần tử tìm được. Nếu có nhiều phần tử có cùng giá trị lớn nhất thì đưa ra phần tử có chỉ số nhỏ nhất
2a) Hãy tìm hiểu và chạy thử chương trình sau đây….
program MaxElement;
const Nmax=100;
type MyArray=array[1..Nmax] of integer;
var A:MyArray;
n,i,j: integer;
begin
write (`nhap so luong phan tu cua day so, n= `);
readln(n);
for i:=1 to n do
begin
write(`phan tu thu `,i,` = `);
readln(A[i]);
end;
j:=1;
for i:=2 to n do
if A[i]>a[j] then j:=i;
write(`chi so: `,j,` gia tri: `,A[j]:4);
readln
end.
2b) Chỉnh sửa chương trình trên để đưa ra chỉ số của các phần tử có cùng giá trị lớn nhất?
KIỂU DỮ LIỆU CÓ CẤU TRÚC
BÀI TẬP VÀ THỰC HÀNH 3
GV: HỨA THANH VÂN, THPTBC TX GÒ CÔNG
Bài 1: Tạo mảng A gồm n (n<=100) số nguyên, mỗi số có trị tuyệt đối không vượt quá 300. Tính tổng các phần tử của mảng là bội số của một số nguyên dương k cho trước.
1a) Hãy tìm hiểu và chạy thử chương trình sau đây….
Program Sum1 ; (1)
uses crt ; (2)
const nmax = 100 ; (3)
type MyArray = array [1..nmax] of integer ; (4)
var A : MyArray ; (5)
s,n,i,k : integer ; (6)
Begin (7)
clrscr ; randomize ; (8)
write(`nhap n= `) ; readln(n) ; (9)
for i:=1 to n do A[i] := random(300) - random(300) ; (10)
for i:=1 to n do write(A[i]:5) ; (11)
writeln ; (12)
write(`nhap k= `) ; readln(k) ; (13)
s:=0 ; (14)
for i:=1 to n do (15)
if A[i] mod k =0 then s := s+A[i] ; (16)
writeln(`tong can tim la: `,s) ; (17)
readln (18)
end. (19)
Câu hỏi:
MyArray là tên của kiểu dữ liệu hay tên biến?
Vai trò của nmax và n khác nhau thế nào? Có thể bỏ khai báo hằng nmax và viết n thay cho nmax trong khai báo kiểu mảng được không? Ví sao?
Những dòng lệnh nào tạo ra mảng A?
Lệnh gán A[i] := random(300) – random(300) ; (dòng 10) có ý nghĩa gì?
Câu lệnh s := s+A[i] (dòng 16) thực hiện bao nhiêu lần?
1b) Hãy đưa các câu lệnh sau đây vào những vị trí cần thiết nhầm sửa đổi chương trình trong câu a) để có được chương trình đưa ra số các số dương và số các số âm trong mảng.
Posi, neg: integer ;
Posi := 0 ; neg := 0 ;
if A[i] > 0 then posi := posi + 1 ;
else if A[i] , 0 then neg := neg +1 ;
Write (posi :4, neg :4) ;
Bài 2: viết chương trình tìm phần tử có giá trị lớn nhất của mảng và đưa ra màn hình chỉ số và giá trị của phần tử tìm được. Nếu có nhiều phần tử có cùng giá trị lớn nhất thì đưa ra phần tử có chỉ số nhỏ nhất
2a) Hãy tìm hiểu và chạy thử chương trình sau đây….
program MaxElement;
const Nmax=100;
type MyArray=array[1..Nmax] of integer;
var A:MyArray;
n,i,j: integer;
begin
write (`nhap so luong phan tu cua day so, n= `);
readln(n);
for i:=1 to n do
begin
write(`phan tu thu `,i,` = `);
readln(A[i]);
end;
j:=1;
for i:=2 to n do
if A[i]>a[j] then j:=i;
write(`chi so: `,j,` gia tri: `,A[j]:4);
readln
end.
2b) Chỉnh sửa chương trình trên để đưa ra chỉ số của các phần tử có cùng giá trị lớn nhất?
 








Các ý kiến mới nhất