Lời giải :
a) sai vì trước else không được chứa dấu ;
b) đúng
c) sai vì kết thúc x:=x+5 phải có dấu ;
d) sai vì trong vòng lặp for không có kiểu dữ liệu số thực
Lời giải :
a) sai vì trước else không được chứa dấu ;
b) đúng
c) sai vì kết thúc x:=x+5 phải có dấu ;
d) sai vì trong vòng lặp for không có kiểu dữ liệu số thực
TỔ TOÁN-TIN MÔN: TIN HỌC 8
I. TRẮC NGHIỆM
Câu 1: Lệnh lặp nào sau đây là đúng?
a) For <biến đếm>= <giá trị đầu>to<giá trị cuối>do<câu lệnh>;
b) For <biến đếm>:= <giá trị đầu>to<giá trị cuối>do<câu lệnh>;
c) For <biến đếm>:= <giá trị cuối>to<giá trị đầu>do<câu lệnh>;
d) For <biến đếm>: <giá trị đầu>to<câu lệnh> do <giá trị cuối>;
Câu 2: Câu lệnh pascal nào sau đây là hợp lệ?
a) For i:=10 to 1 do write(‘A’); c) For i:=1.5 to 10 do write(‘A’);
b) For i= 1 to 10 do write(‘A’); d) For i:= 1 to 10 do write(‘A’);
Câu 3: Vòng lặp while ..do là vòng lặp:
a) Biết trước số lần lặp c) Chưa biết trước số lần lặp
b) Biết trước số lần <=100 d) Biết trước số lần là >=100
Câu 4: Câu lệnh lặp while…do có dạng đúng là:
a) While <đk> do; <câu lệnh>; c) While <đk> <câu lệnh> do;
b) While <câu lệnh> do <đk>; d) While <đk>do <câu lệnh>;
Câu 5: Cho S và i là biến nguyên. Khi chạy đoạn chương trình :
s:=0; for i:=1 to 5 do s := s+i;
Kết quả cuối cùng của s là : a) 11 b) 55 c) 101 d) 15
Câu 6: Trong đọan chương trình pascal sau đây x có giá trị là mấy
Begin x:= 3 ; If (45 mod 3) =0 then x:= x +2;
If x > 10 then x := x +10 ; End.
a) 3 b) 5 c) 15 d) 10
Câu 7: Trong chương trình pascal sau đây:
var a, b :integer;
s,cv :real ;
begin a:= 10; b:= 5; s:= a*b ; cv:= (a +b ) * 2 ; end.
Biến s và cv có giá trị là mấy:
a) s = 10 ; cv = 5 ; c) s= 30 ; cv = 50 ;
b) s = 50 ; cv = 40 ; d) s = 50 ; cv = 30 ;
Câu 8: Sau khi thực hiện đoạn chương trình j:= 0; for i:= 1 to 3 do j:=j+2; thì giá trị in ra màn hình là? a) 4 b) 6 c) 8 d) 10
Câu 9: Để tính tổng S=1+3 + 5 + … + n; em chọn đoạn lệnh: |
|
a) for i:=1 to n do if ( i mod 2)=0 then S:=S + 1/i; |
c) for i:=1 to n do if (i mod 2) <> 0 then S:=S+i; |
b) for i:=1 to n do if ( i mod 2)<>0 then S:=S + 1/i |
d) for i:=1 to n do if ( i mod 2)=0 then S:=S + i; |
Câu 10: Để tính tổng S=1/2+1/4 + 1/6 + … +1/ n; em chọn đoạn |
|
a) for i:=1 to n do if ( i mod 2)=0 then S:=S + 1/i; |
c) for i:=1 to n do if (i mod 2) <> 0 then S:=S+i; |
b) for i:=1 to n do if ( i mod 2)=0 then S:=S – 1/i |
d) for i:=1 to n do if ( i mod 2)=0 then S:=S + i |
Câu 11: Để đếm các số lẻ <= n ; em chọn đoạn lệnh: |
|
a) for i:=1 to n do if ( i mod 2)< >0 then S:=S + 1; |
c) for i:=1 to n do if (i mod 2) =0 then S:=S + 1; |
b) for i:=1 to n do if ( i mod 2)=0 then S:=S + i ; |
d) for i:=1 to n do if ( i mod 2)=0 then S:=S + i; |
Câu 12: Câu lệnh nào sau đây lặp vô hạn lần |
|
a) s:=5; i:=0; While i<=s do s:=s + 1; |
a) s:=5; i:=1; While i<=s do i:=i + 1; |
b) s:=5; i:=1; While i> s do i:=i + 1; |
d) s:=0; i:=0; While i<=s do S:=S + i; |
Câu 13: Chọn khai báo hơp lệ |
|
a) Var a: array[1..n] of real; |
c) Var a: array[1:n] of real; |
b) Var a: array[1..100] of real; |
d) Var a: array[1…n] of real; |
Câu 14: Chọn khai báo hơp lệ |
|
a) Const n=5; Var a,b: array[1..n] of real; |
c) Var n: real; Var a,b: array[1:n] of real; |
b) Var a,b: array[100..1] of real; |
d) Var a:array[1.5.10] of real; |
Câu 15: Thực hiện đoạn lệnh:
a[1]:=2; a[2]:=3; t:=a[1]+a[2]+1;
Giá trị của t là: a) t=1 b) t=3 c) t=2 d) t=6
II. TỰ LUẬN
1) Nhập số tự nhiên n từ bàn phím, in ra các số chẵn từ 1 đến n và tổng của chúng?
2) Nhập số tự nhiên n từ bàn phím, in ra các số chia hết cho 5 từ 1 đến n và tổng của chúng?
3) Tính trung bình cộng của n số nguyên nhập từ bàn phím?
4) Tìm số lớn nhất trong dãy n số nguyên nhập từ bàn phím?
5) Sửa lỗi cho các câu lệnh Pascal sau:
a. For i=1 to 10 do s= s+i; b. While i:=5 do s:= s+i;
c. Var a:array[100..1] of real; d. If a>b; then max:=a;
6) Kẻ bảng thể hiện các câu lệnh lặp sau:
a. s:=0; b. s:=0; i:=10;
For i:= 1 to 20 do While i>0 do
If I mod 5=0 then s:=s+i; begin s:=s+i; i:=i-1end;
7) Sau khi thực hiện các đoạn chương trình sau, giá trị của biến s và biến i bằng bao nhiêu?
a. s:=1; b. s:=0; i:=0;
For i:= 1 to 5 do s:=s*i; While i<5 do begin i:=i+1; s:=s+i end;
8) Cho biết kiểu dữ liệu của biến a và b trong các đoạn chương trình sau:
a. a:= 0; b:=0;
while a<5 do begin a:=a+1; b:=b+1/a end;
b. b:=1;
For a:= 1 to 5 do b:=b*a;
\(I\), Lý thuyết:
1) Điều kiện B mod 2 <> 0 nếu đúng có ý nghĩa gì?
a) B là số dương b) B là số âm c) B là số chẵn d) B là số lẻ
2) Cấu trúc rẽ nhánh dạng đầy đủ:
a) If điều kiện then câu lệnh 1; else câu lệnh 2;
b) If điều kiện then câu lệnh 1else câu lệnh 2;
c) If điều kiện then câu lệnh;
d) If điều kiện then câu lệnh else câu lệnh;
3) Tìm số chẵn/ lẻ bằng câu lệnh nào sao đây :
a) If X mod 2= 0 then Writeln(' X là số lẻ ');
b) If X mod 2= 0 then Writeln(' X là số chẵn ');
c) If X mod 2= 0 then Writeln(' X là số lẻ ') else Writeln(' X là số chẵn ');
d) If X mod 2= 0 then Writeln(' X là số chẵn') else Writeln(' X là số lẻ ');
4) Tìm số lớn nhất trong 3 số x, y, z bằng câu lệnh nào sau đây:
a) max:=x; If y < max then max:= y else max:= z;
b) max:=x; If y > max then max:= y else max:= z;
c) max:=x; If y > max then max:= y; if z > max then max:= z;
d) max:=x; If y < max then max:= y; if z < max then max:= z;
5) Pascal sử dụng câu lệnh lặp nào sau đây là cấu trúc rẽ nhánh dạng thiếu
a) For ... to ... do; b) If ...then; c) If ...then...else d) While ...do;
6) Chọn câu lệnh Pascal hợp lệ trong các câu sau:
a) If a = 6 then x:= 100; b) If a > b then max:= a; else max:= b;
c) If a > b then max = a; d) If x := a + b then x: =x + 1;
Bài tập 1: Hãy cho biết kết quả của đoạn chương trình sau:
a) So:=1;
While So<10 do writeln(So);
So:=so+1;
b) Hãy cho biết giá trị của x bằng bao nhiêu?
x:=0;tong:=0;
While tong<=20 do
Begin writeln(tong);
Tong:=tong+1;
End;
x:=tong;
c) Hãy cho biết giá trị của i, j, k
i:=1;j:=2;k:=3;
While i<6 do i:=i+1;j:=j+1;k:=k+j;
Bài tập 2: Hãy cho biết đoạn chương trình sau thực hiện bao nhiêu vòng lặp? Kết thúc giá trị của A bằng bao nhiêu? Viết chương trình Pascal thể hiện thuật toán đó
a) Thuật toán 1
Bước 1: A ¬ 0; n ¬ 2;
Bước 2: Nếu A ≥ 9 , chuyển bước 4
Bước 3: A ¬ A+n và quay lại bước 2
Bước 4: Thông báo A và KTTT
b) Thuật toán 2
Bước 1. S ¬ 10, x ¬ 0.5
Bước 2. Nếu S £ 5.2, chuyển tới bước 4
Bước 3. S ¬ S - x và quay lại bước 2
Bước 4. Thông báo S và kết thúc thuật toán
Bài tập 3: Hãy chỉ ra lỗi trong các câu lệnh sau đây
a) X:=10; while X:=10 do X:=X+5;
b) X:=10; while X=10 do X=X+5;
c) S:=0; n:=0; while S<=10 do n:=n+1; S:=S+n;
Bài tập 4: Các khai báo biến mảng sau đây trong Pascal đúng hay sai:
a) var X: Array[10,13] Of Integer;
b) var X: Array[5..10.5] Of Real;
c) var X: Array[3.4..4.8] Of Integer;
d) var X: Array[10..1] Of Integer;
e) var X: Array[4..10] Of Real;
Bài tập 5: Viết chương trình nhập số thực nằm trong khoảng từ 1 đến 100. Thông báo bạn đã nhập đúng. Yêu cầu nhập lại nếu số đó không nằm trong khoảng này
Bài tập 6 : Viết chương trình nhập dãy N số và in ra tổng các số chẵn, số lẻ của dãy vừa nhập?
Bài tập 7 : Viết chương trình nhập 1 dãy số nguyên. In ra phần tử lớn nhất, nhỏ nhất của dãy số và tính tổng các số lớn hơn 10 và nhỏ hơn 200?
Bài tập 8 : Viết chương trình nhập 1 dãy số nguyên, sắp xếp lại dãy số theo thứ tự tăng dần, giảm dần?
Mọi người giúp em với em cảm ơn nhìu ạ.
1) Trong đoạn lệnh sau đây, chương trình đã thực hiện bao nhiêu vòng lặp?
S:=0; i:=0;
While S<=20 do
Begin
S:=S+i; i:=i+1;
end;
a) 2 b) 4 c) 8 d) vô hạn
2) Trong đoạn lệnh sau đây, chương trình đã thực hiện bao nhiêu vòng lặp?
x:=0;
For i:=1 to 5 do x:=x+3;
a) 1 b) 3 c) 5 d) 15
3) Sau khi thực hiện đoạn chương trình sau, giá trị của biến x bằng bao nhiêu?
x:=0;
For i:=1 to 5 do x:=x+3;
a) 1 b) 3 c) 5 d) 15
4) Sau khi thực hiện đoạn chương trình sau, giá trị của biến S bằng bao nhiêu?
S:=0; i:=0;
While S<=20 do
Begin S:=S+i; i:=i+1; end;
a) 18 b) 21 c) 25 d) 52
5) Đoạn chương trình sau đây đã mắc phải lỗi gì?
a:=5;
While a<=6 do Writeln(‘A’);
a) Sử dụng sai cú pháp lệnh While ... do
b) Cho biết trước số lần lặp
c) Không cho biết trước số lần lặp
d) Lặp vô hạn
6) Trong ngôn ngữ lập trình Pascal, câu lệnh For ... do là lệnh:
a) Không cho biết trước số lần lặp
b) Cho biết trước số lần lặp
c) Biết trước hay không biết trước số lần lặp đều sử dụng được
d) Cả a, b, c đều sai
7) Trong ngôn ngữ lập trình Pascal, câu lệnh lặp được dùng để thể hiện:
a) Cấu trúc lặp c) Cấu trúc điều kiện
b) Cấu trúc rẽ nhánh d) Cấu trúc mảng
8) Trong ngôn ngữ lập trình Pascal, lệnh lặp với số lần chưa biết trước là câu lệnh:
a) For ... do c) If ... then ...
b) While ... do d) If ... then ... else...
9) Trong ngôn ngữ lập trình Pascal, câu lệnh nào sau đây hợp lệ?
a) For i:=10 to 1 do Writeln(‘A’);
b) For i:=10.5 to 1.5 do Writeln(‘A’);
c) For i=1 to 10 do Writeln(‘A’);
d) For i:=1 to 10 do Writeln(‘A’);
10) Trong ngôn ngữ lập trình Pascal, câu lệnh nào sau đây hợp lệ?
a) x:=10; While x:=10 do x:=x+5;
b) x=10; While x=10 do x=x+5;
c) x:=10; While x=10 do x:=x+5;
d) x=10; While x:=10 do x=x+5;
Các câu lệnh sau trong Pascal sau có hợp lệ không? Nếu không hãy sửa lại cho hợp lệ?
a) For i:=100 to 1 do writeln('A');
b) For i:= 1.5 to 10.5 do Writeln('A');
c) X:= 10; while X:= 10 do X:= X+5;
d) X:=10; while X=10 do X= X+5
Gạch chân lỗi sai trong các câu lệnh sau và sửa:
a) For i:=1.5 to 10.5 do writeln('A');
b) X:=10; while X:=10 do X:=X+5;
Trong các câu lệnh sau, câu nào sai, nếu sai hãy giải thích và sửa lại cho đúng:
a) Var h b: integer;
b) Var x:real;
c) Const y = 4;
d) Const r:2;
e) If x:=y then x = x - y;
f) If a = b then write(a,'bang',b) else; write(a,'khac',b);
ĐÁP ÁN VÒNG 2 CUỘC THI TIN HỌC:
* ĐỀ 1:
Câu 1:
CÂU 1:
const fi='uc.inp'
fo='uc.out'
var f: text;
a,b,c : integer;
function uc(x,y): integer;
var z: integer;
begin
while y<>0 do
begin
z:=x mod y;
x:=y;
y:=z;
end;
uc:=x;
end;
procedure ip;
begin
assign(f,fi);
reset(f);
read(f,a,b,c);
close(f);
end;
procedure out;
begin
assign(f,fo);
rewrite(f);
write(f,uc(uc(a,b),c);
close(f);
end;
begin
ip;
out;
end.
Câu 2:
const fi='SN.inp'
fo='SN.out'
var
f:text;
i,n:integer;
s:real;
procedure ip;
begin
assign(f,fi);
reset(f);
read(f,n);
close(f);
end;
procedure out;
begin
assign(f,fo);
rewrite(f);
s:=0;
for i:= 1 to n do
begin
if i mod 2 <> 0 then
s:=s+(i/(i+1));
if i mod 2 = 0 then
s:=s-(i/(i+1));
end;
write(f,s:0:2);
close(f);
end;
BEGIN
ip;
out;
END.
Câu 3:
const fi='SSNT.inp'
fo='SSNT.out'
var
f:text;
n,i,max,j:integer;
s:string;
a:array[1..32000] of integer;
function nt(x:integer):boolean;
var
i:integer;
begin
nt:=false;
if x < 2 then exit;
for i:= 2 to trunc(sqrt(x)) do
if x mod i = 0 then exit;
nt:=true;
end;
function snt(x:integer):boolean;
begin
snt:=false;
if x= 0 then exit;
while nt(x) = true do
x := x div 10;
if x = 0 then snt:=true;
end;
procedure ip;
begin
assign(f,fi);
reset(f);
max:=a[1];
readln(f,n);
for i:= 1 to n do
begin
read(f,a[i]);
if( a[i] < max ) and (nt(a[i]) = true) then
max:=a[i];
end;
close(f);
end;
procedure out;
begin
assign(f,fo);
rewrite(f);
writeln(f,max);
max:=0;
for i:= 1 to n do
begin
if snt(a[i]) = true then
begin
str(a[i],s);
if length(s) = 2 then
max:=max+a[i];
s:=''
end
else
a[i]:=-32000;
end;
writeln(f,max);
for i:= 1 to n-1 do
for j :=i+1 to n do
if a[i] > a[j] then
begin
max:=a[i];
a[i]:=a[j];
a[j]:=max;
end;
for i:= 1 to n do
if (a[i] > 0) and (a[i] <> a[i-1]) then write(f,a[i],' ');
close(f);
end;
BEGIN
ip;
out;
END.
CÂU 4:
const fi='TUOI.INP'
fo='TUOI.OUT'
var f: text;
a,b: byte;
procedure ip;
begin
assign(f,fi);
reset(f);
read(f,a,b);
close(f);
end;
procedure out;
begin
assign(f,fo);
rewrite(f);
if (x=y*2) and (x>18) and (x-y>=18) then write(f,'CO') else write(f,x-y*2);
close(f);
end;
begin
ip;
out;
end.
const fi='CM.INP'
fo='CM.OUT'
var f: text;
a,n,b,k: integer;
a1: array[1..32000] of integer;
function nt(x: integer): boolean;
var i: integer;
begin
nt:=false;
if x<2 then exit;
for i:=2 to trunc(sqrt(x)) do if x mod i=0 then exit;
nt:=true;
end;
procedure ip;
begin
assign(f,fi);
reset(f);
read(f,n);
close(f);
end;
procedure out;
begin
assign(f,fo);
rewrite(f);
d:=0;
for a:=1 to k do
if nt(a) then
begin
inc(d);
a1[d]:=a;
end;
for a:=1 to d do
for b:=x to d do
if a1[a]+a1[b]=k then writeln(f,a1[a],'+',a1[b]);
end;
close(f);
end;
begin
ip;
out;
end.
*ĐỀ 2 :
BÀI LÀM CỦA BẠN LÊ HOÀNG THẮNG:
//----------------------------CAU 1--------------------------------
var s,d,n,i,u:longint;
a:array[0..32001] of longint;
f:text;
function ucln(x,y:longint):longint;
begin
if y=0 then exit(x) else exit(ucln(y,x mod y));
end;
begin
assign(f,'ucln.inp');reset(f);
readln(f,n);
for i:=1 to n do read(f,a[i]); close(f);
u:=a[1];
for i:=2 to n do u:=ucln(u,a[i]);
assign(f,'ucln.out');rewrite(f);
write(f,'UCLN: ',u,' UC: ');
for i:=1 to u do if u mod i=0 then
begin
if i<>u then write(f,i,',') else write(f,i);
if i<10 then inc(d) else inc(s,i);
end;
writeln(f);
writeln(f,d); write(f,s);
close(f);
end.
//----------------------------CAU 2--------------------------------
var n,i:longint;
s:real;
f:text;
begin
assign(f,'sn.inp');reset(f);
readln(f,n); close(f);
for i:=1 to n do if odd(i) then s:=s-i/(i+1) else s:=s+i/(i+1);
assign(f,'sn.out');rewrite(f);
write(f,s:0:2);
close(f);
end.
//----------------------------CAU 3--------------------------------
var a:array[0..1000000] of boolean;
b:array[0..1000000] of longint;
i,j,k,n,d:longint;
f:text;
procedure taosang(n:longint);
var i,j:longint;
begin
for i:=2 to trunc(sqrt(n)) do if not(a[i]) then
begin
j:=i*i;
while j<=n do begin a[j]:=true; inc(j,i); end;
end;
end;
begin
assign(f,'boso.inp');reset(f);
readln(f,n); taosang(n); close(f);
assign(f,'boso.out');rewrite(f);
for i:=2 to n do if not(a[i]) then
begin
inc(d);
b[d]:=i;
end;
for i:=1 to d do
for j:=i to d do
if (n-b[i]-b[j]>=b[j]) and not(a[n-b[i]-b[j]]) then
writeln(f,b[i],' ',b[j],' ',n-b[i]-b[j]);
close(f);
end.
//----------------------------CAU 4--------------------------------
THAM KHẢO ĐỀ 1.
//----------------------------CAU 5--------------------------------
var n,i,s,t:longint;
f:text;
begin
assign(f,'u.inp');reset(f);
readln(f,n); t:=n; close(f);
assign(f,'u.out');rewrite(f);
for i:=2 to trunc(sqrt(n)) do
begin
if n mod i=0 then
begin
write(f,i,' ');
repeat n:=n div i until n mod i>0;
end;
if t mod (i*i)=0 then inc(s,i*i);
end;
writeln(f);
write(f,s+1);
close(f);
end.
*ĐỀ CHUNG:
BÀI LÀM CỦA BẠN ĐÀO XUÂN SƠN :
Câu 1:
const fi='TCS.inp'
fo='TCS.out'
var
f:text;
x:char;
tg:byte;
s:integer;
CODE:integer;
procedure ip;
begin
assign(f,fi);
reset(f);
s:=0;
while not(eof(f)) do
begin
read(f,x);
if x in ['0'..'9'] then
begin
val(x,tg,CODE);
s:=s+tg;
end;
end;
close(f);
end;
procedure out;
begin
assign(f,fo);
rewrite(f);
write(f,s);
close(f);
end;
BEGIN
ip;
out;
END.
Câu 2:
const fi='t.inp'
fo='t.out'
var
f:text;
s:string;
i:byte;
procedure ip;
begin
assign(f,fi);
reset(f);
read(f,s);
close(f);
end;
procedure out;
begin
assign(f,fo);
rewrite(f);
s[1]:=upcase(s[1]);
for i:= 2 to length(s) do
if s[i-1] <> #32 then
s[i]:=lowercase(s[i]) else
s[i]:=upcase(s[i]);
write(f,s);
close(f);
end;
BEGIN
ip;
out;
END.
2, Kêt quả của câu lệnh For i:=1 to 20 do if i mod 3=2 then write(i:3); *
A.In ra các số lẻ từ 1 đến 20; B. In ra các số chẵn từ 1 đến 20; C. In ra các số chia hết cho 3 từ 1 đến 20; D. In ra các số chia hết cho 3 dư 2 từ 1 đến 20;
3, Trong câu lệnh lặp For i:=3 to 15 do s:=s+i; Có bao nhiêu vòng lặp? *
A. 15; B. 12; C. 13 D. 3;
4, Cho k,m,n nhận giá trị tương ứng 4,5,6; kết thúc câu lệnh sau:X:=n; If ((x mod 2=0)) or (x<=5) then x:=m*k else x:=m div k; thì x có giá trị là ? *
A. 1 B. 0 C. 5. D. 20 5, Cho biết đoạn chương trình Pascal sau đây chương trình thực hiện bao nhiêu vòng lặp?s:=0; n:=0; while s<=5 do n:= n+1;s:= s+n; * A. 3 B. 6 C. 10 D. kết quả khác 6, Cho a,b,c lần lượt nhận giá trị 10,30,20 . Hỏi sau đoạn chương trình Begin X:=a; If x>a then x:=a; if x>b then x:=b;if x>c then x:=c;end; x có giá trị là? * A. 20 B. 10 C. 30 D. Cả ba đáp án đều sai. 7, Cho x:=7; kết thúc câu lệnh If ((x mod 3=0)) and (x<=8) then x:=x+10; thì x có giá trị là ? * A. 8 B. 10 C. 17 D. 7 8, Cho s và i là biến nguyên. Khi chạy đoạn chương trình s := 1; for i:=1 to 5 do s := s+i; Kết quả in lên màn hình là của s là ? * A. 15 B. 16 C. 11 D. 22 9, Cho biết đoạn chương trình Pascal sau đây, khi kết thúc giá trị của S bằng bao nhiêu? S:=0; n:=0;while S<=3 do begin n:= n+1;S:= s+n; end; * A. 15 B. 10 C. 6 D. 3