编程练习与参考答案.docx
《编程练习与参考答案.docx》由会员分享,可在线阅读,更多相关《编程练习与参考答案.docx(9页珍藏版)》请在冰豆网上搜索。
编程练习与参考答案
Pascal编程
上机练习及参考答案
莱西市前车小学
2014.12.08
1、求s=1!
+2!
+3!
+…+10!
programex1;
varj,n:
integer;
t,s:
real;
begin
s:
=0;
forn:
=1to10do
begin
t:
=1;
forj:
=1tondo
t:
=t*j;
s:
=s+t;
end;
writeln('s=',s);
readln;
end.
2、求s=1+1/2!
+1/3!
+…+1/10!
programex2;
varj,n:
integer;
t,s:
real;
begin
s:
=0;
forn:
=1to10do
begin
t:
=1;
forj:
=1tondo
t:
=t*j;
s:
=s+1/t;
end;
writeln('s=',s:
0:
4);
readln;
end.
3、求s=11+22+33+..+NN
programex3;
vari,n,t:
integer;
s:
longint;
begin
write(‘n=’);readln(n);
fori:
=1tondo
begin
t:
=1;
forj:
=1toido
t:
=t*i;
s:
=s+t;
end;
writeln(‘s=’,s);
readln;
end.
4.把一张一元钞票换成一分,二分和五分的硬币,每种至少一枚。
问有哪几种换法?
program Ex4;
vara,b,c,q:
integer;
begin
q:
=0;
fora:
=1to100do
forb:
=1to50do
forc:
=1to20do
begin
if(a+b*2+c*5=100)then
begin
write(a:
2,b:
2,c:
2);
q:
=q+1;
end;
end;
writeln(‘q=’,q);
readln;
end.
5.输入一个整数,若是素数,输出“YES”,否则输出“NO”
programEx5;
varx,i,s,n:
integer;
begin
s:
=0;
readln(n);
fori:
=2ton-1do
ifnmodi=0 thens:
=s+1;
ifs>0 thenwriteln('no')elsewriteln('yes');
readln;
end.
6.任给一个自然数n,求出这个自然数不同因数的个数。
如:
n=6时,因为1,2,3,6这四个数均是6的因数,故输出为total=4。
programEx6;
var
n,m,i:
integer;
begin
write('n=');
readln(n);
fori:
=1tondo
ifnmodi=0thenbeginm:
=m+1;write(i:
5);end;
writeln('m=',m);
readln;
end.
7.输入二个正整数,求出它们的最大公约数和最小公倍数。
方法一:
programex7-1;
vara,b,r,c,s:
integer;
begin
write('a,b:
');readln(a,b);
s:
=a*b;r:
=amodb;
repeat
a:
=b;b:
=r;r:
=amodb;
untilr=0;
c:
=sdivb;
write('b=',b);
writeln('c=',c);
readln;
end.
方法二:
programex7-2;
vari,a,b,r:
integer;
begin
write('a=');readln(a);
write('b=');readln(b);
fori:
=1toado
if(amodi=0)then
if(bmodi=0)thenr:
=i;
writeln('yueshu=',r);
writeln('beishu=',a*b/r);
readln;
end.
8.输入一列图形(字母金字塔)
a
a b
a b c
. .a b c…… y z
programex8;
varh,x:
integer;
begin
forh:
=1to26do
begin
write('':
30-h);
forx:
=1tohdo
write(chr(96+x):
2);
writeln;
end;
readln;
end.
9.1-100之间的所有素数(素数是大于1,且除1和它本身外,不能被任何其它整数所整除的整数)。
programex9;
vari,s,a:
integer;
begin
fori:
=2to100do
begin
s:
=0;
fora:
=2toi-1do
if(imoda=0)thens:
=s+1;
ifs=0then
writeln(i:
5);
end;
readln;
end.
10.哥德巴赫猜想(任何充分大的偶数都可由两个素数之和表示)。
将4-100中的所有偶数分别用两个素数之和表示。
输出为:
4=2+2
6=3+3
8=3+5
….
100=3+97
program ex10;
vari,p,q,k,a,x:
integer;
fp,fq:
boolean;
begin
fori:
=2to50do
begin
x:
=2*i;
p:
=1;
repeat
p:
=p+1;
q:
=x-p;fp:
=true;fq:
=true;
fork:
=2top-1do
if(pmodk=0)thenfp:
=false;
fora:
=2toq-1do
if(qmoda=0)thenfq:
=false;
until(fpandfq);
write(x,'=',p,'+',q);
end;
readln;
end.
11.某人想将手中的一张面值100元的人民币换成10元、5元、2元和1元面值的票子。
要求换正好40张,且每种票子至少一张。
问:
有几种换法?
应适当考虑减少重复次数。
programex11;
vara,b,c,d,q:
integer;
begin
fora:
=1to10do
forb:
=1to20do
forc:
=1to50do
ford:
=1to100do
if(10*a+5*b+2*c+d=100)and(a+b+c=40)then
begin
q:
=q+1;
write(a:
3,b:
3,c:
3,d:
3);
end;
writeln('q:
=',q);
readln;
end.
12.百鸡问题:
一只公鸡值5元,一只母鸡值3元,而1元可买3只小鸡。
现有100元钱,想买100只鸡。
问可买公鸡、母鸡、小鸡各几只?
(4.39)
12.百鸡问题:
一只公鸡值5元,一只母鸡值3元,而1元可买3只小鸡。
现有100元钱,想买100只鸡。
问可买公鸡、母鸡、小鸡各几只?
13.programex12;
vara,b,c,q:
integer;
begin
fora:
=1to20do
forb:
=1to33do
forc:
=1to300do
if(5*a+3*b+cdiv3=100)and(a+b+c=100)and(cmod3=0)then
begin
q:
=q+1;
write(a:
3,b:
3,c:
3);
end;
writeln('q:
=',q);
readln;
end.
13、编写一程序,验证角谷猜想。
所谓的角谷猜想是:
“对于任意大于1的自然数n,若n为奇数,则将n变为3*n+1,否则将n变为n的一半。
经过若干次这样的变换,一定会使n变为1。
”
programex13;
varn:
integer;
begin
write('n=');readln(n);
repeat
ifnmod2=1thenn:
=3*n+1;
ifnmod2=0thenn:
=ndiv2;
untiln=1;
write(n);
readln;
end.
14.有一堆100多个的零件,若三个三个数,剩二个;若五个五个数,剩三个;若七个七个数,剩五个。
请你编一个程序计算出这堆零件至少是多少个?
programex14;
var x:
integer;
ok:
boolean;
begin
x:
=100;
repeat
ok:
=true;inc(x);
ifxmod3<>2thenok:
=false;
ifxmod5<>3thenok:
=false;
ifxmod7<>5thenok:
=false;
untilok;
write(x);
readln;
end.