第一部份:考題
一、請以程式語言之邏輯判斷以下五種情況為真或假(TRUE/FALSE)(若已知a=3, b=4, c=2, d=0):(每小題5分,共25分)
(一)’9’>= ’0’(二) ! d || ( b + c> a – c )
(三) a> b || b> c && a == b
(四)! ( c <>
(五)(a + b) != 5 || c > 3
二、請詳述C語言程式中fprintf與fwrite的差別,同時舉例並說明其正確用法。(25分)
三、請撰寫一段程式用以執行計算一組數據之mean(平均值)、median(中間值)與mode(模數)並顯示計算之結果,不限程式語言。(25分)
四、下列以C語言撰寫之程式段原是可以執行的,請找出所有語法錯誤之處,更正之,並列出執行結果:(25分)
int i, j = 2;
i = ( j = 3) && 1;
printf("%d %d\n", i, j)
i = -1 || ( j = 5);
printf("%d %d\n", i, j)
i = 0 || ( j = 5);
printf("%d %d\n", i, j)
二、請詳述C語言程式中fprintf與fwrite的差別,同時舉例並說明其正確用法。(25分)
三、請撰寫一段程式用以執行計算一組數據之mean(平均值)、median(中間值)與mode(模數)並顯示計算之結果,不限程式語言。(25分)
四、下列以C語言撰寫之程式段原是可以執行的,請找出所有語法錯誤之處,更正之,並列出執行結果:(25分)
int i, j = 2;
i = ( j = 3) && 1;
printf("%d %d\n", i, j)
i = -1 || ( j = 5);
printf("%d %d\n", i, j)
i = 0 || ( j = 5);
printf("%d %d\n", i, j)
第二部份:解答
考題解答講義範本下載點:
下載網址:http://cid-9b85fcf1a2874e79.skydrive.live.com/self.aspx/.Public/Answer%7C_DEMO/PD98-02%7C_DEMO.pdf
第三部份:講義
1:第一題考題綜合分析
1-1:考題編號:PD98-02-Q1-1~5
1-2:考題評析:
這種題目有一個很大的特色,就是運算子(略)就會對這樣的題目有準備,相對這一題25分,要拿滿分是絕對沒有問題的。
關於運算子的優先順序與結合性說明與參考表格,請詳見第四題補充資料。
1-3:解題說明:
PD98-02-Q1-1:此題主要是考是否瞭解程式語言的(略)
PD98-02-Q1-2:此題最特別的地方是程式語言在執行一行程式碼的時候,是由(略)
PD98-02-Q1-3:此題運算子優先順序如下:(略)
PD98-02-Q1-4:此題運算子優先順序如下:(略)
PD98-02-Q1-5:此題運算子優先順序如下:(略)
1-4:準備建議:
第一小題PD98-02-Q1-1,平常準備的時候,要記住的是(略)
1-5:補充資料:
運算子優先順序表,請參考第四題的補充資料。ASCII表如下:
1-6:完整程式碼:
#include //引入輸出輸入函式庫,才可使用cout物件(考題程式沒有)
using namespace std;//指定標準名稱空間,最新版本的C++編譯器可編譯(考題程式沒有)
int main() {
int a=3,b=4,c=2,d=0;
bool result; //記錄執行結果
(略)
system("pause"); //暫停執行結果的畫面,按任意鍵結束程式。 (考題沒有要求)
return 0;
}
---------------------執行結果------------------------
第一題第一小題:(一)'9'>='0'為(略)
第一題第二小題:(二)!d||(b+c>a-c)為(略)
第一題第三小題:(三) a > b || b > c && a == b為(略)
第一題第四小題:(四)! ( c <>
第一題第五小題:(五)(a + b) != 5 || c > 3為(略)
請按任意鍵繼續 . . .
2:第二題考題綜合分析
2-1:考題編號:PD98-02-Q2
2-2:考題評析:
這一題是在考二個觀念:
第一個觀念:(略)
第二個觀念:(略)
2-3:解題說明:
fprintf:(略)
fwrite:(略)
解題的一個重要原則就是(略),要得到高分滿分,舉(略)是不可少的必要步驟,不論考題是否有需要你(略)。因此此題本著這個精神,(略)
2-4:準備建議:
準備國家考試的方法之一就是針對(略)的準備,主要原因是出題老師在未來出題的時候,也會針對(略)。
考題觀念:(略)
2-5:補充資料:
補充資料一:(略)
(資料來源:http://(略)
補充資料二:(略)
2-6:完整程式碼:
#include
using namespace std;//指定標準名稱空間,最新版本的C++編譯器可編譯(考題程式沒有)
int main() {
char name[] = "Mary";
FILE *out_txt = fopen( "output_txt.txt", "w" ); /*開啟一個文字檔
(略)
return 0;
}
/*程式執行結果:
產生一個二進位檔,名稱為output_bin.txt,二進位檔內容為Mar。
產生一個文字檔,名稱為output_txt.txt,文字檔內容為Hello Mary。 */
3:第三題考題綜合分析
3-1:考題編號:PD98-02-Q3
3-2:考題評析:
這一題主要是在(略)
平均值是屬於(略)
中間值是屬於(略)
模數是屬於(略)
(備註:這一題目的”mode(模數)”有二個爭議點,(略)。)
這三個計算公式都很基本,只需要把這三個公式寫成所熟悉的程式語言即可。
3-3:解題說明:
本題一定要將(略),如此一來才不會因為程式寫錯而讓閱卷老師以為你不懂這(略)的計算方法。
其中因為mode(模數)是考(略)。
其中中位數的計算方式有分為(略)。
眾數的計算需要用到(略),將該索引值所指到的數據資料印出來。
3-4:準備建議:
題目最後一句話:(略)
建議準備(略)的基本名詞,可以見補充資料。
3-5:補充資料:
補充資料一:
(略)
補充資料二:
(1)算數平均數:(略)
(2)中位數:(略)
(3)眾數:(略)
舉例說明:
假設有一工廠的各級員工薪資如下:
職位 每月收入 人數
總經理 60000 1
經理 50000 1
主任 30000 2
(略)
3-6:完整程式碼:
#include //引入輸出輸入函式庫,才可使用cout物件(考題程式沒有)
using namespace std;//指定標準名稱空間,最新版本的C++編譯器可編譯(考題程式沒有)
int main() {
int data[]={23,34,34,41,56,69,69,69,98}; //數據資料
int n=9; //數據資料個數
(略)
int i,j,mode_count[n],mode_count_max,mode_index_max;
cout << "本組數據之內容為";
(略)
mode_count_max = 0;
for(i=0;i<=n-1;i++)
mode_count[i]=0;
for(i=0;i<=n-1;i++)
for(j=0;j<=n-1;j++){
(略)
system("pause"); //暫停執行結果的畫面,按任意鍵結束程式。 (考題沒有要求)
return 0;
}
---------------------執行結果------------------------
本組數據之內容為
(略)
請按任意鍵繼續 . . .
4:第四題考題綜合分析
4-1:考題編號:PD98-02-Q4
4-2:考題評析:
這一題很特別,主要考(略)個觀念。
第一個觀念是(略)
第二個觀念是(略)
第三個觀念(略)。重點在於每個運算子的(略),如果能把這個(略)寫出來,閱卷老師就瞭解你對程式設計的概念,有一定程度以上的基礎。
4-3:解題說明:
本題如果僅寫出(略),要拿到滿分25分,恐怕很困難。
所以一定要像本答案卷所寫的一樣,把執行結果(略)這樣才能顯示出對該題目的瞭解,比其他考生還多。
4-4:準備建議:
這一題為何比較特別的原因,就是結合性的考題,一般會考在(略),所以這一題未來的準備方式要著重在
1、(略)
2、(略)
3、(略)
4-5:補充資料:
運算優先權與結合順序
(略)
運算子 結合順序
( ) [ ] -> .
左到右
(略)
第二優先權裡的+-*&是所謂unary operator,其作用的目標只有一個。此處+表示正號,-表示負號,*表示由指標取值,&表示取變數的地址。以下是幾個運算式計算的過程:
2+3+4*5 其中*為第三優先權左結合,+為第四優先權左結合,因此*先做,再來是左邊的+,最後中間的+,整個的執行過程
2+3+4*5==>2+3+20==>5+20==>25
所以最後的結果是"int 25"
2+3+4*5.0 此處要注意的是5變成了5.0,也就是說這些常數並不是同一個型別,因此過程變成2+3+4*5.0 ==> 2+3+4.0*5.0 ==> 2+3+20.0 ==> 5+20.0 ==> 5.0+20.0 ==> 25.0最後結果為"float 25"
假設int x; float y;
x = y = 0;因為=是右結合,因此右邊的=號先做,而y的型別是float,常數0的型別是int,因
此過程如下
x = y = 0 ==> x = y = (float)0 ==> x = 0.0 ==> x = (int)0.0 ==> 0
最後結果為"int 0", 且x的內容為0,y變數的內容為0.0
最後強調上述範例的精神是,運算式最後的結果必然有型別,而且此結果是存放在ALU的暫存器內。雖然=運算符號會改變左側變數的內容,但整個運算過程的重點在於暫存器上的型態和大小。
4-6:完整程式碼:
#include //引入輸出輸入函式庫,才可使用cout物件(考題程式沒有)
using namespace std;//指定標準名稱空間,最新版本的C++編譯器可編譯(考題程式沒有)
int main() {
int i,j = 2;
(略)
system("pause"); //暫停執行結果的畫面,按任意鍵結束程式。 (考題沒有要求)
return 0;
}
---------------------執行結果------------------------
(略)
請按任意鍵繼續 . . .
留言
張貼留言