pascal入门测试12(附答案)

2019-08-03 13:37

小猪上幼儿园的时候,报名参加了折纸兴趣小组。他表现出了极大的热情,折出了n件折纸作品。他的作品只有3种,分别是长方形、正方形和三角形。

小猪很想知道他的n件折纸的周长之和。

a b a b

a a a

b a

a c 相邻边长度分别为a和b的长方形,周长为2a+2b

边长为a的正方形,周长为4a

三边长度分别为a,b,c的三角形,周长为a+b+c

【输入】

输入文件folding.in的第一行只有一个整数n,表示共有n件作品。 接下来n行,每行有若干个以空格分隔的整数,表示一件作品的情况。其中第一个整数k(k=1或2或3),表示小猪制作的这件作品的类型,1表示长方形,2表示正方形,3表示三角形。

如果k为1,后面会跟二个正整数a和b,表示长方形的二条相邻边的长度分别为a和b;

如果k为2,后面会跟一个正整数a,表示正方形的四条边的长度均为a。 如果k为3,后面会跟三个正整数a、b和c,表示三角形三条边的长度分别为a、b和c(输入数据保证a,b,c能构成三角形,不需验证)。

【输出】

输出文件folding.out中仅有一行,该行只有一个整数,表示所有作品的周长之和。

【样例输入】

3 1 2 3 2 4 3 6 7 8

【样例输出】

47

【样例说明】

共有3件作品:

第一件作品:二条相邻边长度分别为2和3的长方形; 第二件作品:边长为4的正方形;

第三件作品:三条边长度分别为6、7、8的三角形。

这3件作品的周长分别为10、16、21,它们的周长之和为47。

【数据规模】

50%的数据,1≤n≤50,所有边长为不超过100正整数。

100%的数据,1≤n≤100000,所有边长为不超过100000的正整数。 var n,a,b,c,k,I,S:LONGint;

begin read(n);for i:=1 to n do begin read(k); case k of

1:begin read(a,b);s:=s+2*(a+b); end; 2:begin read(a);s:=s+4*a; end;

3:begin read(a,b,c); s:=s+a+b+c;end; end; end;

write('s=',s); end.

输入 6 2 50

3 100 130 140 1 80 90 1 300 500 3 500 600 700 2 90 S=4670 输入 10 1 9000 10000 2 50000 2 80000

3 8000 9000 10000 3 20000 30000 40000 1 35000 45000 3 3000 4000 5000 2 500000 1 9000 9500 2 678900 S=5599600

数学家总是喜欢研究有关数字的一些奇怪的性质。例如,他们认为945就是一个

有趣的数字。因为它的所有比其小的因子的和比它本身大,而且945是具有这个性质的最小奇数。输入两个数L和U,中间用空格隔开。1<=L<=U<=10000。输出在L和U个范围里,找到那个拥有最多因子的数P,和它的因子个数D。 输入 1 10 输出 :6 4

VAR

L,U,N,P,D,X,Y : INTEGER; BEGIN

read(l,u); D := 0;

FOR X := L TO U DO BEGIN

N:=0 ;

FOR Y := 1 TO X DO

IF X MOD Y=0 THEN N := N+1; IF N > D THEN BEGIN

P := X;

D:=N ; END;

END;

WRITELN(P,' ',D) ; END.

输入 1 10000 输出 7560 64 输入 200 500 输出 360 24 输入 100 200 输出 180 18 输入 5000 6000输出 5040 60

某种商品编码是一个由13位数字组成的可识别的编码。通过对这些编码数字使用一种计算方法可以检验输入的数字是否正确。

这种称为13位数字的“1-3和”的计算方法是,从第一位开始乘1,每个数字交替乘以1和3,然后算出相加的和。例如,9780921418948的“1-3和” 的计算如下: 9*1+7*3+8*1+0*3+9*1+2*3+1*1+4*3+1*1+8*3+9*1+4*3+8*1=120 要求输入商品编码,计算对应的“1-3和”。 样例输入:9780921418948 样例输出:120 var

c:char;

s,i,n,m:integer; begin s:=0;

for i:=1 to 13 do begin read(c);

if odd(i) then m:=1 else m:=3; s:=s+m*(ord(c)-48); end;

writeln(s); end.

输入 9876543210987 输出 125 输入 1234567890123 输出 95

输入两个真分子的分子与分母(分子、分母的合法性不作检查),对这两个分数进行加法计算。若符合条件,则应将计算的结果化为带分数。 例如:输入2 5 2 3

输出 1+1/15(带分数的表达形式) 输入3 8 1 8 输出4/8(不作约分) 输入1 2 1 2 输出1 var

a,b,c,d,i,s:integer; begin

readln(a,b,c,d); for i:=b to b*d do

if (i mod b=0) and (i mod d=0) then break ; a:=(i div b)*a;

c:= (i div d)*c ; s:=a+c; if s

then writeln(s,'/', i ) else if s=i then writeln(1)

else writeln(1,'+', s-i ,'/',i) end.

输入 7 8 10 13 输出 1+64/103 输入 5 10 10 20 输出 1

小明发现了一个有趣的现象,有些数字(例如:2333)本身是个质数,将末尾数去掉后发现它仍然是质数,依此类推,一直到第一位仍是质数(含1)。现在给定m和n的值(m

说明:五个符合的质数是53、59、71、73、79。 var

n,m,i,a,j,t:longint; f:boolean; begin

read(n,m);

for i:=n to m do begin a:=i;f:=true; repeat

for j:=2 to trunc(sqrt(a)) do if a mod j=0 then f:=false; a:=a div 10;

until (a=0) or (f=false); if f then inc(t); end;

writeln(t); end.

输入5 25 7

输入 50 1500 32

输入 9000 11000 输出 0 输入 29000 29500 输出 1

4. 四个整数,在相邻两数之间任意添上\或\可以构成不同的式子,并得到不同的值,例

如6,-3,10,2可以有以下8个不同的式子:6+(-3)+10+2=15 6+(-3)+10-2=11 6+(-3)-10+2=-5 6-(-3)+10+2=21 6+(-3)-102-2=-9 6-(-3)+10-2=17 6-(-3)-10+2=1 6-(-3)-10-2=-3

若其中某个式子的值能被整数K整除,则称该整数序列能被K整除,否则称该序列不能被K整除.你的任务是编定一个程序能否被K整除.数据读入如下:

第一行为:K 第二行为:四个整数,每个整数的绝对值不超过1000

若该序列能被K整除,则输出能被K整除的式子,否则输出\例:输入: 3 6,-3,10,2 输出: 6+(-3)+10+2=15 6-(-3)+10+2=21 6+(-3)-102-2=-9 6-(-3)-10-2=-3 var k,a,b,c,d,x,y,z,s,t:integer; begin

readln(k);

readln(a,b,c,d);t:=0; for x:=1 to 2 do for y:=1 to 2 do

for z:=1 to 2 do begin s:=a;

if x=1 then s:=s+b else s:=s-b; if y=1 then s:=s+c else s:=s-c; if z=1 then s:=s+d else s:=s-d; if s mod k=0 then begin write(a);

if x=1 then write('+') else write('-'); if b>0 then write(b) else write('(',b,')'); if y=1 then write('+') else write('-'); if c>0 then write(c) else write('(',c,')'); if z=1 then write('+') else write('-'); if d>0 then write(d) else write('(',d,')'); writeln('=',s);t:=t+1; end;

end;

if t=0 then writeln(’Impossible’); readln; end.

输入 5 ↙ 6 10 -3 4输出 6+10-(-3)-4=15

6-10-(-3)-4=-5

输入 7 ↙120 30 -60 55输出 120+30-(-60)-55=35 输入 9 ↙10 2 6 8输出 Impossible 输入 8 ↙50 36 -32 -30

输出 50+36+(-32)+(-30)=24 50+36-(-32)+(-30)=88 50-36+(-32)+(-30)=-48 50-36-(-32)+(-30)=16


pascal入门测试12(附答案).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: