Thông Báo:

Mọi thắc mắc xin liên hệ facebook: Bá Sơn
fb.com/sonden2000
Posted by : Unknown Saturday, March 25, 2017

                                                        CÂU HỎI VÀ BÀI TẬP
Câu 1: Tại sao mảng là kiểu dữ liệu có cấu trúc?
-   Mảng là kiểu dữ liệu có cấu trúc bởi vì mảng (một chiều, hai chiều hay nhiều chiều) là kiểu có cấu trúc được đề cập tới sớm nhất trong các ngôn ngữ lập trình. Nó được xây dựng từ những kiểu dữ liệu dã có theo quy tắc khuôn dạng do ngôn ngữ lập trình cung cấp. Nó được dùng để chỉ định một nhóm đối tượng cùng một tính chất nào đó. Chẳng hạn, vectơ là một nhóm các số mà mỗi số ta có thể xác định chỉ cần biết chỉ số. Như vậy, để khai báo kiểu mảng phải chỉ ra kiểu dữ liệu chung của các phần tử và kiểu chỉ số.

Chúng ta phải khai báo kích thước cùa mảng bởi vì để cách đánh số các phần tử của nó.
Câu 2:  Tại sao phải khai báo kích thức của mảng?
-   do mảng là kiểu dữ liệu có cấu trúc, hơn nửa dữ liệu kiểu mảng lại rất tốn bộ nhớ vậy nên nhất thiết phải khai báo kích thước của mảng.

Câu 3: 
Các phần tử của mảng có thể có những kiểu sau đây: real, boolean, integer, longint.

Câu 4: Tham chiếu đến phàn tử của mảng bằng cách nào?
- Tham chiếu đến phần tử của mạng có 2 kiểu : 
** Với mảng 1 chiều: 
- Cách tham chiếu đến mảng: A[i] với i là chỉ số phân tử trong mảng. 
vd: Vẫn xét mảng 10 20 30 5 6 7 
A[1]=10; A[2]=20; A[3]=30; A[4]=50; A[5]=6; A[7]=7 

- Cách khai báo mảng: Có 2 cách khai báo: 

Khai báo trực tiếp: Thường thì cách khai báo trực tiếp được dùng nhiều hơn vì nó ngắn gọn. 


var <tên mảng>:array[kiểu chỉ số] of <kiểu phần tử>; 

vd: 
a:array[1..100] of integer; 
b,c:array[1..250] of integer; 

Khai báo gián tiếp: 

type <tên kiểu mảng>=array[kiểu phần tử] of <kiểu chỉ số>; 
var <tên mảng>:<tên kiểu mảng>; 

vd: 
type mang=array[1..100] of integer; 
var a,b,c:mang; 

**Với mảng 2 chiều : 
- Tham chiếu: Vì mảng 2 chiều là bảng nên sẽ cần chỉ số hàng và chỉ số cột: A[i,j] với i là chỉ số hàng, j là chỉ số cột. 

- Khai báo: Tương tự như mảng 1 chiều nhưng thêm chỉ số cột.

Câu 5: Viết chương trình nhập từ bàn phím số nguyên dương N ( N <= 100) và dãy A gồm N số nguyên A1, A2, A3,… có giá trị tuyệt đối không lớn hơn 1000. Hãy cho biết dãy A có phải là 1 cấp số cộng không và thông báo kết quả ra màn hình.

PROGRAM Bai_tap;
USES    CRT;
Var     A:array[1..100] of integer;
        i,cs,n:integer;
        kt:boolean;
BEGIN
        Clrscr;
        Write('Nhap so luong phan tu cua day : '); Readln(n);
        For i:=1 to n do
                Begin
                        Write('Nhap phan tu thu ',i,' : ');
                        Readln(A[i]);
                End;
        kt:=True;
        cs:=A[2]-A[1];
        For i:=3 to n do
                If (A[i]-A[i-1]) <> cs then
                        Begin
                                kt:=False;
                                Break;
                        End;
        If kt=True then Writeln('Day A la mot cap so cong!')
        Else Writeln('Day A khong phai la mot cap so cong!');
        READLN;
END.
Câu 6: Viết chương trình nhập từ bàn phím số nguyên dương N ( N<= 100) và dãy A gồm N số nguyên dương A1, A2, A3,…An có trị tuyệt đối không lớn hơn 1000. Hyax đưa ra những thông tin sau:
a. Số lượng số chẵn và số lẻ trong dãy

b. Số lượng số nguyên tố trong dãy 
uses crt;
var
a:array [1..100] of integer;
n,i,x,a,b,c:integer;
begin
clrscr;
write('n:= ');readln(n);
for i:=1 to n do 
begin
if a[i] mod 2 =0 then a:=a+1;
if a[i] mod 2 = 1 then b:=b+1;
for x:= 2 to trunc(sqrt(a[i])) do
if a[i] mod x <> 0 then c:=c+1;
end;
writeln('so so chan: ',a);
writeln('so so le: ',b);
writeln('so so ngto: ',c);
readln;
end.
Câu 7: Dãy F là dãy Phi nô na xa nếu :
F0=0, F1=1, FN= FN-1+FN-2 với N =>2
Viết chương trình nhập từ bàn phím số nguyên dương N và đưa ra màn hình số hạng thứ N của dãy Phi nô na xi . Chương trình thực hiện được với giá trị lớn nhất của N là bao nhiêu ? 

uses crt;
var m:integer;
l:longint;
function luythua(n:integer):real;
var
k,h:real;
i:integer;
begin
k:=1;
h:=1;
for i:=1 to n do k:=k*(1+sqrt(5))/2;
for i:=1 to n do h:=h*(1-sqrt(5))/2;
luythua:=k-h;
end;
begin
clrscr;
write('Nhap so hang: ');readln(m);
l:=round(luythua(m-1)/sqrt(5));
writeln('So hang thu ',m,' la: ',l);
readln;
end.
Câu 8: Chương trình sau đây thực hiện những gì?
- Bài toán giúp đảo ngược mảng.

Câu 10: Viết chương trình nhập từ bàn phím xâu kí tự S có độ dài không quá 100. Hãy cho biết co bao nhiêu chữ số xuất hiện trong xâu S, thông báo kết quả ra màn hình?
var
s:string[1..100];
i,dem:integer;
begin
write('nhap xau:');readln(s);
for i:=1 to length(s) do begin
case s[i] of 
'1','2','3','4','5','6','7','8','9','0': dem:=dem+1;
end;
end;
writeln('so chu so: ',s);
readln;
end.

- Copyright © Luyện thi HSG pascal - blog hướng dẫn tin 11 nâng cao - Powered by Blogger - Designed by Bá Sơn -