版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
程星微花詼照及泰嗓
(備注:試題難度評(píng)價(jià)采取五★級(jí)評(píng)價(jià)體系,分基礎(chǔ)、容易、一般、稍難、難五個(gè)等級(jí),其中的
一、二、三★級(jí)都屬于程序設(shè)計(jì)的基礎(chǔ)試題級(jí)別,同學(xué)們稍加思考均有能力求得正確解答,對(duì)
于四★級(jí)試題屬于程序設(shè)計(jì)試題基礎(chǔ)級(jí)別的思考題,五★級(jí)難度試題在此沒有涉及,在程序設(shè)
計(jì)高級(jí)試題中另行講解.對(duì)于基礎(chǔ)和容易兩個(gè)級(jí)別的程序設(shè)計(jì)試題,若能夠給出語句分類(如
If條件語句、條件語句嵌套、循環(huán)語句、多重循環(huán)語句等)的將盡量給出。若屬于13大類別的
將盡量標(biāo)注。)
程序設(shè)計(jì)試題幾大分類:
1、素?cái)?shù)類問題(求素?cái)?shù)的幾種算法):
2、數(shù)據(jù)排序問題(數(shù)據(jù)排序的幾種方法):
3、最大公約數(shù)和最小公倍數(shù)問題(兒種算法):
4、公式求解類問題(如求圓周率”、自然常數(shù)e、解方程等等):
5、編號(hào)相反處理問題:
6、約瑟夫問題(或猴子選大王問題、密碼問題):
7,回文數(shù)問題:
8、高精度數(shù)值計(jì)算問題:
9、數(shù)值計(jì)算問題:
10、進(jìn)制相互轉(zhuǎn)換問題:
11、字符串倒置問題:
12、排列與組合類問題:
13、因子、質(zhì)因子(質(zhì)因數(shù))類相關(guān)問題:
答案部分:
(程序設(shè)計(jì)的源程序沒有統(tǒng)一的標(biāo)準(zhǔn)答案,實(shí)現(xiàn)程序的算法也是多種多樣,但結(jié)果是唯一的,算
法也有優(yōu)劣之分,一個(gè)程序的優(yōu)劣,關(guān)鍵在于是否找到了好的算法,以下程序和算法不一定就
是最佳算法和最佳程序,只能僅供參考,希望同學(xué)們能夠?qū)δ承┏绦蛱岢龈玫乃惴▉砀倪M(jìn)程
序)
(經(jīng)常碰到的判斷是否為素?cái)?shù)、是否為回文數(shù)、求兩個(gè)數(shù)的最大公約數(shù)、求兩個(gè)數(shù)的最小公倍數(shù)
等問題的子函數(shù)源程序,請(qǐng)務(wù)必記??!)
①判斷是否為素?cái)?shù),若是素?cái)?shù)則返回true,若不是素?cái)?shù)則返回false:
functionprime(x:longint):boolean;
var
j,y:longint;
begin
prime:=true;
ifx<2thenprime:=false;
y:=trunc(sqrt(x));
forj:=2toydo
if(xmodj=0)then
beginprime:=false;exit;end;
end;
備注:1?100之間所有的素?cái)?shù):2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、
53、59、61、67、71、73、79、83、89、97?(共25個(gè))
②判斷是否為回文數(shù),若是回文數(shù)則返回true,若不是回文數(shù)則返回false:
functionhuiwen(n:longint):boolean;
m,i,j:longint;
a:array[l..10]ofinteger;
begin
ifn<0thenbeginhuiwen:=false;exit;end;
m:=n;i:=0;huiwen:二true;
repeat
i:=i+l;
a[il:=mmod10;
m:=mdiv10;
untilm=0;
forj:=lto(idiv2)do
ifa[j]<>a[i-j+l]then
beginhuiwen:=false;exit;end;
end;
③求最大公約數(shù)子函數(shù),返回兩個(gè)正整數(shù)的最大公約數(shù),采用輾轉(zhuǎn)相除法算法;
functiongcd(a,b:longint):longint;
begin
ifb=0thengcd:=a
elsegcd:=gcd(b,amodb);
end;
④求最小公倍數(shù):lcm=a*bdivgcd(a,b);
(以下程序設(shè)計(jì)試題來自《奧賽經(jīng)典(語言篇)》)
第2章基本語句與程序結(jié)構(gòu)
例題部分:
1、求梯形的面積。(梯形面積公式:S=1/2(4+6))
2
(★,測(cè)試數(shù)據(jù)①
2、求一元二次方程ax?+bx+C=0的兩個(gè)實(shí)根。(求根公式:一""二)
2a
(★,測(cè)試數(shù)據(jù)a=1,b=-5,c=6;答案:x1=2、x2=3)
3、輸入一個(gè)三位的自然數(shù),然后把這個(gè)數(shù)的百位與個(gè)位對(duì)調(diào),輸出對(duì)調(diào)后的結(jié)果。
(★)
4、輸入三個(gè)數(shù)a、b、c,首先判斷這三個(gè)數(shù)能否構(gòu)成三角形,若能,則求出三角形的面積。
(提示:海倫公式5=—a)3——,其中.=a、b、c為邊長)
(★,If條件語句,測(cè)試數(shù)據(jù)a=5,b=6,c=7;答案:14.7)
5、從鍵盤讀入三個(gè)數(shù),按從大到小的順序把它們打印出來。(★,If條件語句)
6、輸入三角形的三邊,判斷它是否是直角三角形。
(★,If條件語句,測(cè)試數(shù)據(jù)①3、4.5;②4、5、6;答案①Yes;②No)
7、編寫一個(gè)根據(jù)用戶鍵入的兩個(gè)操作數(shù)和一個(gè)運(yùn)算符,由計(jì)算機(jī)輸出運(yùn)算結(jié)果的程序。(★
8、輸入一個(gè)年號(hào),判斷它是否為閏年。
(★,If條件語句,測(cè)試數(shù)據(jù)①1900;②2000;③2008;答案:①No;②Yes;③Yes)
9、編程計(jì)算S=l+2+3+…+100。(★,循環(huán)語句,答案:5050)
相關(guān)練習(xí):(1)S=l+-+-+---+—;(2)S=l2+22+---+1002;
23100
(3)S=2+4+6+…+100;(4)S=l+4+7+10+…+100;
(相關(guān)練習(xí)答案:(1)5.19(保留2為小數(shù));(2)338350;(3)2550;(4)1717)
萬2111
10、根據(jù)公式菅=1+++/+…+計(jì)算圓周率的“值。
(★★,循環(huán)語句,測(cè)試數(shù)據(jù)n=10000;答案:3.1414971639)
programe;
i:longint;
s:real;
begin
writein;s:=0;
fori:=lto10000dos:=s+l/(i*i);
writeln(sqrt(6*s));
end.
11、計(jì)算n!。(n!=lX2X3X…Xn,取n=10)
(★★,循環(huán)語句,10!=3628800)
12、已知一對(duì)兔子,每個(gè)月可以生??對(duì)小兔,而小兔過一個(gè)月后也可生--對(duì)小兔。即兔子
的對(duì)數(shù)是:第一個(gè)月1對(duì),第二個(gè)月2對(duì),第三個(gè)月3對(duì),第四個(gè)月5對(duì):……,假設(shè)
兔子的生育期是12個(gè)月,并且不死,問一年后,這對(duì)兔子有多少對(duì)活著的后代?(Fibonacci
數(shù)列問題)
(★★,循環(huán)語句,1、2、3、5、8、13、21、34、55、89、144、233;答案233)
13、求兩個(gè)整數(shù)a與b的最大公約數(shù)和最小公倍數(shù)。
(★,循環(huán)語句、If條件語句,測(cè)試數(shù)據(jù)16和24,最大公約數(shù)8,最小公倍數(shù)48)
14、利用格利高公式求-=1-1+1—!-+...,直到最后一項(xiàng)的值小于KT'為止。
4357
(★★★,循環(huán)語句)(答案:3.1415946569E+00)
programe2_32;
var
n,fh:longint;
s,t,p:real;
begin
writein;n:=l;s:=0;t:=l;fh:=l;
while(abs(t)>=le-6)do
begint:=fh/n;s:=s+t;n:=n+2;fh:=-fh;end;
p:=4*s;
writelnCpi=1p);
end.
相關(guān)練習(xí):利用公式一=----1---------1---------1?…,求兀。
81x35x79x11
(計(jì)算前10000項(xiàng)時(shí),答案為3.1415426536)
programe;
var
i,a,b:longint;
x,s:real;
begin
writein;s:=0;
fori:=lto10000dobegina:=(4*i-3);b:=(4*i-l);s:=s+l/(a*b);end;
writeln(8*s);
end.
15、求100?999中的水仙花數(shù)。(若三位數(shù)ABC,ABC=A3+B*C3,則稱ABC為水仙花數(shù)。
例如153,1+53+33=153,則153是水仙花數(shù)。)(★★,
循環(huán)語句)
(答案:153、370、371、407)
programel2;
var
i,a,b,c:integer;
begin
writein;
fori:=100to999do
begin
a:=idiv100;
b:=(imod100)div10;
c:=imod10;
ifi=a*a*a+b*b*b+c*c*cthenwrite(i:8);
end;
end.
16、試編寫能夠打印輸出如下圖形的程序。(★★,循環(huán)
語句)
AAAAAAAAA
AAAAAAA
AAAAA
AAA
A
programe;
constn=5;
var
i,jinteger;
begin
writein;
fori:=ltondo
begin
write(":i);
forj:=lto(n-i)*2+ldowrite('A');
writein;
end;
end.
17、四個(gè)學(xué)生上地理課,回答我國四大淡水湖大小時(shí)這樣說:(★
甲:“最大洞庭湖,最小洪澤湖,鄱陽湖第三?!?/p>
乙:“最大洪澤湖,最小洞庭湖,鄱陽湖第二,太湖第三。”
丙:“最小洪澤湖,洞庭湖第三?!?/p>
T:“最大鄱陽湖,最小太湖,洪澤湖第二,洞庭湖第三
對(duì)于每個(gè)湖的大小,每個(gè)學(xué)生僅答對(duì)一個(gè),請(qǐng)編程確定四個(gè)湖的大小。
習(xí)題部分:
1、已知三角形的兩邊a、b和夾角jc的值,求第三邊(已知條件由鍵盤輸入)。
(★)
(提示:余角公式c?=a2+/?2-2abcosc)
(測(cè)試數(shù)據(jù):輸入a=3、b=4、jc=90;輸出5)
programe2_5;
var
a,b,c,jc:real;
begin
writeln('inputa,b,jc:*);readln(a,b,jc);
c:=sqrt(a*a+b*b-2*a*b*cos(pi*jc/180));
writeln(c:8:2);
end.
2、編寫程序把?個(gè)四位整數(shù)3581顛倒成1853。
(★)
programe;
constn=3581;
var
a,b,c,d:integer;
begin
writein;
a:=nmod10;
b:=(ndiv10)mod10;
c:=(ndiv100)mod10;
d:=ndiv1000;
writeln(a,b,c,d);
end.
相關(guān)練習(xí):任意輸入一個(gè)正整數(shù),顛倒輸出該數(shù)。
programe;
var
n:longint;
begin
writein;writeln('inputaintegernumber:1);readln(n);
repeat
write(nmod10);n:=ndiv10;
untiln=0;
end.
3、輸入a、b、c三個(gè)數(shù),打印出最大者。(★1條件語句)
programe;
var
a,b,c:real;
begin
writeln('inputthreenumberfora,b,c:f);
readln(a,b,c);
if(a>b)and(a>c)thenwriteln(a);
elseif(b>a)and(b>c)thenwriteln(b);
elsewriteln(c);
end.
4、從鍵盤讀入兩個(gè)數(shù),比較其大小,把大數(shù)置于x,小數(shù)置于y。請(qǐng)?jiān)O(shè)計(jì)實(shí)現(xiàn)該功能的程序。
(★,If條件語句)(程序略)
5、輸入三個(gè)數(shù),判斷以這三個(gè)數(shù)為邊能否組成一個(gè)三角形。若不能,則給出適當(dāng)信息;若能,
則進(jìn)一步判斷它們構(gòu)的是銳角三角形、直角三角形還是鈍角三角形,并輸出其特征(等邊、
等腰、直角、一般)、求其面積。(★★,If條
件語句)
(算法分析:對(duì)于判斷是銳角、直角、還是鈍角三角形,只需判斷最大邊的平方與其余兩
邊的平方和的大小比較即可,小于則為銳角、等于則為直角、大于則為鈍角。)
(測(cè)試數(shù)據(jù):①1、2、3;②3、4、5;③)4、4、7;④5、5、5;答案:①No;②直角、
面積6?00;③鈍角、等腰、面積6?78;④銳角、等邊、面積10.83)
programe;
var
a,b,c,t,s,d,ja,jb,jc:real;
begin
writeln('inputthreenumberfora,b,c:*);
readln(a,b,c);
ifa<bthenbegint:=a;a:=b;b:=t;end;
ifa<cthenbegint:=a;a:=c;c:=t;end;
if(a<b+c)then
begin
if(a*avb*b+c*c)thenwriteln(*ruijiaosanjiaoxing.)
elseif(a*a=b*b+c*c)thenwriteln('zhijiaosanjiaoxing.')
elsewriteln('dunjiaosanjiaoxing.1);
if(a=b)and(b=c)and(c=a)thenwriteln('dengbiansanjiaoxing.')
elseif((a=b)and(b<>c))or((a=c)and(c<>b))or((b=c)and(coa))then
writeln('dengyaosanjiaoxing.1)
elseif(a*aob*b+c*c)thenwriteln('yibansanjiaoxing.');
d:=(a+b+c)/2;s:=sqrt(d*(d-a)*(d-b)*(d-c));writeln(,s=,,s:0:2);
end
elsewriteln('NO!');
end.
6、設(shè)我國目前的人口為11億,且每年的增長率為L5%。問多少年后,我國的人口會(huì)翻一番?
(★)(答案:47)
programe2_22;
var
i:integer;
s:real;
begin
writein;s:=l1;i:=0;
whiles<22do
begins:=s*(1.015);inc(i);end;
writeln(i);
end.
7、Fibonacci數(shù)列問題:數(shù)列的頭兩個(gè)數(shù)分別是0和1,從第三個(gè)數(shù)開始,每個(gè)數(shù)皆為它的前
兩個(gè)數(shù)之和,即:0,1,1,2,3,5,…,輸出該數(shù)列的第50個(gè)數(shù)。(★★,循環(huán)
語句)
(答案:7778742049)
programe;
{$N+,E+}
var
i:integer;
x,y,z:extended;
begin
writein;x:=0;y:=l;write(x:20:0,y:20:0);
fori:=3to50do
beginz:=x+y;write(z:20:0);x:=y;y:=z;end;
end.
8、編寫程序求出下式中n的最大值:22+42+62+-+n2<1500o(★★,循環(huán)語
句)
(答案:18)
programe2_24;
var
n,s:integer;
begin
writein;
s:=0;n:=0;
whiles<1500do
begininc(n,2);inc(s,n*n);end;
writeln(n-2);
end.
9、把一元的鈔票換成一分、二分和五分的硬幣(每種至少一枚),問有多少種兌換方法?(★
★)(答案:461)
programe2_29;
var
i,j,k,ans:integer;
begin
ans:=0;
fork:=lto19do
forj:=lto47do
fori:=lto93do
if(k*5+j*2+i)=100theninc(ans);
writeln(ans);
end.
10、編寫程序求最小正整數(shù)m、n(0<n<m)為何值時(shí),1989"'與1989"的最后三位數(shù)字相
同?
(★★★★)
(算法:這類數(shù)字很大且有效數(shù)字位數(shù)很多(超出最多有效位數(shù)extended數(shù)據(jù)類型有效
數(shù)字18位)的數(shù)字問題,一定要另辟蹊徑尋找突破口,注意到此題只要求最后三位數(shù)
字相同,則我最多保留最后四位有效數(shù)字即可進(jìn)行判斷。還請(qǐng)記住這樣一個(gè)事實(shí),如
1989x1989=3956121,3956121x1989=7868724669,最后四位數(shù)字是“4669”,而我
把3956121取其最后的四位數(shù)“6121”與1989相乘即6121x1989=12174669,最后四
位數(shù)字也是“4669”,沒有破壞最后四位有效數(shù)字的值,因此可以通過這種方法來編寫
此程序。)
(答案:m=51;n=l);
programe;
var
m,n,i,j:integer;
x,y,a,b:longint;
begin
writein;
form:=2to60do
forn:=ltom-1do
begin
x:=l;y:=l;
fori:=ltomdobeginx:=xmod10000;x:=x*1989;a:=xmod1000;end;
forj:=ltondobeginy:=ymod10000;y:=y*1989;b:=ymod1000;end;
ifa=bthenwrit61n('m=',m,'n=\n);
end;
end.
11、編寫程序提示用戶輸入一系列整數(shù),用0作結(jié)束標(biāo)志,統(tǒng)計(jì)其中有多少個(gè)正數(shù)。
(★)
programe;
var
count,x:integer;
begin
writein;writeln(,inputintegernumber(O—end):');count:=0;
repeat
read(x);
ifx>0theninc(count);
until(x=0);
writeln('count=',count);
end.
12>求自然常數(shù)e=—I-----1------F…H----的值。(提不:0!=1,11=1)(★
0!1!2!〃!
★)
(1)直到第50項(xiàng);(2)直到最后一項(xiàng)小于10一5。
(答案:(1)2.71828182845905E+0000;(2)2.71828152557319E+0000)
(備注:第2小問程序略,只須將更改語句“until(l/s)vlE?5;”即可求的解答)
programe2_35;
{$N+}
var
i,count:integer;
e,s:extended;
begin
e:=l;count:=0;
repeat
inc(count);s:=l;
fori:=ltocountdos:=s*i;
e:=e+l/s;
untilcount=50;
writeln(e);
end.
13、三齊王點(diǎn)兵的故事。相傳三齊王韓信才智過人,從不直接清點(diǎn)自己軍隊(duì)的人數(shù),只是
讓士兵先后以三人一排、五人一排、七人一排地變換隊(duì)形,而他每次只掠?眼隊(duì)伍的排
尾就知道總?cè)藬?shù)了(不超過100人)。輸入三次排尾的人數(shù),輸出總?cè)藬?shù)。
(★★)
programe2_36;
var
a,b,c,i:integer;
begin
writelnC'shurup3(0~2),p5(0?4),p7(0?6)deweishu:');
readln(a,b,c);
fori:=100downto1do
if(imod3=a)and(imod5=b)and(imod7=c)thenwriteln(i);
ifi=lthenwriteln(,Noanswer!1);
end.
14、編寫程序,計(jì)算N!以十進(jìn)制數(shù)形式表示的數(shù)中最右的非零數(shù)字,并找出在它右邊有
兒個(gè)零。例如12!=1X2X3X-X12=479001600,因此12!的右邊有2個(gè)零。
(★★★)
(提示:碰到5、5\5\5,…才會(huì)出現(xiàn)末尾是零,所以1000!末尾零的個(gè)數(shù)為:
(1000div5)+(1000div52)+(1000div53)+(1000div54)=249)
(下面的程序沒采用上面的算法,采取另一種算法實(shí)現(xiàn)了這一程序,顯然上面的算法效
率高)
(程序算法:只需提供末尾幾位有效數(shù)字即可,我采取提供四位有效數(shù)字相乘)
program1_11;
var
s:longint;
i,d:integer;
begin
writein;
d:=0;s:=l;
fori:=lto1000do
begin
s:=s*i;
if(smod1000=0)thenbegins:=sdiv1000;d:=d+3;end;
if(smod100=0)thenbegins:=sdiv100;d:=d+2;end;
if(smod10=0)thenbegins:=sdiv10;d:=d+l;end;
s:=smod10000;
end;
writein;write(d);
end.
15、編寫程序,輸出“字母塔二以此類推共26層。A
(★★)
ABA
ABCBA
programe2_40;
var
i,j:integer;
begin
writein;
fori:=lto26do
begin
forj:=lto26-idowrite。);
forj:=ltoidowrite(chr(64+j));
forj:=i-ldownto1dowrite(chr(64+j));
writein;
end;
end.
第4章數(shù)組類型
例題部分:
1、輸入10個(gè)整數(shù),把這10個(gè)數(shù)按從小到大的順序排列。(★
★)
(冒泡法排序和選擇法排序兩種方法)
冒泡法排序:
programe1;
constn=10;
var
a:array[1..10]ofinteger;
i,j,t:integer;
begin
writeln('input\n,'integernumber:*);
fori:=ltondoread(a[i]);
fori:=lton-1do
forj:=lton-ido
ifa[j]>a[j4-l]thenbegint:=a[j];a[j]:=a[j4-l];a[j+l]:=t;end;
fori:=ltondowrite(a[i]:5);
end.
2、折半查找。(二分法查找)(★★)
3、旅館里有一百個(gè)房間,從1到100編了號(hào)。第一個(gè)服務(wù)員把所有的房間門都打開了,第二
個(gè)服務(wù)員把所有編號(hào)是2的倍數(shù)的房間“相反處理”,第三個(gè)服務(wù)員把所有編號(hào)是3的倍
數(shù)的房間作“相反處理”,……,以后每個(gè)服務(wù)員都是如此。問第10()個(gè)服務(wù)員來過后,
哪幾扇門是打開的。(所謂“相反處理”是:原來開著的門關(guān)上,原來關(guān)上的門打開。)
(★★)
(提示:對(duì)于任何一個(gè)編號(hào),例如8,它的因子只有1、2、4、8,并且成對(duì)出現(xiàn),當(dāng)此數(shù)
的因子數(shù)為偶數(shù)個(gè)時(shí)將被關(guān)上,當(dāng)此數(shù)的因子數(shù)為奇數(shù)個(gè)時(shí)才會(huì)被打開??紤]到因子成對(duì)
出現(xiàn)的情況,因此只有平方數(shù)的因子是奇數(shù)個(gè)的,所以門被打開的只能是平方數(shù)的房間,
如1,4等)
4、編寫程序把任意十進(jìn)制整數(shù)轉(zhuǎn)換成二進(jìn)制整數(shù)。(★★)
5、所謂“幻方”,是一個(gè)行、列為奇數(shù)的方陣,把1?1?這I?個(gè)不同的數(shù)放入方陣中,使方陣
的每行、每列和每個(gè)對(duì)角線上的元素的和全部相等。卜.面給出幻方的種排列方法:
(1)先把1放在第一行的中間位置;
(2)下一個(gè)數(shù)放在上一個(gè)數(shù)的右上方;
(3)若右上方已超出方陣的第一行,則下一個(gè)數(shù)放在下一列的最后一行上;
(4)若右上方已超出方陣的最后一列,則下一個(gè)數(shù)放在上一行的第一列上;
(5)若右上方已經(jīng)有數(shù),或右上方已超出方陣的第一行最后一列,則下一個(gè)數(shù)放在上
一個(gè)數(shù)的正下方。
編寫程序,對(duì)輸入小于15的n,打印出相應(yīng)的幻方。(★★
★)
6、在一個(gè)字符數(shù)組LET中形成由A開始的連續(xù)26個(gè)大寫字母構(gòu)成的字串,并將其倒置后仍
放在LET中。
7、隨機(jī)輸入一個(gè)長度不超過255的字符串,將其倒置后輸出。
8、隨機(jī)輸入一些國家的英文名字,以end作為輸入結(jié)束標(biāo)志,按字母順序排序后輸出。
9、求n個(gè)字符串的最長公共子串,n<20,字符長度不超過255。
例如n=3,由鍵盤依次輸入三個(gè)字符串為:
whatislocalbus?
Namesomelocalbus.
LocalbusishighspeedI/Obusclosetotheprocessor.
則最長公共子串為"localbus”。
10、文本的整版。編寫一個(gè)程序,從鍵盤以任意的方法輸入句子,然后打印出來。打印時(shí)
每行寬度必須為n個(gè)字符。如果一行的最后一個(gè)單詞超出了本行n個(gè)字符的范圍,則應(yīng)
把它移到下一行去。輸入一個(gè)句子測(cè)試你的程序。
習(xí)題部分:
1、輸入n個(gè)整數(shù),請(qǐng)找出最小數(shù)所在的位置,并把它與第一個(gè)數(shù)對(duì)調(diào)。
(★)
programe4_2;
var
a:array[1..10]ofinteger;
i,t,y:integer;
begin
writelnC'inputtenintegernumber:*);
fori:=lto10doread(a[i]);
t:=a[l];
fori:=2to10doifa[il<tthent:=a[il;
fori:=lto10do
ifa[i]=tthenbeginwriteln('theminnumberisa[i]:=a[l];a[l]:=t;end;
fori:=lto10dowrite(a[i]:8);
end.
2、用邊排序邊合并的方法把兩個(gè)有序數(shù)列合并為一個(gè)新的有序數(shù)列,不得先合并再重新排
序。
(★★)
(測(cè)試數(shù)據(jù):這里a組數(shù)據(jù)共8個(gè):113667910;b組數(shù)據(jù)共5個(gè):01234)
programe4_3;
var
a:array[1..8]ofinteger;
b:array[1..5]ofinteger;
c:array[1..13]ofinteger;
i,j,k,m,n:integer;
begin
writelnC'input8integernumberofsquarearrayA:');
fori:=lto8doread(a[i]);
writeln('input5integernumberofsquarearrayB:*);
fori:=lto5doread(b[i]);
j:=l;k:=l;m:=a[j];n:=b[k];
fori:=lto13do
begin
ifm<nthen
begin
c[i]:=m;inc(j);m:=a[j];
ifj=9thenm:=maxint;
end
else
begin
c[i]:=n;inc(k);n:=b[k];
ifk=6thenn:=maxint;
end;
end;
fori:=lto13dowrite(c[i]:4);
end.
3、將一個(gè)數(shù)插入到有序的數(shù)列中,插入后數(shù)列仍然有序。(★
★)
(測(cè)試數(shù)據(jù):有序數(shù)組為113667910;待插入數(shù)為5)
programe4_4;
var
i,j,n:integer;
flag:boolean;
a:array[1..9]ofinteger;
begin
writeln('input8integersquarenumber:');
fori:=lto8doread(a[i]);
writeln('inputaintegernumbertoinsert:');
readln(n);
flag:=false;i:=l;
repeat
ifa[i]>nthenflag:=trueelseinc(i);
untilflag=true;
forj:=9downtoi+1doa[j]:=afj-l];
afil:=n;
fori:=lto9dowrite(a[i]:4);
end.
4、有N個(gè)無序的數(shù)存放在A數(shù)組中,請(qǐng)將后面相同的數(shù)刪成只剩下一個(gè),并輸出經(jīng)過刪除
后的數(shù)列。(★
★)
(測(cè)試數(shù)據(jù):數(shù)列為13537531;答案:1357)
programe4_5;
var
a:array[1..8]ofinteger;
i,j,n:integer;
begin
writeln('input8integernumber:');
fori:=lto8doread(a[i]);
fori:=2to8do
forj:=ltoi-1doifa[i]=a[jjthena[i]:=maxint;
fori:=lto8do
ifa[i]omaxintthenwrite(a[i]:4);
end.
5、有N個(gè)人排隊(duì)到R個(gè)相同的水龍頭去打水,他們裝滿各自水桶的時(shí)間Tl、T2、…、TN
為整數(shù)且互不相等,應(yīng)如何安排他們打水的順序才能使他們花費(fèi)的總時(shí)間最少?(花費(fèi)的
總時(shí)間等于每個(gè)花費(fèi)時(shí)間的總和)
6、求一個(gè)五階方陣中某個(gè)元素的位置:它在行上是最小的,在列上也是最小的,如果沒有請(qǐng)
輸出“NOFIND!”。(★★
★)
(分析:整個(gè)矩陣中的最小值,當(dāng)然也是所在行和所在列的最小值,因此肯定能找到這
樣的數(shù))測(cè)試數(shù)據(jù):答案:2、1、3、6
II4278
5923125
322211815
171624126
1310192014
programe;
var
i,j,x,y:integer;
minx:integer;
a:array[1..5,1..5]ofinteger;
begin
writein;writeln('inputnumber(5*5):');
fori:=lto5do
forj:=lto5do
read(a[i,j]);
fori:=lto5do
begin
minx:=a[i,l];x:=i;y:=l;
forj:=lto5do
ifa[ij]<minxthenbeginminx:=a[ij];y:=j;end;
forj:=lto5do
ifa[j,y]<minxthenbreak;
ifj=5thenwritelnC'thenumberis
end;
end.
第5章過程與函數(shù)
例題部分:
1、編程求:1!+3!+5!+7!+9!+11!。
2、求數(shù)字的乘積根。一個(gè)正整數(shù)的數(shù)字的乘積N的定義是:這個(gè)整數(shù)中非零數(shù)字的乘積。例
如,整數(shù)999的數(shù)字乘積為9X9X9,即729。729的數(shù)字乘積為7X2X9,即126。126
的數(shù)字乘積為1X2X6,即12。12的數(shù)字乘積為1X2,即2。一個(gè)正整數(shù)的數(shù)字乘積根N
是這樣得到的:反復(fù)取該整數(shù)的數(shù)字乘積,直到得到一位數(shù)字為止。例如,在上面的例子
中數(shù)字的乘積根是2。編寫一個(gè)程序,輸入一個(gè)正整數(shù)(長度不超過200位數(shù)字),輸出
計(jì)算其數(shù)字乘積根的每一步結(jié)果。
3、漢諾(Hanoi)塔問題。設(shè)有n個(gè)大小不等的中空?qǐng)A盤,按照從小到大(尺寸和序號(hào))的
順序疊套在立柱A上。另有兩根立柱B和C,如圖所示。問題要求把全部圓盤從A柱(源
柱)移到C柱(目標(biāo)柱)。移動(dòng)過程中可借助B柱(中間柱)。移動(dòng)時(shí)有如下要求:
(1)一次只能移動(dòng)一個(gè)圓盤;
(2)不允許把大盤放在小盤上邊;
(3)可使用任意一根立柱暫存圓盤。
nAnsnc
1
4、把一個(gè)十進(jìn)制整數(shù)轉(zhuǎn)化為K進(jìn)制數(shù)(KW10)。
5、八皇后問題:把八個(gè)皇后擺在8X8國際象棋棋盤格子內(nèi),使它們互不捕獲對(duì)方\換言之,
在任何一行、一列或一條對(duì)角線上,僅能放置一個(gè)皇后。這一問題是由19世紀(jì)著名數(shù)學(xué)
家高斯(Gauss)于1850年首先提出的。(答案共有92種解答)
6、已知:切比雪夫多項(xiàng)式如下:(提示:運(yùn)用遞歸函數(shù)計(jì)算)
1(〃=0)
T?(x)=<x(〃=1)
2xTn_y(x)-Tn_2{x)(n>2)
對(duì)給定的不同的正整數(shù),它是一些階數(shù)不同的多項(xiàng)式,編程計(jì)算第n個(gè)多項(xiàng)式的值。
習(xí)題部分:
1、編寫一遞歸函數(shù)說明,用以計(jì)算組合數(shù)C(M,N)。(即C?)
2、兩個(gè)人玩井字游戲,在井字進(jìn)分的九個(gè)空位上輪流畫O或*,誰最先使自己的三個(gè)0或三
個(gè)*在一條直線上,誰就贏了。編寫程序檢查每一步是否走得正確,并告訴誰是勝利者。
第6章集合與記錄類型
例題部分:
1、七段數(shù)碼管問題。
2、任意給出一個(gè)正整數(shù)N,找一個(gè)正整數(shù)M,使得N*M的值的數(shù)字由0、1、…、C(CW9)
組成,且這些數(shù)字至少出現(xiàn)?次。編寫程序在整數(shù)范圍內(nèi)找出滿足條件的最小M。若沒有
給出信息,則輸出“Nofind!”。
例如:C=3、N=65時(shí),M=48,65X48=3210;
C=8、N=125時(shí),“Nofind!”。
(以下程序設(shè)計(jì)試題來自《計(jì)算機(jī)二級(jí)考試復(fù)習(xí)指南》)
1,數(shù)列e⑵稱為e數(shù)列,(★
e(n)=(n-l)e(n-1)+(〃-2)e(n-2)(n>2)
★)
每一個(gè)e(n)(n=l,2,…)稱為e數(shù)。求[1,30000]之內(nèi):
(1)最大的e數(shù);(2)e數(shù)的數(shù)目。
(該數(shù)列前面幾項(xiàng)為1、1、3、11、53、……;答案:①16687;②8)
programe;
var
a,b,c,n:longint;
begin
writein;n:=3;a:=l;b:=l;
repeat
c:=(n-2)*a+(n-l)*b;a:=b;b:=c;inc(n);
untilc>30000;
writeln(,maxe=,,a/count=,n-2);
end.
10001
2.計(jì)算并輸出:S=£-----------之值(精確到小數(shù)點(diǎn)后第5位)。(★)
,=iix(i+1)
(答案:0.99900)
programe;
var
i:integer;
s,n:real;
begin
writein;s:=0;
fori:=lto1000dobeginn:=i;s:=s+l/(n*(n+l));end;
writeln(s:0:5);
end.
??谧蟆故?°)=尸⑴=n2)=1+
3.已知《,求:(★★)
F(N)=F(N-1)-2F(N-2)+F(N-3)(N〉2)
(1)F(50);(2)F(0)+F(1)+......+F(50)。
(答案:①212101;②一97262)
programe;
var
i,a,b,c,d,s:longint;
begin
writein;a:=l;b:=l;c:=l;s:=3;
fori:=3to50do
begind:=a-2*b+c;s:=s+d;a:=b;b:=c;c:=d;write(d:8);end;
writein;writeln('s=',s);
end.
4.求滿足:A?B=716699并且A+B最小兩個(gè)條件的A和B。(★★★)
(答案:A=563;B=1273)
programe;
var
a,x,s,mina,minb:longint;
begin
writein;s:=716699;x:=trunc(sqrt(716699));
fora:=ltoxdo
if(716699moda=0)and(a+(716699diva)<s)then
begins:=a+(716699diva);mina:=a;minb:=(716699diva);end;
writeln(,A=,,mina?,B=\minb);
end.
5.一自然數(shù)平方的末幾位與該數(shù)相同時(shí),稱此數(shù)為自同構(gòu)數(shù)。伊回n,由于52=25,則稱5為自
同構(gòu)數(shù)。求出[1,7001以內(nèi)的:(1)最大的自同構(gòu)數(shù);(2)自同構(gòu)數(shù)數(shù)目。(★
★)
(答案:①625②)7)
programe;
var
i,count:longint;
begin
writein;count:=0;
fori:=lto9do
if(i*i-i)mod10=0theninc(count);
fori:=10to99do
if(i*i-i)mod100=0theninc(count);
fori:=100to700do
if(i*i-i)mod1000=0thenbegininc(count);write(i:8);end;
writein;writeln(,count=',count);
end.
6.若某不含數(shù)字0的三位正整數(shù),其平方數(shù)至少有三位同樣的數(shù)字,則稱該三位數(shù)為三重?cái)?shù)。
例如,由于:51儼=261121(有三位1),所以511為三重?cái)?shù)。求出:(★★★
★)
(1)按升序排列第10個(gè)三重?cái)?shù);(2)按升序排列前10個(gè)三重?cái)?shù)之和;
(答案:(1)258;(2)1826)
programe1;
var
i,j,k,a,b,c,x,n,count,s:longint;
aa:array[1..5]ofinteger;
begin
writein;
s:=0;count:=0;
fori:=lllto316do
begin
a:=idiv100;b:=(idiv10)mod10;c:=imod10;
if((a<>0)and(b<>0)and(c<>0))then
begin
x:=i*i;
aa[l]:=xdiv10000;
aa[2]:=(xdiv1000)mod10;
aa[3]:=(xdiv100)mod10;
aa[4]:=(xdiv10)mod10;
aa[5]:=xmod10;
forj:=lto3do
begin
n:=l;
fork:=j+lto5do
ifaa[j]=aa[k]thenn:=n+l;
ifn>2thenbeginwriteln(i:8,x:8);s:=s+i;count:=count+l;break;end;
end;
end;
ifcount=10thenbreak;
end;
writeln(s:8);
end.
7.滿足下列兩個(gè)條件:(a)千位數(shù)字與百位數(shù)字相同(非0),十位數(shù)字與個(gè)位數(shù)字相同;(b)
是某兩位數(shù)的平方。的四位正整數(shù)稱為四位平方數(shù)。例如,由于:7744=882,則稱7744為四
位平方數(shù)。求出:(1)所有四位平方數(shù)的數(shù)目;(2)所有四位平方數(shù)之和。
(★★)
(分析:最小四位數(shù)1000是3L6的平方,最大的四位數(shù)9999是99.9的平方)
(答案:①1;②7744)
programe;
var
i,x,count,s:longint;
begin
writein;count:=0;s:=0;
fori:=32to99do
begin
x:=i*i;
if((xdiv1000)=((xdiv100)mod10))and(((xdiv10)mod10)=(xmod10))then
begininc(count);s:=s+x;end;
end;
writeln(,count=,,count,'s=\s);
end.
8.其平方等于某兩個(gè)正整數(shù)平方之和的正整數(shù)稱為弦數(shù)。例如,由于32+42=52,因此5為弦數(shù)。
求[121,130]之間:(1)弦數(shù)數(shù)目;(2)最小的弦數(shù);(3)最大的弦數(shù)。(★★
★)
(分析:設(shè)a?+b2=c2,且a〈b,這樣可以控制出現(xiàn)重復(fù)弦數(shù))
(答案:①4;②122;③130)
programe;
var
i,j,k,x,count:longint;
begin
writein;count:=0;
fori:=121to130do
begin
x:=trunc(sqrt(i*i/2));
forj:=ltoxdo
begin
k:=trunc(sqrt(i*i-j*j));
if(i*i=j*j+k*k)then
begininc(count);break;end;
end;
end;
writeln(,count=\count);
end.
9.求滿足以下三個(gè)條件:(a)X2+Y2+Z2=512;(b)X+Y+Z之值最大;(c)X最小。的一組X、
Y、Z的值。(★★★★)
(答案:X=22;Y=31;Z=34)
programe1;
var
x,y,z,n,m,maxs,minx,xx,yy,zz:integer;
begin
writein;
n:=trunc(sqrt(51*51/3));m:=trunc(sqrt((51*51*1)/2));
maxs:=0;minx:=51;
forx:=ndownto1do
fory:=xtomdo
begin
z:=trunc(sqrt(51*51-x*x-y*y));
if(z>y)and(x*x+y*y+z*z=51*51)then
if((x+y+z>maxs)or((x+y+z)=maxs))then
begin
maxs:=x+y+z;xx:=x;yy:=y;zz:=z;
end;
end;
writeln('x=',xx,'y=,,yy,*z=',zz);
end.
10.計(jì)算丫=-------sin(x+o)+。In--------(精度107)(a=0.1>x=1.0)(★)
22o
(答案:0.0295)
programe;
var
y,a,x:real;
begin
writein;a:=0.1;x:=1.0;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州大學(xué)《機(jī)械制圖(二)》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴陽學(xué)院《自動(dòng)控制原理C》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025黑龍江省安全員-B證考試題庫附答案
- 2025年上海建筑安全員考試題庫附答案
- 硅湖職業(yè)技術(shù)學(xué)院《廣播電視深度報(bào)道實(shí)務(wù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025湖南建筑安全員B證考試題庫附答案
- 2025重慶市建筑安全員-B證(項(xiàng)目經(jīng)理)考試題庫
- 廣州幼兒師范高等??茖W(xué)校《建筑、結(jié)構(gòu)識(shí)圖》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州新華學(xué)院《數(shù)字化模具設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025重慶市安全員考試題庫
- 濰柴天然氣發(fā)動(dòng)機(jī)結(jié)構(gòu)及工作原理
- 國家開放大學(xué)《理工英語2》形考任務(wù)1-8參考答案
- 建筑公司證書津貼支付管理辦法
- 招標(biāo)代理機(jī)構(gòu)選取技術(shù)標(biāo)投標(biāo)方案(技術(shù)方案)
- 2024年電大勞動(dòng)與社會(huì)保障法期末考試題庫及答案
- 經(jīng)橈動(dòng)脈全腦血管造影術(shù)圍手術(shù)期護(hù)理
- 人教版九年級(jí)數(shù)學(xué)上冊(cè)21.1《一元二次方程》教學(xué)設(shè)計(jì)
- 從古至今話廉潔-大學(xué)生廉潔素養(yǎng)教育智慧樹知到期末考試答案章節(jié)答案2024年吉林大學(xué)
- 高中英語外刊-小貓釣魚50篇
- 開展醫(yī)院安全應(yīng)急演練工作計(jì)劃三篇
- 宜賓市敘州區(qū)2021-2022學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)試題
評(píng)論
0/150
提交評(píng)論