lawpalyer logo

資訊處理 94 年程式設計概要考古題

民國 94 年(2005)資訊處理「程式設計概要」考試題目,共 8 題 | 資料來源:考選部

0 題選擇題 + 8 題申論題

請設計一個程式,輸入N 個正整數,然後輸出一個三角形陣列,其中相鄰兩元素之 差取其絕對值後置於所對應兩元素之上面。例如輸入89, 78, 12, 13,其輸出結果如 下:(25 分) 10 55 65 11 66 1 89 78 12 13
請撰寫一程式,由使用者自標準輸入讀入一大於5 之正整數n,印出如下由星號 (*)組成之正方形圖形。該正方形之邊長為n,且第i 列之第i 行亦有一星號。列 印程式需使用類似C 語言printf(“*”)指令以列印單一星號,及迴圈指令組成。 (25 分) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
請設計一個程式,輸入一串文字,然後將文字串中之所有子字串“man"改為“person"、 “men"改為“persons"。(25 分)
請寫出以下C 程式執行之輸出。(25 分) #include <stdio.h> int nums1[] = {5, 7, 3, 1, 4, 7}, nums2[] = {5, 7, 3, 1, 4, 7}; void q(int nums[], int p, int r) { int x = nums[p] ; int i = p-1 ; int j = r+1 ; for( int n=p; n <= r ; n++ ) printf("%d ",nums[n]) ; printf("\n"); while( i < j ) { do { j-- ; } while( nums[j] > x ) ; do { i++ ; } while( nums[i] < x ) ; if( i < j ) { int tmp = nums[i] ; nums[i] = nums[j] ; nums[j] = tmp ; } for( int n=p; n <= r ; n++ ) printf("%d ",nums[n]) ; printf("\np=%d, i=%d, j=%d, r=%d\n",p,i,j,r); } } int main(){ q(nums1,0,5); q(nums2,0,5); } 94 年公務人員普通考試第二試試題 科 別: 資訊處理 全一張 (背面)
如果一個整數正讀與反讀均相同則稱為迴文,例如1991。請設計一個程式,輸入二 個正整數A 與B,其中A<B。然後輸出所有介於A 與B 之間之迴文。例如當A= 1000, B= 2000 時,其輸出結果如下:(25 分) 1001 1111 1221 1331 1441 1551 1661 1771 1881 1991
請寫出一個函數,其輸入為兩可能不等長但已排序好之整數陣列nums1[]及nums2[] ,及其長度length1 及length2,而其輸出為將兩輸入陣列合併成另一已排序好之陣 列result[]。若以C 語言撰寫,則以下為其宣告。(25 分) void merge(int nums1[], int length1, int nums2[], int length2, int result[]);
下列程式之輸出為何?(25 分) DIM R(10),X(10) N=4 FOR L=1 TO N READ X(L) NEXT L M=N FOR J=1 TO M R(J)=J NEXT J FOR N=1 TO M-1 P=N+1 : L=N FOR J=P TO M IF X(R(J))>X(R(L)) THEN L=J NEXT J Q=R(N) : R(N)=R(L) : R(L)=Q NEXT N FOR N=1 TO M PRINT R(N), X(R(N)) NEXT N DATA 1,3,-6,2 END
(10)
(10)
請根據以下步驟撰寫一find_same()程式。(25 分) 請寫出一個isin()函數,其輸入為一個陣列,其長度及要尋找的數字,若該數字存 在於陣列中則傳回1,否則傳回0。若以C 語言撰寫,則以下為其宣告。 int isin(int nums[], int length, int key); 請寫出一個printonce()函數,其輸入為一個陣列及其長度,printonce()函數呼叫 isin()函數,將輸入陣列中所有數字列印出來,但其限制為重覆出現的數字只能列 印一次。若以C 語言撰寫,則以下為其宣告。 void printonce(int nums[], int length); 撰寫一find_same()程式,其輸入為兩可能不等長之陣列nums1[]及nums2[],及其 長度length1 及length2。find_same()運用isin()以找出兩陣列中相同的數字,並運 用printonce()將其結果列印出來,以滿足重覆出現的數字只能列印一次的限制。 假設nums1[]包含{ 3, 5, 3, 2453, -7, 0},而nums2[]包含{ 2, 9, 3, -2, -7, 1, 2452}, 則find_same()執行結果為: 3 -7 若以C 語言撰寫,則以下為其宣告。 void find_same(int nums1[], int length1, int nums2[], int length2); (提示:先運用另一陣列儲存兩陣列中相同的數字再呼叫printonce())