Giải bài tập sách bài tập tin học 11

Bộ sách Cánh Diều là bộ sách thứ nhất (đầu tiên) góp phần thực hiện chủ trương xã hội hoá sách giáo khoa, xoá bỏ cơ chế độc quyền trong lĩnh vực xuất bản - in - phát hành sách giáo khoa.

Tác giả bộ sách Cánh Diều là những nhà giáo, nhà khoa học tâm huyết và giàu kinh nghiệm. Trong đó, có tác giả là Tổng Chủ biên Chương trình Giáo dục phổ thông 2018 và nhiều tác giả là thành viên Ban Phát triển Chương trình tổng thể, Ban Phát triển các chương trình môn học thành lập theo Quyết định của Bộ trưởng Bộ GDĐT.

chu nhan cua nhung bai nay thong cam cho minh nghe. minh chi post len cho cac thanh vien khac tham khao thoi. hehehehehe... nhung bai nay khong dung hoan toan, ai cop ve xem thi nho chinh sua lai cho chuan rui day nghe Bài tập 4.44, trang 47, sách bài tập tin học lớp 11.

Hãy lập trình:

· Nhập từ bàn phím dãy số nguyên khác 0. Dấu hiệu kết thúc nhập là số 0.

· Đưa ra màn hình:

+ Số lượng các số đã nhập (không kể số 0 – dấu hiệu kết thúc);

+ Số lượng các số chia hết cho 3, nếu không có thì đưa ra số 0;

+ Số lượng các số âm chẵn, nếu không có thì đưa ra số 0.

Bài làm:

Bước 1. Xác định bài toán.

· Input: Dãy số nguyên khác 0.

· Output: + Số lượng các số đã nhập (dem).

+ Số lượng các số chia hết cho 3 (dem1).

+ Số lượng các số âm chẵn (dem2).

Bước 2. Ý tưởng giải thuật.

Liệt kê các bước.

· Bước 1) Nhập dãy số nguyên khác 0 lưu vào mảng a (dấu hiệu kết thúc nhập là số 0);

· Bước 2) i:=1; dem:=0; dem1:=0; dem2:=0;

· Bước 3) * Nếu a = 0 thì qua Bước 5;

* Ngược lại:

+ Inc(dem);

+ Nếu ((a[j]>0) and (a[j] mod 3=0)) thì Inc(dem1);

+ Nếu ((a[j]<0) and (abs(a[j]) mod 2=0)) thì Inc(dem2);

· Bước 4) Inc(i), rồi quay lại Bước 3;

· Bước 5) In ra màn hình giá trị của các biến dem, dem1, dem2.

· Bước 6) Dừng.

Bước 3[i]. Chương trình.

program dem_so_phan_tu_trong_mang;

var i, j, dem, dem1, dems2: integer;

a: array [1..100] of integer;

begin

i:=0;

repeat

i:=i+1;

write(' moi nhap so nguyen thu ', i ,': ');

readln(a[i]);

until (a[i]=0);

dem1:=0;

dem2:=0;

dem:=0;

j:=1;

while (a[j]<>0) do

begin

dem:=dem+1;

if (a[j] mod 3=0) then

dem1:=dem1+1;

if ((a[j]<0) and (a[j] mod 2=0)) then

dem2:=dem2+1;

j:=j+1;

end;

writeln;

writeln('so luong cac so da nhap la: ', dem);

writeln('so cac so chia het cho 3 la: ', dem1);

writeln('so cac so am chan la: ', dem2);

readln;

end.

Bước 4. Kiểm thử và mở rộng bài toán.

+ Mở rộng bài toán.

* Bài toán 1. Hãy lập trình:

Nhập từ bàn phím dãy số nguyên khác 0. Dấu hiệu kết thúc nhập là số 0.

Đưa ra màn hình: + Các số chia hết cho 3.

+ Các số âm chẵn.

* Bài toán 2. Hãy lập trình:

Nhập từ bàn phím dãy số nguyên khác 0. Dấu hiệu kết thúc nhập là số 0.

Đưa ra màn hình: Các số nguyên tố và tổng bình phương của chúng.

* Bài toán 3. Hãy lập trình:

Nhập từ bàn phím dãy số nguyên khác 0. Dấu hiệu kết thúc nhập là số 0.

Đưa ra màn hình: + Dãy con tăng có số phần tử lớn nhất

* Bài toán 4. Hãy lập trình:

Nhập từ bàn phím dãy số nguyên khác 0. Dấu hiệu kết thúc nhập là số 0.

Đưa ra màn hình: + Các số nguyên tố trong dãy và tổng bình phương của chúng.

* Bài toán 5. Hãy lập trình:

Nhập từ bàn phím dãy số nguyên khác 0. Dấu hiệu kết thúc nhập là số 0.

Đưa ra màn hình: + + Xác định xem dãy có phải cấp số cộng không.

+ Xác định xem dãy có phải cấp số nhân không.

Được sửa bởi thanhluan_audio ngày 18/3/2010, 8:55 am; sửa lần 1.

thanhluan_audio Địa chủ

Giải bài tập sách bài tập tin học 11
Giải bài tập sách bài tập tin học 11

Tổng số bài gửi : 106 Điểm : 249 Reputation : 0 Birthday : 03/02/1988 Join date : 22/10/2009 Age : 35 Đến từ : Đông Hà - Quảng Trị

Giải bài tập sách bài tập tin học 11
Giải bài tập sách bài tập tin học 11
Tiêu đề: Re: Mời các bạn giải bài tập Tin Học 11
Giải bài tập sách bài tập tin học 11
18/3/2010, 8:46 am


Bài 4.45 – SBT tin học 11.

Bước 1:

Input: k, dãy số an ( gồm a1,a2,...,an).

Output: - Số lượng các phần tử a < k.

- Tổng các phần tử a[i] < k.

Bước 2: Xây dựng ý tưởng.

B1: Nhập dãy số an và giá trị k

B2: d:= 0; s:= 0;i=1;

B3: Nếu a[i]=0 thì qua B4, ngược lại thì

+ Kiểm tra a[i] < k đúng thì : +d := d+1;

+S := s+a[i];

+ i:= i+1 quay lại B3;

B4: Thông báo có d số và tổng s;

B5: Dừng.

Bước 3: Cài đặt

[i]

Program DEM_TONG;

Var i,d,k,s : integer;

a :array[1..200] of integer;

Begin

Write('nhap day so:');n:=0;

Repeat

Write('a[',i,']=');

Readln(a[i]);

n:=n+1;

Until(a[i]= 0);

Write ('nhap vao gia tri k=');

Readln(k);

d:= 0; s:= 0;

for i:= 1 to n do

if a[i] < k then

begin

d:= d+1;

s:= s+ a[i];

end;

if d = 0 then write ('khong co phan tu nao nho hon k' )

else

begin

writeln(‘co’,d,’phan tu nho hon k’);

writeln(‘tong cua chung la: ’,s);

end;

readln;

End.

Bước 4: Xây dựng bộ test.

An : 1,3,7,2,8 (n=5); k= 5;

i=1: a[1]=1i=2: a[2]=3i=3: a[3]=7>k=5 nên d=2 và s=4; i=3+1;i=4: a[4]=2i=5: a[5]=8>k=5 nên d=3; s=6; i=5+1>n,Dừng.

thanhluan_audio Địa chủ

Giải bài tập sách bài tập tin học 11
Giải bài tập sách bài tập tin học 11

Tổng số bài gửi : 106 Điểm : 249 Reputation : 0 Birthday : 03/02/1988 Join date : 22/10/2009 Age : 35 Đến từ : Đông Hà - Quảng Trị

Giải bài tập sách bài tập tin học 11
Giải bài tập sách bài tập tin học 11
Tiêu đề: Re: Mời các bạn giải bài tập Tin Học 11
Giải bài tập sách bài tập tin học 11
18/3/2010, 8:48 am


Bài 4.46(tr47-bttinhoc11)

B1: Tìm hiểu nội dung đề bài.

+ Input: Số nguyên N(1 20) và dãy số thực B1, B2,...Bn.+ Output: - Số nguyên K(số lượng số trong dãy có giá trị nhỏ hơn số bên trái cạnh nó).- Số thứ tự i và số thực Bi nhỏ hơn số bên trái cạnh nó.

B2: Hình thành ý tưởng, giải thuật.

Ÿ B1: Nhập số nguyên N và dãy số thực B1, B2,...Bn.Ÿ B2: i:=2; K:=0;Ÿ B3: Nếu i N thì+ Nếu B[i-1]>B thì K:=K+1, hiển thị giá trị i và B[i] .+ i:=i+1 quay lại B2.Ÿ B4: Thông báo có K số có giá trị nhỏ hơn số bên trái cạnh nó.ŸB5: Dừng.

B3: Cài đặt.

[i]

Program dayso;

var K,N,i: integer;

B: array[1..20] of real;

BEGIN

write('nhap n= '); readln(n);

for i:=1 to n do

begin

write('nhap B[',i,']= '); readln(B[i]);

end;

k:=0;

for i:=2 to n do

if B[i-1]>B[i] then

begin

k:=k+1;

writeln(i,' ',B[i]);

end;

writeln('co tat ca ',k,' so thoa man');

readln;

END.

B4: Xây dựng bộ text và mở rộng

+ Mở rộng bài toán

Bài toán 1: Nhập vào số nguyên N và dãy N số thực. Cho biết có bao nhiêu số chia hết cho số bên trái cạnh nó trong dãy.Bài toán 2: Nhập vào N số thực. Cho biết trong dãy vừa nhập vào có bao nhiêu dãy con tăng(giảm). Hãy đưa ra màn hình các dãy đó (mỗi số cách nhau một dấu cách, mỗi dãy một dòng).

thanhluan_audio Địa chủ

Giải bài tập sách bài tập tin học 11
Giải bài tập sách bài tập tin học 11

Tổng số bài gửi : 106 Điểm : 249 Reputation : 0 Birthday : 03/02/1988 Join date : 22/10/2009 Age : 35 Đến từ : Đông Hà - Quảng Trị

Giải bài tập sách bài tập tin học 11
Giải bài tập sách bài tập tin học 11
Tiêu đề: Re: Mời các bạn giải bài tập Tin Học 11
Giải bài tập sách bài tập tin học 11
18/3/2010, 8:48 am


Bài 4.47

B1. Input, output.

Input: Cho khai báo kiểu mảng của các bản ghi, với các bản ghi có các trường:

hocsinh= record

hoten:string[30];

ngaysinh:string[10];

gioitinh:Boolean;

Tin,Toan,Li,Hoa,Su,Dia,Van:real;

End;

Var lop:array[1..60] of hocsinh;

Output: Khai báo lại dưới dạng mảng.

B2.Ý tưởng phương pháp.

- Tách các trường riêng rẽ mỗi trường là một mảng, có thể gộp các trường cùng kiểu dữ liệu chuẩn trong một khai báo.

Cách 1:

+ ngaysinh, hoten:array[1..60] of string;

+ gioitinh:array[1..60] of boolean;

+ toan,li,hoa,tin,van,su,dia:array[1..60] of real;

Cách 2:

+ ngaysinh, hoten:array[1..60] of string;

+ gioitinh:array[1..60] of boolean;

+ diem:array[1..60,1..7]

B3. Giải thuật minh họa

Ta có thể lấy ví dụ sau làm minh họa cho cách 1 khai báo trên.

Program quanlilophoc;

Var ngaysinh,hoten:array[1..60] of string;

Gioitinh:array[1..60] of boolean;

Toan,li,hoa:array[1..60] of integer;

I, N:integer;

Begin

Write(‘ Nhập vào số học sinh:’);readln(n);

For i:=1 to n do

Begin

Writeln(‘ Họ tên hoc sinh thứ : ’,i);readln(hoten);

Write(‘ gioi tinh la:’);readln(gioitinh[i]);

Write(‘diem toan la:’); readln(toan[i]);

Write(‘ diem li la:’); readln(li[i]);

Write(‘diem hoa la:’);readln(hoa[i]);

End;

Readln;

End.

B4. Mở rộng.

Khi làm các bài toán có dạng như trên giúp học sinh thấy được sự tối ưu của kiểu bản ghi so với kiêu mảng.

Bài 4.48

Có thể thay thế mảng 1 chiều N phần tử, mỗi phần tử là một bản ghi có 2 trường bằng mảng 2 chiều có N hàng và 2 cột không?

Trả lời:

Bước 1:

Input: mảng 1 chiều n phần tử, mỗi phần tử là 1 bản ghi co trường,

Mảng 2 chiều

Output: Yes /No Kết luận thay thế mảng.

Bước 2: Ý tưởng

B1: Xét mảng 1 chiều có n phần tử;

+ Mảng 1 chiều các phần tử phải có cùng một kiểu dữ liệu

B2: Bản ghi;

+ Các trường của bản ghi có kiểu dữ liệu có thể khác nhau .

Kết luận: Không thể thay thế.

thanhluan_audio Địa chủ

Giải bài tập sách bài tập tin học 11
Giải bài tập sách bài tập tin học 11

Tổng số bài gửi : 106 Điểm : 249 Reputation : 0 Birthday : 03/02/1988 Join date : 22/10/2009 Age : 35 Đến từ : Đông Hà - Quảng Trị

Giải bài tập sách bài tập tin học 11
Giải bài tập sách bài tập tin học 11
Tiêu đề: Re: Mời các bạn giải bài tập Tin Học 11
Giải bài tập sách bài tập tin học 11
18/3/2010, 8:49 am


Bài 4.29:

Bước 1

:

- Input: Ngôn ngữ khởi tạo hằng nguyên bao gồm 4 câu lệnh ( Plush1, Minus1, Inc, Dup ), số nguyên N

- Output: Dãy câu lệnh cho kết quả thực hiện là số nguyên N

Bước 2:

- Ý tưởng: + Với N > 0, khởi tạo Plush1, trong khi kết quả thực hiên vẫn còn < N thì tiếp tục nhân đôi ( Dup ), sau đó dùng Inc để được kết quả cần có

+ Với N < 0, khởi tạo Minus1, các bước còn lại tương tự

- Diễn tả thuật toán:

Liệt kê các bước:

B1

: Nhập N;

B2

: Nếu N > 0 thì qua B3

Còn không: qua B6

B3

: i:=1, viết ‘ Plush1 ’;

B4

: Nếu 2*I <= N thì: i:=2*i và viết ‘ Dup ’ → Quay lại B4;

Còn không: qua B5

B5

:Kiểm tra i < n:

Nếu đúng: i:=i+1 và viết ‘ Inc ’→ quay lại B5;

Còn không : B9;

B6

: i:=-1; viết ‘ Minus1 ’;

B7

: Nếu 2*i > =N thì: i=2*i, viết ‘ Dup ’ →quay lại B7;

Còn không: qua B8;

B8

: Kiểm tra i< N:

Nếu đúng: i:=i+1, viết ‘ Inc ’→ quay lại B8;

Còn không: B9;

B9

: Kết thúc;

Bước 3

: Cài đặt:

Program khoi_tao_hang_nguyen;

Var n,i: integer;

Begin

Write (‘ Nhập vào số N:’ ); Readln ( n );

If ( n>0 ) then

Begin

i:=1;

Writeln( ‘Plush1’);

While ( 2*i <= n ) do

Begin

i:= 2*i;

writeln(‘ Dup’);

If (iEnd;EndElse If (n<0) then Begini:=-1;Writeln(‘Minus1’);While ( 2*i >= n ) doBegini:= 2*i;writeln(‘ Dup’);If (iEnd;End;End.

Bước 4

: - Xây dựng bộ test:Với n = 4 ta có:

Plush1

Dup

Dup

Với N = -3 ta có:

Minus1

Dup

Dup

Inc

- Mở rộng bài toán:

Được sửa bởi thanhluan_audio ngày 18/3/2010, 8:51 am; sửa lần 1.

thanhluan_audio Địa chủ

Giải bài tập sách bài tập tin học 11
Giải bài tập sách bài tập tin học 11

Tổng số bài gửi : 106 Điểm : 249 Reputation : 0 Birthday : 03/02/1988 Join date : 22/10/2009 Age : 35 Đến từ : Đông Hà - Quảng Trị

Giải bài tập sách bài tập tin học 11
Giải bài tập sách bài tập tin học 11
Tiêu đề: Re: Mời các bạn giải bài tập Tin Học 11
Giải bài tập sách bài tập tin học 11
18/3/2010, 8:50 am


Bài 4.30:

Bước 1

: Xác định Input, output

- Input: Bộ 8 số biểu diễn tọa độ các điểm trên trái,dưới phải của 2 cửa sổ.

- Output: Số điểm chung của 2 cửa sổ.

Bước 2

: Thuật toán

- B1: nhập tọa độ các đỉnh của 2 cửa sổ

- B2: Hoán đổi cách lưu cửa sổ sao cho cửa sổ thứ nhất quy ước là nằm bên trái.

- B3: Nếu (x2>=x3 ) and (y3<=y2) thì số giao điểm là (x2-x3+1)*(y2-y3+1)

Nếu không thì số giao điểm là 0.

- B4: Nếu x2Sơ đồ khối của thuật toán:

Bước 3:

Chương trình:program sogiaodiem;uses crt;var x1,y1,x2,y2,x3,y3,x4,y4:integer;procedure swap(var x1,y1,x2,y2:integer);var tx,ty:integer;begin tx:=x1; x1:=x2; x2:=tx; ty:=y1; y1:=y2; y2:=ty;end;begin clrscr; write('Nhap toa do chocac dinh cua hinh chu nhat thu nhat: '); readln(x1,y1,x2,y2); write('Nhap toa do cho cac dinh cua hinh chu nhat thu 2: '); readln(x3,y3,x4,y4); {hoan doi cach luu 2 hinh neu hinh 2 nam ben trai hinh 1} {dieu nay dam bao cho viec hinh 1 luon luon nam ben trai hinh 2} if(x1>x3) then begin {hoan vi cach luu 2 hinh} swap(x1,y1,x3,y3); swap(x2,y2,x4,y4); end; {tim dien tich hinh chu nhat chung} if (x2>=x3) and (y3<=y2) then write('So diem chung cua 2 cua so la:',(x2-x3+1)*(y2-y3+1)) else write('so giao diem la 0'); if(x2 readln;end.

thanhluan_audio Địa chủ

Giải bài tập sách bài tập tin học 11
Giải bài tập sách bài tập tin học 11

Tổng số bài gửi : 106 Điểm : 249 Reputation : 0 Birthday : 03/02/1988 Join date : 22/10/2009 Age : 35 Đến từ : Đông Hà - Quảng Trị

Giải bài tập sách bài tập tin học 11
Giải bài tập sách bài tập tin học 11
Tiêu đề: Re: Mời các bạn giải bài tập Tin Học 11
Giải bài tập sách bài tập tin học 11
18/3/2010, 8:52 am


Bài 4.31

Bước 1: xác định input và output

- input: số nguyên N (1­­1,A2,...,An trong đó có ít nhất 2 số 0.

- output: tổng của dãy số nằm giữa 2 số 0 đầu tiên.

Bước 2:

- b1: nhập N và dãy N số nguyên

- b2: tìm vị trí số 0 đầu tiên lưu vào i, vị trí số 0 thứ 2 lưu vào j

- b3: tính tổng của dãy số nằm giữa i và j

- nếu i = j thì tong = 0

- b4: thông báo tổng tính được ra màn hình

- b5: dừng

Bước 3: viết chương trình

Program tinh_tong;

Var N, i, j, S,b : integer;

A: array[1..60] of integer;

Begin

Writre (‘ nhập N=’); readln(N);

For b:= 1 to N do

Begin

Write (‘nhập dãy AN’);

Write (‘A[‘,b,’]=’); readln(A);

End;

While b<= N do

Begin

If A[b]=0 then if i=0 then i:=b

else

begin

j:= b;

end;

if j <> 0 then break

else b:= b+1;

end ;

S:= 0

if i <> j then

for b:= i+ 1 to j – 1 do

S:= S+ A[b];

Write (‘ tổng cần tìm là:’,S);

Readln;

End.

[b]Bước 4:

- Xây dựng bộ test:

+ n = 3, dãy : 0 1 0 → tổng: 1

+ n =5, dãy: 1 0 4 5 0 2→tổng: 9

+ n=2, dãy: 3 4→tổng: 7

thanhluan_audio Địa chủ

Giải bài tập sách bài tập tin học 11
Giải bài tập sách bài tập tin học 11

Tổng số bài gửi : 106 Điểm : 249 Reputation : 0 Birthday : 03/02/1988 Join date : 22/10/2009 Age : 35 Đến từ : Đông Hà - Quảng Trị

Giải bài tập sách bài tập tin học 11
Giải bài tập sách bài tập tin học 11
Tiêu đề: Re: Mời các bạn giải bài tập Tin Học 11
Giải bài tập sách bài tập tin học 11
18/3/2010, 8:52 am


Bài 4.32

Bước 1

: Xác định input,output

- Input: 2 số m,n và 2 dãy a[n] và b[m].

- Output : dãy D[m+1] là dãy thỏa mãn:

+ d[0]= số các phần tử trong a[n] <=b[1];

+ d[i]= số các phần tử trong a[n] sao cho a[k]>=b[i] và a[k]<=b[i+1]

+ d[m]= số các phần tử trong dãy a[n] >=b[m]

Bước 2

: Giải thuật

+B1 : Nhập vào 2 số m,nn và 2 dãy a[n],b[m];

+ B2: Tính d[0]: Duyệt từ đầu a[n] đến cuối mảng khi gặp phần tử thỏa a[i]<=b[1] thì gán d[0]:=d[0]+1;

+ B3: Tính các d[i] (i=1,..m-1): Duyệt từ b[1] đến b[m-1] tìm các phần tử trong dãy a[n] sao cho phần tử đó có giá trị nằm giữa 2 phần tử của dãy b đang xét tới. Mỗi lần tìm được tăng biến đếm lên 1.