1.將
陣列內容設定如下:
陣列註標為偶數者為等比級數首項為1,公比為1.6,採四捨五入至整數,因此 x[0]=1、x[2]=2、x[4]=3、x[6]=4、x[8]=7... 陣列註標為奇數者為費式數列 a1=a2=1,an=an-1+an-2, 因此 x[1]=1、x[3]=1、x[5]=2、x[7]=3、x[9]=5... 程式請輸出 30 項,每個數據間空 1 格。 解答 |
|||||||||||||||||||||||||||||||||||||||||||||||||
2.
將長度為23的陣列內容設定如下:
從陣列註標 0 為起點設為1,每隔6個空間,在第7個空間設置前數字的接續值。 程式請從 註標 0 至 22 輸出陣列內容。
解答 |
|||||||||||||||||||||||||||||||||||||||||||||||||
3.某
二維陣列如同九宮格內容設定如下:
數字順序往右上方向設置,整個二維陣列如同球狀,上下相鄰且左右相鄰。 碰到已經設定數字的九宮格,則移動方向為「往後退 1 格」。 程式請輸出九宮格,每一個數字之間空一格。 (註:此陣列又名魔術方陣,九宮格內之橫、豎、斜的數字相加均為定值。 解答 |
|||||||||||||||||||||||||||||||||||||||||||||||||
4.某二維陣列內容設定如下:
程式輸入 2 個整數,第一個整數 若為 0 表示離開程式, 若為 1表示下一個輸入為 1 字元,程式搜尋姓名包含那個字元的所有人,並輸出該人之姓名、年齡、體重。 若為 2表示下一個輸入為 1 整數,程式搜尋年齡大於等於該整數的所有人,並輸出該人之姓名、年齡、體重。 若為 3表示下一個輸入為 1 整數,程式搜尋體重小於等於該整數的所有人,並輸出該人之姓名、年齡、體重。 以上搜尋若找不到符合的資料,則輸出 Not found 程式輸入 1.第一列為正整數 n (1≤n≤100),表示有 n 個人。 2.接著有 n×3 列,分別為每一個人的姓名(皆為大小寫字母組合,不超過10個字)、年齡(10 ~ 100)、體重(20~200)。 3.輸入完每人資料後,接著是輸入功能字元 ( 0 ~ 3)。 4.功能字元為 0,則後無資料。 若為1,則下一列為 1 字元(為大小寫字母)。 若為2,則下一列為一正整數。 若為3,則下一列亦為一正整數。 程式輸出 1.若為功能1,則程式必須先輸出 Name contains the character %c\n,%c 為欲搜尋的字元, 接著是輸出搜尋結果 。 2.若為功能2,則程式必須先輸出 Age above or equal to %d\n,%d 為欲搜尋的年齡, 接著是輸出搜尋結果 。 3.若為功能3,則程式必須先輸出 Weight less than or equal to %d\n,%d 為欲搜尋的體重, 接著是輸出搜尋結果 。 4.若搜尋未發現,程式必須輸出 Not found。 【範例】 本程式開發時,因測試資料繁複,因此建議使用既定資料,或讀取檔案方式,以避免煩雜的輸入。 下列題供文字檔供參考。 程式既定的資料。 程式讀檔方式。 測式文字檔。 程式讀檔方式解答。 程式解答。 |
|||||||||||||||||||||||||||||||||||||||||||||||||
5.某
文字邊碼規則如下:
1.輸入一串字 (大小寫字母、數字及鍵盤上其它字元),字串長度不大於 106。 2.輸入一整數 k (小於字串的長度) 3.字串依據輸入的整數將字串橫向排列長度為 k 的矩形文字 4.輸出縱向讀取的文字 範例; 1.輸入 ABC-(123456)+(DEF)*KH 2.輸入 4 3.文字橫向排列為 ABC- (123 456) +(DE F)*K H 4.縱向讀取文字得到新字串為; A(4+FHB15()C26D*-3)EK 範例; 1.輸入 ABCDEFGHIJKLMNOPQ RSTUVWXYZ 1234567890 2.輸入 7 3.輸出 AHOU18BIPV29CJQW30DK X4ELRY5FMSZ6GNT 7 測式文字檔1、測式文字檔2、測式文字檔2之解答。 程式讀檔方式解答。 程式陣列設定方式解答。 程式解答。 |
|||||||||||||||||||||||||||||||||||||||||||||||||
7.找
出陣列中交錯乘積的最大值及平均值
1.輸入 n 值(整數)表示下列有 n (2≤n≤10) 組陣列。 2.輸入 n 組數字(整數),第一位數字為該陣列共有 m 個數字 (1≤n≤10),以後 m 個數字為陣列值(以空格隔開)(1≤陣列值≤105)。 3.程式對於每一數字互相交錯相乘,並找到乘積最大者為何者相乘及所有乘積平均值取無條件捨去至整數。 【範例】 1.輸入整數 n 2 2.輸入編碼數字 2 組數字 3 5 11 7 4 1 9 7 12 3.交錯相乘的乘機分別是: 5 7 11 45 63 99 35 49 77 60 84 132 最大者為 (1,2) * (2,4) = 132 平均為 55 【範例】 1.輸入整數 n 3 2.輸入編碼數字 2 組數字 3 11 6 4 2 7 15 4 13 20 5 2 3.交錯相乘的乘機分別是: 77 42 28 165 90 60 143 78 52 220 120 80 55 30 20 22 12 8 91 195 140 300 35 75 14 30 最大者為 (2,2) * (3,2) = 300 平均為 83 測式文字檔1、測式文字檔2、測式文字檔2之解答。 程式讀檔方式解答。 程式陣列設定方式解答。 程式解答。 |
|||||||||||||||||||||||||||||||||||||||||||||||||
8.假
設有 2 個已經經過排序後的數列 a , b,而且 a,b 數列內的數字均不相同,如下所示:
a = 1 , 3 , 11 , 23 , 24 , 25 , 30 , 40 b = 3 , 5 , 11 , 19 , 30 請寫一程式計算 a , b 這兩組數列,相同的數字有多少 ? 以上為例,相同的數字有 a[1]、b[0] = 3, a[2]、b[2] = 11, a[6]、b[4] = 30,共三組。 1.程式輸入兩數列,數列開頭第一個數字表示該數列的總數量(不超過 105個),接著為該數列的每一個數字(不大於106),每個數字以空格格開。 2.程式輸出幾組相同的數字。 【範例】 輸入: 8 1 3 11 23 24 25 30 40 5 3 5 11 19 30 輸出: 3 程式既定的資料。 程式讀檔方式。 測式文字檔。 程式讀檔方式解答。 程式陣列設定方式解答。 程式解答。 |
|||||||||||||||||||||||||||||||||||||||||||||||||
9.假
設有 2 個已經經過排序後的數列 a , b,如下所示:
a = 1 , 3 , 11 , 23 , 24 , 27 b = 3 , 5 , 17 , 19 , 24 請寫一程式計算 a 數列的元素比 b 數列大的數量,以上為例, a 數列大於 b[0] 的個數為 11 , 23 , 24 , 27,共 4 個 a 數列大於 b[1] 的個數為 11 , 23 , 24 , 27,共 4 個 a 數列大於 b[2] 的個數為 23 , 24 , 27,共 3 個 a 數列大於 b[3] 的個數為 23 , 24 , 27,共 3 個 a 數列大於 b[4] 的個數為 27,共 1 個 所以總數為 4+4+3+3+1 = 15 個 1.程式輸入兩數列,數列開頭第一個數字表示該數列的總數量(不超過 105個),接著為該數列的每一個數字(不大於106),每個數字以空格格開。 2.程式輸出 a 大於 b 數列的數字,總共有幾個。 【範例】 輸入: 8 1 3 11 11 24 24 30 40 4 3 5 11 34 輸出: 17 測式文字檔1、測式文字檔2、測式文字檔2之解答。 程式讀檔方式解答。 程式陣列設定方式解答。 程式解答。 |
|||||||||||||||||||||||||||||||||||||||||||||||||
10.假
設有一經過排序後的數列如下:
2 , 2 , 2 , 3 , 6 , 6 , 6 , 6 , 11 , 12 , 15 , 17 ,17 請寫一程式計算哪一個數字數量最多。以上面數列為例,數字 6 的數量有 4 個為所有數字的最多數。(若有相同最多數量者,只要輸出最前面的即可) 1.程式輸入一數列,數列開頭第一個數字表示該數列的總數量(不超過 105個),接著為該數列的每一個數字(不大於106),每個數字以空格格開。 2.程式輸出最多數列的數字及其數量。 【範例】 輸入: 13 2 2 2 3 6 6 6 6 11 12 15 17 17 輸出: 6 4 【範例】 輸入: 8 3 4 4 5 6 8 8 9 輸出: 4 2 測式文字檔1、測式文字檔2、測式文字檔2之解答。 程式讀檔方式解答。 程式陣列設定方式解答。 程式解答。 |
|||||||||||||||||||||||||||||||||||||||||||||||||
11.假設有 2 個已經經過排序後的數列 a , b,而且 a,b 數列內的數字均不相同,如下所示:
a = 2 , 7 , 11 , 19 , 28 , b = 4 , 9 , 15 , 17 , 24 , 25 兩數列每一個元素的差值,我們稱為數列間的距離,程式請求出數列間的距離最小者。 a[1] 與 b 的距離分別為 |a[1]-b[1]|=2、|a[1]-b[2]|=7、|a[1]-b[3]|=13、|a[1]-b[4]|=15、|a[1]-b[5]|=22、|a[1]-b[6]|=23 a[2] 與 b 的距離分別為 |a[2]-b[1]|=3、|a[2]-b[2]|=2、|a[2]-b[3]|=8、|a[2]-b[4]|=10、|a[2]-b[5]|=17、|a[2]-b[6]|=18 a[3] 與 b 的距離分別為 |a[3]-b[1]|=7、|a[3]-b[2]|=2、|a[3]-b[3]|=4、|a[3]-b[4]|=6、|a[3]-b[5]|=13、|a[3]-b[6]|=14 a[4] 與 b 的距離分別為 |a[4]-b[1]|=15、|a[4]-b[2]|=10、|a[4]-b[3]|=4、|a[4]-b[4]|=2、|a[4]-b[5]|=5、|a[4]-b[6]|=6 a[5] 與 b 的距離分別為 |a[5]-b[1]|=24、|a[5]-b[2]|=19、|a[5]-b[3]|=13、|a[5]-b[4]|=11、|a[5]-b[5]|=4、|a[5]-b[6]|=3 由上可知 b[1]-a[1]=2 為最小值 1.程式輸入一數列,數列開頭第一個數字表示該數列的總數量(不超過 105個),接著為該數列的每一個數字(不大於106),每個數字以空格格開。 2.程式輸出最短距離及 a b 兩陣列註標(相同者以 a 最小值優先)。 輸入: 5 2 7 11 19 28 6 4 9 15 17 24 25 輸出: 2 1 1 【範例】 輸入: 7 4 10 11 16 24 25 31 4 1 7 14 19 輸出: 2 4 3 測式文字檔1、測式文字檔2、測式文字檔2之解答。 程式讀檔方式解答。 程式陣列設定方式解答。 程式解答。 |
|||||||||||||||||||||||||||||||||||||||||||||||||
12.假設有一數列 a ,有 n (不超過 106個) 個元素,若 a[0]+a[1]+...+a[i] = a[n-1]+a[n-2]+...+a[j],我們稱為【前後等值】,程式請計算 a 數列有多少組【前後等值】
1.程式輸入一數列,數列開頭第一個數字表示該數列的總數量(不超過 105個),接著為該數列的每一個數字(不大於106),每個數字以空格格開。 2.程式輸出多數組【前後等值】。 【範例】 若 a 數列為 2 , 3 , 6 , 5 , 4 , 8 , 3 則 a[0]+a[1]+a[2] = 11 = a[6]+a[5] a[0]+a[1]+a[2]+a[3]+a[4] = 20 = a[6]+a[5]+[4]+a[3] a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6] = 31 = a[6]+a[5]+[4]+a[3]+a[2]+a[1]+a[0] 共有三組【前後等值】 輸入: 7 2 3 6 5 4 8 3 輸出: 3 程式既定的資料。 程式讀檔方式。 測式文字檔。 程式讀檔方式解答。 程式陣列設定方式解答。 程式解答。 |
|||||||||||||||||||||||||||||||||||||||||||||||||
13.請在一個三維陣列中,找出失去的數字。
下列為一 3×4×2 陣列,陣列內容為 1 2 3 4 7 8 10 11 12 13 14 15 16 17 18 19 23 24 25 26 27 29 30 31 其中最大數字為31 (座標(1,3,2)),從 1 至 31 中,5 6 9 20 21 22 28 失落,請寫一程式找尋失落的數字,及最大未置的座標。 1.輸入矩型 寬 長 高 w l h (1≤w、l、h≤200),以空格隔開。 2.連續 h 列,每一列有 w 個數字(數字可重覆,且不大於106)以空格隔開。 3.程式依序輸出失落的數字。以空格隔開。若無失落的數字,請輸出 0。 【範例】 輸入 4 3 2 10 23 17 16 12 27 7 18 4 3 11 19 29 14 13 15 8 1 24 25 31 2 26 30 輸出 1 3 2 5 6 9 20 21 22 28 【範例】 輸入 5 4 1 5 7 11 9 22 2 4 21 10 3 27 4 1 16 15 17 1 22 7 18 輸出 1 3 1 6 8 12 13 14 19 20 23 24 25 26 測式文字檔1、測式文字檔2、測式文字檔2之解答。 程式讀檔方式解答。 程式陣列設定方式解答。 程式解答。 |
|||||||||||||||||||||||||||||||||||||||||||||||||
14.假設一數字 27271,分解其數字如下: |
|||||||||||||||||||||||||||||||||||||||||||||||||
15.寫一程式計算迷宮中移動次數。 下列圖一為一 3x3 迷宮,其中每一格都有一正整數,座標表達方式左上角為 0,0 往右依序為 1,0 2,0 (x 遞增) ,往下依序為 0,1 0,2 (y 遞增)。 假設迷宮起始點為 1,0 ,則迷宮中的數字為 1,也就是起始數字為 1,從起始數 字開始尋找周邊的數字,如果周邊出現比目前數字增加 1 者,將起始點往該數字移動,依此類推,請參考圖 2。 由圖 2 可知從起始數字 1 可移動至數字 5 (紅色箭頭移動方向)。因數字 5 周邊只有 7 與 9 (差值均超過 1), 因此移動終止。程式計算總移動次數為 4 (紅色箭頭數量)。
|
|||||||||||||||||||||||||||||||||||||||||||||||||
16.寫一程式輸出迷宮路徑。
小華是一個電影愛好者,昨日他看了一部移動迷宮的影片,影片情節描述一群人被一家公司當試煉品,丟在一個被迷宮包圍的圓形區域內,這一群人為了逃出圓型區域,他們必須找尋迷宮的出口路徑,因此他們挑選腳程比較快的跑者,每天日出晚歸的跑進迷宮抄寫路徑,直到有一天終於抄到完整的路徑了,但是因資料太複雜,所以必須寫一程式輸出路徑走法,5×6迷宮如下,說明隨後:
|
|||||||||||||||||||||||||||||||||||||||||||||||||
17.寫一轉置矩陣程式。
說明 矩陣 A 的轉置運算是把A的橫列寫為 AT 的縱行,把A的縱行寫為 AT 的橫列,即為所求。 輸入 1.程式輸入第一列為矩陣 A 的維度 m n (中間以空格隔開)。 2.第二列以後,連續 m 列,每一列有 n 個資料 (每個資料以空格隔開)。 3. 1≤m、n、k≤100。-106<陣列內的數值<106。 輸出 1.輸出 A 矩陣的轉置矩陣 AT 以下輸入輸出範例,可自行複製至程式碼中使用。 輸入 scanf("%d %d",&m,&n); for(i=0;i<m;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); 輸出 for(i=0;i<n;i++){ for(j=0;j<m;j++) printf("%d ",aT[i][j]); printf("\n"); } 【範例】 輸入 2 3 23 16 17 90 11 1 輸出 23 90 16 11 17 1 【範例】 輸入 2 2 5 11 0 8 輸出 5 0 11 8 測式文字檔1、測式文字檔2、測式文字檔2之解答。 程式讀檔方式解答。 程式陣列設定方式解答。 程式解答。 |
|||||||||||||||||||||||||||||||||||||||||||||||||
18.寫一矩陣相乘程式。
說明 矩陣最重要的運算方式為矩陣乘積。它只有在第一個矩陣的列數(column)和第二個矩陣的行數(row)相同時才有定義。一般單指矩陣乘積時,指的便是一般矩陣乘積。 若 A 為 m × n 矩陣,B 為 n × k 矩陣,則他們的乘積 AB(有時記做A·B)會是一個 m × k 矩陣。其乘積矩陣的元素如下面式子得出: 輸出其中 1≤i≤m,1≤j≤k 輸入 1.程式輸入第一列為矩陣 A 的維度 m n (中間以空格隔開)。 2.第二列以後,連續 m 列,每一列有 n 個資料 (每個資料以空格隔開)。 3.第 m+2 列是矩陣 B 的維度 n k,但因 n 必須與 A 的 n 相同故僅輸入 k 即可。 4.第 m+3 列以後,連續 n 列,每一列有 k 個資料 (每個資料以空格隔開) 。 5. 1≤m、n、k≤100。-106<陣列內的數值<106。 輸出 |
|||||||||||||||||||||||||||||||||||||||||||||||||
19.寫一程式計算克羅內克乘積。
說明 給定任兩個矩陣 A 和 B,我們可以得到兩個矩陣的直積,或稱為克羅內克乘積 A B ,其定義如下: |
|||||||||||||||||||||||||||||||||||||||||||||||||
20.寫一程式計算矩陣運算。
說明 給定任一個矩陣 A 及四個運算子(FH、FV、TL、TR)其定義如下:
輸入 1.第 1 列有三個自然數 r (A的總列數),c (A的總行數),t (操作 A 的運算子總數量)。(1≤r、c≤100,1≤t≤105) 2.第 2 列開始,總共有 r 列,每一列含有 c 個自然數 (範圍 0~9),每一個數字已空格隔開 。 3.第 r+2 列有 t 個 (0~3) 的整數,其中 0 表示 FH 運算、1 表示 VH 運算、2 表示 TL 運算、3 表示 TR 運算 輸出 1.第一列輸入 A 矩陣經過運算後的新的 r 與 c。(以空格隔開) 2.第二列以後為新的 A 矩陣資料,共 r 列,每一列有 c 個資料。(以空格隔開) A 矩陣的輸出方式,下列是範例程式,可複製至您的程式中使用。 for(i=0; i<r; i++) { for(j=0; j<c ;c++) printf(" %d ",a[i][j]); printf("\n"); } 【範例】 輸入 2 3 0 1 2 3 4 5 6 133 輸出 2 3 4 5 6 1 2 3 測式文字檔1、測式文字檔2、測式文字檔2之解答。 程式讀檔方式解答。 程式陣列設定方式解答。 程式解答。 |