高普考題庫
94 年 094年公務人員高等考試三級考試暨普通考試第二試

程式設計概要

本卷皆為申論題,點「看答案與解析」查看擬答。

申論 1請撰寫一程式,由使用者自標準輸入讀入一大於5 之正整數n,印出如下由星號(*)組成之正方形圖形。該正方形之邊長為n,且第i 列之第i 行亦有一星號。列印程式需使用類似C 語言printf(“*”)指令以列印單一星號,及迴圈指令組成。(25 分)* * * * * * * * * ** * ** * ** * ** * ** * ** * ** * ** * ** * * * * * * * * *
申論 2請寫出以下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);}科 別: 資訊處理科 目: 程式設計概要
申論 3請寫出一個函數,其輸入為兩可能不等長但已排序好之整數陣列nums1[]及nums2[],及其長度length1 及length2,而其輸出為將兩輸入陣列合併成另一已排序好之陣列result[]。若以C 語言撰寫,則以下為其宣告。(25 分)void merge(int nums1[], int length1, int nums2[], int length2, int result[]);
申論 4請根據以下步驟撰寫一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()執行結果為:若以C 語言撰寫,則以下為其宣告。void find_same(int nums1[], int length1, int nums2[], int length2);(提示:先運用另一陣列儲存兩陣列中相同的數字再呼叫printonce())