Chào mừng quý vị đến với website của ...nguyen phu ben
|
|
de thi hoc sinh gioi pascal

- 0 / 0
(Tài liệu chưa được thẩm định)
Nguồn:
Người gửi: Nguyễn Văn Thuận
Ngày gửi: 00h:12' 25-04-2014
Dung lượng: 49.0 KB
Số lượt tải: 424
Nguồn:
Người gửi: Nguyễn Văn Thuận
Ngày gửi: 00h:12' 25-04-2014
Dung lượng: 49.0 KB
Số lượt tải: 424
Số lượt thích:
0 người
Bài 1. Sắp xếp (4 điểm)
Cho số tự nhiên n (n<=100) và dãy số nguyên a1, a2, …, an (bao gồm cả số nguyên âm cả số nguyên dương). Hãy đổi chổ các phần tử của dãy sao cho các phần tử dương nằm đầu dãy, các phần tử âm nằm ở cuối dãy. In dãy sau khi đã sắp xếp
PROGRAM BAI1;
USES CRT;
VAR A:array[1..100] of integer;
Trung_gian,i,j,n:integer;
BEGIN
Clrscr;
write(`Nhap n=`); Readln(n);
{nhap mang}
For i:=1 to n do
begin
write(`nhap A`,i,`=`);
Readln(A[i]);
end;
{trao doi}
i:=1; j:=n;
Repeat
While a[i]>0 do {inc(i);} i:=i+1;
While a[j]<=0 do {dec(j);}j:=j-1;
If i Begin
Trung_gian:=a[i];
a[i]:=a[j];
a[j]:=Trung_gian;
End;
Until j<=i;
i:=1; j:=n;
Repeat
While a[i]>=0 do {inc(i);}i:=i+1;
While a[j]<0 do {dec(j);}j:=j-1;
If i begin
Trung_gian:=a[i];
a[i]:=a[j];
a[j]:=Trung_gian;
End;
Until j<=i;
{xuat mang}
for i:=1 to n do Write(a[i]:4);
Readln;
END.
Bài 2. Tìm xâu con dài nhất (6 điểm)
Nhập vào một xâu bất kỳ từ bàn phím. Hãy cho biết độ dài lớn nhất của xâu con chứa liên tiếp kí tự ‘a’. In ra màn hình xâu con dài nhất vừa tìm được?
Ví dụ: Xâu nhập vào: aabcaaadeaaj Độ dài max=3
Xâu con cần tìm là: aaa
PROGRAM BAI2;
USES CRT;
VAR s:string;
i,max,t,k,vitri:byte;
BEGIN
clrscr;
Write(`nhap xau:`);Readln(s);
k:=length(s);
max:=0;
t:=0;
for i:=1 to k do
begin
if s[i]=`a` then
begin
t:=t+1;
if t>max then
begin
max:=t;
vitri:=i;
end;
end;
{else t:=0; }
if s[i]<>`a` then t:=0;
end;
writeln(`max=`,max,` vitri=`,vitri);
if t>max then max:=t;
for i:=vitri-max+1 to vitri do write(s[i]);
readln
END.
Bài 3. Các thao tác trên mảng 2 chiều ( 6 điểm)
Tạo mảng 2 chiều A câp nxn gồm các số nguyên và một số nguyên x. Viết chương trình thực hiện các công việc sau:
Đếm số lần xuất hiện của x trong A và vị trí của chún
Tính tổng các phần tử lớn nhất của mỗi dòng
Sắp xếp lại mảng theo thứ tự tăng dần như sau
PROGRAM BAI3;
USES CRT;
VAR
A: array[1..10,1..10] of integer;
B :array[1..100]of integer;
Trung_gian, k, n,i,j,x,dem,S,max:Integer;
BEGIN
clrscr;
Write(`Nhap n=`); Readln(n);
{nhap mang 2 chieu}
For i:=1 to n do
Begin
For j:=1 to n do
begin
write(`nhap a`,i,j,`=`);
readln(a[i,j]);
end;
End;
{xuat mang}
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:5);
writeln;
end;
{tim ki tu x trong mang A}
Write(`Nhap x=`);
Readln(x);
{cau
Cho số tự nhiên n (n<=100) và dãy số nguyên a1, a2, …, an (bao gồm cả số nguyên âm cả số nguyên dương). Hãy đổi chổ các phần tử của dãy sao cho các phần tử dương nằm đầu dãy, các phần tử âm nằm ở cuối dãy. In dãy sau khi đã sắp xếp
PROGRAM BAI1;
USES CRT;
VAR A:array[1..100] of integer;
Trung_gian,i,j,n:integer;
BEGIN
Clrscr;
write(`Nhap n=`); Readln(n);
{nhap mang}
For i:=1 to n do
begin
write(`nhap A`,i,`=`);
Readln(A[i]);
end;
{trao doi}
i:=1; j:=n;
Repeat
While a[i]>0 do {inc(i);} i:=i+1;
While a[j]<=0 do {dec(j);}j:=j-1;
If i
Trung_gian:=a[i];
a[i]:=a[j];
a[j]:=Trung_gian;
End;
Until j<=i;
i:=1; j:=n;
Repeat
While a[i]>=0 do {inc(i);}i:=i+1;
While a[j]<0 do {dec(j);}j:=j-1;
If i
Trung_gian:=a[i];
a[i]:=a[j];
a[j]:=Trung_gian;
End;
Until j<=i;
{xuat mang}
for i:=1 to n do Write(a[i]:4);
Readln;
END.
Bài 2. Tìm xâu con dài nhất (6 điểm)
Nhập vào một xâu bất kỳ từ bàn phím. Hãy cho biết độ dài lớn nhất của xâu con chứa liên tiếp kí tự ‘a’. In ra màn hình xâu con dài nhất vừa tìm được?
Ví dụ: Xâu nhập vào: aabcaaadeaaj Độ dài max=3
Xâu con cần tìm là: aaa
PROGRAM BAI2;
USES CRT;
VAR s:string;
i,max,t,k,vitri:byte;
BEGIN
clrscr;
Write(`nhap xau:`);Readln(s);
k:=length(s);
max:=0;
t:=0;
for i:=1 to k do
begin
if s[i]=`a` then
begin
t:=t+1;
if t>max then
begin
max:=t;
vitri:=i;
end;
end;
{else t:=0; }
if s[i]<>`a` then t:=0;
end;
writeln(`max=`,max,` vitri=`,vitri);
if t>max then max:=t;
for i:=vitri-max+1 to vitri do write(s[i]);
readln
END.
Bài 3. Các thao tác trên mảng 2 chiều ( 6 điểm)
Tạo mảng 2 chiều A câp nxn gồm các số nguyên và một số nguyên x. Viết chương trình thực hiện các công việc sau:
Đếm số lần xuất hiện của x trong A và vị trí của chún
Tính tổng các phần tử lớn nhất của mỗi dòng
Sắp xếp lại mảng theo thứ tự tăng dần như sau
PROGRAM BAI3;
USES CRT;
VAR
A: array[1..10,1..10] of integer;
B :array[1..100]of integer;
Trung_gian, k, n,i,j,x,dem,S,max:Integer;
BEGIN
clrscr;
Write(`Nhap n=`); Readln(n);
{nhap mang 2 chieu}
For i:=1 to n do
Begin
For j:=1 to n do
begin
write(`nhap a`,i,j,`=`);
readln(a[i,j]);
end;
End;
{xuat mang}
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:5);
writeln;
end;
{tim ki tu x trong mang A}
Write(`Nhap x=`);
Readln(x);
{cau
 





