có nghĩa là nếu n chia hết cho i thì viết i ra màn hình
có nghĩa là nếu n chia hết cho i thì viết i ra màn hình
1.
For I = 2 to 12 Do write ('O'), câu lệnh in ra bao nhiêu chữ O?
2.
For I = 1 to 20 Do If (...) Then write (I,'');
chỗ trống cần điền để liệt kê ra các SỐ LẺ từ 1 đến 20 là?
3.
để tính tổng 1 + 2 + ... + 100 ta thực hiện For I = 1 to 100 Do S:=......
... cần điền?
4.
S;=0; For I:=4 to 12 Do If (I mod 12=1) Then S:=S +I;
giá trị của S?
5.
S;=0; For I:=1 to 5 Do S:=S +I;
giá trị của S?
6.
For I = 1 to 10 Do If (I mod 3 = 0) Then write (I,'');
kết quả?
7.
a:= 354 If (a mod 3 = 0) them write (a mod 3) Else Write (a Div 3);
kết quả?
8.
để in ra màn hình 20 chữ C cần thực hiện?
ĐÁ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.
ĐÁP ÁN VÒNG 1 CUỘC THI TIN HỌC
Câu 1:
const fi='tong.inp'
fo='tong.out'
var
f:text;i,n:integer;t:real;
procedure ip;
begin
assign(f,fi);
reset(f);
readln(f,n);
t:=abs(sqrt(4)*1/2);
for i:= 1 to n do
t:=t+(i/(i+1));
close(f);
end;
procedure out;
begin
assign(f,fo);
rewrite(f);
write(f,t:0:3);
close(f);
end;
BEGIN
ip;
out;
END.
Câu 2: Bài làm của bạn Lê Hoàng Thắng :
var a:array[1..10000000] of longint; min,vtmin,vtmax,n,i,k,demk,max,sum:longint; sm:boolean;
function nguyento(x:longint):boolean;
var demuoc,t:longint;
begin
demuoc:=0;
for t:=1 to x do if (x mod t = 0) then inc(demuoc);
if demuoc=2 then nguyento:=true else nguyento:=false;
end;
function hoanhao(y:longint):boolean;
var tong,g:longint;
begin
tong:=0;
for g:=1 to y-1 do if (y mod g=0) then tong:=tong+g;
if tong=y then hoanhao:=true else hoanhao:=false;
end;
begin
assign(input,'mang.inp'); reset(input);
assign(output,'mang.out'); rewrite(output);
readln(n); readln(k); demk:=0;
for i:=1 to n do read(a[i]);
min:=a[n];
for i:=n downto 1 do if a[i]<min then begin min:=a[i]; vtmin:=i; end;
max:=abs(a[1]);
for i:=1 to n do if abs(a[i])>max then begin max:=abs(a[i]); vtmax:=i; if a[i]<0 then sm:=true else sm:=false; end;
for i:=1 to n do if (k=a[i]) then inc(demk);
sum:=0;
for i:=1 to n do
begin
if (nguyento(a[i]) or hoanhao(a[i])) then sum:=sum+a[i];
end;
writeln(vtmin);
if sm=false then writeln(max,' ,vi tri: ',vtmax) else writeln('-',max,' ,vi tri: ',vtmax);
if (demk=0) then writeln('khong, so lan xuat hien :0') else writeln('co, so lan xuat hien :',demk);
write(sum);
close(input); close(output);
end.
Câu 3: Bài làm của bạn Lê Hoàng Thắng:
const fi='xau.inp'
fo='xau.out'
var s1,s2:string; match,i:longint; f: text;
procedure ip;
begin
assign(f,fi); reset(f);
readln(s1); read(s2);
close(f);
end;
procedure out;
begin
assign(f,fo); rewrite(f);
match:=0;
if s1=s2 then begin write('KHONG'); exit; end;
for i:=1 to length(s1) do
begin
if s1[i]=s2[i] then inc(match);
end;
if match=length(s1)-2 then write('CO') else write('KHONG');
close(f);
end;
Begin
ip;
out;
end.
Câu 4: Bài làm của bạn Đào Xuân Sơn :
const fi='STN.inp'
fo='STN.out'
var
f:text;
s:string;
n,t,i:integer;
function dx(x:string):boolean;
var
i:byte;
begin
dx:=false;
for i:= 1 to length(x) div 2 do
if x[i] <> x[length(x)-i+1] then
exit;
dx:=true;
end;
procedure ip;
begin
assign(f,fi);
reset(f);
read(f,n);
close(f);
end;
procedure out;
begin
assign(f,fo);
rewrite(f);
str(n,s);
if dx(s) = true then writeln(f,'CO') else writeln(f,'KHONG');
t:=0;
for i:= 1 to n div 2 do
if n mod i = 0 then t:=t+i;
if t=n then
begin
write(f,'CO,');
t:=0;
while n<>0 do
begin
t:=t+(n mod 10);
n:=n div 10;
end;
writeln(f,' ',t);
end else
writeln(f,'KHONG');
write(f,length(s));
close(f);
end;
BEGIN
ip;
out;
END.
Bài 5: Bài làm của bạn Vinh Lê:
const fi=’tich.inp’;
fo=’tich.out’;
var f: text;
a,b: integer;
procedure ip;
begin
assign(f,fi);
reset(f);
readln(f,a);
read(b);
close(f);
procedure out;
begin
assign(f,fo);
rewite(f);
t:=a;
t:=t*b;
write(f,t);
close(f);
end;
Begin
ip;
out;
end.
Đây là các bộ code sử dụng thuật toán hoàn chỉnh nhất và tối ưu.
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;
Program tong_so_le;
Uses crt;
Var S,N,I:Integer;
Xữa chương trình sau( nếu sai)
Begin
Clrscr;
Write('Nhap N ');Readln(N);
S:=0;
For I:=1 to N do If (I mod 2<>0) then
S:=S+I;
Writeln('Tong cac so le la ',S); Readln;
End.
Giup mik nha các bn
Thanks
Tại sao không xuất ra được chương trình này vậy? Giúp sửa lỗi :v
Var n,me,i,dem,c:longint;
Begin
Read(n);
me:=trunc(sqrt(n));
c:=1;
dem:=0;
Repeat
c:=c+1;
For i:=1 to c do
If (c mod i)=0 then inc(dem);
Until me=dem;
Readln
End.
\(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;
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