Nội dung của bài ôn tập chương 4 về Kiểu dữ liệu có cấu trúc dưới đây nhằm giúp các em nắm vững kiến thức, kĩ năng về kiểu mảng, kiểu xâu và kiểu bản ghi và chuẩn bị thật tốt cho kì kiểm tra học kì 2 sắp tới. Mời các em cùng theo dõi nội dung chi tiết bài ôn tập.
Kiểu dữ liệu có cấu trúc được xây dựng từ những kiểu dữ liệu đã có theo quy tắc, khuôn dạng do ngôn ngữ lập trình cung cấp.
Nhằm giúp các em củng cố lại các kiến thức đã học ở trên, trong phần sau làm các câu hỏi Trắc nghiệm bài ôn tập chương 4 về Kiểu dữ liệu có cấu trúc, các em hãy cùng thử sức để tự đánh giá xem mức độ hiểu bài của mình tới đâu các em nhé.
Các em có thể hệ thống lại nội dung kiến thức đã học được thông qua bài kiểm tra Trắc nghiệm Tin học 11 Ôn tập chương 4 cực hay có đáp án và lời giải chi tiết.
Khai báo biến DiemThi để lưu trữ điểm thi môn tin học của 45 học sinh, ta sử dụng:
Cho var A: array[1..99] of integer; để tham chiếu tới phần tử thứ 20 của biến mảng A, ta sử dụng:
Cho trước var B: array[1..N] of real; Hãy cho biết đoạn lệnh sau dùng để làm gì?
tong:= 0;
for i:= 1 to N do
if B[i] < 0 then
tong:= tong + B[i];
Câu 4-10: Mời các em đăng nhập xem tiếp nội dung và thi thử Online để củng cố kiến thức về bài học này nhé!
Các em có thể xem thêm phần hướng dẫn Giải bài tập Tin học 11 Ôn tập chương 4để giúp các em nắm vững bài học và các phương pháp giải bài tập.
Bài tập 1 trang 79 SGK Tin học 11
Bài tập 2 trang 79 SGK Tin học 11
Bài tập 3 trang 79 SGK Tin học 11
Bài tập 4 trang 79 SGK Tin học 11
Bài tập 5 trang 79 SGK Tin học 11
Bài tập 6 trang 79 SGK Tin học 11
Bài tập 7 trang 79 SGK Tin học 11
Bài tập 8 trang 79 SGK Tin học 11
Bài tập 9 trang 80 SGK Tin học 11
Bài tập 10 trang 80 SGK Tin học 11
Bài tập 11 trang 80 SGK Tin học 11
Trong quá trình học tập nếu có thắc mắc hay cần trợ giúp gì thì các em hãy comment ở mục Hỏi đáp, Cộng đồng Tin học DapAnHay sẽ hỗ trợ cho các em một cách nhanh chóng!
Chúc các em học tập tốt và luôn đạt thành tích cao trong học tập!
-- Mod Tin Học 11 DapAnHay
Tại sao mảng là kiểu dữ liệu có cấu trúc?
Tại sao phải khai báo kích thước của mảng?
Các phần tử của mảng có thể có những kiểu gì?
Tham chiếu đến phần tử của mảng bằng cách nào?
Viết chương trình nhập từ bàn phím số nguyên dương N (N \(\leq\) 100) và dãy A gồm N số nguyên A1, A2,..., AN, có giá trị tuyệt đối không lớn hơn 1000. Hãy cho biết dãy A có phải là một cấp số cộng hay không và thông báo kết quả ra màn hình.
Viết chương trình nhập từ bàn phím số nguyên dương N (N \(\leq\) 100) và dãy A gồm N số nguyên A1, A2,..., AN, có trị tuyệt đối không lớn hơn 1000. Hãy đưa ra những thông tin sau:
a) Số lượng số chẵn và số lẻ trong dãy;
b) Số lượng số nguyên tố trong dãy.
Dãy F là dãy Fi-bô-na-xi nếu:
F0 = 1; F1 = 1; F2 = 2; 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 Fi-bô-na-xi. Chương trình của em thực hiện được với giá trị lớn nhất của N là bao nhiêu?
Chương trình sau đây thực hiện những gì?
program BT8;
const NMax = 50;
type Mass = array[1..NMax,0..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 j:= 0 to N-1 do
begin
write('A[',i,',',j,']= '); readln(A[i,j])
end;
for i:= 1 to N do
for j:= 0 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:= 0 to N-1 do
write(A[i,j]:5:2,' ');
writeln
end;
end.
Cho mảng hai chiều kích thước \(n\times m\) với các phần tử là những số nguyên. Tìm trong mỗi dòng phần tử lớn nhất rồi đổi chỗ nó với phần tử có chỉ số dòng bằng chỉ số cột.
Chương trình sau đây giải bài toán trên:
program Diag;
var
N, i, j, Max,Ind, Vsp: integer;
A: array [1..15, 1..15] of integer;
begin
write('Nhap N: '); 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
end.
Hãy sửa lại chương trình trên khi yêu cầu bài toán thay dòng bằng cột.
Viết chương trình nhập từ bàn phím xâu kí tự S có độ dài không quá 100. Hãy cho biết có bao nhiêu chữ số thập phân xuất hiện trong xâu S. Thông báo kết quả ra màn hình.
Hãy bổ sung thêm chương trình Xep_loai (ở §13) những lệnh cần thiết để chương trình đưa ra danh sách học sinh xếp loại A.
Họ và tên
Tiêu đề câu hỏi
Nội dung câu hỏi
Câu trả lời của bạn
Câu trả lời của bạn
Program DapAnHay;
var n,i,j: integer;
s: string;
k: longint;
begin
write('Nhap N: '); readln(n);
i:=0; j:=1; k:=1;
while i<n do
begin
k:=k*j;
j:=j+1;
str(k,s);
i:=length(s);
end;
write(k);
readln
end.
Câu trả lời của bạn
#include <bits/stdc++.h>
using namespace std;
double a;
int main()
{
cin>>a;
cout<<fixed<<setprecision(2)<<a*a;
return 0;
}
Câu trả lời của bạn
uses crt;
var n,x,mu,i,j:longint;s:int64;
begin
clrscr;
write('n=');readln(n);
write('x=');readln(x);
for i:=2 to n do
begin
for j:=1 to i do mu:=x*i;
s:=s+mu;
mu:=0;
end;
write(s);
readln;
end.
-Thiết kế cấu trúc dữ liệu
-Thiết kế giải thuật
- Sử dụng ngôn ngữ C/C++ cài đặt thuật toán trên
Câu trả lời của bạn
#include <bits/stdc++.h>
using namespace std;
long long a,b,c,d,ln;
int main()
{
cin>>a>>b>>c>>d;
ln=a;
ln=max(ln,b);
ln=max(ln,c);
ln=max(ln,d);
cout<<ln;
return 0;
}
Câu trả lời của bạn
uses crt;
var x,y:integer;
begin
clrscr;
readln(x);
y:=sqr(x);
writeln(y);
readln;
end.
Câu trả lời của bạn
Chương trình con có thể không có tham số.
Ví dụ:
procedure Ve_Hcn;
begin
writeln(‘* ******’);
writeln (‘ * * ‘);
writeln(‘* ******’);
end;
• định và giá trị đó được gán cho tên hàm.
1.Chương trình con cỏ thể không có tham số. Ví dụ:
procedure Ve_Hcn; begin
writeln(‘* ******’); writeln (‘ * * ‘) ‘ệ
writeln(‘* ******’);
end;
Câu trả lời của bạn
Sự giống nhau và khác nhau giữa thủ tục và hàm
Giống nhau: Cà thủ tục và hàm đều là chương trình con, cấu trúc giống như một chương trình trừ dòng đầu tiên và kết thúc bằng END; (thay vì END.). Cả thủ tục và hàm có thể chứa các tham số (tham số giá trị và tham số biến), cùng tuân theo quy định về khai báo và sử dụng các loại tham số này.
Khác nhau: Việc thực hiện hàm luôn trả về giá trị kết quả thuộc kiểu xác định và giá trị đó được gán cho tên hàm.
Câu trả lời của bạn
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ố.
Chúng ta phải khai báo kích thước cùa mảng bởi vì để cách đánh số các phần tử của nó.
Câu trả lời của bạn
Tham chiếu đến phần tử của mảng một chiều được xác định bởi tên mảng cùng với chỉ số, được viết trong cặp ngoặc [ và ] (ví dụ nhietdo[20J). Còn tham chiếu đến phần tử của mảng hai chiều được xác định bởi tên mảng cùng với hai chỉ số được phân cách bởi dấu phẩy và viết trong cặp ngoặc [ và ] (ví dụ Arrlnt[5, 9J).
Câu trả lời của bạn
Các phần tử của mảng có thể có những kiểu sau đây: real, boolean, integer, longint
Câu trả lời của bạn
Để lập chương trình nhập từ bàn phím số nguyên dương N (N<100) và dãy
A gồm N số nguyên A, A1…AN có giá trị tuyệt đối không lớn hơn 100, thì ta cần phải thực hiện việc kiểm tra xem số N nhập vào (số phần tử của dãy) có thỏa mãn yêu cầu của đầu bài hay không nghĩa là 0< N< 100, nếu không đưa ra thông báo “Mời nhập lại”. Còn các phần tử, A1,…AN của mảng cũng phải là những số nguyên và có giá trị tuyệt đối không lớn hơn 100 (A[i] >= -100 và A[i]<=100), nếu không đưa ra thông báo “Mời nhập lạĩ’
Tiếp đến ta phải kiểm tra dãy A nhập vào có phải là một cấp số cộng hay không nghĩa là các phần tử của dãy A vừa nhập vào có làm thành một cấp số cộng hay không và đưa ra màn hình thông báo kết quả ra màn hình “A là cấp số cộng’ hoặc “A không là cấp số cộng”. Bởi vậy,
Lấy d= A[2] — A[1]
Khi đó, dãy A là cấp số cộng nếu thỏa mãn điều kiện:
A[i]=A[1] + (i-1)d.
(hoặc điều kiện A[i] – A[i-1] = d với (1
Trong chương trình ta dùng một vòng lặp theo biến đếm i để kiểm tra xem mỗi A[i] có thỏa mãn điều kiện nói trên hay không, chi cần phát hiện được một phần tử của A không thỏa mẫn là kết luận được dãy A không là cấp số cộng.
Chương trình:
program bai5_chuong4;
uses crt;
var
A: array[1..100] of integer;
d,rt,i, dem: integer;
begin
clrscr;
writeln(‘Nhap mot so lon hon 0 va nho hon 100’); repeat
write (‘Nhap N:’);
readln(N)
if (N>=1000) or (N<=0 ) then writeln(’Moi nhap lai !’);
until (N>0) and (N<1000); writeln(‘Nhap cac gia tri cac so hang co tri tuyet doi khong lon hon 1000’);
for i:=1 to n do repeat
write (‘ a [‘, i ,’] = ‘)
readln (a [i]) ; if (A[i]>100) or (A[i]<-1000) then write(’Moi nhap lai ‘);
until (A[i]>-1000) and (A[i]<1000);
{Kiem tra xem CO la cap so cong khong?} d: = A[2] – A[ 1 ] ; dem:=0;
for i:= 2 to n do if A[i] – A[i-l]od then dem:= dem + 1; if dem >0 then writeln(‘A khong la cap so cong’) else writeln(’A la cap so cong’);
readln,
end.
Câu trả lời của bạn
Mảng có các kiểu như biến : integer.Real.char.String.byte…
– Tham chiếu đến phần tử của mạng có 2 kiểu :
** Với mảng 1 chiều:
– Cách tham chiếu đến mảng: A[i] với i là chỉ số phân tử trong mảng.
vd: Vẫn xét mảng 10 20 30 5 6 7
A[1]=10; A[2]=20; A[3]=30; A[4]=50; A[5]=6; A[7]=7
– Cách khai báo mảng: Có 2 cách khai báo:
Khai báo trực tiếp: Thường thì cách khai báo trực tiếp được dùng nhiều hơn vì nó ngắn gọn.
var <tên mảng>:array[kiểu chỉ số] of <kiểu phần tử>;
ví dụ:
a:array[1..100] of integer;
b,c:array[1..250] of integer;
Khai báo gián tiếp:
type <tên kiểu mảng>=array[kiểu phần tử] of <kiểu chỉ số>;
var <tên mảng>:<tên kiểu mảng>;
vd:
type mang=array[1..100] of integer;
var a,b,c:mang;
**Với mảng 2 chiều :
– Tham chiếu: Vì mảng 2 chiều là bảng nên sẽ cần chỉ số hàng và chỉ số cột: A[i,j] với i là chỉ số hàng, j là chỉ số cột.
– Khai báo: Tương tự như mảng 1 chiều nhưng thêm chỉ số cột.
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?
Câu trả lời của bạn
Chương trình:
program bai7_chuong4;
uses crt;
var
N,i: word;
F,F1,F2: word;
Begin
clrscr;
repeat
writeln(‘Tim so hang thu N cua day Fibonaxi, Nĩ=’));
readln(N);
if N<=2 then writeln(’Moi nhap lai !’);
until N>2 F1:= 1 F2:= 2 for i:= 3 to N do
begin
F:= F1 + F2;
Fl:= F2;
F2:= F;
end;
writeln(‘So fibonaxi thu’, N: 5, ‘ la ’, F: 10);
readln;
End.
Khi chạy chương trình, nếu nhập N<2, chẳng hạn N= / thì trên chương trình đưa ra thông báo “Moi nhap lai”. Còn khi nhập N>—2, chẳng hạn N =7 thì chương trình đưa ra kết quả: “So fibonaxi thu 7 la 21”
a) Số lượng số chẵn và số lượng số lẻ
b) số lượng số nguyên tố trong dãy
Câu trả lời của bạn
Đối với với bài toán này thì phần kiểm tra số nguyên dương N(N<100) và dãy A gồn N số nguyên A1, A2 …AN có giá trị tuyệt đối không lớn hơn 1000 giống như bài tập 5 đã nêu ờ trên. Chúng ta chi cần giải quyết thêm 2 vấn đề nữa, đó là đếm số lượng số chẵn, số lẻ và số lượng số nguyên tố trong dãy.
Chưntg trình:
progran baitap6_chuong4;
uses crt;
var
array[1..100] of integer;
if: boolean;
N, i„ l: integer; so_nt, so_chan: integer;
begin
for i := -1000 to 1000 do if i>0 then NT:= false;
so_chan:=0; so_nt:=0;
{Nhap vao)
repeat
write(‘So phan tu cua day A (N<=100), N= *);
readln(N);
until (N>0) and
(N<=100);
for i:= 1 to N do
begin
{kiem tra cac phan tu cua day khi nhap vao}
repeat
write(‘A[‘,i,’]= ‘);readln(A[i]);
if (a[i]>1000) or (a[i]<-1000) then
write(‘Moi nhap lai “);
until (a[i]>-1000) and (a[i]<1000); = if A[i] mod 2 =0 then so_chan:= so_chan + 1; if A[i] >1 then
begin
u: = 2 ;
while ((u<=sqrt (A[i])) and (A[i] mod u<>0))) do u: = u + 1; if u>sqrt(A[i]) then so_nt:= so_nt + 1;
end,
end;
{In ra man hinh}
writeln(‘So luong so chan:’,so_chan);
writeln(‘So luong so le:’,N – so_chan);
writeln(’So luong so nguyen tro:’, so_nt);
readln
End.
Khi chạy chương trình, ta lần lượt nhập các phần tử của dãy A:
Với N = 3 và các phần tử được nhập vào theo thứ tự:
A[1]=5
A[2]=7
A[3]=900
thì chương trình đưa ra thông báo:
So luong so chan: 1
So luong so le: 2
So luong so nguyen to: 2
– Với 5 và các phần tử được nhập vào theo thứ tự:
A[1]=12
A[2]=3 A[3]=5
A[4>10 A [5] =11
thì chương trinh đưa ra thông báo:
So luong so chan: 2
So luong so le: 3
So luong so nguyen to: 3
Chương trình sau đây giải bài toán trên:
program Diag;
var
N, i, j, max, Ind, Vsp: integer;
A: array[1..15, 1..15] of integer;
begin
write(‘Nhap N:’);
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,i]; Ind:= 1;
for j:= 2 to N do
if A[i,j] > Max then begin
Max: = A [ i, j ], Ind: = j ‘n
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
End.
Hãy sửa lại chương trình trên khi yêu cầu bài toán thay dòng bằng cột.
Câu trả lời của bạn
Có thể được chia thành ba đoạn chương trình sau đây:
Đoạn thứ nhất: Hai vòng lặp for-do lồng nhau ở đầu chưong trình có nhiệm vụ nhập vào một mảng hai chiều từ bàn phím
for i:= 1 to N do for j:= 1 to N do
begin
write(‘A[‘,i, ’, ‘,j, ‘]= ’) ;
readln(A(i,j]);
end;
Đoạn thứ hai: Hai vòng lặp lồng nhau tiếp theo thực hiện việc tìm phần tử lớn nhất trên dòng thứ i hoán đổi vị trí phần tử này với phần từ vừa nằm trên dòng i vừa có chỉ số cột bằng 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 thứ ba: Hai vòng lặp lồng nhau cuối chương trình in ra mảng kết quả
for i:=1 to N do
begin
writeln;
for j:= 1 to N do write (A[i , j ] : 3 );
end;
writeln
– Khi chạy chưomg trình trên, nhập vào N= 3 thì ta có mảng hai chiều 3×3 với 9 phần tử, chẳng hạn theo thứ tự như sau:
A[1,1]=4
A[1,2]=6
A[1,3]= 8
A[2,1]=3
A[2,2]= 7
A[2,3]= 9
A[3,l]= 4
A[3,2]=9
A[3,3]= 5
Ta nhận thấy rằng, ở dòng thứ nhất, phần tử lớn nhất của dòng là A[ 1,3 J= 8, phần từ có chỉ số dòng bằng chỉ số cột là A[1,1]= 4. Bởi vậy, sau khi tráo đổi thì giá trị của A[1,1]= 8, còn A[1,3]= 4. Vì vậy, dòng thứ nhất sau khi được tráo đổi là: A[1,1]= 8, A[ 1,2]= 6, A[ 1,3]=4.
Tương tự, ở dòng thứ 2 thì phần lớn nhất của dòng là A[2,3]= 9 sẽ được tráo đổi với phần tử A[2,2]= 7. Bởi vậy, sau khi tráo đổi thì giá trị của A[2,2]= 9, còn A[2,3]= 7. Vì vậy, dòng thứ hai sau khi được tráo đổi là:
A[2,1 ]= 3, A[2,2]= 9, A[2,3]= 7.
ở dòng thứ ba sau khi được tráo đổi là: A[3,1]= 4, A[3,2]= 5, A[3,3]=9.
Khi đó, các dòng sau khi được tráo đổi sẽ như sau:
A[1,1]= 8,A[1,2]= 6, A[1,3]= 4
A[2,1]=3,A[2,2]=9,A[2,3]=7
A[3,1]=4,A[3,2]= 5, A[3,3]= 9
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.
Câu trả lời của bạn
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.
Câu trả lời của bạn
Chương trình xeploai:
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;
readln(N)
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) and
then Lop[i].xeploai:=’D’;
end;
clrscr;
writeln (‘Danh sach xep loai hoc sinh trong lop: ‘ );
for i:=1 to N do
writeln (Lop[i].Hoten:30,’ – Xep loai : ‘, Lop[i]. Xeploai);
readln
End.
nhằm mục đích xếp loại (A, B, c, D) cho học sinh. Để chương trình đưa ra danh sách học sinh xếp loại A, thì chúng ta cần đưa thêm đoạn chương trình sau vào cuối chương trình trên:
writeln(’Danh sach hoc sinh xep loai A trong lop: ‘);
for i:=1 to N do if Lop[i].Xeploai =’A’ then writeln(Lop[i].Hoten:30);
Vì vậy, chương trình đưa ra danh sách học sinh xếp loại A trong lớp như sau:
program xep_loai;
uses crt;
const max= 60;
type Hocsinh = record
hoten: string[30];
ngay sinh: 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;
clrser;
W1 iteln(1 Danh sach xep loai hoc sinh trong lop: ‘); fcr i:= 1 to n do writeln(Lop[i].Hoten: 30, ‘ -Xep loai:’, Lop[i].Xeploai); writeIn(‘Danh sach hoc sinh xep loai A trong lop: ‘); ior i:= 1 to N do
if Lop[i].Xeploai =’A’ then writeln(Lop[i].Hoten : 30);
readln
End.
Câu trả lời của bạn
Chương trình nhập vào từ bàn phím xâu kí tự s có độ dài không quá 100. Cho biết số chữ số thập phân xuất hiện trong xâu s. Thông báo kết quả ra màn hình.
Chương trình:
program bai_10_chuong_4;
uses crt;
var
s: string[100];
i, dem: integer;
Begin
clrscr;
write(‘Nhap xau vao:’); readln(s); dem:= 0;
for i:= 1 to length(s) do
if (‘0′<=s[i]) and(s[i]<=’9’) then dem:=dem+l;
Writeln(‘Trong xau s co ‘»dem,’ chu so thap phan’);
readln;
End.
Khi chạy chương trình, giả sử nhập vào xâu s :’Tin hoc 11 co 6 chuong’ thì kết quả chương trình in ra màn hình: ‘Trong xau s co 3 chu so thap phan’.
Câu trả lời của bạn
0 Bình luận
Để lại bình luận
Địa chỉ email của hạn sẽ không được công bố. Các trường bắt buộc được đánh dấu *