1. ĐỀ KIỂM TRA KHẢO SÁT CHẤT LƯỢNG
MÔN TIN HỌC - NĂM HỌC 2012 – 2013
Thời gian: 90 phút
Câu 1 (3 điểm): Viết chương trình nhập số nguyên n đảm bảo sao cho n dương. (Nếu nhập n <= 0
thì chương trình phải bắt nhập lại), rồi thực hiện tính các biểu thức sau:
S = 12 + 22 + 32 + ... + n2
P = 1*2*3*...*n
program khaosat1;
uses crt;
var i,s,n:integer; p:longint;
begin
clrscr;
write('nhap so nguyen duong n = ');readln(n);
repeat
if n<=0 then begin write('nhap lai n = '); readln(n); end
until n>0;
S:=0;P:=1;
for i:= 1 to n do
begin
S:= S + sqr(i);
P:= P *i;
end;
writeln('S = ', S:6);writeln('P = ',P:6);
readln
end.
{
program khaosat1;
uses crt;
var i,s,n:integer; p:longint;
begin
clrscr;
write('nhap n = ');readln(n);
while n<=0 do
begin
write('nhap lai n = '); readln(n);
end;
S:=0;P:=1;
for i:= 1 to n do
begin
S:= S + sqr(i);
P:= P *i;
end;
writeln('S = ', S:6);writeln('P = ',P:6);
readln
end.
Câu 2 (2 điểm):Viết chương trình nhập độ dài ba cạnh a, b, c. Cho biết a, b, c có phải là ba cạnh
của một tam giác không; nếu là ba cạnh của một tam giác thì cho biết tam giác đều hay cân hay
vuông hay tam giác thường.
program khaosat2;
uses crt;
var a,b,c:integer;
begin
clrscr;
2. write('nhap vao do dai 3 canh tam giac'); readln(a,b,c);
writeln('a= ',a,' b= ',b,' c= ',c);
if (a>0) and (b>0) and (c>0) and (a+b>c) and (a+c>b)and (b+c>a) then
if (a=b) and (b=c) then writeln('tam gian deu')
else if (a=b) or (a=c) or (b=c) then writeln('tam giac can')
else if (a*a=b*b+c*c) or (b*b=a*a+c*c) or (c*c=a*a+b*b) then writeln('tam giac vuong')
else write('tam giac thuong')
else writeln(a,' ',b,' ',c,' ','khonng la 3 canh cua tam giac');
readln
end.
Câu 3 (2 điểm): Viết chương trình nhập vào một mảng số nguyên dương và tính tổng các phần tử
có 2 chữ số của mảng.
program khaosat3;
uses crt;
var i,n,s: word; a,b:array[byte] of integer;
begin
clrscr;
write('nhap so phan tu cua mang: '); readln(n);
for i:=1 to n do
begin
write('a[',i,']= ');readln(a[i]);
while a[i]<=0 do
begin
write('nhap lai a[',i,']= ');readln(a[i]);
end;
if (a[i]>=10)and (a[i]<=99) then s:=s+a[i];
end;
write('tong cac phan tu co 2 chu so cua mang la S= ',S);
readln
end.
Câu 4: (1 điểm): Số hoàn thiện là số tự nhiên có tổng các ước của nó (không kể chính nó) bằng
chính nó. Viết chương trình kiểm tra xem một số được nhập vào từ bàn phím có phải là số hoàn
thiện hay không? Ví dụ: 6, 28 là các số hoàn thiện.
program sohoanthien_khaosat4;
uses crt;
var n:integer; i,s:word;
begin
clrscr;
write('nhap vao 1 so n= '); readln(n);
while n<0 do
begin
writeln('nhap lai so tu nhien, n= ');readln(n);
end;
for i:=1 to n-1 do
if n mod i=0 then s:=s+i;
if s=n then writeln(n, ' la so hoan thien')
else writeln(n, ' khong la so hoan thien');
readln
end.
Câu 5 (2 điểm):
a. Viết chương trình nhập vào số nguyên dương N. In ra màn hình dãy nhị phân của số N vừa
nhập.
program khaosat5a;
3. uses crt;
var n,i,t,dem:integer; d:array[byte]of integer;
begin
clrscr;
write('nhap vao 1 so n= '); readln(n);
while n<0 do
begin
writeln('nhap lai so nguyen duong, n= ');readln(n);
end;
t:=n;dem:=1;
while t<>0 do
begin
d[dem]:=t mod 2;t:=t div 2; dem:=dem+1;
end;
write('day nhi phan cua ', n,' la: ');
for i:= dem downto 1 do write(d[i]);
readln
end.
b. Viết chương trình nhập vào từ bàn phím: giờ, phút, giây. Cộng thêm một số giây cũng được
nhập từ bàn phím. Hãy in ra kết quả sau khi cộng xong.
program khaosat5b;
uses crt;
var gio,phut,giay,ss:byte;
begin
clrscr;
write('nhap vao gio phut giay ');readln(gio, phut, giay);
write('ban muon cong them bao nhieu giay? ');readln(ss);
giay:=giay+ss;
if giay >=60 then begin phut:=phut + giay div 60; giay:=giay mod 60;end;
if phut>=60 then begin gio:=gio + phut div 60;phut:= phut mod 60;end;
if (gio>=24) then gio:=gio mod 24;
writeln('gio phut giay sau khi cong la ', gio,': ', phut,': ',giay);
readln
end.
Đáp án Bài 3 phần bài tập về nhà
program tuoichacon;
uses crt;
var con,cha:integer; t: byte;
begin
clrscr;
repeat
write('nhap vao tuoi cha '); readln(cha);
until cha>=20;
repeat
writeln('nhap vao tuoi con (nho hon 2 lan tuoi cha va nho hon tuoi cha it nhat 20 tuoi)');
readln(con);
until (2*con <cha) and (con<= cha - 20);
while ( cha + t <> 2*(con + t)) do t:=t+1;
writeln('sau ', t,' nam nua tuoi cha gap 2 lan tuoi con');
readln
end.