Trong ngôn ngữ lập trình Pascal, để xóa ký tự đầu tiên của xâu ký tự S A.. Xóa đi một trong 2 dấu cách đầu tiên trong xâu; C.. Trong ngôn ngữ lập trình Pascal, để in một xâu ra màn hình
Trang 1ÔN TẬP 11 VIẾT CHƯƠNG TRÌNH GIẢI BÀI TOÁN SAU
TRONG SÁCH BÀI TẬP TIN 11
Dữ liệu vào: Không có
Dữ liệu ra: Tệp văn bản FIBO.DAT gồm 45 dòng Mỗi dòng là một số Fibonaccy
2 Xây dựng ý tưởng giải thuật:
Sử dụng vòng lặp While… Do
Sơ đồ khối của thuật toán:
Bài 2: Bài tập 5.9 :
3 Tìm hiểu đề bài:
Dữ liệu vào: Số n là số tháng mà đoàn thám hiểm quay lại đảo
Dữ liệu ra: Số thỏ trên đảo sau n tháng
4 Xây dựng ý tưởng giải thuật: Dựa vào tính chất của dãy số Fibonacci
Sử dụng vòng lặp While… Do
Trang 2 Sơ đồ thuật toán:
5 Trình bày lời giải:
Trang 3Bài 3: Bài 5.41:
1 Tìm hiểu đề bài:
- Input: Tệp văn bản DUONGI.TXT
- Output: Khoảng cách của nhóm so với trại
2 Ý tưởng giải thuật:
- Do chỉ cần biết được khoảng cách của nhóm so với trại nên ta gắn vào hướng đi của nhóm theo một hệ trục toạ độ: Gốc là trại, chiều dương trục Ox là hướng Đông, chiều dương trục Oy là hướng Bắc
- Dùng biến tạm h để tính toạ độ của nhóm với quy ước rẽ trái h giảm đi 1, rẽ phải
Trang 4Bài 4: Bài 319(sbt trang 21):
Cho ba số nguyên p, q, r(#0) Kiểm tra ba số này, theo thứ tự nhập vào có tạo thành một cấp
số nhân hay không Viết chương trình thực hiện yêu cầu trên
until( q<>0) and( p<>0)and (r<>0);
if q/p=r/q then writeln(p, ' ', q, ' ', r, ': la cap so nhan')
else writeln(p, ' ', q, ' ', r, ': khong phai cap so nhan');
-Chuẩn hóa xâu theo quy tắc sau:
+xóa các dấu cách ở đầu xâu nếu có;
+xóa các dấu cách ở cuối xâu nếu có;
+thay dãy nhiêu dấu cách liên tiếp bằng một dấu cách
Trang 5B2 xóa trong xâu s đi 1 kí tự nếu có hai kí tự trắng liền nhau
B3 kiểm tra kí tự đầu và cuối nếu chúng là kí tự trắng thì xóa
B4.đưa lần lươt s[i] ra màn hình đến hết
if s[length(s)]=' ' then delete(s, length(s), 1);
writeln('xau sau khi duoc chuan hoa la ');
for i:=1 to length(s) do
Trang 6Bài 6: Bài 3.34:Tuổi cha hiện nay là B và tuổi con là C (0<C<B, B, C là số nguyên và theo luật hôn
nhân và gia đình B-C>=19) Viết chương trình kiểm tra xem tuổi cha có gấp đôi tuổi con hay không, nếu đúng thì đưa ra màn hình câu thông báo ‘HIEN NAY TUOI CHA GAP ĐOI TUOI CON’, trong trường hợp ngược lại, hãy tính số năm N mà trước đó hoặc sau đó tuổi cha gấp đôi tuổi con và đưa câu thông báo dạng ‘N NĂM TRƯỚC ĐÂY TUỔI CHA GẤP ĐÔI TUỔI CON’ hoặc ‘SAU N NĂM TUỔI CHA SẼ GẤP ĐÔI TUỔI CON’
VÍ DU, với B=59, C=29 thì in ra câu thông báo sẻ là:
SAU 1 NĂM NỮA TUÔI CHA SE GẤP ĐÔI TUỔI CON
N:=B-2*C
Sau N năm t ổi cha s
ẻ g ấp đ ôi tuôi con
N=2*C-B
Tr ư ớc đ ó N N ĂM TU ỔI CHA G ẤP ĐÔI TU ỔI CON
END
Trang 7B4:CHƯƠNG TRÌNH
begin
repeat
writeln('nhap tuoi cha');readln(b);
writeln('nhap tuoi con');readln(c);
if(b-c<19) or(c<0) or (b<c) then
writeln('ban phai nhap lai');
until(c>0) and (c<b) and (b-c>=19);
if b=2*c then writeln('hien tuoi cha gap doi tuoi con')
V := x + y nếu x > 1 và y > 1 Chuyển qua bước 3;
V := x – y nếu x > 1 và y <= 1;Chuyển qua bước 3;
V := - x + y nếu x <= 1 và y > 0;Chuyển qua bước 3;
V := - x - y nếu x <1 và y <=0;Chuyển qua bước 3; B3: In giá trị của v
Bước 3: Chương trình
If (x > 1) and (y > 1) then v:=x + y
Else
If (x > 1) and (y <= 1) then v:=x - y Else
If (x <= 1) and (y <=0 ) then v:=x + y Else v:= - x – y;
Trang 8Writeln(‘ Gia tri cua ham la ‘,v);
Output: Nếu là cấp số cộng thì gấp đôi giá trị mỗi số
Nếu không thì giảm mỗi số một đơn vị
Bước 2: Ý tưởng giải thuật
Kiểm tra điều kiện k+m=n*2?
Nếu điều kiện đúng thì nhân đôi mỗi số, nếu sai thì giảm mỗi số một đơn vị
m+k=n*2
Trang 9Bài tập tương tự: Nhập vào 3 số a, b, c, kiểm tra xem có phải a, b, c tạo thành cấp số nhân
không? Nếu là cấp số cộng thì thông báo đồng thời gấp đôi mỗi số Ngược lại thì giảm mỗi
số 2 đơn vị
Bài 9: Bài 4.20
Bước 1: Xác định Input, Output
Input: Nhập xâu bất kì
Output: Chuẩn hóa xâu
Bước 2: Ý tưởng giải thuật
- Dùng lệnh while s[1]=' ' do delete(s,1,1) để xóa các kí tự trắng đầu xâu
- Dùng lệnh while s[length(s)]=' ' do delete(s,length(s),1) để xóa các kí tự trắng cuối xâu
- Dùng lệnh while pos(' ',s)<>0 do delete(s,pos(' ',s),1) để xóa những kí tự trắng liền nhau ở giữa xâu
Trang 11- Xây dựng bài toán tương đương:
Nhập xâu bất kì, đếm số từ có trong xâu ( từ là tập hợp các kí tự kết thúc bằng dấu cách)
Trang 12Bài 10: Bài 3.40 Nhập vào bàn phím số nguyên dương N (0<N<2*109) Tính và đưa ra màn hình tổng bình phương các chử số của N Ví dụ, với N=125, tổng bình phương các chử
số cảu nó sẽ là 12
+22+52=30
Phân tích bài toán
Bước 1 Tìm hiểu đề bài
- Input: N nguyên dương (0<N<2*109
)
- Output: tổng bình phương các chử số của N
- Tổng bình phương các chử số bằng tổng bình phương của tất cả các chử số có mặt trong số đó
Bước 2 Xây dựng ý tưởng giải thật
- Để tính tổng binh phương các chử số thì ta phải lấy ra được các chử số của số đó
- Cách lấy các chử số trong một số:kết hợp hai toán tử MOD và DIV ta sẽ lần lượt lấy được từng số dư trong từng hàng đơn vị, chục, trăm, nghìn
- Bình phương chúng lên rồi cộng dồn vào biến tổng sẽ cho ta kết quả cần tính
Write (‘ Nhap N= ‘); Readln (N);
If (N≤0) or(N≥2.exp(9*ln(10))) Then write(‘ Nhap lai N ’);
Trang 13- Điều kiện ràng buộc đầu vào của N (N>0) and (N<2.109)
- Điều kiện lặp N>0 chứ không phải là N≥0 Vì khi N=0 thì phải dừng lặp, các câu lệnh dưới không có ý nghĩa nữa
- Kiểu dữ liệu: N là longint (vì 0<N<2*109)., Tong phải là Interger; du là byte (vì du chỉ nhận giá trị từ 0 9)
Bước 4 Nghiên cứu về lời giải
- Mở rộng bài toán: có thể thay vòng lặp While do bằng vòng lặp Repeat until
- Lớp bài toán tương đương
+ Nhập số N nguyên dương và cho biết N có bao nhiêu chử số, tính tổng các chử số đó?
+ Phân tích số thành tích của các thừa số nguyên tố
+ Viết hàm Dao_so(N) để cho ra số nghịch đảo của số đó?
Trang 14Bài 11: Bài 3.16 (Sách bài tập Tin Hoc 11)
Lập trình nhập từ bàn phím hai số nguyên khác nhau m và n, thay số nhỏ hơn bằng hiệu của
số lớn với số bé, thay số lớn hơn bằng tổng của hai số ban đầu Đưa ra các giá trị mới của m
và n ra màn hình
Giải:
* Tìm hiểu đề bài:
In put: m,n
Out put: giá trị mới của m,n
* Ý tưởng giải thuật:
Trang 15writeln('gia tri moi cua m la:',m);
writeln('gia tri moi cua n la:',n);
readln;
end
Trang 16NỘI DUNG ÔN TẬP –TRẮC NGHIỆM TIN 11THÁNG 3-2020
1 Trong ngôn ngữ lập trình Pascal, đoạn chương trình sau thực hiện công việc gì?
d:=0;
for i:=1 to length(s) do
if s[i]=’ ‘ then d:=d+1; {‘’ là khoảng trắng};
A Xóa các dấu khoảng trắng trong xâu s;
B Đếm số ký tự có trong xâu s;
C Xóa đi các chữ số có trong xâu s;
D Xóa đi chữ số đầu tiên trong xâu s;
2 Trong ngôn ngữ lập trình Pascal, để xóa ký tự đầu tiên của xâu ký tự S
A Xóa hai dấu cách liên tiếp nhau đầu tiên trong xâu;
B Xóa đi một trong 2 dấu cách đầu tiên trong xâu;
C Xóa các dấu cách trong xâu s để s không còn 2 dấu cách liền nhau;
D Xóa các dấu cách liền nhau cuối cùng trong xâu;
Trang 175 Trong ngôn ngữ lập trình Pascal, đoạn chương trình sau đây làm công việc gì?
A Xóa tất cả các dấu cách trong xâu x;
B Xóa tất cả các dấu cách bên trái của xâu x;
C Xóa tất cả các dấu cách bên phải của xâu x;
D Xóa tất cả các dấu cách ở hai đầu của xâu x;
6 Trong ngôn ngữ lập trình Pascal, để in một xâu ra màn hình theo thứ
tự ngược lại giữa các ký tự trong xâu (Ví dụ ‘abcd’ thì in ra là ‘dcba’), đoạn chương trình nào sau đây thực hiện việc này?
A For i:=1 to length(s) do write(s[i]);
B For i:=1 to length(s) downto write(s[i]);
C For i:=1 to length(s) do write(s);
D For i:=1 to length(s) div 2 do write(s[i]);
7 Trong ngôn ngữ lập trình Pascal, với xâu ký tự ta có thể:
A So sánh hai xâu ký tự;
B So sánh hai xâu ký tự, gán biến xâu cho biến xâu và gán một ký
tự cho biến xâu;
C Gán biến xâu cho biến xâu và gán một ký tự cho biến xâu;
D So sánh và gán một biến xâu cho biến xâu
8 Trong ngôn ngữ lập trình Pascal, hai xâu ký tự được so sánh dựa trên:
A Mã của từng ký tự trong các xâu lần lượt từ trái sang phải;
B Độ dài tối đa của hai xâu;
C Độ dài thực sự của hai xâu;
D Số lượng các ký tự khác nhau trong 2 xâu;
9 Trong ngôn ngữ lập trình Pascal, hàm Upcase(ch) cho kết quả là:
A Chữ cái in hoa tương ứng với ch;
B Xâu ch toàn chữ thương;
C Xâu ch toàn chữ hoa;
Trang 18C Tập hợp các chữ cái trong bảng chữ cái tiếng anh;
D Tập hợp các chữ cái và các chữ số trong bảng chữ cái tiếng anh;
11 Trong ngôn ngữ lập trình Pascal cách khai báo xâu ký tự nào sau đây
D Không phải là xâu ký tự
14 Trong ngôn ngữ lập trình Pascal phần tử đầu tiên của xâu ký tự mang chỉ số là:
A 0
B 1
C Do người lập trình khai báo
D Không có chỉ số
15 Trong ngôn ngữ lập trình Pascal, khai báo nào trong các khai báo sau
là sai khi khai báo xâu ký tự
A Xóa trong xâu c a ký tự bắt đâu từ vị trí b;
B Xóa trong xâu a b ký tự bắt đâu từ vị trí b;
C Xóa trong xâu c b ký tự bắt đâu từ vị trí a;
D Xóa trong xâu b c ký tự bắt đâu từ vị trí a;
Trang 1917 Trong ngôn ngữ lập trình Pascal, thủ tục Insert(S1,S2,n) thực hiện công việc gì?
A Chèn thêm xâu S1 vào xâu S2 bắt đầu từ vị trí n của S1;
B Chèn thêm xâu S1 vào xâu S2 bắt đầu từ vị trí n của S2;
C Chèn thêm xâu S2 vào xâu S1 bắt đầu từ vị trí n của S1;
D Chèn thêm xâu S2 vào xâu S2 bắt đầu từ vị trí n của S1;
18 Trong ngôn ngữ lập trình Pascal, hàm length(s) cho kết quả gì?
A Độ dài xâu S khi khai báo;
B Số ký tự hiện có trong xâu S không tính các khoảng trắng(Ký tự trắng, khoảng cách);
C Số các ký tự của xâu không tính dấu cách cuối cùng;
D Số ký tự hiện có của xâu S;
19 Trong ngôn ngữ lập trình Pascal sau khi thực hiện đoạn chương trình sau, giá trị của biến S là:
S:=’Ha Noi mua thu’;
Delete(S,7,8);
Insert(‘Mua thu’,S,1);
A Ha Noi Mua thu;
B Mua thu Ha Noi mua thu;
C Mua thu Ha Noi;
A Được lưu trữ trên ROM;
B Chỉ được lưu trữ trên RAM;
C Chỉ được lưu trữ trên đĩa cứng;
D Được lưu trữ trên bộ nhớ ngoài;
22 Dữ liệu kiểu tệp:
A Sẽ bị mất hểt khi tắt máy;
B Sẽ bị mất hết khi mất điện đột ngột;
C Không bị mất khi tắt máy hoặc mất điện;
D Vẫn giữ nguyên trên ROM khi tắt máy hoặc cúp điện;
Trang 2023 Số lượng phần tử trong tệp
A Không được lớn hơn 128;
B Không được lớn hơn 255;
C Phải được khai báo trước;
D Không bị giới hạn mà chỉ phụ thuộc vào dung lượng đĩa;
24 Trong Pascal, để khai báo tệp văn bản ta sử dụng cú pháp
A var <tên tệp>:text;
B <tên biến tệp>:text;
C var <tên tệp>: String;
D var <tên biến tệp>: String;
25 Trong Pascal để khai báo hai biến tệp văn bản f1, f2 ta viết như sau:
B ta nhất thiết phải gán tên tệp cho tên biến tệp;
C ta nên sử dụng trực tiếp tên tệp trong chương trình;
D ta nhất thiết phải sử dụng trực tiếp tên tệp trong chương trình;
27 Để gán tên tệp cho tên biến tệp ta sử dụng câu lệnh:
A <tên biến tệp>:=<tên tệp>;
B <tên tệp>:=<tên biến tệp>;
C.asign(<tên biến tệp>:=<tên tệp>);
D asign(<tên tệp>:=<tên biến tệp>);
28 Để gán tệp kq.txt cho biến tệp f1 ta sử dụng câu lệnh
Trang 21B nằm ở cuối tệp;
C nằm ở giữa tệp;
D nằm ngẩu nhiên bất kỳ vị trí nào;
31 để ghi kết quả vào tệp văn bản ta có thể sử dụng thủ tục sau:
A read(<tên tệp>,<danh sách kết quả>);
B read(<tên biến tệp>,<danh sách kết quả>);
D write(<tên tệp>,<danh sách kết quả>);
C write(<tên biến tệp>,<danh sách kết quả>);
32 để đọc dữ liệu từ tệp văn bản ta có thể sử dụng thủ tục sau:
A read(<tên tệp>,<danh sách kết quả>);
B read(<tên biến tệp>,<danh sách kết quả>);
D write(<tên tệp>,<danh sách kết quả>);
C write(<tên biến tệp>,<danh sách kết quả>);