2021年4月9日 星期五

計概15-09C程式語言-統測試題

【四技試題】

B01.關於程式語言,下列敘述何者正確? (A)Python語言的翻譯採用直譯器,不需要翻譯成機器碼就可以直接執行 (B)C程式在編譯器翻譯完之後產生目的碼,數個目的碼(Object Code)連結之後可以變成執行檔(.exe) (C)Java撰寫時直接採用目的碼(Object Code)來撰寫,因此稱為物件導向式語言(Object Oriented Programming Language) (D)JavaScript語言屬於Java語言的一種,可以嵌入在HTML中,不需要編譯器,但需要直譯器來翻譯之後才能執行。[109資電]

 

B02.C語言開發程式的敘述,下列何者錯誤? (A)程式需要經過編譯及連結產生可執行檔,才能夠執行 (B)使用#include前置處理命令時,命令結尾需要加上分號 (C)main()是一個函式,程式執行時從main()函式開始執行 (D)單行註解可用2個斜線(//)開頭。[111資電]

 

D03.關於C程式語言中,使用define建立常數的方式,下列何者正確? (A)define PI = 3.14; (B)define PI 3.14; (C)#define PI = 3.14 (D)#define PI 3.14[111資電]

 

A04.關於C程式語言的資料型態,下列敘述何者錯誤? (A)float資料型態可以儲存浮點數,數值精確度跟double資料型態相同 (B)宣告int資料型態可以儲存整數資料 (C)double資料型態可以儲存浮點數值 (D)宣告char資料型態可以儲存字元符號。[111資電]

 

B05.下列C語言程式碼片段執行後,xy的結果為何? (A)x3y3 (B)x3y3.5 (C)x3.5y3 (D)x3.5y3.5[111資電]

int x, a = 7, b = 2;

float y;

x = a/b;

y = (float)a/b;

 

C06.下列C語言程式碼執行後,其結果為何? (A)1 (B)2 (C)14 (D)15[111資電]

#include < stdio.h >

int main( )

{

  int a = 9, b = 7;

  printf( "%d", a^b );

  return 0;

}

 

D07.C語言之運算子優先權順序,下列運算式的結果,何者為真(true) (A)!(1!=3) || 1==3 (B)1!=3 &&!! (1==3) (C)!(1<3) || 1>=3 (D)1<3 &&! (1>=3) (C)!(1<3) || 1>=3 (D)1<3 &&! (1>=3)[111資電]

 

D08.下列C語言程式碼片段執行後,變數y的值為何? (A)45 (B)46 (C)47 (D)48[111資電]

int y, a = 45;

if( a >= 60 )

  y = a + 1;

else if( a >= 50 )

  y = a + 2;

else

  y = a + 3;

 

C09.下列C語言程式碼片段執行結果,變數total的值為何? (A)4 (B)8 (C)16 (D)28[111資電]

int i, total = 0;

for( i = 1; i < 8; i += 2 )

  total += i;

 

D10.下列C語言程式碼片段執行結果,變數y的值為何? (A)42 (B)30 (C)12 (D)6[111資電]

int y, r, a = 30, b = 42;

r = a%b;

while( r != 0 )

{

  a = b;

  b = r;

  r = a%b;

}

y = b;

 

C11.下列C語言程式碼執行後變數Sum的值為何 (A)3 (B)4 (C)5 (D)6[111資電]

#include < stdio.h >

int main( )

{

  int Sum = 0, Array[4] = {1, 2, 3}, i;

  for( i = 1; i < 4; i++ )

    Sum += Array[i];

  printf( "%d", Sum );

  return 0;

}

 

D12.下列C語言程式碼執行後,輸出為何? (A)a (B)b (C)abcde (D)bcde[111資電]

#include < stdio.h >

int main( )

{

  char Str[] = "abcde";

  char *ptr = Str;

  printf( "%s", ++ptr );

  return 0;

}

  

C13.下列C語言程式碼片段執行後變數result的值為何 (A)0.0 (B)7.0 (C)7.5 (D)15.0[111資電]

 

D14.若要利用C語言寫一個BMI函式,此一函式接收傳入兩個整數資料,經計算後回傳的數值必須有小數點後至少兩位數精確度,BMI函式的原型宣告應為下列何者? (A)double BMI(); (B)void BMI(int, int); (C)int BMI(int, int); (D)float BMI(int, int);[111資電]

 

C15.關於C語言中結構(structures)資料型態的敘述,下列何者錯誤? (A)結構是一種自行定義的資料型態 (B)宣告結構資料型態的變數時,只能使用已定義的結構名稱宣告 (C)定義結構只能使用不同資料型態的變數 (D)定義結構只能使用struct關鍵字。[111資電]

 

16.《哈利波特》系列小說中,哈利與榮恩相約一起前往倫敦「國王十字車站」,準備搭乘霍格華茲特快列車前往霍格華茲魔法與巫術學院,下列問題需要您協助解決。

C16-1.假設哈利與榮恩想從倫敦以南的薩里郡搭車前往倫敦「國王十字車站」,其規劃之旅行步驟如下:

步驟1:步行前往「沃金車站」,搭乘往「倫敦滑鐵盧車站」的火車。

步驟2:在「倫敦滑鐵盧車站」下車,轉乘前往「綠色公園車站」的區間車。

步驟3:在「綠色公園車站」下車,轉乘前往「聖潘克拉斯車站」的地下鐵。

步驟4:在「聖潘克拉斯車站」下車,步行前往「國王十字車站」。

若您要使用C語言撰寫一個路徑規劃程式,協助哈利與榮恩在91日上午11點前抵達「國王十字車站」,下列敘述何者錯誤 (A)C語言屬於需要編譯器(Compiler)的高階程式語言 (B)可使用循序結構(Sequence)完成步驟1~4的路徑規劃程式 (C)編寫程式時,不小心將步驟3"在「綠色公園車站」下車",寫成"在「中央公園車站」下車",此疏失屬於語法錯誤(Syntax Error) (D)本項路徑規劃程式不一定需要使用GPS定位功能。

A16-2.哈利與榮恩順利登上霍格華茲特快列車,車廂上有販售柏蒂全口味豆與巧克力蛙兩種甜點,售價都為80元,若相同甜點同時買兩件,則第二件甜點售價打8折,哈利與榮恩兩種甜點都分別各買一個,下列哪一個程式敘述可以正確計算並顯示他們兩位的甜點消費合計總金額? (A)printf ("\ n 甜點總價 =% f \ n", (80 + 80 * 0.8) * 2); (B)printf ("\ n 甜點總價 =% f \ n ", (80.0 + 80.0) * 2 * 0.8); (C)printf ("\ n 甜點總價 =% f \ n ", (80 + 80 * 80 / 100 * 2)); (D)printf ("\ n 甜點總價 =% f \ n ", (80.0 + 80.0) * 1.6);[111管理]

 

17.圖是針對堆疊(stack)分別操作資料的推入(push)及彈出(pop)C語言程式碼片段,堆疊以整數陣列來儲存,top表示目前堆疊中頂端資料的陣列索引,例如當top=10的時候表示堆疊中共有11筆資料,依照程式碼判斷,回答下列問題。

C17-1.當堆疊滿的時候,總共可以儲存多少個整數? (A)N1 (B)N2 (C)N (D)N×2

C17-2.當堆疊已經空的時候,top的值應該為多少? (A)0 (B)1 (C)1 (D)2[111管理]

 

18.物聯網的應用中,感測器的每一筆資料的數值會落在1127之間,假設取得的感測資料數量為221筆,圖所示的C語言程式碼片段是用來計算感測資料的平均數,假設其中int16-bit有號整數型態,float為浮點數型態,char8-bit有號整數型態,回答下列問題。

B18-1.[空格]內應該採用哪一種陣列變數宣告才能夠估計正確的平均數? (A)sensorData[N–1] (B)sensorData[N] (C)sensorData[i] (D)sensorData[220]

B18-2.平均數的計算方式中,下列何者取得的平均數較為精確? (A)average1 (B)average2 (C)average3 (D)average4[111管理]


19.聯合國收集某一年度四個國家/組織之二氧化碳排放量數據如表所示,

根據圖()C語言程式碼,依序完成本題組相關問題。

()

A19-1.若要將表內的所有數據列印到螢幕如圖()所示,則圖()C語言程式碼在行號第14行的[空格甲]敘述應填寫的內容為何? (A)carbon[i][j] (B)carbon[i] (C)carbon[j] (D)carbon[j][i]

()
B19-2.若要輸出表「項目3.人均碳排放量()」最高的數值,則圖()中的C語言程式碼在行號第16-18[空格乙]應填寫的敘述為何?

 

C20.你正在使用個人電腦測試一個用C語言撰寫的程式專案,當電腦正執行此程式時,若電腦要完成程式中「printf("Hello World!\n");」敘述的執行結果,下列何者是此敘述必須使用到的設備? (A)鍵盤 (B)滑鼠 (C)螢幕 (D)麥克風。[112管理]

printf("Hello World!") 螢幕輸出"Hello World!"

\n 換行

 

21.擬計算1到正整數n之累加和,即sum = 1 + 2 + 3 + … + (n - 2) + (n - 1) + n, n > 1,使用C語言分別以下列二種不同方式實現之。

A21-1.實作方式一的程式片段如圖所示,空格部分應填入的程式碼為下列何者? (A)(1 + n) * n / 2 (B)n * n / 2 (C)n / 2 (D)1 + … + n

#include <stdio.h>

int main( )

{

int n, sum;

scanf("%d", &n);

sum = 空格; (1 + n) * n / 2 [(上底+下底) * / 2]

printf("%d", sum);

return 0;

}

C21-2.實作方式二的程式片段如圖所示空格部分應填入的程式碼為下列何者 (A)1 + … + n (B)sum + n (C)sum + i (D)sum + 1[112管理]

#include <stdio.h>

int main( )

{

int n, sum, i;

scanf("%d", &n);

sum = 0;

for (i = 1; i <= n; i++)

  sum = 空格;sum + i (累加)

printf("%d", sum);

return 0;

}

 

22.小華放假參加校外工讀,負責在公園入口計算入園民眾人數的工作,民眾成群結隊進入公園,小華想要設計電腦程式來提升工作效率與統計的正確性,因此先規劃如圖所示的程式流程圖,依此流程圖回答後續程式設計相關的問題。

B22-1.使用C程式語言來撰寫此電腦程式,若宣告一整數變數S來儲存累計的入園人數,同時宣告另一整數變數K來暫存每次輸入的入園人數,下列哪一個變數初始化敘述,是可以確保程式正確統計入園人數? (A)K = 0; (B)S = 0; (C)S = K + 1; (D)K = S - 1;

D22-2.承前題的結果,有關輸入人數及人數統計的程式敘述,可以使用下列哪一組來完成? (A)scanf("%d", K); S = S + 1; (B)scanf("%d", &K); S = S + 1; (C)scanf("%d", K); S = S + K; (D)scanf("%d", &K); S += K;[112管理]

 

23.小明打算使用C語言實作一個密碼鎖程式,讓使用者必須正確地輸入所設定的4個密碼數字,才能開啟該密碼鎖。根據C語言的程式設計規則,依序完成本題組相關問題。

A23-1.小明預計使用迴圈結構讓使用者可以至少輸入密碼一次,若使用者輸入密碼錯誤,則程式可讓使用者重新輸入密碼,圖為對應的操作流程圖,該流程圖屬於哪一種迴圈結構? (A)do…while (B)for (C)foreach (D)while

A23-2.根據下列的密碼鎖設定程式碼,密碼鎖所設定的密碼為何? (A)4 8 2 6 (B)1 5 7 3 (C)2 6 4 8 (D)3 7 5 1[112管理]

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

  int num_1 = 1, num_2 = 5, num_3 = 7, num_4 = 3;

  int pad_num[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

  num_1 = pad_num[1][0] 陣列1, 元素0 4

  num_2 = pad_num[2][1] 陣列2, 元素1 8

  num_3 = pad_num[0][1] 陣列0, 元素1 2

  num_4 = pad_num[1][2] 陣列1, 元素2 6

  printf("\n 密碼設定為 %d %d %d %d \n", num_1, num_2, num_3, num_4);

  system("PAUSE");

  return 0;

}


 24.為保障旅客購買「早鳥優惠票」的權益,維持優惠公平性,某高鐵公司宣布,即日起實施「早鳥優惠票」記名制,於購票時即須輸入使用該「早鳥優惠票」旅客之身分證字號,每張「早鳥優惠票」僅限輸入之身分證字號本人搭乘使用。小明想要使用C/C++語言實作某高鐵購票程式,回答下列題組問題。

D24-1.小明預計使用一個C/C++語言變數來直接儲存購票者輸入的10碼完整身分證字號,最適合的變數資料型態是下列何者? (A)整數 (B)字元 (C)浮點數 (D)字元陣列。

A24-2.為了符合C/C++語言的語法,小明不可以使用下列何種方式命名身分證字號變數? (A)包含特殊字元的變數名稱,例如id# (B)包含底線(_)的變數名稱,例如id_number (C)與變數用途有關的變數名稱,例如idnumber (D)變數名稱中的數字字元位於首字元之後,例如idnumber1

B24-3.假設某高鐵原始票價變數名稱為priceprice為整數資料型態,且預設值為1480,下列哪個程式碼無法算出打8折後的早鳥優惠票價?

(A)int price = 1480;

printf ("8折後的早鳥優惠票價為% 4 d", (int)(price * 0.8));

(B)int price = 1480;

printf ("8折後的早鳥優惠票價為% 4 d", (int)(price % 80));

(C)int price = 1480;

printf ("8折後的早鳥優惠票價為% 4 d", (int)(price / 1.25));

(D)int price = 1480;

printf ("8折後的早鳥優惠票價為% 4 d", (int)(price * 80 / 100));[113管理]

 

25.參考C/C++語言的程式碼,回答下列題組問題。

A25-1.當行號第9行程式碼執行完成時,變數X內數值為何? (A)2 (B)3 (C)5 (D)6

D25-2.當行號第10行程式碼執行完成時,變數Y內數值為何? (A)2 (B)3 (C)5 (D)6

D25-3.當本程式完成執行後,輸出結果為何? (A)臺中 (B)高雄 (C)臺北 (D)雲林。[113管理]

 1  #include <stdio.h>

 2  int multiple (int c) {

 3    return c * 2; →③3 * 2 = 6

 4  }

 5  int main() {

 6  int X = 5;

 7  int Y = 4;

 8  int city = 3;

 9  X = X - city; X = 5 – 3 = 2

10  Y = multiple(city); →②multiple(3); Y = 6

11  if (city % 4 == 1)

12    printf("臺北");

13  else if (city % 4 == 2)

14    printf("臺中");

15  else if (city % 4 == 3) 3 % 4 == 3

16    printf("雲林"); ⑥輸出"雲林"

17  else

18    printf("高雄");

19  return 0;

20  }


【二技試題】

D01.下列有關C程式語言中常數的敘述,何者正確? (A)一個C語言的常數對應一個記憶體的位址 (B)定義C語言常數時需要指定常數的型態(type) (C)C語言常數的命名習慣是以小寫字母命名 (D)C語言的Preprocessor會把常數的名稱替代成實際的值。[91管理]

 

C02.下列有關C語言變數的敘述,何者不正確? (A)儲存區域變數的記憶體,在程式執行的不同階段,可能會使用不同的位址 (B)全域變數的位址,在程式執行時不會改變 (C)在一個檔案中使用extern這個保留字,可以在這個檔案中定義一個可以被其他檔案使用的全域變數 (D)函數的名字屬於extern這個儲存類別(storage class)[91管理]

 

C03.下列有關C程式偵錯的描述,何者不正確? (A)C語言不能在編譯時間(compile-time)找出所有變數型態誤用的錯誤 (B)指標誤用的錯誤在程式執行時才會出現 (C)C的編譯器可以找到陣列存取超越界線(array reference out of bound)的錯誤 (D)語法錯誤在程式編譯時就會出現。[91管理]

 

B04.以下是一段以C語言撰寫的程式碼:

if f1( ) {

  f2( );

} else

  0;

其中f1( )f2( )傳回的值不是0就是1,而且f1( )在執行時會將全域變數x的值加1;而f2( )在執行時會將全域變數x的值乘2。以上C的程式碼與下列選項的C程式碼的執行效果與傳回值都相同? (A)f1( ) || f2( ) (B)f1( ) && f2( ) (C)f2( ) && f1( ) (D)f2( ) || f1( )[91管理]

 

C05.下列程式執行後,最後結果X = (A)X = 0 (B)X = 2 (C)X = 4 (D)X = 12[92電機]

X = 16;

Y = 12;

while (Y > 0) {

T

T

F

  Z = X mod Y;

16 mod 12 = 4

12 mod 4 = 0

 

  X = Y;

X = 12

X = 4

 

  Y = Z ;

Y = 4

Y = 0

 

}

print(X);

 

A06.如果我們欲判斷一個整數是否為質數(prime),則以下C程式的第8行空格應為何選項? (A)if(i >= n) return 1; (B)if(i == (n - 1)) return 1; (C)if(n > i) return 0; (D)if(i == 2) return 1;[92管理]

1 /* n為質數,is_prime(n)將傳回1;否則is_prime(n)將傳回0*/

2 int is_prime(int n)

3 {

4 int i;

5 if(n < 2) return 0;

6 for(i = 2; i < n; i = i + 1)

7if(n % i == 0) break;

8 _________

9 else return 0;

10 }

 

A07.執行下列的C程式片段後,ab的值分別為何? (A)a3, b5 (B)a3, b6 (C)a4, b5 (D)a4, b6[92管理]

int a = 3, b = 5;

if((a == 4) && (b++)) a++;

 

C08.執行下列的C程式後,將產生何種現象? (A)程式無法編譯(compile) (B)程式無法連結(link) (C)程式會產生除以零(division by zero)的例外(exception) (D)程式會進入無窮迴圈,無法結束。[92管理]

#include <stdio.h>

Int foo(int x)

{

  if(x == 0) return 0;

  return x / foo(x - 1);

}

main()

{

  Print f("%d\n", foo(2));

}

 

B09.考慮下列的C程式片段:

void change(int *array, int length)

{

  int i, tmp;

  for(i = 0; i < length; i = i + 3)

  {

    tmp = array[i];

    array[i] = array[i + 1];

    array[i + 1] = array[i + 2];

    array[i + 2] = tmp;

  }

}

今假設有一整數陣列a[6] = {1, 2, 3, 4, 5, 6}在呼叫change(a, 6)則整數陣列a的內容為何 (A){1, 2, 3, 4, 5, 6} (B){2, 3, 1, 5, 6, 4} (C){3, 1, 2, 6, 4, 5} (D){6, 5, 4, 3, 2, 1}[92管理]

 

C10.考慮以下的C程式片段

int data[3] = {2, 4, 9};

int *a, *b;

a = &data[0];

b = a + 1;

則下列敘述何者正確 (A)a的位址(address)data的位址相同 (B)a + 1的位址與b的位址相同 (C)*b的值為4 (D)*(a + 2)的值與data[3]的值相同。[93管理]

 

B11.考慮以下的C程式片段:

int a[4][5], b[3];

change( &a[3][0], b[2] );

其中副程式change( )的宣告如下:

void change(, ) {*x = 3 * y;}

change( )中的兩個空格的第①格應填入下列何者最為恰當? (A)int x (B)int *x (C)int **x (D)int x[ ][ ][93管理]

 

A12.試問下列C程式語言之i, j, k輸出值為何? (A)i = 2, j = 3, k = 20 (B)i = 8, j = 12, k = 20 (C)i = 2, j = 3, k = 4 (D)i = 8, j = 12, k = 4[93護理]

#include <stdio.h>

int i, j, k

main ( ) {

        void compute( );

        int i = 2, j = 3, k = 4;

        compute( );

        printf (“i = %d, j = %d, k=%d\n”, i, j, k);

       }

void compute( ){

              int i, j;

              i = 2 * k; j = 3 * k; k = i + j;

             }

 

A13.若變數i為整數資料型態,則下列C語言程式片段中,printf敘述(statement)共執行幾次? (A)0 (B)1 (C)10 (D)無限多。[94管理]

for(I = 10; I == 0;)

printf("%d", i--);

 

A14.有一C語言程式片段如下:

int a[20], *p = a;

*(p + 6)所表示之意義為何? (A)陣列元素a[6]的值 (B)陣列元素a[6]的位址 (C)陣列元素a[7]的值 (D)陣列元素a[7]的位址。[94管理]

 

B15.陣列a宣告為a[10][20][30],若a[1][1][1]為其中第一個元素,a[1][1][2]為第二個元素,則a[5][5][5]為第幾個元素? (A)2524 (B)2525 (C)3154 (D)3155[94管理]

 

C16.下列程式片段

int fn(int N)

{

 if (N <= 1)

   return N;

 else

   return fn(N - 1) + fn(N - 2) + 1;

}

fn(6)值為何? (A)13 (B)15 (C)20 (D)22[95管理]

 

C17.C語言中,

Struct node {

int data ;

struct node *p ;

} ;

最適合下列哪一種的資料結構? (A)矩陣 (B)二元樹 (C)串列 (D)網路。[96管理]

 

C18.C語言中,宣告下列變數及初值,

int p = 2, q = 3 ;

p *= q++ ;

則運算結果p = (A)2 (B)4 (C)6 (D)8[96管理]

 

C19.C語言中,定義一函式,

int fcn(int n) {

if (n == 1) return 1 ;

else return n + fcn(n - 1) ;

}

fcn (5) = (A)5 (B)10 (C)15 (D)120[96管理]

 

B20.C語言中

int z = 0 , c;

for (c = 1; c <= 5; c = c + 2) {

 z = z + c * 2 ;

}

則執行結果z = (A)10 (B)18 (C)20 (D)30[96管理]

 

A21.C語言中,

int m = 4 , p ;

p = ((m > 5) ? 4 : 2) ;

則執行後,p = (A)2 (B)3 (C)4 (D)5[96管理]

 

main() {

int a;

func(&a);

}

func(a) {

int *a;

*a=*a+1;

return;

}

C22.如圖所示,主程式main()將參數a傳入副程式func()內,試問此種參數傳遞法應為 (A)傳向量呼叫法(call by vector) (B)傳值呼叫法(call by value) (C)傳址呼叫法(call by reference) (D)傳名呼叫法(call by name)[97電機]

 



 

D23.有一遞迴程序(recursive procedure)如圖所示,則RecursiveFunc(4)之值等於多少? (A)1 (B)11 (C)15 (D)26[97電機]

Procedure RecursiveFunc(K)

Begin

  If K = 1, Return 1;

  else RecursiveFunc(K) = 2 * RecursiveFunc(K - 1) + K;

End

RecursiveFunc(1) = 1

RecursiveFunc(2) = 2 * 1 + 2 = 4

RecursiveFunc(3) = 2 * 4 + 3 = 11

RecursiveFunc(4) = 2 * 11 + 4 = 26

 

A24.下列何者是執行C程式片段後,dude的結果值? (A)8 (B)4 (C)2 (D)16[97管理]

int apple = 1, boy = 2, car = 8, dude = 32;

dude /= car = boy + 1 + apple;

 

C25.執行下列C程式片段後,p[2]的值為何? (A)2 (B)3 (C)4 (D)5[98管理]

int i, x[5], * p;

for (i = 0; i < 5; i++)

  x[i] = i + 1;

p = x + 1;

 

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。