Viết chương trình nhập vào từ bàn phím xâu có độ dài 30 in ra màn hình xâu vừa nhập

Giải Bài Tập Tin Học 11 – Sách Giải bài tập Tin học 11 trang 79, 80 giúp HS giải bài tập, giúp cho các em hình thành và phát triển năng lực sử dụng công nghệ thông tin và truyền thông:

  • Sách Giáo Viên Tin Học Lớp 11

Trả lời:

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ố.

Trả lời:

Mảng là 1 tập hợp các phần tử được đánh số có thứ tự thường là từ 0 hoặc 1cho nên khi khai báo mảng ta cần khai báo thêm kích thước để máy có thể cấp phát đủ bộ nhớ chứa số lượng các phần tử.

Trả lời:

Kiểu dữ liệu của mảng có thể là những kiểu dữ liệu chuẩn (integer,byte,real,…), kiểu dữ liệu có cấu trúc (string,kiểu bản ghi).

Trả lời:

Tham chiếu đến phần tử của mảng ta sử dụng tên mảng và chỉ số đặt trong cặp dấu ngoặc [ và ].

Ví dụ a[1]. (a là tên mảng ,1 là chỉ số ).

Trả lời:

Nếu dãy chỉ có một số hoặc hai số thì chắc chắn là cấp số cộng.

Nếu dãy có hơn hai số thì tính công sai là a[1]-a[0] sau đó duyệt cả mảng nếu có số nào vi phạm quy luật của cấp số cộng a[i] khác a[i-1]+d thì kết luận luôn không là cấp số cộng.

Nếu đến cuối dãy mà không có số nào vi phạm thì kết luận là cấp số cộng.

program csc; uses crt; var a:array[1..100] of integer; i,n,d:integer; t:boolean; begin clrscr; write('nhap so phan tu cua day '); readln(n); for i:=1 to n do begin write('a[',i,']='); readln(a[i]); end; if n<=2 then write('la cap so cong ') else begin d:=a[2]-a[1]; t:=true; for i:=3 to n do if a[i]<>a[i-1]+d then begin t:=false; break; end; if t then write('la cap so cong') else write('khong phai cap so cong '); end; readkey; end.

Kết quả:

Trường hợp là cấp số cộng:

Viết chương trình nhập vào từ bàn phím xâu có độ dài 30 in ra màn hình xâu vừa nhập

Trường hợp không là cấp số cộng:

Viết chương trình nhập vào từ bàn phím xâu có độ dài 30 in ra màn hình xâu vừa nhập

a) Số lượng số chẵn và số lượng số lẻ

b) số lượng số nguyên tố trong dãy

Trả lời:

a) Duyệt toàn bộ mảng ,nếu số nào chia hết cho 2 thì là số chẵn còn lại là số lẻ. Ta dùng một biến để đếm số chẵn . Sau đó lấy số phần tử trừ đi số phần tử chẵn.

program csc; uses crt; var a:array[1..100] of integer; i,d,n:integer; begin clrscr; write('nhap so phan tu cua day '); readln(n); d:=0; for i:=1 to n do begin write('a[',i,']='); readln(a[i]); end; for i:=1 to n do if a[i] mod 2=0 then d:=d+1; writeln('so so chan la ',d,' so so le la ',n-d); readkey; end.

Viết chương trình nhập vào từ bàn phím xâu có độ dài 30 in ra màn hình xâu vừa nhập

b) Số lượng số nguyên tố trong dãy

Duyệt toàn bộ các số trong dãy với mỗi số ta kiểm tra xem số này có chia hết số nào từ 2 đến a[i]-1 của nó không ?. Nếu không thì kết luận là số nguyên tố.

program csc; uses crt; var a:array[1..100] of integer; i,d,n,j:integer; t:boolean; begin clrscr; write('nhap so phan tu cua day '); readln(n); d:=0; for i:=1 to n do begin write('a[',i,']='); readln(a[i]); end; for i:=1 to n do begin t:=true; for j:=2 to a[i]-1 do begin if (a[i] mod j=0) and (a[i]<>2) then begin t:=false; break; end; end; if t=true then d:=d+1; end; writeln('so cac so nguyen to trong day la ',d); readkey; end.

Kết quả:

Viết chương trình nhập vào từ bàn phím xâu có độ dài 30 in ra màn hình xâu vừa nhập

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-bo-na-xi. Chương trình của bạn thực hiện với giá trị lớn nhất của N là bao nhiêu?

Trả lời:

Sử dụng 2 biến để lưu giá trị hiện tại của 2 số fibonaci. Mỗi lần sinh ra số fibonaci mới ta sẽ gán lại giá trị mới cho 2 biến này bằng đoạn code;

F1:=F0+F1;

F0:=F1-F0;

program csc; uses crt; var n,i:integer; f0,f1:integer; begin clrscr; write('nhap so n:'); readln(n); f0:=0; f1:=1; for i:=2 to n do begin f1:=f0+f1; f0:=f1-f0; end; write('so fibonaci thu n la :',f1); readkey; end.

Chương trình chạy tối đa đến N=23 với số fibonaci là 28657 . Nếu lên đến số 24 sẽ vượt quá phạm vi của biến kiểu integer.

Chương trình sau đây thực hiện những gì?

program BT8; const NMax = 50; type Mass = array [1...NMax, O..NMax-1] of real; var A: Mass; i,j N: byte; C: real; begin Write ('Nhap N= ?'); readln(N); for i:= 1 to N do for 0 to N-1 do begin write('A[i,j; readln(A[i,j ] ) end, for i:= 1 to N do for j:= 1 to N-1 do begin C:= A[i,j]; A[i , j ] := A[N-i+1, j ] A [N-i+1,j] := C; end; for i:=1 to N do begin for j : =1 to N— 1 do write (A [ i, j ] : 5 : 2 , ' '); writeln end; End.

Trả lời:

Chương trình thực hiện việc hoán đổi vị trí dòng thứ i với dòng thứ N-i+J, nghĩa là hoán đổi vị trí dòng đầu tiên với dòng cuối cùng của màng hai chiều, dòng thứ hai từ trên xuống với dòng thứ hai từ dưới lên,.. Việc hoán đổi vị trí dòng thứ i với dòng đối xứng với nó được thực hiện khi i nhận giá trị từ 1 đến N, làm cho mỗi dòng được hoán đổi vị trí hai lần. Vì vậy, cuối cùng mảng A không thay đổi so với ban đầu.

program Diag; uses crt; Var N,i,j,Max,Ind,Vsp:integer; A:array[1..15,1..15] of integer; begin clrscr; write('nhap N nho hon 15:'); readln(N); for i:=1 to N do for j:=1 to N do begin write('a[',i,',',j,']='); readln(a[i,j]); end; for i:=1 to N do begin Max:=A[i,1]; Ind:=1; for j:=2 to N do if A[i,j]> Max then begin Max:=A[i,j];Ind:=j; end; vsp:=A[i,i]; A[i,i]:=Max; A[i,Ind]:=vsp; end; for i:=1 to N do begin writeln; for j:=1 to N do write(a[i,j]:3); end; writeln readkey; end.

Trả lời:

for i:=1 to N do begin Max:=A[i,1]; Ind:=1; for j:=2 to N do if A[i,j]> Max then begin Max:=A[i,j];Ind:=j; end; vsp:=A[i,i]; A[i,i]:=Max; A[i,Ind]:=vsp; end;

Đoạn code này có nhiệm vụ duyệt từng hàng. Ban đầu gán phần tử đầu tiên của hàng là max . Sau đó nếu trong hàng đó có phần tử nào lớn hơn max thì lưu lại giá trị max và chỉ số của phần tử đó trong hàng.

Để sửa chương trình trên để tìm kiếm trong mỗi cột thì ta sửa lại như sau:

program Diag; uses crt; Var N,i,j,Max,Ind,Vsp:integer; A:array[1..15,1..15] of integer; begin clrscr; write('nhap N nho hon 15:'); readln(N); for i:=1 to N do for j:=1 to N do begin write('a[',i,',',j,']='); readln(a[i,j]); end; for i:=1 to N do begin Max:=A[i,1]; Ind:=1; for j:=2 to N do if A[i,j]> Max then begin Max:=A[i,j];Ind:=j; end; vsp:=A[i,i]; A[i,i]:=Max; A[i,Ind]:=vsp; end; for i:=1 to N do begin writeln; for j:=1 to N do write(a[i,j]:3); end; writeln; readkey; end.

Kết quả :

Viết chương trình nhập vào từ bàn phím xâu có độ dài 30 in ra màn hình xâu vừa nhập

Trả lời:

Ta chỉ cần duyệt lần lượt từng kí tự của xâu S nếu nó nằm trong đoạn từ ‘0’ đến ‘9’ thì ta tăng biến đếm lên 1.

program Diag; uses crt; Var s:string[100]; i,d:integer; begin clrscr; d:=0; write('Nhap xau S :'); readln(s); for i:=1 to length(s) do if ('0'<=s[i]) and (s[i]<='9') then d:=d+1; writeln('so ki tu la so xuat hien trong xau s la ',d); readkey; end.

Kết quả:

Viết chương trình nhập vào từ bàn phím xâu có độ dài 30 in ra màn hình xâu vừa nhập

Trả lời:

Khi in ra kết quả ta chỉ việc kiểm tra loại học sinh xem xếp loại có phải là ‘A’ hay không .Nếu là ‘A’ thì in kêt quả ra màn hình.

program xep_loai; uses crt; const max= 60; type Hocsinh = record hoten: string[30]; ngaysinh: string [10]; Diachi: string[50] ; Toan, Van: real; Xeploai : char; end; var Lop: array [ 1..max] of hocsinh; N,i: byte; Begin clrscr; write('So luong hoc sinh trong lop N= ') ; readln(N); for i:= 1 to N do begin writeln( 'Nhap so lieu ve hoc sinh thu',i,': '); Write ('Ho va ten: '); readln (lop [i]. hoten); Write (' Ngay sinh : '); readln (lop [i].ngaysinh); Write (' Dia chi : '); readln (lop [i].Diachi); Write ('Diem Toan : '); readln (lop [i]. Toan); Write ('Diem Van : '); readln (lop [i]. Van); If Lop [i]. Toan+Lop [i]. Van >=18 then Lop [i]. xeploai:='A'; if (Lop[i].Toan+Lop[i].Van>=14) and (Lop [i]. Toan+Lop [i]. Van <18) then Lop [i]. xeploai:='B'; if (Lop[i].Toan+Lop[i].Van>=10) and (Lop [i]. Toan+Lop [i]. Van >=14) then Lop [i]. xeploai:='C'; if (Lop[i].Toan+Lop[i].Van<=10) then Lop[i].xeploai:='D'; end; clrscr; writeln ('Danh sach xep loai hoc sinh trong lop: ' ); for i:=1 to N do if Lop[i].xeploai='A' then writeln (Lop[i].Hoten:30,' – Xep loai : ', Lop[i]. Xeploai); readln End.