Tin học văn phòng - Chương IV: Kiểu dữ liệu có cấu trúc

CHƯƠNG IV: KIỂU DỮ LIỆU CÓ CẤU TRÚC

Bài 11: Kiểu mảng

Cho mảng a gồm n phần tử n<=15. giá="" trị="" từng="" phần="" tử="" là="" số="" nguyên.="" thực="" hiện="" các="" chương="" trình="">

1. Tính tổng các phần tử trong mảng

Input A = 1 4 5 6 7

Output S = 23

• Xác định bài toán:

- Input: mảng a

- Output: tổng các phần tử trong mảng.

• Thuật toán:

- B1: Nhập n, a1,a2, , an

- B2: i 1, s  0

- B3: s  s + ai

- B4: i i + 1

- B5: nếu i > n, đưa ra S và kết thúc.

- B6: quay lại bước 3.

 

doc 25 trang Người đăng phammen30 Lượt xem 802Lượt tải 0 Download
Bạn đang xem 20 trang mẫu của tài liệu "Tin học văn phòng - Chương IV: Kiểu dữ liệu có cấu trúc", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
CHƯƠNG IV: KIỂU DỮ LIỆU CÓ CẤU TRÚC
Bài 11: Kiểu mảng
Cho mảng a gồm n phần tử n<=15. Giá trị từng phần tử là số nguyên. Thực hiện các chương trình sau:
Tính tổng các phần tử trong mảng
Input
A = 1 4 5 6 7
Output
S = 23
Xác định bài toán:
Input: mảng a
Output: tổng các phần tử trong mảng.
Thuật toán:
B1: Nhập n, a1,a2, , an
B2: iß 1, s ß 0
B3: s ß s + ai
B4: i ßi + 1
B5: nếu i > n, đưa ra S và kết thúc.
B6: quay lại bước 3.
Chương trình: 
program tinhtong;
uses crt;
var n,i:byte;
 a:array[1..15] of integer;
 s:integer;
begin
clrscr;
 write('nhap so luong phan tu: '); readln(n);
 for i:=1 to n do
 begin
 write('nhap phan tu a[',i,'] = '); readln(a[i]);
 end;
 s:=0;
 for i:=1 to n do s:=s+a[i];
 writeln('tong cac phan tu trong mang la: ',s);
readln
end.
Tính tổng các phần tử âm của mảng
Input
A = 1 -4 5 6 -7
Output
S = -11
Xác định bài toán:
Input: mảng a
Output: tổng các phần tử âm trong mảng.
Thuật toán:
B1Nhập n, a1,a2, , an
B2: iß 1, s ß 0
B3: nếu ai < 0 thì s ß s + ai
B4: i ßi + 1
B5: nếu i > n, đưa ra S và kết thúc.
B6: quay lại bước 3.
Chương trình: 
program tongam;
uses crt;
var n,i:byte;
 a:array[1..15] of integer;
 s:integer;
begin
clrscr;
 write('nhap so luong phan tu: '); readln(n);
 for i:=1 to n do
 begin
 write('nhap phan tu a[',i,'] = '); readln(a[i]);
 end;
 s:=0;
 for i:=1 to n do 
if a[i] < 0 then s:=s+a[i];
 writeln('tong cac phan tu trong mang la: ',s);
readln
end.
Tính tổng và trung bình cộng của các phần tử chẵn của mảng.
Input
A = 1 -4 5 6 -7
Output
S = 2, TB = 1
Xác định bài toán:
Input: mảng a
Output: tổng các phần tử chẵn và TB cộng của các phần tử chẵn trong mảng.
Thuật toán:
B1Nhập n, a1,a2, , an
B2: iß 1, s ß 0, d ß 0
B3: nếu ai chia hết cho 2 thì s ß s + ai , dß d+1
B4: i ßi + 1
B5: nếu i > n, tính TB ß s/d, đưa ra S và TB rồi kết thúc.
B6: quay lại bước 3.
Chương trình: 
program tongchan;
uses crt;
var n,i:byte;
 a:array[1..15] of integer;
 s:integer;
 TB: real;
begin
clrscr;
 write('nhap so luong phan tu: '); readln(n);
 for i:=1 to n do
 begin
 write('nhap phan tu a[',i,'] = '); readln(a[i]);
 end;
 s:=0; d:=0;
 for i:=1 to n do 
if a[i] mod 2 = 0 then begin s:=s+a[i];
	d:=d+1; end;
TB:= s/d;
 writeln('tong cac phan tu trong mang la: ',s);
	writeln(‘trung binh cac phan tu chan la: ‘,TB);
readln
end.
Tìm phần tử có giá trị lớp nhất của mảng.
Input
A = 1 -4 5 6 -7
Output
Max = 6, vt = 4
Xác định bài toán:
Input: mảng a
Output: phần tử có giá trị lớn nhất trong mảng, và vị trí của nó
Thuật toán:
B1Nhập n, a1,a2, , an
B2: iß 2, Max ß a1 , cs ß 1
B3: nếu i > n thì đưa ra Max, cs và kết thúc
B4: nếu ai > Max, thì Max ß ai , cs ß i
B5: i ß i + 1, quay lại bước 3.
Chương trình: 
program timmax;
uses crt;
var n,i,cs:byte;
 a:array[1..15] of integer;
 Max:integer;
begin
clrscr;
 write('nhap so luong phan tu: '); readln(n);
 for i:=1 to n do
 begin
 write('nhap phan tu a[',i,'] = '); readln(a[i]);
 end;
 Max := a[i]; cs:=i;
 for i:=2 to n do 
if a[i] > Max then begin Max:=a[i];
	cs:=i; end;
 writeln(' phan tu lon nhat trong mang la: ',Max , ‘o vi tri ‘,i);
readln
end.
Tìm phần tử có giá trị nhỏ nhất của mảng.
Input
A = 1 -4 5 6 -7
Output
Min = -7, vt = 5
Xác định bài toán:
Input: mảng a
Output: Phần tử có giá trị nhỏ nhất trong mảng và vị trí của nó
Thuật toán:
B1Nhập n, a1,a2, , an
B2: iß 2, Min ß a1 , csß 1
B3: nếu i > n thì đưa ra Max và kết thúc
B4: nếu ai > Max, thì Max ß ai , csß i
B5: i ß i + 1, quay lại bước 3.
Chương trình: 
program timmax;
uses crt;
var n,i,cs:byte;
 a:array[1..15] of integer;
 Min:integer;
begin
clrscr;
 write('nhap so luong phan tu: '); readln(n);
 for i:=1 to n do
 begin
 write('nhap phan tu a[',i,'] = '); readln(a[i]);
 end;
 Min := a[i]; cs ß i;
 for i:=2 to n do 
if a[i] < Min then begin Min:=a[i];
	cs:= i; end;
 writeln(' phan tu nho nhat trong mang la: ',Min,’ o vi tri ‘,i);
readln
end.
Sắp xếp dãy a thành dãy không giảm.
Input
A = 1 -4 5 6 -7
Output
A = -7 -4 1 5 6
Xác định bài toán:
Input: mảng a
Output: mảng a là dãy không tăng
Thuật toán:
B1Nhập n, a1,a2, , an
B2: mß n
B3: Nếu M < 2 thì đưa ra dãy a đã được sắp xếp rồi kết thúc
B4: m ß m – 1, i ß 0
B5: iß i + 1
B6: Nếu i > M thì quay lại bước 3;
B7: nếu ai > ai + 1 , thì tráo đổi ai và ai+1 cho nhau
B8: quay lại bước 5.
Chương trình: 
program sxkhonggiam;
uses crt;
var n,i,m,j:byte;
 a:array[1..15] of integer;
 t:integer;
begin
clrscr;
 write('nhap so luong phan tu: '); readln(n);
 for i:=1 to n do
 begin
 write('nhap phan tu a[',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 so sau khi sap xep: ’);
	for i:=1 to n do write(a[i]:4);
readln
end.
Tính tổng các số nguyên dương chia hết cho 5
Input
A = 1 5 8 4 10
Output
S = 15
Xác định bài toán:
Input: mảng a
Output: tổng các phần tử trong mảng chia hết cho 5
Thuật toán:
B1Nhập n, a1,a2, , an
B2: iß 1, s ß 0,
B3: nếu ai chia hết cho 5 thì s ß s + ai 
B4: i ßi + 1
B5: nếu i > n, đưa ra S và TB rồi kết thúc.
B6: quay lại bước 3.
Chương trình: 
program tongboi5;
uses crt;
var n,i:byte;
 a:array[1..15] of integer;
 s:integer;
begin
clrscr;
 write('nhap so luong phan tu: '); readln(n);
 for i:=1 to n do
 begin
 write('nhap phan tu a[',i,'] = '); readln(a[i]);
 end;
 s:=0; 
 for i:=1 to n do 
if a[i] mod 5 = 0 then s:=s+a[i];
 writeln('tong cac phan tu chia het cho 5 la: ',s);
readln
end.
Kiểm tra tính nguyên tố của các phần tử trong mảng.
Input
A = 2 3 4 5 6
Output
2 là số nguyên tố
3 là số nguyên tố
4 không phải là số nguyên tố
5 là số nguyên tố
6 không phải là số nguyên tố
Xác định bài toán:
Input: mảng a
Output: tổng các phần tử chẵn và TB cộng của các phần tử chẵn trong mảng.
Thuật toán:
B1Nhập n, a1,a2, , an
B2: iß 1, 
B3: nếu ai là nguyên tố thì thông báo ai là số nguyên tố
B4: ngược lại, thông báo ai không phải là số nguyên tố.
B5: ißi+1;
B6: nếu i > n, kết thúc.
B7: quay lại bước 3.
Chương trình: 
program ktnguyento;
uses crt;
var a:array[1..15] of integer;
 	n,i,j,d:byte;
	begin
 clrscr;
 	write('nhap so luong phan tu: '); readln(n);
 	for i:=1 to n do
 	begin write('nhap phan tu a[',i,']= '); readln(a[i]);
 end;
 	 writeln('------------');
 	 for i:=1 to n do
 	begin
 	d:=0;
 	 for j:=2 to (a[i] div 2) do
 	if a[i] mod j = 0 then d:=d+1;
 	if d=0 then writeln(a[i],' la so nguyen to')
 	 else writeln(a[i],' khong phai so nguyen to');
 	 end;
readln
end.
Có bao nhiêu phần tử trong mảng a có giá trị bằng k
Input
A1 = 1 4 5 4 7
Output
K = 4 à d = 2
K = 6 à d = 0
Xác định bài toán:
Input: mảng a, giá trị k
Output: số lượng phần tử trong mảng có giá trị bằng k
Thuật toán:
B1Nhập n, a1,a2, , an , k
B2: iß 1, dß 0
B3: nếu ai = k thì tăng d lên 1 đơn vị dß d +1
B4: ißi+1;
B5: nếu i > n, đưa ra d và kết thúc.
B6: quay lại bước 3.
Chương trình: 
program timkiem;
uses crt;
var a:array[1..15] of integer;
 	n,i,d:byte;
	k:integer;
	begin
 clrscr;
 	write('nhap so luong phan tu: '); readln(n);
 	for i:=1 to n do
 	begin write('nhap phan tu a[',i,']= '); readln(a[i]);
 end;
	write(‘phan gia tri k = ’);	readln(k);
d:=0;
 	 for i:=1 to n do
	if a[i]=k then d:=d+1;
	writeln(‘so luong phan tu trong mang co gia tri bang ’,k,’ la: ‘,d);
readln
end.
Tìm vị trí xuất hiện của giá trị X trong mảng a và thay thế X thành Y. 
Input
A = 1 4 5 6 7, x = 5, y =10
Output
A = 1 4 10 6 7
Xác định bài toán:
Input: mảng a, giá trị k
Output: giá trị X trong mảng được thay thế bằng giá trị Y
Thuật toán:
B1Nhập n, a1,a2, , an , x,y
B2: iß 1
B3: nếu ai = x thì ai ß y
B4: ißi+1;
B5: nếu i > n, đưa ra mảng sau khi thay thế và kết thúc.
B6: quay lại bước 3.
Chương trình: 
program thaythe;
uses crt;
var a:array[1..15] of integer;
 n,i:byte;
 x,y:integer;
begin
clrscr;
 write('nhap so luong phan tu: '); readln(n);
 for i:=1 to n do
 begin
 write('nhap phan tu a[',i,'] ='); readln(a[i]);
 end;
 write('mang moi nhap la: ');
 for i:=1 to n do write(a[i]:4);
 writeln;
 write('nhap gia tri can tim: '); readln(x);
 write('nhap gia tri thay the: '); readln(y);
 for i:=1 to n do
 if a[i]=x then a[i]:=y;
 write('mang sau khi thay the: ');
 for i:=1 to n do write(a[i]:4);
readln
end.
Tìm kiếm các cặp 2 phần tử gần nhau có tổng chia hết cho 10. Thay thế các phần tử đó bằng tổng của chúng.
Input
A = 2 4 6 14 16 24
Output
A = 1 10 10 30 30 24
Xác định bài toán:
Input: mảng a, giá trị k
Output: mảng a sau khi thay thế
Thuật toán:
B1Nhập n, a1,a2, , an , x,y
B2: iß 1
B3: nếu ai + ai+1 chia hết cho 10 thì ai và ai+1 nhận giá trị mới là tổng của chúng.
B4: ißi+1;
B5: nếu i > n, đưa ra mảng sau khi thay thế và kết thúc.
B6: quay lại bước 3.
Chương trình: 
program thaythe;
uses crt;
var a:array[1..15] of integer;
 n,i:byte;
 x,y:integer;
begin
clrscr;
 write('nhap so luong phan tu: '); readln(n);
 for i:=1 to n do
 begin
 write('nhap phan tu a[',i,'] ='); readln(a[i]);
 end;
 write('mang moi nhap la: ');
 for i:=1 to n do write(a[i]:4);
 writeln;
 for i:=1 to n do
 if (a[i] +a[i+1]) mod 10 = 0 then
 begin
 a[i]:=a[i]+a[i+1];
 a[i+1]:=a[i];
 end;
 write('mang sau khi thay the: ');
 for i:=1 to n do write(a[i]:4);
readln
end.
Kiểm tra mảng có đối xứng hay không?
Input
A1 = 1 4 5 6 7
A2 = 1 2 3 2 1
A3 = 1 2 3 3 2 1
Output
A1 không đối xứng
A2 đối xứng
A3 đối xứng
Xác định bài toán:
Input: mảng a, giá trị k
Output: thông báo mảng a có đối xứng hay không.
Thuật toán:
B1Nhập n, a1,a2, , an 
B2: iß 1, dx ß true
B3: nếu ai an-i+1 thì dx nhận giá trị mới là false.
B4: ißi+1;
B5: nếu i > n, 
B5.1: kiểm tra nếu dx = true thì tb mảng đối xứng và kết thúc
B5.2: dx = false thì thông báo mảng không đối xứng và kết thúc
B6: quay lại bước 3.
Chương trình: 
program doixung;
uses crt;
var a:array[1..15] of integer;
 n,i:byte;
 dx:boolean;
begin
clrscr;
 write('nhap so luong phan tu: '); readln(n);
 for i:=1 to n do
 begin
 write('nhap phan tu a[',i,'] ='); readln(a[i]);
 end;
 write('mang moi nhap la: ');
 for i:=1 to n do write(a[i]:4);
 writeln;
 dx:=true;
 for i:=1 to n do
 if a[i] a[n-i+1] then dx:=false;
 if dx= true then writeln('day la mang doi xung')
 else writeln('day khong phai mang doi xung');
readln
end.
Kiểm tra xem mảng a có phải là mảng tăng theo cấp số cộng d hay không?
Input
A1 = 1 4 5 6 7
A2 = 1 4 7 10
Output
A1 không phải cấp số cộng
A2 là cấp số cộng có công sai là 3
Xác định bài toán:
Input: mảng a, giá trị k
Output: thông báo mảng a có phải là cấp số cộng hay không?
Thuật toán:
B1Nhập n, a1,a2, , an 
B2: iß 2, d ß a2 – a1, csc ß true
B3: nếu ai ai-1 + d, thì csc ß false.
B4: ißi+1;
B5: nếu i > n, 
B5.1: kiểm tra nếu csc = true thì tb mảng là cấp số cộng, kết thúc
B5.2: csc = false thì tb mảng không là cấp số cộng và kết thúc
B6: quay lại bước 3.
Chương trình: 
program cscong;
uses crt;
var a:array[1..15] of integer;
 d:integer;
 n,i:byte;
 csc:boolean;
begin
clrscr;
 write('nhap so luong ptu cua mang '); readln(n);
 for i:=1 to n do
 begin
 write('nhap phan tu a[',i,'] = '); readln(a[i]);
 end;
 write('mang moi nhap la: ');
 for i:=1 to n do write(a[i]:4);
 writeln;
 d:=a[2]-a[1];
 csc:=true;
 for i:=2 to n do
 if (a[i]-a[i-1]d) then csc:= false;
 if csc=true then writeln('day la cap so cong co cong sai = ',d)
 else writeln('day khong la cap so cong');
readln
end.
Chèn phần tử X vào vị trí k trong mảng.
Input
A = 1 4 5 6 7, k = 3, x = 10
Output
A = 1 4 10 5 6 7
Xác định bài toán:
Input: mảng a, giá trị k
Output: mảng a sau khi chèn
Thuật toán:
B1: Nhập n, a1,a2, , an , x, k
B2: Chia mảng làm đôi, xuất mảng từ vị trí thứ nhất đến k -1
B3: dịch chuyển các phần từ ở nửa cuối mảng đến i + 1
B4: tại vị trí k của mảng nhận giá trị x
B5: Đưa ra mảng sau khi thay thế và kết thúc.
Chương trình: 
program chenso;
uses crt;
var a:array[1..15] of integer;
 n,i,k:byte;
 x:integer;
begin
clrscr;
 write('nhap so luong phan tu: '); readln(n);
 for i:=1 to n do
 begin
 write('nhap phan tu a[',i,'] ='); readln(a[i]);
 end;
 write('mang moi nhap la: ');
 for i:=1 to n do write(a[i]:4);
 writeln;
 write('nhap vi tri can chen: '); readln(k);
 write('nhap gia tri can chen: '); readln(x);
 write('mang sau khi thay chen: ');
 for i:=1 to k-1 do write(a[i]:4);
 for i:=n+1 downto k+1 do a[i]:=a[i-1];
 a[k]:=x;
 for i:=k to n+1 do write(a[i]:4);
readln
end.
Bài 12: Kiểu xâu:
Bài 1: nhập vào 2 xâu, đưa ra xâu có độ dài lớn hơn, và đưa ra xâu lớn hơn
Input
S1 = ‘tin hoc’
S2 = ‘hoc tin hoc’
Output
Xâu dài hơn: S2 = ‘hoc tin hoc’
Xâu lớn hơn: S1 = ‘tin hoc’
Ý tưởng:
So sánh hai xâu, xâu nào lớn hơn thì xuất ra màn hình
So sánh hai xâu, xâu nào dài hơn thì xuất ra màn hình
Chương trình:
program sosanh;
uses crt;
var s1,s2:string;
begin
clrscr;
 write('Nhap xau thu nhat: '); readln(s1);
 write('Nhap xau thu hai: '); readln(s2);
	 if s1> s2 then writeln(‘xau lon hon la:’,s1)
	else writeln(‘xau lon hon la:’,s2);
	 if length(s1) > length(s2) then writeln(‘xau dai hon la:’,s1)
	else writeln(‘xau dai hon la:’,s2);
readln
end.
Bài 2: nhập vào 1 xâu, đếm số kí tự chữ số có trong xâu
Input
Nam sinh ngay 21/10/1999
Output
8
Ý tưởng:
Khởi tạo một biến đếm d = 0
Lần lượt đi từ đầu xâu đến cuối xâu kiểm tra xem kí tự nào là số từ 0 9 nếu là số thì tăng biến đếm lên 1 đơn vị
Chương trình:
program demso;
uses crt;
var s1:string;
 i:byte;
begin
clrscr;
 write('nhap xau: '); readln(s1);
	 d:=0;
 for i:=1 to length(s1) do
 if ('0'<=s1[i]) and (s1[i]<='9') then d:=d+1;
 writeln('ket qua: ',d);
readln
end.
Bài 3: nhập vào 1 xâu, kiểm tra xâu đó có phải là xâu đối xứng hay không?
Input
S1= ‘tin hoc’
S2= ‘tot’
Output
S1 không đối xứng
S2 là xâu đối xứng
Ý tưởng:
Khởi tạo 1 xâu rỗng
Xâu rỗng vừa tạo lưu trữ xâu nhập vào theo thứ tự từ sau ra trước.
Nếu 2 xâu bằng nhau thì xâu nhập vào là xâu đối xứng và ngược lại
Chương trình:
program doixung;
uses crt;
var s1,s2:string;
 i:byte;
begin
clrscr;
 write('nhap xau: '); readln(s1);
 s2:='';
 for i:=length(s1) downto 1 do s2:=s2+s1[i];
 if s1 = s2 then writeln('day la xau doi xung')
 else writeln('day khong phai xau doi xung');
readln
end.
Bài 4: nhập vào 1 xâu, đưa ra màn hình các chữ số có trong xâu
Input
Nam sinh nam 1999 – ki mao
Output
1999
Ý tưởng:
Khởi tạo 1 xâu rỗng
Lần lượt đi từ đầu xâu đến cuối xâu kiểm tra xem kí tự nào là số từ 0 9 nếu là số thì đưa vào xâu rỗng trên.
Chương trình:
program inso;
uses crt;
var s1,s2:string;
 i:byte;
begin
clrscr;
 write('nhap xau: '); readln(s1);
 s2:='';
 for i:=1 to length(s1) do
 if ('0'<=s1[i]) and (s1[i]<='9') then s2:=s2+s1[i];
 writeln('ket qua: ',s2);
readln
end.
Bài 5: nhập vào 1 xâu, chuyển xâu vừa nhập thành xâu in hoa
Input
tin hoc
Output
TIN HOC
Ý tưởng:
Sử dụng câu lệnh chuyển chữ thường thành chữ hoa
Lần lượt đi từ đầu xâu đến cuối xâu và thực hiện chuyển chữ
Chương trình:
program chuyenchu;
uses crt;
var s:string;
 i:byte;
begin
clrscr;
 write('nhap xau: '); readln(s);
 for i:=1 to length(s) do s[i]:= upcase(s[i]);
 writeln('xau sau khi chuyen: ',s);
readln
end.
Bài 6: nhập vào 1 xâu, thay thế tất cả các cụm kí tự “anh” bằng cụm kí tự “em”.
Ý tưởng:
Xác định vị trí của cụm kí tự anh
Xóa cụm kí tự anh
Chèn cụm kí tự em vào vị trí vừa xóa
Chương trình:
program thaychu;
uses crt;
var s:string;
 i,vt:byte;
begin
clrscr;
 write('nhap xau: '); readln(s);
 while pos('anh',s)0 do
 begin
 vt:=pos('anh',s);
 delete(s,vt,3);
 insert('em',s,vt);
 end;
 writeln('xau sau khi chuyen: ',s);
readln
end.
Bài 7: nhập vào 1 xâu, xóa các kí tự trắng thừa trong xâu (kí tự trắng thừa là kí tự ở đầu và cuối xâu, giữa hai từ có 2 kí tự trắng).
Input
‘ hoc tin hoc ’
Output
‘hoc tin hoc’
Ý tưởng:
Xóa kí tự trắng ở đầu và cuối dãy trước.
Lần lượt đi từ đầu xâu đến cuối xâu nếu 2 kí tự liền nhau là 2 kí tự trắng thì xóa bớt đi 1 kí tự trắng
Chương trình:
program xoatrang;
uses crt;
var st:string;
 i,n: byte;
begin
clrscr;
 write('Nhap xau: '); readln(st);
 n:=length(st);
 if st[1]=' ' then delete(st,1,1);
 if st[n]=' ' then delete(st,n,1);
 for i:=1 to n do
 if (st[i]=' ') and (st[i+1]=' ') then delete(st,i,1);
 writeln('Ket qua la: ',st);
readln
end.
Bài 8: nhập vào họ tên của 1 người, điều chỉnh các kí tự đầu của các từ thành chữ in hoa
Input
kieu le quyen
Output
Kieu Le Quyen
Ý tưởng:
Tìm vị trí của các dấu cách
Chuyển kí tự tiếp theo sau dấu cách thành kí tự in hoa
Chuyển kí tự đầu tiên trong xâu thành kí tự in hoa
Chương trình:
program doichu;
uses crt;
var st,ten:string;
 i: byte;
begin
clrscr;
 write('Nhap xau: '); readln(st);
 for i:=1 to length(st) do
 if st[i]=' ' then st[i+1]:=upcase(st[i+1]);
 st[1]:=upcase(st[1]);
 writeln('ket qua la: ',st);
readln
end.
Bài 9: nhập vào họ tên của 1 người, đưa ra phần tên.
Input
Kieu Le Quyen
Output
Quyen
Ý tưởng:
Tìm vị trí của dấu cách cuối cùng (vt)
Đếm số kí tự của phần tên (độ dài của tên: dai)
Copy từ xâu vừa nhập ra dai kí tự từ vị trí vt à được tên.
Chương trình:
program tach_ten;
uses crt;
var st,ten:string;
 vt,dai,i: byte;
begin
clrscr;
 write('Nhap xau: '); readln(st);
 for i:=1 to length(st) do
 if st[i]=' ' then vt:=i+1;
 dai:=length(st) - vt + 1;
 ten:=copy(st,vt,dai);
 writeln('Phan ten la: ',ten);
readln
end.
Bài 10: Nhập vào một xâu, mã hóa xâu vừa nhập theo vòng tròn k =1.
Input
abc
Output
bcd
Ý tưởng:
Tìm vị trí của dấu cách cuối cùng (vt)
Đếm số kí tự của phần tên (độ dài của tên: dai)
Copy từ xâu vừa nhập ra dai kí tự từ vị trí vt à được tên.
Chương trình:
program mahoa;
uses crt;
var st:string;
 i: byte;
begin
clrscr;
 write('Nhap xau: '); readln(st);
 for i:=1 to length(st) do st[i]:= succ(st[i]); {giới thiệu thêm cho HS}
 writeln('ket qua sau ma hoa: ',st);
readln
end.
Bài 11: nhập vào 1 xâu, thông báo ra màn hình chữ cái có trong xâu và số lượng của chúng.(không phân biệt chữ hoa, chữ thường);
Input
‘hoc tin hoc’
Output
H : 2
O : 2
C : 2
T : 1
I : 1
N : 1
Ý tưởng:
Khởi tạo một mảng dem để đếm các kí tự
Chuyển kí tự trong dãy thành kí tự in hoa
Đi từ đầu xâu đến cuối xâu so xâu vừa nhập với bảng chữ cái in hoa, nếu xuất hiện kí tự nào thì thực hiện đếm kí tự đó.
Kí tự có trong xâu thì biến đếm kí tự đó > 0. Từ điều kiện này ta xuất ra màn hình kí tự và số lượng kí tự có trong xâu. 
Chương trình:
program demkitu;
Uses Crt;
Var St:String;
 dem: Array['A'..'Z'] Of Byte;
 i:Byte;
 ch:Char;
Begin
clrscr;
 Write('Nhap xau St: '); Readln(St);
 For ch:='A' To 'Z' Do dem[ch]:=0;
 For i:=1 To Length(St) Do
 If (Upcase(St[i]) >='A') and (Upcase(St[i]) <='Z') Then
 dem[Upcase(St[i])]:=dem[Upcase(St[i])] +1;
 For ch:='A' To 'Z' Do
 If dem[ch]>0 Then Writeln(ch,' : ',dem[ch]);
 Readln;
End.

Tài liệu đính kèm:

  • docngan_hang_cau_hoi_chuong_IV_tin_11.doc