lawpalyer logo

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

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

0 題選擇題 + 9 題申論題

不限使用語言,設計一程式,計算兩正整數的最大公因數,輸入兩正整數a 和b, 輸出a 和b 的最大公因數。(25 分)
試寫一函式(function):int SumOfDigits(int n)。若n 為正整數,則該函式傳回n 以十進位表示法的所有位數中數字的總和。(30 分) 例如:若int n = 1236;int k=SumOfDigits(n);則k 的值為1+2+3+6 也就是等於12。 若int n = 58;int k=SumOfDigits(n);則k 的值為5+8 也就是等於13。
下列片段程式執行完畢後 請列出第40 行所有可能出現的A 值。(15 分) 請列出第50 行所有可能出現的B 值。(10 分) 10 RANDOMIZE (TIMER) 20 A = INT(RND * 10) 30 B = INT((A + 1) / 2) * 2 40 PRINT A 50 PRINT B 程式說明: 指令 說明 RANDOMIZE(TIMER) 以時間當亂數種子選取亂數表 INT( NUMBER ) 對NUMBER 取整數 RND 為亂數產生器,數值範圍介於0 至小於1 之間的浮點數
請利用第一題的SumOfDigits(n) 函式,撰寫一程式解決以下問題:輸入兩個正整數 A 和B,已知A 不大於B,找出所有大於等於A 且小於等於B 的正整數n 中,可 以被SumOfDigits(n) 傳回值整除者。 例如:若n=100;int k=SumOfDigits(n);則k 的值為1,k 可以整除n。 請撰寫一程式將所有符合上述條件的正整數一一在螢幕上印出,一行恰好印一個。 (15 分)
請寫一遞迴程式(recurisive program) 計算n!(即n! = n ... 3 2 1 × × × × ,n 是由外界輸入的一個大於1 的整數)。(25 分) 96 年公務人員特種考試身心障礙人員考試試題 代號: 類 科: 資訊處理 41240 全一張 (背面)
撰寫一程式解決以下問題:(25 分) 輸入:三個正整數n、m 及d;已知n > 2*d 且m > 2*d。 輸出:在螢幕印出如下由星號(*)組成之n 行m 列每條邊厚度均為d 之空心長方形 圖案;所謂長方形某一條邊的厚度是指該邊的星號線條數。 例如:若n=10 , m=8 , d=2 則印出: ********** ********** ** ** ** ** ** ** ** ** ********** **********
請比較在32bit 平台上的資料型態「float」(單精度)與「double」(倍精度)在 表示實數上會有何不同。(15 分) 在32bit 平台上的「無號整數」(UNSIGNED INTEGER)是以32 個位元表示。 在16bit 平台上的「無號整數」(UNSIGNED INTEGER)是以16 個位元表示。 請嘗試說明上述兩種資料型態分別可以表示幾個整數。(5 分) 請比較下面兩個程式,那一個執行的結果會最接近999.999。(5 分) //程式甲 #include <stdio.h> int main(void) { float num=999.999; printf("%f \n",num); return 0; } //程式乙 #include <stdio.h> int main(void) { double num=999.999; printf("%lf \n",num); return 0; }
若把某數列的i 個值紀錄為f(i),已知f(1)=1 , f(2)=2 , f(3)=3 , f(4)=5;且若i>4 則 f(i) = 3 * f(i-1) + 5 * f(i-3)。撰寫一函式(function):int fun(int n)。若輸入之n 為正 整數,則輸出f(n)。並用Big-O 符號分析執行該程式的時間及空間複雜度。(30 分)
(1)
(2)
(3)
(4) 30 分
請用C 語言,寫出用隨機亂數產生一個大於0 且小於100 的隨機正整數的程式碼。 (10 分)