pascal习题集无分类由简到难.docx

上传人:b****7 文档编号:24004431 上传时间:2023-05-23 格式:DOCX 页数:38 大小:23.98KB
下载 相关 举报
pascal习题集无分类由简到难.docx_第1页
第1页 / 共38页
pascal习题集无分类由简到难.docx_第2页
第2页 / 共38页
pascal习题集无分类由简到难.docx_第3页
第3页 / 共38页
pascal习题集无分类由简到难.docx_第4页
第4页 / 共38页
pascal习题集无分类由简到难.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

pascal习题集无分类由简到难.docx

《pascal习题集无分类由简到难.docx》由会员分享,可在线阅读,更多相关《pascal习题集无分类由简到难.docx(38页珍藏版)》请在冰豆网上搜索。

pascal习题集无分类由简到难.docx

pascal习题集无分类由简到难

第一组训练题

1. 输入两个整数,按由大到小的顺序输出。

(1-1)

vara,b:

integer;

begin

readln(a,b);

ifa>=bthenwrite(a,b)elsewrite(b,a)

end.

(1-2)

vara,b:

integer;

begin

readln(a,b);

ifa>bthenwrite(a:

5,b:

5)elsewrite(b:

5,a:

5);

ifa=bthenwrite('a=b');

end.

2. 输入三个整数,按由大到小的顺序输出。

vara,b,c:

integer;

max,min:

integer;

begin

readln(a,b,c);

ifa>bthenbeginmax:

=a;min:

=bend

elsebeginmin:

=a;max:

=bend;

ifc>maxthenbeginmax:

=cend;

ifc

=cend;

writeln(max:

5,a+b+c-max-min:

5,min:

5)

去掉最大的,去掉最小的,就是中间的,很有意思!

end.

3. 求和S=1+2+3+4+……10

varS,x:

integer;

Begin

S:

=0;

forx:

=1to10do

s:

=x+s;

writeln(s);

end.

4. 求乘积 S=1*2*3*4*……10

vars:

real;

x:

integer;

begin

s:

=1;

forx:

=1to10do

s:

=s*x;

writeln(s:

9:

0);

end.v

5. 计算S=1-1/2+1/3-1/4+1/5-1/6+1/7-1/8+1/9-1/10的值

vari:

integer;

s:

real;

Begin

i:

=1;s:

=0;

fori:

=1to10do

if(imod2)>0thens:

=s+1/I  

elses:

=s-1/i;  (此处很好!

writeln(s:

9:

4)

end.

6. 有一分数序列:

2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

vari,t,fz,fm:

integer;

s:

real;

begin

s:

=0;fz:

=2;fm:

=1;

fori:

=1to20do

begin

s:

=s+fz/fm;

t:

=fz+fm;

fm:

=fz;

fz:

=t;

end;

writeln(s:

8:

2);

end.

7. 输入10个数字,求其中最大的那个数字。

vara:

array[1..10]ofinteger;

i,max:

integer;

begin

fori:

=1to10doreadln(a[i]);

max:

=a[1];

fori:

=2to10doifa[i]>maxthenmax:

=a[i];(逐个比)

write('Max=',max);

end.

8. 输入10个数字,求其中次大的那个数字。

vara:

array[1..10]ofinteger;

i,max1,max2:

integer;

begin

fori:

=1to10doreadln(a[i]);

ifa[1]>a[2]thenbeginmax1:

=a[i];max2:

=a[2];end

elsebeginmax1:

=a[2];max2:

=a[1];end;

fori:

=3to10do

ifa[i]>max1thenbeginmax2:

=max1;max1:

=a[i]end;(max1用来比,max2接替max1)

write('Max2=',max2);

end.

9. 求和S=1+2+4+7+11……n(其中n是小于100的最大整数)(?

vars,a,i:

integer;

begin

s:

=0;a:

=1;i:

=1;

whilea<100do

begin

i:

=i+1;s:

=a+s;

s:

=s+a;a:

=a+i;

a:

=a+i-1;i:

=i+1

end;

writeln(s);

end.

10. 求和S=1+2+4+8+16+32+……n(n是小于1000的最大整数)

vars,i:

integer;

begin

s:

=0;i:

=1;

while(i<1000)do

begin

s:

=s+i;

i:

=i*2;

end;

writeln(s)

end.

11. 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

var

a,b,c,i,n:

integer;

s:

real;

begin

readln(n);

a:

=1;b:

=0;s:

=a+b;

fori:

=1ton-2do

begin

c:

=a+b;

s:

=s+c;

a:

=b;

b:

=c;

end;

writeln(s:

9:

4);

end.

 

12. 打印出小九九乘法口诀表。

var

i,j:

integer;

begin

writeln;

fori:

=1to9do

begin

forj:

=1toidowrite(i:

1,'*',j:

1,'=',i*j:

1,'');

writeln;

end;

end.

vari,j:

integer;

begin

fori:

=1to9do

begin

forj:

=1toido

write(i,'*',j,'=',i*j,'');

writeln;

end;

end.

13. 满足A3+B3+C3=ABC的数字称为水仙花数,求所有的100-999之间的水仙花数。

vara,b,c:

integer;

begin

fora:

=1to9do

forb:

=0to9do

forc:

=0to9do

ifa*a*a+b*b*b+c*c*c=100*a++10*b+c

thenwriteln(a,b,c);

end.

14. 判断输入的一个正整数是否是素数。

varn,i:

integer;

b:

boolean;

begin

readln(n);i:

=2;b:

=True;

whileband(i<=SQRT(n))do

if(nmodi)=0thenb:

=false

elsei:

=i+1;

ifb=Truethenwriteln('Yes')

elsewriteln('No');

end.

15. 将一个正整数分解质因数。

例如:

输入90,打印出90=2*3*3*5。

var

n,i:

integer;

begin

readln(n);

i:

=2;

whilenmodi<>0doi:

=i+1;

write(n,'=',i);n:

=ndivi;

whilei<=ndo

begin

whilenmodi=0do

begin

write('*',i);

n:

=ndivi;

end;

i:

=i+1;

end;

end.

16. 输入两个正整数m和n,求其最大公约数和最小公倍数。

var

m,n:

integer;

functionasd(a,b:

integer):

integer;

varx,y,i,j:

integer;

begin

i:

=a;j:

=b;

x:

=amodb;

whilex<>0do

begin

a:

=b;

b:

=x;

x:

=amodb;

end;

x:

=b;

writeln('[',a,',',b,']','=',x);

y:

=j*idivb;

writeln('(',a,',',b,')','=',y);

end;

begin

readln(m,n);

asd(m,n);

end.

17. 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

例如2+22+222+2222+22222(此时共有k=5个数相加),输入a和k,求s。

var

i,a,k:

integer;

s,t:

real;

begin

readln(a,k);

s:

=a;t:

=a;

fori:

=2tokdo

begin

t:

=t*10+a;

s:

=s+t;

end;

write('S=',a,'+..+',t:

0:

0,'=',s:

0:

0);

end.

18. 一个不超过5位的整数,判断它是不是回文数。

即12321是回文数,个位与万位相同,十位与千位相同。

var

s:

string;b:

boolean;i,j:

integer;

begin

read(s);

j:

=length(s);

i:

=1;

b:

=true;

while(i<=j)andbdo

begin

b:

=(s[i]=s[j]);

i:

=i+1;

j:

=j-1;

end;

ifbthenwriteln('yes')

elsewriteln('no');

end.

19. 输入某年某月某日,判断这一天星期几。

const

a:

array[1..12]ofinteger=(31,28,31,30,31,30,31,31,30,31,30,31);

b:

string='SunMonTueWedThiFriSat';

var

year,month,day,i,s:

integer;

begin

readln(year,month,day);

s:

=0;

fori:

=1toyear-1do

begin

s:

=(s+365)mod7;

ifimod4=0thens:

=s+1;

ifimod100=0thens:

=s-1;

ifimod400=0thens:

=s+1;

end;

fori:

=1tomonth-1dos:

=s+a[i];

if(yearmod400=0)or((yearmod4=0)and(yearmod100<>0))then

ifmonth>2thens:

=s+1;

s:

=(s+day)mod7;

fori:

=3*s+1to3*s+3dowrite(b[i]);

end.

20. 输入10个整数,按由大到小的顺序输出。

type

arr=array[1..10]ofinteger;

var

i,j,k:

integer;

a:

arr;

begin

fori:

=1to10doread(a[i]);

readln;

fori:

=1to9do

forj:

=1to10-ido

ifa[j]

begin

k:

=a[j];

a[j]:

=a[j+1];

a[j+1]:

=k;

end;

fori:

=1to10dowrite(a[i]:

2);

end.

21. 已知N!

=1*2*3*……N,求S=1!

+2!

+3!

+4!

+ ……10!

var

i,j:

integer;

s:

real;

functionfac(i:

integer):

real;

var

j:

integer;s:

real;

begin

s:

=1;forj:

=1toidos:

=s*j;fac:

=s;

end;

begin

s:

=0;

fori:

=1to10dos:

=s+fac(i);

writeln(s);

end.

22. 同上,求S=1!

+(1!

+3!

)+(1!

+3!

+5!

)+ ……(1!

+3!

+5!

+ ……13!

var

j,i:

integer;

s:

real;

functionfac(a:

integer):

real;

vark:

integer;

b:

real;

begin

b:

=1;

fork:

=1toadob:

=b*k;

fac:

=b;

end;

begin

fori:

=1to7do

forj:

=1toi*2-1do

ifjmod2=1then

begin

s:

=s+fac(j);

end;

writeln(s:

8:

0);

end.

23. 进制转换,给定一个十进制的数字n,将它转换成 十六进制等值的数字。

24. 有n个人围成一圈,顺序排号。

从第一个人开始报数(从1到5报数),凡报到5的人退出圈子,问最后留下的是原来第几号的那位,输入n,输出最后那个人的编号。

const

n=10;

var

a:

array[1..n]ofboolean;

i,j,k:

integer;

begin

writeln;

fori:

=1tondoa[i]:

=true;

i:

=0;j:

=0;k:

=0;

whilej

begin

i:

=i+1;

ifi>ntheni:

=1;

ifa[i]then

begin

k:

=k+1;

ifk=5then

begin

a[i]:

=false;

write(i:

3);

k:

=0;

j:

=j+1;

end;

end;

end;

end.const

n=10;

var

a:

array[1..n]ofboolean;

i,j,k:

integer;

begin

writeln;

fori:

=1tondoa[i]:

=true;

i:

=0;j:

=0;k:

=0;

whilej

begin

i:

=i+1;

ifi>ntheni:

=1;

ifa[i]then

begin

k:

=k+1;

ifk=5then

begin

a[i]:

=false;

write(i:

3);

k:

=0;

j:

=j+1;

end;

end;

end;

end.

25. 已知无穷小数 X=0.1234567891011…9899100101…,其中的数字是依次写下各自然数而得到的。

试求出小数点后第 n 位数字。

输入:

从键盘输入 n。

(n<=200)输出:

输出小数点后第 n (180以内)位数字。

var

i,j,k,n:

integer;

begin

readln(n);

ifn<10thenwriteln(n)

else

begin

i:

=9+(n-8)div2;

ifnmod2=0thenk:

=idiv10

elsek:

=imod10;

writeln(k);

end;

end.

26. 螺旋方阵和数字三角形。

(26-1)

var

a:

array[1..5,1..5]ofinteger;

i,j,k,u,d,l,r:

integer;

begin

k:

=1;l:

=1;r:

=5;u:

=1;d:

=5;

whilek<=25do

begin

fori:

=utoddobegina[i,l]:

=k;k:

=k+1;end;l:

=l+1;

fori:

=ltordobegina[d,i]:

=k;k:

=k+1;end;d:

=d-1;

fori:

=ddowntoudobegina[i,r]:

=k;k:

=k+1;end;r:

=r-1;

fori:

=rdowntoldobegina[u,i]:

=k;k:

=k+1;end;u:

=u+1;

end;

fori:

=1to5do

begin

forj:

=1to5dowrite(a[i,j]:

3);

writeln;

end;

end.

(26-2)

var

a:

array[1..10,1..10]ofinteger;

i,j,k,u,d,l,r,n:

integer;

begin

readln(n);

k:

=1;l:

=1;r:

=n;u:

=1;d:

=n;

whilek<=n*ndo

begin

fori:

=utoddobegina[i,l]:

=k;k:

=k+1;end;l:

=l+1;

fori:

=ltordobegina[d,i]:

=k;k:

=k+1;end;d:

=d-1;

fori:

=ddowntoudobegina[i,r]:

=k;k:

=k+1;end;r:

=r-1;

fori:

=rdowntoldobegina[u,i]:

=k;k:

=k+1;end;u:

=u+1;

end;

fori:

=1tondo

begin

forj:

=1tondowrite(a[i,j]:

3);

writeln;

end;

end.

27. 打印N行的杨辉三角。

var

a:

array[1..10,1..10]ofinteger;

i,j,n:

integer;

begin

readln(n);

fori:

=1to10do

forj:

=1to10doa[i,j]:

=0;

fori:

=1to10doa[i,1]:

=1;a[i,i]:

=1;

writeln(1:

n);

fori:

=2tondo

begin

write(a[i,1]:

n-i+1);

forj:

=2toido

begin

a[i,j]:

=a[i-1,j-1]+a[i-1,j];

write(a[i,j]:

3);

end;

writeln;

end;

end.

28. 高精度整数加法。

输入两个不超过100位的正整数,求它们的和。

var

s1,s2,s3:

string;k,k1,k2,k3,l1,l2,i:

integer;

begin

readln(s1);readln(s2);

l1:

=length(s1);l1:

=length(s2);

ifl1>l2thenfori:

=1tol1-l2dos2:

=s2+'0';

l1:

=length(s1);l1:

=length(s2);

k:

=0;s3:

='';

fori:

=l1downto1do

begin

k1:

=ord(s1[i])-ord('0');

k2:

=ord(s2[i])-ord('0');

k3:

=k+k1+k2;

ifk3>=10thenbegink:

=1;k3:

=k3-10;end

elsek:

=0;

s3:

=chr(k3+ord('0'))+s3;

end;

ifk=1thens3:

='1'+s3;

writeln(s3);

end.

29. 高精度实数减法。

输入两个不超过100位的正整数,求它们的差。

var

i,k:

integer;

s1,s2,s3:

string;

k1,k2,k3:

integer;

l1,l2:

integer;

begin

readln(s1);readln(s2);

l1:

=length(s1);l2:

=length(s2);

if(l1

begin

s3:

=s1;

s1:

=s2;

s2:

=s3;

write('-');

end;

l1:

=length(s1);l2:

=length(s2);

fori:

=1tol1-l2dos2:

='0'+s2;

k:

=0;s3:

='';

fori:

=l1downto1do

begin

k1:

=ord(s1[i])-ord('0');

k2:

=ord(s2[i])-ord('0');

k3:

=k1-k2-k;

ifk3<0thenbegink3:

=k3+10;k:

=1;end

elsek:

=0;

s3:

=chr(ord('0')+k3)+s3;

end;

while(length(s3)>1)and(s3[1]='0')dodelete(s3,1,1);

writeln(s3);

end.

30. 高精度整数乘法。

输入两个不超过100位的正整数,求它们的乘积。

var

s1,s2:

string;

a,b,c:

array[0..9]ofinteger;

i,j,k:

integer;

begin

readln(s1);k:

=length(s1);

fori:

=0tok-1doa[i]:

=ord(s1[k-i])-ord('0');

readln(s2);k:

=length(s2);

fori:

=0tok-1dob[i]:

=ord(s2[k-i])-ord('0');

fori:

=0to9doc[i]:

=0;

fori:

=0to9do

forj:

=0to9doc[i+j]:

=c[i+j]+a[i]*b[j];

fori:

=0to7do

begin

k:

=c[i];

c[i]:

=c[i]mod10;

c[i+1]:

=c[i+1]+kdiv10;

end;

j:

=9;

while(c[j]=0)and(j>0)doj:

=j-1;

fori:

=jdownto0dowrite(c[i]);

end.

31. 高精度实数加法减法。

输入两个不超过100位的正实数,求它们的和或者差。

var

s1,s2,s3:

string;

l1,l2:

integer;

x1,x2,z1,z2:

integer;

pointpos:

integer;

i,j,k:

integer;

begin

readln(s1);readln(s2);

k:

=pos('.',s1);ifk=0thens1:

=s1+'.';

k:

=pos('.',s2);ifk=0thens2:

=s2+'.';

l1:

=length(s1);k:

=pos('.',s1);z1:

=k-1;x1:

=l1-k;

l2:

=length(s2);k:

=pos('.',s2);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1