




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、信息學奧林匹克競賽輔導一一程序設(shè)計試題答案部分第39頁程序設(shè)計試題及答案(備注:試題難度評價采取五級評價體系,分基礎(chǔ)、容易、一般、稍難、難五個等級,其中的一、 二、三級都屬于程序設(shè)計的基礎(chǔ)試題級別,同學們稍加思考均有能力求得正確解答,對于四級 試題屬于程序設(shè)計試題基礎(chǔ)級別的思考題,五級難度試題在此沒有涉及,在程序設(shè)計高級試題中另行講解。對于基礎(chǔ)和容易兩個級別的程序設(shè)計試題,若能夠給出語句分類(如If條件語句、條件語句嵌套、循環(huán)語句、多重循環(huán)語句等)的將盡量給出。若屬于13大類別的將盡量標注。)程序設(shè)計試題幾大分類:1、素數(shù)類問題(求素數(shù)的幾種算法):2、數(shù)據(jù)排序問題(數(shù)據(jù)排序的幾種方法):3、
2、最大公約數(shù)和最小公倍數(shù)問題(幾種算法):4、公式求解類問題(如求圓周率 兀、自然常數(shù)e、解方程等等):5、編號相反處理問題:6、約瑟夫問題(或猴子選大王問題、密碼問題) :7、回文數(shù)問題:8、高精度數(shù)值計算問題:9、數(shù)值計算問題:10、進制相互轉(zhuǎn)換問題:11、字符串倒置問題:12、排列與組合類問題:13、因子、質(zhì)因子(質(zhì)因數(shù))類相關(guān)問題:答案部分:(程序設(shè)計的源程序沒有統(tǒng)一的標準答案,實現(xiàn)程序的算法也是多種多樣,但結(jié)果是唯一的,算法也 有優(yōu)劣之分,一個程序的優(yōu)劣,關(guān)鍵在于是否找到了好的算法,以下程序和算法不一定就是最佳算 法和最佳程序,只能僅供參考,希望同學們能夠?qū)δ承┏绦蛱岢龈玫乃惴▉砀倪M
3、程序)(經(jīng)常碰到的判斷是否為素數(shù)、是否為回文數(shù)、求兩個數(shù)的最大公約數(shù)、求兩個數(shù)的最小公倍數(shù)等問題的子函數(shù)源程序,請務(wù)必記住!)判斷是否為素數(shù),若是素數(shù)則返回true,若不是素數(shù)則返回false:function prime(x:longint):boolean;varj,y:longint;beginprime:=true;if x<2 then prime:=false;y:=trunc(sqrt(x);for j:=2 to y doif (x mod j = 0) thenbegin prime:=false; exit; end;end;備注:1 100之間所有的素數(shù):2、3、5
4、、7、11、13、17、19、23、29、31、37、41、43、47、53、59、61、67、71、73、79、83、89、97。(共 25 個)判斷是否為回文數(shù),若是回文數(shù)則返回true,若不是回文數(shù)則返回false:function huiwen(n:longint):boolean;varm,i,j:longint;a:array1.10 of integer;beginif n<0 then begin huiwen:=false; exit; end;m:=n; i:=0; huiwen:=true;repeati:=i+1;ai:=m mod 10;m:=m div 10;
5、until m=0;for j:=1 to (i div 2) doif aj<>ai-j+1 thenbegin huiwen:=false; exit; end;end;求最大公約數(shù)子函數(shù),返回兩個正整數(shù)的最大公約數(shù),采用輾轉(zhuǎn)相除法算法;function gcd(a,b:longint):longint;beginif b=0 then gcd:=aelse gcd:=gcd(b,a mod b);end;求最小公倍數(shù):lcm=a*b div gcd(a,b);(以下程序設(shè)計試題來自奧賽經(jīng)典(語言篇)»)第2章基本語句與程序結(jié)構(gòu)例題部分:11、求梯形的面積。(梯形面積
6、公式:S=h(a+b)(,測試數(shù)據(jù)2、求一元二次方程 ax2+bx + C= 0的兩個實根。(求根公式:x12 = )2a(,測試數(shù)據(jù) a= 1, b=5, c= 6;答案:x1=2、x2= 3)3、輸入一個三位的自然數(shù),然后把這個數(shù)的百位與個位對調(diào),輸出對調(diào)后的結(jié)果。()4、輸入三個數(shù)a、b、c,首先判斷這三個數(shù)能否構(gòu)成三角形,若能,則求出三角形的面積。(提示:海倫公式 S = Jd(d -a)(d -b)(d-c),其中 d -a + b+c , a、b、c為邊長)2(, If條件語句,測試數(shù)據(jù) a= 5, b=6, c=7;答案:14.7)5、從鍵盤讀入三個數(shù),按從大到小的順序把它們打印
7、出來。(, If條件語句)6、輸入三角形的三邊,判斷它是否是直角三角形。(, If條件語句,測試數(shù)據(jù)3、4、5;4、5、6;答案Yes;No)7、編寫一個根據(jù)用戶鍵入的兩個操作數(shù)和一個運算符,由計算機輸出運算結(jié)果的程序。()8、輸入一個年號,判斷它是否為閏年。(, If條件語句,測試數(shù)據(jù)1900;2000;2008;答案:No;Yes;Yes) 9、編程計算S= 1 + 2+3+,+ 100。(,循環(huán)語句,答案:5050)1 11相關(guān)練習:(1)S=1+_+_+ | +;(2)S = 12+22+ I+1002 ;2 3100(3)S =2 + 4+6+川+100;(4)S=1+4+7+10+
8、川+100;(相關(guān)練習答案:(1) 5.19 (保留 2 為小數(shù));(2) 338350; (3) 2550; (4) 1717),二211 ml 110、根據(jù)公式 =1 +下+二+|I|+f,計算圓周率的 兀值。623 n(,循環(huán)語句,測試數(shù)據(jù)n= 10000;答案:3.1414971639)program e; vari:longint;s:real;beginwriteln; s:=0;for i:=1 to 10000 do s:=s+1/(i*i);writeln(sqrt(6*s);end.11、計算 n!。(n! = 1 X2X 3X , x n,取 n= 10)(,循環(huán)語句,1
9、0! = 3628800)12、已知一對兔子,每個月可以生一對小兔,而小兔過一個月后也可生一對小兔。即兔子的對數(shù)是:第一個月1對,第二個月2對,第三個月3對,第四個月5對,假設(shè)兔子的生育期是12個月,并且不死,問一年后,這對兔子有多少對活著的后代? ( Fibonacci數(shù)列問題)(,循環(huán)語句,1、2、3、5、8、13、21、34、55、89、144、233;答案 233)13、求兩個整數(shù)a與b的最大公約數(shù)和最小公倍數(shù)。(,循環(huán)語句、If條件語句,測試數(shù)據(jù) 16和24,最大公約數(shù)8,最小公倍數(shù)48)10-6為止。14、利用格利高公式求兀。± =11+11+IH,直到最后一項的值小于4
10、3 5 7(,循環(huán)語句)(答案:3.1415946569E+00 )program e2_32; var n,fh:longint; s,t,p:real; begin writeln; n:=1; s:=0; t:=1; fh:=1; while (abs(t)=1e-6) do begin t:=fh/n; s:=s+t; n:=n+2; fh:=-fh; end; p:=4*s; writeln('pi=',p); end.相關(guān)練習:利用公式三 1 . 18 一1 3 5 79 11+HI,求兀。(計算前10000項時,答案為 3.1415426536 )program
11、e;vari,a,b:longint;x,s:real;beginwriteln; s:=0;for i:=1 to 10000 do begin a:=(4*i-3);b:=(4*i-1);s:=s+1/(a*b); end;writeln(8*s); end.15、求100999中的水仙花數(shù)。(若三位數(shù) ABC ABG= A + B3+C3,則稱ABC為水仙花數(shù)。例如153, 13+ 53+ 33= 153,則153是水仙花數(shù)。)(,循環(huán)語句)(答案:153、370、371、407)program e12; vari,a,b,c:integer;beginwriteln;for i:=10
12、0 to 999 dobegina:=i div 100;b:=(i mod 100) div 10;c:=i mod 10;if i=a*a*a+b*b*b+c*c*c then write(i:8);end;end.16、試編寫能夠打印輸出如下圖形的程序。(,循環(huán)語句)AAAAAAAAAAAAAAAAAAAAAAAAAprogram e;const n=5; vari,j:integer; beginwriteln;for i:=1 to n do beginwrite('':i);for j:=1 to (n-i)*2+1 do write('A');wr
13、iteln;end; end.17、四個學生上地理課,回答我國四大淡水湖大小時這樣說:()甲:“最大洞庭湖,最小洪澤湖,鄱陽湖第三。 ”乙:“最大洪澤湖,最小洞庭湖,鄱陽湖第二,太湖第三。”丙:“最小洪澤湖,洞庭湖第三。”丁:“最大鄱陽湖,最小太湖,洪澤湖第二,洞庭湖第三。”對于每個湖的大小,每個學生僅答對一個,請編程確定四個湖的大小。習題部分:1、已知三角形的兩邊a、b和夾角jc的值,求第三邊(已知條件由鍵盤輸入) 。()(提示:余角公式 c2 =a2 +b2 -2abcosc)(測試數(shù)據(jù):輸入 a=3、b= 4、jc=90;輸出5)program e2_5;vara,b,c,jc:real
14、;beginwriteln('input a,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、編寫程序把一個四位整數(shù)3581顛倒成1853。()program e;const n=3581;vara,b,c,d:integer;beginwriteln;a:=n mod 10;b:=(n div 10) mod 10;c:=(n div 100) mod 10;d:=n div 1000;writeln(a,b,c,d);end.相關(guān)練習:任意輸入一個正整數(shù),顛倒
15、輸出該數(shù)。program e; varn:longint;beginwriteln; writeln('input a integer number:'); readln(n);repeatwrite(n mod 10); n:=n div 10;until n=0;end.3、輸入a、b、c三個數(shù),打印出最大者。(, If條件語句)program e; vara,b,c:real;beginwriteln('input three number for a,b,c:');readln(a,b,c);if (a>b)and(a>c) then wri
16、teln(a);else if (b>a)and(b>c) then writeln(b);else writeln(c);end.4、從鍵盤讀入兩個數(shù),比較其大小,把大數(shù)置于x,小數(shù)置于y。請設(shè)計實現(xiàn)該功能的程序。(, If條件語句)(程序略)5、輸入三個數(shù),判斷以這三個數(shù)為邊能否組成一個三角形。若不能,則給出適當信息;若能,則進一步判斷它們構(gòu)的是銳角三角形、直角三角形還是鈍角三角形,并輸出其特征(等邊、等腰、直角、一般)、求其面積。(, If條件語句)(算法分析:對于判斷是銳角、直角、還是鈍角三角形,只需判斷最大邊的平方與其余兩邊的平方和的大小比較即可,小于則為銳角、等于則為直
17、角、大于則為鈍角。)(測試數(shù)據(jù):1、2、3;3、4、5;)4、4、7;5、5、5;答案:No;直角、面積6.00;鈍角、等腰、面積 6.78;銳角、等邊、面積 10.83 )program e; vara,b,c,t,s,d,ja,jb,jc:real;beginwriteln('input three number for a,b,c:');readln(a,b,c);if a<b then begin t:=a; a:=b; b:=t; end;if a<c then begin t:=a; a:=c; c:=t; end;if (a<b+c) thenb
18、eginif (a*a<b*b+c*c) then writeln('rui jiao san jiao xing.')else if(a*a=b*b+c*c) then writeln('zhi jiao san jiao xing.')else writeln('dun jiao san jiao xing.');if (a=b)and(b=c)and(c=a) then writeln('deng bian san jiao xing.')else if (a=b)and(b<>c)or(a=c)and(c
19、<>b)or(b=c)and(c<>a) then writeln('deng yao san jiao xing.')else if (a*a<>b*b+c*c) then writeln('yi ban san jiao xing.');d:=(a+b+c)/2;s:=sqrt(d*(d-a)*(d-b)*(d-c);writeln('s=',s:0:2);endelse writeln('NO!');end.6、設(shè)我國目前的人口為11億,且每年的增長率為1.5%。問多少年后,我國的人口會翻
20、一番?()(答案:47)program e2_22; vari:integer;s:real;beginwriteln; s:=11; i:=0;while s<22 dobegin s:=s*(1.015); inc(i); end;writeln(i);end.7、Fibonacci數(shù)列問題:數(shù)列的頭兩個數(shù)分別是0和1,從第三個數(shù)開始,每個數(shù)皆為它的前兩個數(shù)之和,即:0, 1, 1, 2, 3, 5,輸出該數(shù)列的第 50個數(shù)。(,循環(huán)語句)(答案:7778742049)program e;$N+,E+ vari:integer;x,y,z:extended;beginwriteln;
21、 x:=0; y:=1; write(x:20:0,y:20:0);for i:=3 to 50 dobegin z:=x+y;write(z:20:0);x:=y;y:=z; end;end.8、編寫程序求出下式中 n的最大值:22+42+ 62+, + n2<1500o(,循環(huán)語句)(答案:18)program e2_24;varn,s:integer;beginwriteln;s:=0; n:=0;while s<1500 dobegin inc(n,2); inc(s,n*n); end;writeln(n-2); end.9、把一元的鈔票換成一分、二分和五分的硬幣(每種至
22、少一枚),問有多少種兌換方法?()(答案:461program e2_29; var i,j,k,ans:integer;beginans:=0;for k:=1 to 19 dofor j:=1 to 47 do for i:=1 to 93 doif (k*5+j*2+i)=100 then inc(ans); writeln(ans);end.10、編寫程序求最小正整數(shù)m、n (0<n<m)為何值時,1989m與1989n的最后三位數(shù)字相同?()(算法:這類數(shù)字很大且有效數(shù)字位數(shù)很多(超出最多有效位數(shù)extended數(shù)據(jù)類型有效數(shù)字18位)的數(shù)字問題,一定要另辟蹊徑尋找突破口
23、,注意到此題只要求最后三位數(shù)字相同, 則我最多保留最后四位有效數(shù)字即可進行判斷。還請記住這樣一個事實,如 1989X 1989 =3956121, 3956121 X 1989= 7868724669,最后四位數(shù)字是 “ 4669”,而我把 3956121 取其最 后的四位數(shù)“ 6121”與1989相乘即6121 X 1989=12174669,最后四位數(shù)字也是“ 4669”, 沒有破壞最后四位有效數(shù)字的值,因此可以通過這種方法來編寫此程序。)(答案:m=51; n= 1);program e; varm,n,i,j:integer; x,y,a,b:longint; beginwriteln
24、;for m:=2 to 60 dofor n:=1 to m-1 do beginx:=1; y:=1;for i:=1 to m do begin x:=x mod 10000; x:=x*1989; a:=x mod 1000; end; for j:=1 to n do begin y:=y mod 10000; y:=y*1989; b:=y mod 1000; end; if a=b then writeln('m=',m,' n=',n);end;end.11、編寫程序提示用戶輸入一系列整數(shù),用0作結(jié)束標志,統(tǒng)計其中有多少個正數(shù)。()program
25、 e; varcount,x:integer;beginwriteln; writeln('input integer number(0-end):'); count:=0; repeatread(x);if x>0 then inc(count);until(x=0);writeln('count=',count);end.111. .112、求自然吊數(shù) e=+H +的值。(提不:0! =1, 1! =1)()0! 1! 2! n!(1) 直到第50項;(2)直到最后一項小于105。(答案:(1) 2.71828182845905E+0000 ;(2)
26、2.71828152557319E+0000 )(備注:第2小問程序略,只須將更改語句“ until (1/s)<1E-5; ”即可求的解答) program e2_35;$N+ 一 var i,count:integer; e,s:extended; begin e:=1; count:=0; repeat inc(count); s:=1; for i:=1 to count do s:=s*i; e:=e+1/s;until count=50;writeln(e); end.13、三齊王點兵的故事。相傳三齊王韓信才智過人,從不直接清點自己軍隊的人數(shù),只是讓士兵 先后以三人一排、五人
27、一排、七人一排地變換隊形,而他每次只掠一眼隊伍的排尾就知道總 人數(shù)了(不超過100人)。輸入三次排尾的人數(shù),輸出總?cè)藬?shù)。()program e2_36; vara,b,c,i:integer;beginwriteln('shu ru p3(02),p5(04),p7(06) de wei shu:');readln(a,b,c);for i:=100 downto 1 doif (i mod 3=a)and(i mod 5=b)and(i mod 7=c) then writeln(i);if i=1 then writeln('No answer!'); en
28、d.14、編寫程序,計算 N!以十進制數(shù)形式表示的數(shù)中最右的非零數(shù)字,并找出在它右邊有幾個零。 例如 12! = 1X 2X 3X,X 12=479001600。因此 12!的右邊有 2個零。()(提示:碰到5、52、53、54,才會出現(xiàn)末尾是零,所以1000!末尾零的個數(shù)為:(1000 div 5) + ( 1000 div 52) + ( 1000 div 53) + ( 1000 div 54) = 249)(下面的程序沒采用上面的算法,采取另一種算法實現(xiàn)了這一程序,顯然上面的算法效率高)(程序算法:只需提供末尾幾位有效數(shù)字即可,我采取提供四位有效數(shù)字相乘)program I_11; v
29、ars:longint;i,d:integer;beginwriteln;d:=0; s:=1;for i:=1 to 1000 do begins:=s*i;if (s mod 1000 =0) then begin s:=s div 1000; d:=d+3; end;if (s mod 100 = 0) then begin s:=s div 100;d:=d+2; end;if (s mod 10 = 0) then begin s:=s div 10;d:=d+1; end;s:=s mod 10000;end;writeln; write(d);end.15、編寫程序,輸出“字母塔
30、”。以此類推共26層。A()ABAABCBAprogram e2_40; vari,j:integer;beginwriteln;for i:=1 to 26 dobeginfor j:=1 to 26-i do write(' ');for j:=1 to i do write(chr(64+j);for j:=i-1 downto 1 do write(chr(64+j);writeln;end;end.第4章數(shù)組類型例題部分:1、輸入10個整數(shù),把這10個數(shù)按從小到大的順序排列。()(冒泡法排序和選擇法排序兩種方法)冒泡法排序:program e1;const n=10;
31、 var a:array1.10 of integer; i,j,t:integer;beginwriteln('input ',n,' integer number:');for i:=1 to n do read(ai);for i:=1 to n-1 dofor j:=1 to n-i doif aj>aj+1 then begin t:=aj; aj:=aj+1; aj+1:=t; end;for i:=1 to n do write(ai:5);end.2、折半查找。(二分法查找)()3、旅館里有一百個房間,從1到100編了號。第一個服務(wù)員把所有
32、的房間門都打開了,第二個服務(wù)員把所有編號是 2的倍數(shù)的房間“相反處理”,第三個服務(wù)員把所有編號是3的倍數(shù)的房間作“相反處理”,以后每個服務(wù)員都是如此。問第100個服務(wù)員來過后,哪幾扇門是打開的。(所謂“相反處理”是:原來開著的門關(guān)上,原來關(guān)上的門打開。)()(提示:對于任何一個編號,例如 8,它的因子只有1、2、4、8,并且成對出現(xiàn),當此數(shù)的因 子數(shù)為偶數(shù)個時將被關(guān)上,當此數(shù)的因子數(shù)為奇數(shù)個時才會被打開。考慮到因子成對出現(xiàn)的情況,因此只有平方數(shù)的因子是奇數(shù)個的,所以門被打開的只能是平方數(shù)的房間,如1, 4等)4、編寫程序把任意十進制整數(shù)轉(zhuǎn)換成二進制整數(shù)。()5、所謂“幻方”,是一個行、列為奇數(shù)
33、的方陣,把 1n2這n2個不同的數(shù)放入方陣中,使方陣的 每行、每列和每個對角線上的元素的和全部相等。下面給出幻方的一種排列方法:(1) 先把1放在第一行的中間位置;(2) 下一個數(shù)放在上一個數(shù)的右上方;(3) 若右上方已超出方陣的第一行,則下一個數(shù)放在下一列的最后一行上;(4) 若右上方已超出方陣的最后一列,則下一個數(shù)放在上一行的第一列上;(5) 若右上方已經(jīng)有數(shù),或右上方已超出方陣的第一行最后一列,則下一個數(shù)放在上一個數(shù)的正下方。編寫程序,對輸入小于15的n,打印出相應(yīng)的幻方。()6、在一個字符數(shù)組 LET中形成由A開始的連續(xù)26個大寫字母構(gòu)成的字串,并將其倒置后仍放在 LET 中。7、隨機
34、輸入一個長度不超過255的字符串,將其倒置后輸出。8、隨機輸入一些國家的英文名字,以 end作為輸入結(jié)束標志,按字母順序排序后輸出。9、求n個字符串的最長公共子串,n<20,字符長度不超過255。例如n=3,由鍵盤依次輸入三個字符串為:what is local bus?Name some local bus.Local bus is high speed I/O bus close to the processor.則最長公共子串為" local bus”。10、文本的整版。編寫一個程序,從鍵盤以任意的方法輸入句子,然后打印出來。打印時每行寬 度必須為n個字符。如果一行的最后
35、一個單詞超出了本行n個字符的范圍,則應(yīng)把它移到下一行去。輸入一個句子測試你的程序。習題部分:1、輸入n個整數(shù),請找出最小數(shù)所在的位置,并把它與第一個數(shù)對調(diào)。()program e4_2; vara:array1.10of integer;i,t,y:integer;beginwriteln('input ten integer number:');for i:=1 to 10 do read(ai);t:=a1;for i:=2 to 10 do if ai<t then t:=ai;for i:=1 to 10 doif ai=t then begin writeln(
36、'the min number is ',i,'th');ai:=a1; a1:=t; end;for i:=1 to 10 do write(ai:8);end.2、用邊排序邊合并的方法把兩個有序數(shù)列合并為一個新的有序數(shù)列,不得先合并再重新排序。()(測試數(shù)據(jù):這里 a組數(shù)據(jù)共8個:1 1 3 6 6 7 9 10;b組數(shù)據(jù)共5個:0 1 2 3 4 )program e4_3;vara:array1.8 of integer;b:array1.5 of integer;c:array1.13 of integer;i,j,k,m,n:integer;begi
37、nwriteln('input 8 integer number of square arrayA:');for i:=1 to 8 do read(ai);writeln('input 5 integer number of square arrayB:');for i:=1 to 5 do read(bi);j:=1;k:=1;m:=aj;n:=bk;for i:=1 to 13 dobeginif m<n thenbeginci:=m; inc(j); m:=aj;if j=9 then m:=maxint;endelsebeginci:=n; in
38、c(k); n:=bk;if k=6 then n:=maxint;end;end;for i:=1 to 13 do write(ci:4);end.3、將一個數(shù)插入到有序的數(shù)列中,插入后數(shù)列仍然有序。()(測試數(shù)據(jù):有序數(shù)組為1 1 3 6 6 7 9 10;待插入數(shù)為5)program e4_4; vari,j,n:integer;flag:boolean;a:array1.9 of integer;beginwriteln('input 8 integer square number:');for i:=1 to 8 do read(ai);writeln('i
39、nput a integer number to insert:');readln(n);flag:=false; i:=1;repeatif ai>n then flag:=true else inc(i);until flag=true;for j:=9 downto i+1 do aj:=aj-1;ai:=n;for i:=1 to 9 do write(ai:4);end.4、有N個無序的數(shù)存放在 A數(shù)組中,請將后面相同的數(shù)刪成只剩下一個,并輸出經(jīng)過刪除后的數(shù)列。()(測試數(shù)據(jù):數(shù)列為 1 3 5 3 7 5 3 1; 答案:1 3 5 7)program e4_5; v
40、ara:array1.8 of integer;i,j,n:integer;beginwriteln('input 8 integer number:');for i:=1 to 8 do read(ai);for i:=2 to 8 dofor j:=1 to i-1 do if ai=aj then ai:=maxint;for i:=1 to 8 doif ai<>maxint then write(ai:4);end.5、有N個人排隊到R個相同的水龍頭去打水,他們裝滿各自水桶的時間T1、T2、,、 TN為整數(shù)且互不相等,應(yīng)如何安排他們打水的順序才能使他們花費
41、的總時間最少?(花費的總時間等于每個花費時間的總和)6、求一個五階方陣中某個元素的位置:它在行上是最小的, 在列上也是最小的, 如果沒有請輸出“NO FIND!”。()(分析:整個矩陣中的最小值,當然也是所在行和所在列的最小值,因此肯定能找到這樣的數(shù))測試數(shù)據(jù):答案:2、1、3、61142785923125322211815171624126program e; var1310192014i,j,x,y:integer;minx:integer;a:array1.5,1.5 of integer;beginwriteln; writeln('input number(5*5):'
42、;);for i:=1 to 5 dofor j:=1 to 5 doread(ai,j);for i:=1 to 5 dobeginminx:=ai,1;x:=i;y:=1;for j:=1 to 5 doif ai,j<minx then begin minx:=ai,j; y:=j; end;for j:=1 to 5 doif aj,y<minx then break;if j=5 then writeln('the number is ',minx,'',x,'','',y,'');end;e
43、nd.第5章過程與函數(shù)例題部分:1、編程求:1! +3! +5! +7! +9! +11!。2、求數(shù)字的乘積根。一個正整數(shù)的數(shù)字的乘積N的定義是:這個整數(shù)中非零數(shù)字的乘積。例如,整數(shù)999的數(shù)字乘積為 9X9X9,即729。729的數(shù)字乘積為7X2X9,即126。126的數(shù)字乘 積為1X2X6,即12。12的數(shù)字乘積為1X2,即2。一個正整數(shù)的數(shù)字乘積根 N是這樣得到 的:反復取該整數(shù)的數(shù)字乘積,直到得到一位數(shù)字為止。例如,在上面的例子中數(shù)字的乘積根 是2。編寫一個程序,輸入一個正整數(shù)(長度不超過200位數(shù)字),輸出計算其數(shù)字乘積根的每一步結(jié)果。3、漢諾(Hanoi)塔問題。設(shè)有 n個大小不等
44、的中空圓盤,按照從小到大(尺寸和序號)的順序 疊套在立柱 A上。另有兩根立柱 B和C,如圖所示。問題要求把全部圓盤從A柱(源柱)移到C柱(目標柱)。移動過程中可借助 B柱(中間柱)。移動時有如下要求:(1) 一次只能移動一個圓盤;(2) 不允許把大盤放在小盤上邊;(3) 可使用任意一根立柱暫存圓盤。ariBriC4、把一個十進制整數(shù)轉(zhuǎn)化為K進制數(shù)(KW10)。5、八皇后問題:把八個皇后擺在8X 8國際象棋棋盤格子內(nèi),使它們互不捕獲對方。換言之,在任何一行、一列或一條對角線上,僅能放置一個皇后。這一問題是由19世紀著名數(shù)學家高斯(Gauss)于1850年首先提出的。(答案共有92種解答)6、已知
45、:切比雪夫多項式如下:(提示:運用遞歸函數(shù)計算)1(n=0)Tn(x) = x(n =1)2xTn(x) -Tnz(x) (n -2)對給定的不同的正整數(shù),它是一些階數(shù)不同的多項式,編程計算第 n個多項式的值。習題部分:1、編寫一遞歸函數(shù)說明,用以計算組合數(shù)C (M, N)。(即CM )2、兩個人玩井字游戲,在井字進分的九個空位上輪流畫。或*,誰最先使自己的三個。或三個*在一條直線上,誰就贏了。編寫程序檢查每一步是否走得正確,并告訴誰是勝利者。第6章集合與記錄類型例題部分:1、七段數(shù)碼管問題。2、任意給出一個正整數(shù)N,找一個正整數(shù) M,使得N*M的值的數(shù)字由0、1、,、C (CW9)組成,且這
46、些數(shù)字至少出現(xiàn)一次。編寫程序在整數(shù)范圍內(nèi)找出滿足條件的最小Mo若沒有給出信息,則輸出“ No find !”。例如:C=3、N = 65 時,M = 48, 65X48=3210;C=8、N=125 時,“No find !”。(以下程序設(shè)計試題來自計算機二級考試復習指南)e(1) =e(2) =1,一,一1 .數(shù)列1,-稱為e數(shù)列,()e(n) =(n-1)i(n-1) (n-2)_e(n-2) (n 2)每一個 e (n) (n=1, 2,)稱為 e數(shù)。求1, 30000之內(nèi):(1) 最大的e數(shù);(2) e數(shù)的數(shù)目。(該數(shù)列前面幾項為1、1、3、11、53、,;答案:16687;8)pro
47、gram e;vara,b,c,n:longint;beginwriteln; n:=3;a:=1; b:=1;repeatc:=(n-2)*a+(n-1)*b;a:=b; b:=c; inc(n);until c>30000;writeln('maxe=',a,' count=',n-2);end.10002. 計算并車觥H:S=£ 之值(精確到小數(shù)點后第5位)。()y i (i 1)(答案:0.99900)program e;vari:integer;s,n:real;beginwriteln; s:=0;for i:=1 to 1000 d
48、o begin n:=i;s:=s+1/(n*(n+1); end;writeln(s:0:5);end.F(0) = F(1) = F(2)=13. 已知i,求:()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)program e;vari,a,b,c,d,s:longint;beginwriteln; a:=1; b:=1; c:=1; s:=3;for i:=3 to 50 dobegin d:=a-2*b+c;s:=s+d; a:=b; b:=
49、c; c:=d; write(d:8); end;writeln; writeln('s=',s);end.4. 求滿足:A B = 716699并且A + B最小兩個條件的 A和B。()(答案:A = 563;B=1273)program e;vara,x,s,mina,minb:longint;beginwriteln; s:=716699; x:=trunc(sqrt(716699);for a:=1 to x doif (716699 mod a=0)and(a+(716699 div a)<s) thenbegin s:=a+(716699 div a); mi
50、na:=a; minb:=(716699 div a); end;writeln('A=',mina,' B=',minb);end.5. 一自然數(shù)平方的末幾位與該數(shù)相同時,稱此數(shù)為自同構(gòu)數(shù)。例如,由于52=25,則稱5為自同構(gòu)數(shù)。求出1, 700以內(nèi)的:(1)最大的自同構(gòu)數(shù);(2)自同構(gòu)數(shù)數(shù)目。()(答案:625)7)program e;vari,count:longint;beginwriteln; count:=0;for i:=1 to 9 doif (i*i-i) mod 10=0 then inc(count);for i:=10 to 99 doi
51、f (i*i-i) mod 100=0 then inc(count); for i:=100 to 700 doif (i*i-i) mod 1000=0 then begin inc(count); write(i:8); end;writeln; writeln('count=',count);end.6. 若某不含數(shù)字0的三位正整數(shù),其平方數(shù)至少有三位同樣的數(shù)字,則稱該三位數(shù)為三重數(shù)。例如,由于:5112=261121 (有三位1),所以511為三重數(shù)。求出:(1)按升序排列第10個三重數(shù);(2)按升序排列前10個三重數(shù)之和;(答案:(1) 258;(2) 1826)p
52、rogram e1; vari,j,k,a,b,c,x,n,count,s:longint;aa:array1.5of integer;beginwriteln;s:=0; count:=0;for i:=111 to 316 do begina:=i div 100;b:=(i div 10) mod 10; c:=i mod 10;if (a<>0)and(b<>0)and(c<>0) thenbeginx:=i*i;aa1:=x div 10000;aa2:=(x div 1000) mod 10;aa3:=(x div 100)mod 10;aa4:
53、=(x div 10)mod 10;aa5:=x mod 10; for j:=1 to 3 do beginn:=1;for k:=j+1 to 5 doif aaj=aak then n:=n+1;if n>2 then begin writeln(i:8,x:8); s:=s+i; count:=count+1; break; end;end;end;if count=10 then break;end;writeln(s:8); end.7. 滿足下列兩個條件:(a)千位數(shù)字與百位數(shù)字相同(非 0),十位數(shù)字與個位數(shù)字相同;(b)是某兩位數(shù)的平方。的四位正整數(shù)稱為四位平方數(shù)。例如
54、,由于:7744=882,則稱7744為四位平方數(shù)。求出:(1)所有四位平方數(shù)的數(shù)目;(2)所有四位平方數(shù)之和。()(分析:最小四位數(shù)1000是31.6的平方,最大的四位數(shù) 9999是99.9的平方)(答案:1;7744)program e; vari,x,count,s:longint; beginwriteln; count:=0; s:=0;for i:=32 to 99 do beginx:=i*i;if (x div 1000)=(x div 100) mod 10)and(x div 10) mod 10)=(x mod 10) then begin inc(count); s:=
55、s+x; end;end;writeln('count=',count,' s=',s); end.8. 其平方等于某兩個正整數(shù)平方之和的正整數(shù)稱為弦數(shù)。例如,由于32+42= 52,因此5為弦數(shù)。求121, 130之間:(1)弦數(shù)數(shù)目;(2)最小的弦數(shù);(3)最大的弦數(shù)。()(分析:設(shè)a2+b2=c2,且a<b,這樣可以控制出現(xiàn)重復弦數(shù)"")(答案:4;122;130)program e; var i,j,k,x,count:longint; begin writeln; count:=0; for i:=121 to 130 do begin x:=trunc(sqrt(i*i/2); for j:=1 to x do begin k:=trunc(sqrt(i*i-j*j); if (i*i=j*j+k*k) then begin inc(count); writeln(i,'*',i,'=',j,'*',j,'+',k,'*',k); break; end; end; end;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB32/T 3882-2020黃蜀葵栽培與加工技術(shù)規(guī)范
- DB32/T 3831.2-2020婦幼健康信息平臺共享數(shù)據(jù)集應(yīng)用規(guī)范第2部分:兒童保健
- DB32/T 3761.55-2022新型冠狀病毒肺炎疫情防控技術(shù)規(guī)范第55部分:公路服務(wù)區(qū)
- DB32/T 3628-2019木霉固態(tài)菌種生產(chǎn)技術(shù)規(guī)程
- DB32/ 4576-2023南四湖流域(江蘇區(qū)域)水污染物綜合排放標準
- DB31/T 997-2016城市道路交通狀態(tài)指數(shù)評價指標體系
- DB31/T 329.6-2019重點單位重要部位安全技術(shù)防范系統(tǒng)要求第6部分:中小學、幼兒園、托育機構(gòu)
- DB31/T 1364-2022檢驗檢測機構(gòu)能力驗證技術(shù)規(guī)范
- DB31/T 1300-2021跆拳道場所運營服務(wù)規(guī)范
- DB31/T 1213-2020金屬熱處理回火工序單位產(chǎn)品能源消耗限額
- 2025至2030年中國智能學習機行業(yè)投資前景及策略咨詢研究報告
- (高清版)DG∕TJ 08-7-2021 建筑工程交通設(shè)計及停車庫(場)設(shè)置標準
- 教育咨詢保密協(xié)議書
- 無房無車離婚協(xié)議書
- 南師附中高三數(shù)學備忘錄及答案詳解
- 2024年湖北省中考地理生物試卷(含答案)
- 巴蜀文化(課堂PPT)課件
- 質(zhì)量部組織架構(gòu)
- 工學結(jié)合一體化課程教學設(shè)計的編寫(課堂PPT)
- 電氣裝置安裝工程接地裝置施工及驗收規(guī)范——50169-2006
- 水電站自動化運行專業(yè)術(shù)語
評論
0/150
提交評論