51.假設長途電話費率的計算方式如下:
(1)任何從6:00PM(1800時)以後開始的通話將有50%的折扣。
(2)任何從8:00AM(0800時)以後開始的通話必須要付全額費用。
(3)任何電話都必須要課4%的營業稅。
(4)任何通話的一般費用是每五分鐘1.7元,未滿五分鐘以五分鐘計算。
(5)任何超過60分鐘以上的通話將有15%的折扣
(已在扣除所有折扣後未加入稅金時的費用為準)
寫一程式,以讀入每次通話的起始時間(24時制)及通話時間來處理通話
的實際費用(含稅金及折扣)。
52.寫一程式計算一組數字的乘積。你的程式必須再讀入0時停止,
若讀入非0的資料時,則跳過不予計算。
53.一個數的平方根可以使用下列公式,反覆計算近似得出NG=0.5(LG+N/LG)
其中NG代表下一個猜測值,LG代表最後猜測值。
寫一程式實做出過程的程式。(容忍值設定為0.005)
提示:初次猜測值將是LG的開始值。程式將使用上述公式計算NG的值。
若是NG與LG的差值,小於可容忍值,則程式結束,NG即為平方根。
否則,NG將變成LG,並重複處理前述的計算。
54.一整數,若其位數和可被9整除則必可被9整除。
請用此方法判斷一數是否可被9整除。
55.銀行存款計算方式如下:
N天後的存款=開始存入的錢 *(1+RATE/365)^ N
RATE:代表年利率
寫一程式包含下列兩個功能
(1)輸入開始的存款經過N天後,輸出存款為何?
(2)輸入N天後的存款,求開始時要存入多少錢?
56.請問若有G公克之同位素鍶90(Sr90)(半衰期為29年),
(1) 請列印出經過N年後,剩餘的重量為何?
(剩餘量=初始重量G * C^(Y/H),H表放射性同位素之半衰期。
C為e^-0.693,e=2.71828)
(2) 輸入剩餘重量與初始重量G,求出所要經過的時間?
57.輸入一連串數字(<20個數字)直到0,對每一個數字判斷下列
(1)是否為7、11、13的倍數 (2)位數和為奇數或偶數
(3)平方根為何? (4)是否為質數?
(5)列出所有質因數
58.輸入一變數N,再輸入N 個數字成為一個含有N 個數的集合A,
然後輸出所有這個A 集合的子集合。
Ex: N=3, A { 1, 2, 3 }
ANS: { } <--- 空集合
{ 1 },{ 2 },{ 3 }
{ 1, 2 },{ 1, 3 },{ 2, 3 }
{ 1, 2, 3 }
59.標會問題
設今有一互助會會員50人,會期50月..每月會錢10000元自第二個月起標金
為2500元,以後每個月遞減50元....問...若在第50月標下此會....和每
月存10000元進銀行到50月後...何者錢會較多...並且算出差額....
銀行以複利算,年利率6%,以月計...
(標會原則...第一個月會頭可領除自己外所有人的會錢...
以本例...會首在第一個月可得490000元...第二個月一人以2500標下,
他拿到的錢仍然是490000元....但他以後每個月需繳交12500的會錢..
而且不得再標下此會....第三個月另一人以2450元標下...
他卻可得492500元....同理...第四個月的人拿到494950元....)
60.多項式A(x)和B(x)(最高維數25維)的相乘、相除、餘數
61.完美數
一個數等於它所有的因數和,這種數我們叫它完美數﹝不包括它本身﹞
像 6=1+2+3
28=1+2+4+7+14
請求出第三、第四以及第五個完美數
62.寫一程式包含下列三個功能,不能用內建的函數
(1) 輸入一個十進位數,將數字轉成二進位,八進位,十六進位。
(2) 輸入一個二進位數,將數字轉成十進位,八進位,十六進位。
(3) 輸入一個十六進位數,將數字轉成二進位,八進位,十進位。
63.讀入任意長度字串(最多50字元),對此字串坐下列處理動作:
(1) 列印出字串長度(使用者輸入的部分)。
(2) 以一個4*號字串取代每一個4字母單字,
(3) 以一個3+號字串取代每一個3字母單字,
(4) 以一個5?號字串取代每一個5字母單字,
並列印新字串。
64.身分證認證【壹】【貳】
確認一組身分證號碼是否合法??
(1) 英文代號以下表轉換成數字
A=10 台北市 J=18 新竹縣 S=26 高雄縣
B=11 台中市 K=19 苗栗縣 T=27 屏東縣
C=12 基隆市 L=20 台中縣 U=28 花蓮縣
D=13 台南市 M=21 南投縣 V=29 台東縣
E=14 高雄市 N=22 彰化縣 W=32 金門縣
F=15 台北縣 O=35 新竹市 X=30 澎湖縣
G=16 宜蘭縣 P=23 雲林縣 Y=31 陽明山
H=17 桃園縣 Q=24 嘉義縣 Z=33 連江縣
I=34 嘉義市 R=25 台南縣
(2) 英文轉成的數字, 個位數乘9再加上十位數
(3) 各數字從右到左依次乘1、2、3、4....8
(4) 求出(2),(3)之和
(5) 求出(4)除10後之餘數,用10減該餘數,結果就是檢查碼,
若餘數為0檢查碼就是0
例:身分證號碼是 W100232736
65.找出所有小於5,000之正整數,其值等於其各個數字之階乘和。
例: 4!+0!+5!+8!+5!
= 24+1+120+40320+120
= 40585
66.試設計一程式可以比較一組資料(小於 10000 之正整數)中,
任意一位(或數位數)之大小。
輸入資料:任意一組小於 10000 之正整數,及所欲比較之位數
N( 1 < N < 4 )
輸出資料:照條件敘述列印出來。這個條件要包含:
(1)由大而小列印出來
(2)由小而大列印出來
(3)第 N 位數之最大者
(4)第 N 位數之最小者
(5)取任意連續二項而比較其大小
(6)取任意連續三項而比較其大小
例:輸入資料 0237 0126 3175 1167
輸出條件 輸出資料
(1)由小而大列印出來 0126 0237 1167 3175
(2)第三位數之最小者 0126
(3)第一位數之最大者 3175
(4)第二,三位數之最大者 0237(即比較 23 12 17 16 之大小)
67.設計一程式可將最長含10個字元的字串讀入, 每一個字元均代表某一數值
的羅馬數表示法。將讀入之羅馬數及其相對應之阿拉伯數一起列印出來。【壹】
羅馬數和字元之對應表如下:
M 1000
D 500
C 100
L 50
X 10
V 5
I 1
你的輸入有下列幾組:
(1) VII
(2) LXXXVII
(3) CCXIX
(4) MCCCLIV
(5) MMDCLXXIII
(6) MCDLXXVI
68.有二正整數A、B,若所有能整除A的正數之和等於B
(包括1,但不包括A本身);反之亦然,則此二正整數稱為\"friendly\"。
例:220及284,
其中能整除220的有:1+2+4+5+10+11+20+22+44+55+110=284
能整除284的有:1+2+4+71+142=220
試設計一程式,找出所有成\"friendly\"關係的正整數組,且此正整數組中
的兩個數均小於500。
69.參考第67題,輸入阿拉伯數字,轉成羅馬數字。
70.輸入由許多字(WORDS)組成之字串,總長度不超過30 characters,字與字
間由一個或一個以上之 SPACES或是以句點、逗號、驚嘆號隔開。
設計一程式將此字串平均安排在長度為 40 characters 之 Array 中,
使得第一字向左對齊,最後一字向右對齊 (Fully Justified);每個字
之間以大約相等之SPACES隔開。印出輸入及重組後之字串。
測試資料:
LINK THIS PC TO THE HOST
71.輸入平面上任意五個點,試設計一程式能畫出一個最小的圓包含此五個
點這個程式的輸入為任意五個點,其輸出為此五個點及所畫出的最小圓
測試資料:(2,4),(4,6),(3,2),(7,3),(6,0)
72.若有一分、五分、一角、二角、二角五分、五角之銅板,各種銅板之個數
假設為無限多,求最少之銅板個數,其總值為吾人所期望之金額。
測試資料:
(1) 一元 (2) 七角五分 (3) 九角
(4) 八角二分 (5) 一元六角六分
73.設計一程式,可以和人玩#字遊戲,此遊戲可由參加遊戲者下或是電腦先
下,亦可選擇持\"O\"\"X\"字,當有一方到連成一線時電腦就必須立刻判誰
是優勝者,下圖為#字遊戲的一範例。【壹】【貳】
│ │ │ │ X O│ │X
──┼──┼── ──┼──┼── ──┼──┼─
│ O │ ─→ │ O │ → │ O │
──┼──┼── ──┼──┼── ──┼──┼─
│ │ │ │ │ │X
↓
O│ │ X O│ │X
──┼──┼── ──┼──┼─
│ O │ X ← │ O │
──┼──┼── ──┼──┼─
O│ │ X O│ │X
\"X\"贏
74.將真分數分解為分子為1之分數和。(大學甲組)
17 1 1 1 1
例:─ =─ + ─ + ─ + ──
21 2 4 17 1428
測試資料:
57 12345 37
(A) ─ (B) ─── © ─
58 12346 67
35 123
(D)── ──
48 456
75.寫一程式能計算二元一次聯立方程式之根,
即:輸入資料為A1,A2,A3,B1,B2,B3六數,輸出資料為X及Y,
使A1*X+A2*Y=A3
B1*X+B2*Y=B3
如無法算出X及Y則輸出\"NO SOLUTION\",如有多組解;則請輸出使|X|+|Y|
為最小值之任一組解。(|X|為X之絕對值)
76.請設計一程式,輸入三個小於100000的十進位整數,其中前二個整數之和
為第三個整數,但是每個十進位整數輸入時每一位都是以英文字母
{A,B,......., Z}之一代表,而且不相同字母表示不相同數字。
例:輸入SEND MORE MONEY
SEND 則 9567
+MORE +1085 為其一組解
──── ────
MONEY 10652
輸入EAT MORE FOOD EAT 則 943
+MORE +7169 為其一組解
──── ────
FOOD 8112
求出一組解
(即是各字母所化表之值,可能不祇一組解,不必考慮無解之情形)
77.設A及B分別代表兩正整數,一般情形,A/B在許多情形下為循環小數
1/7 =0.142857,但如以電腦直接將兩數相除,無法獲得此結果,請設計
程式,其輸入為A、B兩正整數,輸出為:如果不是循環小數,則直接印出
其商數。如為循小數,則精確的算出其商值,並標出其循環節,可假設其
不超過6位,並可設A
78.魔術數字遊戲
填數字方格的遊戲有很多種變化,如下圖所示的 4×4 方格中,我們要選
擇從數字 1到16來填滿這十六個格子( Aij, 其中 i = 1…4, j = 1…4 )
為了讓遊戲更有挑戰性, 我們要求下列六項中的每一項所指定的四個格
子,其數字累加的和必須為 34︰
解題技巧:
(1) 四個角落上的數字,即 A11 + A14 + A41 + A44 = 34。
(2) 每個角落上的 2×2 方格中的數字﹐例如左上角︰
A11 + A12 + A21 + A22 = 34。
(3) 最中間的 2×2 方格中的數字,即 A22 + A23 + A32 + A33 = 34。
(4) 每條水平線上四個格子中的數字,
即 Ai1 + Ai2 + Ai3 + Ai4 = 34,其中 i = 1…4。
(5) 每條垂直線上四個格子中的數字,
即 A1j + A2j + A3j + A4j = 34,其中 j = 1…4。
(6) 每條對角線上四個格子中的數字,例如左上角到右下角︰
A11 + A22 + A33 + A44 = 34。
A11 A12 A13 A14
A21 A22 A23 A24
A31 A32 A33 A34
A41 A42 A43 A44
輸入檔說明:
(1) 輸入檔案內會指定把數字 1 先固定在四個角落中的某一個角落內
(即指定把 1 填在 A11,A14,A41,或 A44 的格子內)。輸入的資
料只有一組,用 i、j 表示第 i橫列和第j直行的格子放數字 1。
剩下的十五個格子,請按照前述六項條件用數字 2到 16 來填滿)
輸出檔說明:
(1) 把全部的正確解答用 4×4 方格的格式 (即分成四列,每列四個數字)
寫到輸出檔。答案和答案之間,要以一個空白行相間,並且依序排好
。排序的方式,是先從第一列的數字開始比較,每一列數字,由最左
邊的數字開始比,數字較小的解答必須先輸出到檔案中。
79.設A0,B為兩正整數,設A0被B除後得餘數為A1,然後10*A1被B除得餘數為A2。
依此類推即Ai+1為10*Ai/B之餘數,設計一程式。當A0及B為已知時能算出
A0、A1、A2、……Ak直至第一個Ak=Ai(i
80.A[I][J]表示A為一個兩階陣列(TWO DIMENSIONAL ARRAY)它在數學上可以
表示成一個I列J行的矩陣A:
A(1,1) A(1,2)………A(1,J) ←…第1列
A(2,1) A(2,2)……… : ←…第2列
: : : : :
A= : : A(i,j) : :
: : : : :
A(I,1) A(I,2)………A(I,J) ←…第I列
: : :
第 第 第 其中A(i,j)1≦i≦I,1≦j≦J
1 2 J
行 行 行 其矩陣A之第i列,第j行元素
現有另一矩陣B為P列Q行之矩陣,若A之行數J等於B之列數P,則可以定義
出矩陣乘法A×B為
C=A×B
C(1,1)C(1,2)…C(1,Q) A(1,1)A(1,2)…A(1,J) B(1,1)B(1,2)…B(1,Q)
C(2,1)C(2,2)…C(2,Q) A(2,1)A(2,2)…A(2,J) B(2,1)B(2,2)…B(2,Q)
即 : : : = : : : × : : :
: : : : : : : : :
: : : : : : : : :
C(I,1)C(I,2)…C(I,Q) A(I,1)A(I,2)…A(I,J) B(P,1)B(P,2)…B(P,Q)
C為I列Q行之矩陣,其第i列q行之元素C(i,q)可以下法求得:
C(i,q)=A(i,1)‧B(1,q)+A(i,2)‧B(2,q)+……+A(i,j)‧
B(j,q)=ΣA(i,j)‧B(j,q)( 1≦j≦J )
例如:
C之第2列第3行元素C(2,3)=A(2,1)‧B(1,3)+A(2,2)‧B(2,3)+……
+A(2,J)‧B(J,3)
請寫一程式INPUT I,J,P,Q,及A(1,1),A(1,2)…A(I,J),A(I,J),
B(1,1),B(1,2)…B(P,Q)且若J=P則由螢光幕上印出C之所有元素C(1,1)
,C(1,2)…C(I,Q),否則印出ERROR!
81.輸入一篇英文文章,計算文中任兩英文字母接連出現的頻率,亦即
@A,A@,AA,AB,AC,﹒﹒﹒,AZ,@B,B@,BA,
BB,BC,﹒﹒﹒﹒BZ,﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒,ZZ等出現的字
數。其中@A代表A為一英文單字的第一個字母;
A@代表A為一英文單字的最後一個字母,餘類推。
按其頻率之高低排序後,將頻率不為零的依序列印出來。
例:輸入:THIS IS HIS BOOK
輸出結果為:
IS:3 S@:3 HI:2 @B:1
@H:1 @I:1 @T:1 BO:1
k@:1 OK:1 OO:1 TH:1
請以下列文章測試之:
(請將下列文章存於檔案中,以讀檔案的方式來設計程式)
SOFTWARE CONSISTS OF THE PROGRAMS A COMPUTER
SYSTEM EXECUTES.
THERE ARE TWO KINDS OF SORTWARE;SYSTEM
SOFTWARE AND APPLICATIONS SOFTWARE.
SYSTEM SOFTWARE CONSISTS OF PROGRAMS THAT HELP
USERS WRITE AND EXECUTE OTHER PROGRAMS.
APPLICATIONS SOFTWARE DOES THE JOBS THAT USERS
BROUGHT THE COMPUTER TO HANDLE.
APPLICATIONS SOFTWARE IS AS VARIED AS THE
APPLICATIONS OF COMPUTERS THEMSELVES.
82.輸入一個字串(<100)列印出此字串中最長相同部分。
83.輸入兩個字串(<100)列印出兩個字串中最長相同部分。
84.輸入三角形三頂點的直角坐標,計算並印出該三角形的周長與面積。如
果該三角形為等腰三角形、正三角形、直角三角形,並請加註記。請以
下列數據測試之:
(1)(2,4) (-3,2) (1,-4)
(2)(-2,0) (0,-2) (2,2)
(3)(1,2) (-3,-1) (0,-5)
(4)(0,0) (2,4) (-1,-2)
85.試寫一程式,以輸入一字串,其長度 (含空白), 最長為81個字元,然
後檢驗該語言串中之母音 (A,E,I,O,U,a,e,i,o,u),並將之刪除,且該
些母音之位置由後續之字元向前位移予以佔用而不留下空白,例:輸入
\"Mary^Lives^IN^300,^Born^St.,^Chungli,^Taiwan,^R.^O.^C.\"
其中\"^\" 表示空一個位置。
經刪除母音後成為
\"Mry^Lvs^N^300,^Brn^St.,^Chngl,^Twn,^R.^.^C.\"
;然後將輸入之字串與刪除母音後之字串同時列印於報表。
測試資料:(請將下列文章存於檔案中,以讀檔案的方式來設計程式)
\" He Sells Sea Shells by the Seashore.\"
\" I don't know how to Complete the testing Program.\"
\" The men who spead ill of others will take no
advantage of others in the last.\"
86.請設計一程式能將任一正整數N(1<=N<=10)分解為小於或等於N
之。正整數之和,並按反字典之次序印出。所謂反字典次序意指與英文字
典之排列次序相反,即先印大再印小,例如N=6,其列印之次序如下:
6=6
6=5+1
6=4+2
6=4+1+1
6=3+3
6=3+2+1
6=3+1+1+1
6=2+2+2
6=2+2+1+1
6=2+1+1+1+1
6=1+1+1+1+1+1
上述例題之排列從行而言是由大而小,從列而言也是由大而小,請列印測
試資料:N=6,N=8之結果以便批改。
87.試設計一程式,能檢驗輸入的四點(X1 Y1),(X2 Y2),(X3 Y3),(X4 Y4)
是否可構成一直立矩形。所謂直立矩形乃指矩形之兩雙對邊分別平行於X
軸及Y軸。(請參看附圖),若此四點無法成為一直立矩形則電腦會\"嗶\"
一聲並要求使用者重新輸入四點,若此四點可成一直立矩形則將此四點存
於陣列中並在螢幕上繪出此直立矩形。當電腦連續收集兩個直立矩形時,
你的程式將能分辨此二矩形是相交(Intersect),分離(Disjoint)包含
(Contain)。請將結果顯示於螢幕,除此外,你要將輸入矩形之坐標及辨
別之結果列印以便批改。
Y軸 (5,8)
│ ┌──────┐(10,8)
│ │ │
│ │ │
│ │ │
│(2,4) │ │
│ ┌───┼─┐(6,4) │
│ │(5,3) └─┼────┘ (10,3)
│ └─────┘ (6,3)
│(2,2)
└───────────────> X軸
圖例
88.四則運算...
程式設計一個程式可以算出包含下列條件的任意一個數學式。
(1) 可算出+,-,×,÷。
(2) 可算出含有括號( )之式子。
(3)可算出上式1及2之混合式子。
上述1至3項皆須合於數學規則,第2項則只要含一組括號即可,也就是說
可以不必顧及括號內還有括號之情況。
測試資料:
(1) 1325+17×61-279÷48。
(2) 1376-379+12579-(35761×2-3761)
89.大數加法,兩個100位數以內的數字相加,列印出結果。
90.大數減法,兩個100位數以內的數字相減,列印出結果。
91.大數乘法,兩個100位數以內的數字相乘,列印出結果。
92.大數除法,兩個100位數以內的數字相除,列印出結果。
93.輸入一篇文章(字數可能多於256字),;分析文章中每一單字出現之次數,
並按出現次數之高低,依序列印出所有單字及其出現次數。
註:單字由空格、逗號、句號或換行等字符分開。
以下列文章測試之(請將下列文章存於檔案,以開檔的方式讀取)
MACHINE LANGUAGE IS THE BASIC LANGUAGE UNDERSTOOD BY THE
COMPUTING MACHINE. MOST COMPUTERS HAVE REGISTERS IN THE CPU
THAT ARE SIMILAR TO THE REGISTER IN THE DESK CALCULATOR.
THEY ARE CAKKED ACCUMULATORS BECAUSE THEY ARE USED TO ACCUMULATE
THE INTERMEDIATE RESULTS. THE CPU CAN BE TOLD TO LOAD A NUMBER
INTO ITS ACCUMULATOR FROM A SPECIFIC CELL IN THE MEMORY, TO ADD,
SUBTRACT, MULTIPLY, OR DIVIDE THE NUMBER IN THE ACCUMULATOR BY A
NUMBER FROM MEMORY, OR TO STORE A NUMBER FROM THE ACCUMULATOR
INTO MEMORY.
94.一群士兵分編成如圖所示若干大隊,每一大隊又分成若干小隊,其中
1、2、3、4、5、6、7表大隊,s、p、d、f等表小隊,s小隊最多可編入2人
,p小隊6人,d小隊10人,f小隊14人,編隊方式則從1s小隊開始,按箭頭
方向所示,前一小隊編滿額後還有人未編隊時則編入後一小隊,至全部編
完為止。作一程式輸入士兵人數N,N<100,列印出每一大隊及各小隊編隊
之人數。
例:輸入N=11,則輸出可以適當格式表示,1s小隊編2人,2s小隊2人,
2p小隊6人,3s小隊1人,第1大隊2人,第2大隊8人,第3大隊1人。
以下引N測試之:8,29,55,57,79,92。
1s
↓
2s→ 2p
↙
3s → 3p 3d
↙ ↙
4s 4p 4d 4f
↙ ↙ ↙
5s 5p 5d 5f
↙ ↙ ↙
6s 6p 6d
↙ ↙
7s 6p
↙
8s
95.輸入兩帶分數P1 r1/q1 與P2 r2/q2,pi,ri,qi(i=1,2)都是整數,
求此二分數之和,經化為最簡分數後以帶分數印出。
以下列分數組測試之
1/2 + 2/3 5 1/4 + 3 1/4 3/8 + -3/8 6 2/9 + 4 1/3
4/7 + 2/0
96.試依照下列的條件設計考生成績分配狀況的條形圖。
(1) 成績共區分為十個等級,從0至9,10至19,20至29,30至39,40至49
,50至59,60至69,70至79,80至89,90至100。
(2) 輸出的形式如下圖所示,一個*號代表二個人,奇數人數時則以進位計
算,同一等級以不超過50人為條件。
(3) 當輸入資料為999時代表資料的完了。
00--09 **
10--19 ****
20--29 ******
30--39 *****
40--49 *********
50--59 *********.****
60--69 *********.*********.**
70--79 *********.******
80--89 ******
90--100 ****
(4)測試用的輸入資料為:
72,81,54,68,75,42,85,60,27,66,79,32,94,6,45,83,67,61,38,65,72,
56,67,15,90,72,67,53,48,79,42,65,72,58,100,75,67,82,52,65,72,
45,82,75,35,75,68,50,12,78
97.輸入兩個一組的十六進位正整數(X,Y),X,Y各數最多為4位(即16 bit),計
算每組數的AND,OR,和(SUM)與差(DIFFERENCE),將X,Y值及運算結果以
2進位形式列印出來。計算和與差時其最高位之進位、借位可以忽略。
測試數據:(48,90),(F3,76),(48,93)(21,74)
98.假設有一生物在長100寸之旗桿的中間點上做上下移動。其移動之規律依照
天候而變,若為晴天則當天只向下移動一寸,陰天不動,雨天則當天只向
上移動,假設晴天、陰天、雨天出現之機率分別為5/10,3/10,2/10,試
設計一程式模擬該生物之運動,求出50天後該生物所在之位置距離頂點多
遠,及移動之總距離。試模擬5次,印出每次結果並求其平均值。
99.試設計一程式,利用二分逼近法求一數值a之開7次方根。
所謂二分逼近法,解釋如下:
設某數x位於線段A。B。=[a。﹐b。]內,(亦即a。≦x≦b。),
vhbdi vfhaehjhneA。B。等分為兩段,亦即[a,(a。+ b。)/2]和
[(a。+ b。)/2,b。];而把x所在的那一段稱為A1B1=[a1,b1]
(如果x=(a。+ b。)/2,則任取其中一段),換句話說,
當a。≦x≦(a。+ b。)/2時,a1=a。,b1=(a。+ b。)/2,
當(a。+ b。)/2≦x≦b。時,a1=(a0+b0)/2,b1=b。,這樣逐次二等分
而縮小範圍,就可得到x,此法為二分逼近法。
留言列表