2021年4月9日 星期五

計概15-09C程式語言-公職試題

【選擇題】

B01.下列C程式執行後的輸出為何? (A)1, 2 (B)1, 4 (C)2, 6 (D)4, 4[109地方四等資處]

#include <stdio.h>

int a = 3, b = 4; a = 3, b = 4

void fun(int a, int c) a = 1, b = 2

{

  a++;

  b += c; 2 + 2 = 4

}

int main(void)

{

  int a;

  a = 1; a = 1

  b = 2; b = 2 (b為全域變數)

  fun(a, b); fun(1, 2)

  printf("%d, %d", a, b); 1, 4

  return 0;

}

 

D02.執行下列C程式碼,若輸入值為2,則 (A)j = 0 (B)j = 3 (C)j = 9 (D)j = 27[109地方四等電子]

int i = 3, j, power;

scanf("%d", &power); 輸入2

switch (power) switch (2)

{

case 1:

  j = i;

  break;

case 2: 符合條件

  j = i * i; j = 3 * 3 = 9

case 3: 上一行沒有break繼續執行

  j = i * i * i; j = 3 * 3 * 3 = 27

  break; 跳出

default:

  j = 0;

}

 

B03.C語言程式中,陣列A宣告如下:

Int A[20][200];

程式中並有一行敘述如下:

*(A + 420) = 1000;

此敘述所執行的運算與下列何者相同? (A)A[4][20] = 1000; (B)A[2][20] = 1000; (C)A[20][2] = 1000; (D)A[2][2] = 1000;[109地方四等電子]

*(A + 420):陣列A的第420個元素

第一列A[0][200],第二列A[1][200],第三列A[2][20] = 1000

 

B04.執行下列C++程式碼後,螢幕印出的數字為何? (A)70 (B)105 (C)175 (D)245[109地方四等電子]

int main() {

  int i = 0, sum = 0;

  while(i < 100) {

    if((i%5 == 0) && (i%7 == 0)) 同時能被57整除

      sum+ = i; 35 + 70 = 105

    i = i + 1;

  }

  cout << sum << endl; 105

  return 0;

}

 

D05.執行下列C語言程式後,輸出為何? (A)10 (B)20 (C)30 (D)25[109地方四等電子]

#include <stdio.h>

int main() {

  int a = 0; a初始值是0

  switch (a) { switch (0)

    case 0: 符合條件

      a += 10; a = 0 + 10 = 10

    case 1: 上一行沒有break繼續執行

      a += 20; a = 10 + 20 = 30

    default: 上一行沒有break繼續執行

      a -= 5; a = 30 - 5 = 25

  }

  printf(“%d\n”, a); 25

  return 0;

 

D06.執行下列C++程式碼後輸出的字元為何 (A)p (B)q (C)P (D)Q[109地方四等電子]

Int main() {

  char c1 = 'm', c2 = 'p', c3 = 'N', c4;

  c4 = c3 - c1 + c2; 78 - 105 + 108 = 81

  cout << c4 << endl; 輸出Q

  return 0;

}

 

C07.執行下列C++程式碼後輸出的數字為何? (A)6 (B)8 (C)10 (D)12[109地方四等電子]

int main() {

  int B[] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20};

  int *p1 = &B[8]; &B[8] = 18的位址存放於*p1 = 8

  int *p2;

  p2 = p1 - 4; p1往前移動4個位址到p2也就是從18移到10

  cout << *p2 << endl;

  return 0;

}

 

C08.給定一個二維陣列A[9][6]且已知陣列的每個元素需要一個位元組的空間,假設A[1][1]為第一個元素並儲存在記憶體100的位址。若此陣列以行為主(column major)的方式存放在記憶體,則A[3][4]的位址為何? (A)115 (B)116 (C)129 (D)130[109身心五等]

A[i, j] = L0 + [(j - 1個元素之行) * 列數 + (i - 1個元素之列)] * 一個位址的元素大小

A[3, 4] = 100 + [(4 - 1) * 9 + (3 - 1)] * 1 = 129

 

C09.給予一個如下演算法A

Algorithm A(n)

  { if (n = 0) return 1;

    if (n = 1) return 1

else return 2 * A(n - 1) + A(n - 2) }

A(5)的回傳值何者正確? (A)29 (B)31 (C)41 (D)49[109身心五等]

A(0) = 1; A(1) = 1

A(2) = 2 * A(1) + A(0) = 3

A(3) = 2 * A(2) + A(1) = 7

A(4) = 2 * A(3) + A(2) = 17

A(5) = 2 * A(4) + A(3) = 41

 

B10.下列何者適合用來處理C程式在進行函式呼叫時所需儲存的狀態? (A)佇列 (B)堆疊 (C)二元樹 (D)擴張樹。[109身心四等]

函式呼叫通常採用呼叫堆疊(call stack)

 

A11.執行下列C程式後產生的輸出為何 (A)20 (B)30 (C)10 (D)3[109身心四]

#include <stdio.h>

int main(void)

{

  int a[] = {1, 2, 3}; a[0] = 1

  int *aptr = a + 1; a[1] = 2

  printf("%d", *aptr * 10); 2 * 10 = 20

  return 0;

}

 

B12.下列C++程式執行後所印出之結果何者正確? (A)*******  ******    *****      **** (B)*******  *****    ***      * (C)**** ***** ****** ******* (D)      *    ***  ***** *******[109身心四]

#include <iostream>  //C++ IO

using namespace std;

int main() {

  for(int i = 0; i < 4; i++) {

i = 0

i = 1

i = 2

i = 3

    for(int j = 2 * i; j > 0; j--) {

j = 0

j = 21

j = 41

j = 61

      cout << " ";

 

輸出2個空格

輸出4個空格

輸出6個空格

    }

 

 

 

 

    for(int j = 7; j > 2 * i; j--) {

j = 71

j = 73

j = 75

j = 7

      cout << "*";

輸出7*

輸出5*

輸出3*

輸出1*

    }

    cout << endl;

  }

  return 0;

}

 

B13.請問以下C語言程式碼最後印出的結果為何? (A)b = 16 (B)b = 17 (C)b = 20 (D)b = 21[109身心四]

#include <stdio.h>

#define A(x) (x + 1) * x + 1 A(a + 1) (a + 1 + 1) * a + 1 + 1

int main()

{

  int a, b;

  a = 3;

  b = A(a + 1); (3 + 1 + 1) * 3 + 1 + 1 = 17

  printf("b=%d\n", b);

}

 

D14.C程式語言中,關於陣列(array)的性質,下列何者錯誤? (A)陣列能有效率的使用性質相同的變數(variable) (B)陣列是由一群依序排列的元素(element)所組成 (C)撰寫陣列程式碼時可用相同的陣列名稱去存取一系列的變數 (D)同一陣列中的元素可儲存不同資料型別的資料。[109身心四等]

陣列:一群相同資料型態變數的集合。

 

B15.使用C程式語言宣告一個聯合(union)資料型態如下:

union unit

{

  char c;

  int value;

};

char型態與int型態的變數分別需要占用1個和4個位元組的空間,上述的union資料型態需要的空間是多少個位元組? (A)1 (B)4 (C)5 (D)6[109普考資處]

union需要的記憶體空間由最大的變數(4Bytes)決定。

 

B16.若一個一維陣列A,每個陣列元素占用二個記憶體位址空間,已知A[20]的記憶體位址為200,則A[10]的記憶體位址為何? (A)178 (B)180 (C)182 (D)184[109普考資處]

A[10]記憶體位址 = 200 - (2×10) = 180

 

C17.根據C語言的語法撰寫如下指令:「int temp[10][20];」,則下列敘述何者正確? (A)此指令無法被正確執行 (B)此結構裡的每個元素表示一個實數(浮點數) (C)此指令宣告一個可以存放200個數值的陣列 (D)存取此結構內個別元素所表示的值,所花的時間會和該元素在結構內的位置有關。[109普考電子]

(A)指令語法正確。(B)結構裡的每個元素為integer(C)陣列可存放10×20=200個數值。(D)存取陣列內個別元素的值,所花的時間一樣。

 

C18.在一C語言程式中,有一陣列A宣告如下:int A[10][200];已知每個int變數為4Byte,且A[0][0]的位址為1000。試問陣列元素A[5][30]的位址為何? (A)1400 (B)5000 (C)5120 (D)6200[109普考電子]

A[5][30] = 1000 + [(5 - 0) * 200 + (30 - 0)] * 4 = 5120

 

D19.下列指令何者錯誤? (A)char c = 0; int i = 1; I += c; (B)char c = 0; int i = 1; c = 2 * c - 1; (C)char c = 0; int i = 1; putchar(c); (D)char c = 0; int i = 1; printf(c);[109普考電子]

缺少輸出控制符號,可改為printf("%d", c);

 

D20.呼叫下列C函式時若傳入字串"To be or not to be, that's the question",則回傳值為何? (A)5 (B)6 (C)7 (D)8[109普考電子]

int fn(char *s)

{

  int num = 0;

  while (*s)

    if (*s++ == ' ') 字串中的空格有8

      num++;

  return num;

}

 

C21.下列C程式執行時若輸入下列6個字元:'1''2''3''4''5'以及'\n',則輸出為何? (A)12 (B)123 (C)1234 (D)12345[109普考電子]

void fn(char str[], int n)

{

  char ch;

  int i = 0;

  while (ch=getchar() != '\n')

1

2

3

4

5

    if (i < n)

0 < 4

1 <4

2 < 4

3 < 4

4 = 4

      str[i++] = ch;

'1'

'2'

'3'

'4'

''

  str[i] = '\0';

 

 

 

 

 

}

 

 

 

 

 

int main()

 

 

 

 

 

{

 

 

 

 

 

  char c[5];

 

 

 

 

 

  fn(c, 4);

 

 

 

 

 

  puts(c);

 

 

 

 

'1234'

  return 0;

}

 

C22.下列C程式執行後的輸出為何?

#include<stdio.h>

int main(void)

{

  int n=0;

  for(int i=0; i<100; i++)

    for(int j=0; j<=i; j++)

      n++;

  printf("%d",n);

  return 0;

} (A)4851 (B)4950 (C)5050 (D)5151[109關務四等]

1累加到100,輸岀結果5050

 

B23.C++宣告一個名為unknown的類別(class)如下圖所示。

class unknown {

private:

  int front, rear;

  int components[50];

public:

  unknown() { front = -1;

              rear = -1; };

  int get() { front = front + 1;

           return components [front]; }

  void put(int d) { rear = rear + 1;

                components[rear] = d; }

};

若接下來我們宣告uu為對應到該類別(class)的一個物件,再依序執行以下四個指令:uu.put(1)uu.put(2)uu.put(3)uu.get(),則所回傳的值為下列何者? (A)-1 (B)1 (C)2 (D)3[109鐵路員級]

佇列的先進先出原則,回傳值為1

 

A24.執行下列C程式,若輸入939577,產生的輸出為何? (A)7 9 (B)3 5 (C)3 7 (D)5 9[109鐵路員級]

int main()

{

  int a[10] = {0}, b, n;

  scanf("%d", &n);

  while (n > 0)

  {

    b = n % 10;

    a[b]++;

    n /= 10;

  }

    for (b = 0; b < 10; b++)

      if (a[b] > 1)

        printf("%d ", b);

      return 0;

}

n

n > 0

b = n % 10

a[b]++

n /= 10

939577

T

939577 % 10 = 7

a[7] = 1

939577 / 10 = 93957

93957

T

93957 % 10 = 7

a[7] = 2

93957 / 10 = 9395

9395

T

9395 % 10 = 5

a[5] = 1

9395 / 10 = 939

939

T

939 % 10 = 9

a[9] = 1

939 / 10 = 93

93

T

93 % 10 = 3

a[3] = 1

93 / 10 = 9

9

T

9 % 10 = 9

a[9] = 2

9 / 10 = 0

 

C25.下列C程式執行時若輸入為12abc34 56def78,則下列結果何者正確?

int i = 0, j = 0;

char s[10];

scanf("%d%s%d", &i, s, &j); (A)i = 0 (B)j = 34 (C)puts(s)將輸出abc34 (D)puts(s)將輸出abc[109鐵路員級]

%s格式輸入,兩資料間的分隔符號(空格、換行符號、TAB)不讀入,

i = 12s = abc34j = 56

 

D26.C語言中,若變數a, b宣告如下:int *a; int b[5];下列何者不是合法的C語言敘述? (A)a = b + 4; (B)*b = 10; (C)a = b; (D)b = a;[109鐵路員級]

只能寫a = b,不可顛倒。

 

C27.給定下列以C語言實作的函數A

int A(int m, int n)

{

  if (m == 0)

    return n + 1;

  else if (n == 0)

    return A(m - 1, 1);

  else

    return A(m - 1, A(m, n - 1));

}

請問呼叫A(2, 2)的回傳值應為多少? (A)5 (B)6 (C)7 (D)8[109鐵路員級]

Ackermann's函數演算法:

A(0, n) = n + 1

A(1, n) = n + 2

A(2, n) = 2 * n + 3 = 2 * 2 + 3 = 7

A(3, n) = 2 ^ (n + 3) - 3

 

A28.下列C語言程式執行後呈現的結果應為何者?

#include <stdio.h>

void swap(int a, int b)

{

  int temp;

  temp = a; a = b; b = temp;

}

int main()

{

 int a = 1, b = 2, c = 3;

  swap(a ,b); swap(b, c); swap(c, a);

  printf("a = %d, b = %d, c = %d\n", a, b, c);

} (A)a = 1, b = 2, c = 3 (B)a = 1, b = 3, c = 2 (C)a = 2, b = 3, c = 2 (D)a = 3, b = 2, c = 1[109鐵路員級]

傳值呼叫(Call by value):主程式的引數與副程式的引數不共用記憶體位址,不會影響實際值。

 

D29.執行下列C++程式碼後螢幕印出的數字為何 (A)14 (B)16 (C)18 (D)20[109鐵路員級]

int main() {

  int D[3][4] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24}; {{2, 4, 6, 8}, {10, 12, 14, 16}, {18, 20, 22, 24}};

  int *p1 = &D[0][3]; D[0][3] = 8的位址存放於*p1 = 4

  int *p2;

  p2 = p1 + 6; p1往後移動6個位址到p2也就是從8移到20

  cout<< *p2 <<endl;

  return 0;

}

 

B30.針對C++程式語言中的純虛擬函式(pure virtual function)下列敍述何者錯誤 (A)一個類別(class)如果含有純虛擬函式,則該類別無法用來建立一個物件(object) (B)一個類別如果含有純虛擬函式,則該類別無法繼承其他類別 (C)一個類別若繼承含有純虛擬函式的類別,可以選擇實作繼承的純虛擬函式,也可以選擇保持純虛擬函式不加以實作 (D)一個類別可以同時含有純虛擬函式與一般虛擬函式。[110地方四等資處]

純虛擬函式僅表示未來可以做到多形,不代表無法做繼承。

 

C31.關於C指令中的&|、以及^等運算式,下列那一個不會改變x的值?int x=100; (A)x&0 (B)x|1 (C)x^0 (D)x^1[110地方四等電子]

& and| or^ xor

x xor 0 = x

 

D32.下列的C++程式中,未使用下列何種技術? (A)inheritance (B)encapsulation (C)overriding (D)template[110地方四等電子]

#include <iostream>

using namespace std;

class A encapsulation封裝

{

private:

  int x;

public:

  int y;

  int get(void) {return x;}

};

class B: A inheritance繼承

{

public:

  int get(void) {return y+2;} overriding覆寫

};

int main()

{

}

 

A33.下列C程式迴圈執行完畢後,變數count的值為何? (A)120 (B)39916800 (C)3628800 (D)24[110地方四等電子]

#include <stdio.h>

int i;

int count=1;

int main() {

  for (i=1; i<=10; i++) {

1

2

3

4

    if(i%5==0) break;

 

 

 

 

    count *=(i+1);

1*(1+1)=2

2*(2+1)=6

6*(3+1)=24

24*(4+1)=120

    printf("%d\n", count);

  }

printf("%d", count);

return 0;

}

 

D34.下列C/C++語言程式碼片段,執行後應顯示為何?

int a=2;

switch(a)

{ case 1: printf("1#");

case 2: printf("2#");

case 3: printf("3#");

default: printf("0#");

  } (A)2# (B)2#3# (C)2#0# (D)2#3#0#[110地方四等電子]

沒有break;指令

 

D35.考慮下列的C語言函數宣告,然後呼叫f(4),函數的回傳值為何? (A)1 (B)4 (C)10 (D)24[110地方四等電子]

int f(int x) {

1

2

3

4

  if(x <= 1) return 1;

 

 

 

 

  else return (x * f(x-1));

 

2 * f(1) = 2

3 * f(2) = 6

4 * f(3) = 24

}

 

B36.下列C語言之遞迴函式,若呼叫執行f(4),將會輸出 (A)1000 (B)100 (C)10 (D)1[110地方四等電子]

void f(int n)

{

  if(n != 0)

    {

  }

}

n=4

n=2

n=1

0

      f(n/2);

f(2)

f(1)

f(0)

 

      putchar('0'+n%2);

0

0

1

 

輸出 100

 

B37.執行以下C++程式,螢幕上的輸出為何? (A)4#3 (B)3#4 (C)12#12 (D)FB(12)#FA(12)[110地方四等電子]

#include <iostream>

using namespace std;

class A {

  public: float FA(int input) {return input/3;} return 4

};

class B: public A {

  public: float FB(int input) {return input/4;} return 3

};

int main() {

  B object1;

  cout<<object1.FB(12)<<"#"<<object1.FA(12); cout 3#4

}

 

C38.C++程式語言,類別class FUN含有一個資料成員int me和公用方法。如果fclass FUN的物件變數,則f.getMe()的回傳值為何? (A)0 (B)1 (C)5 (D)10[110地方四等]

int getMe() {

  int me = 5;

  this->me = 10; f.me = 10

  return me; 5

}

 

C39.根據C語言的語法,若在宣告一個變數時前面加上下列那一種符號,則該變數就是指標變數? (A)% (B)/ (C)* (D)#[110身心五等]

指標變數之語法:型態 *指標變數;

 

A40.下列數字均為十進位表示法:一個以C語言構造的row major(以列為主)的三維陣列如下:int M[4][5][6];其中依據微軟設計,每一個int的大小占4Bytes。如果M[1][2][3]所在記憶體位址是200 ~ 203,則M[3][2][1]所在位址為何? (A)432 ~ 435 (B)472 ~ 475 (C)364 ~ 367 (D)128 ~ 131[110身心五等]

M[1][2][4] ~ M[1][2][6] 3 × 4 = 12

M[1][3][1] ~ M[1][5][6] 6 × 3 × 4 = 72

M[2][1][1] ~ M[2][5][6] 6 × 5 × 4 = 120

M[3][1][1] ~ M[3][2][1] 6 × 4 = 28

200 + 12 + 72 + 120 + 28 = 432

203 + 12 + 72 + 120 + 28 = 435

 

A41.如果想要直接控制硬體,但是不想使用低階語言,則使用下列那一種語言作為設計的平台最為適當? (A)C (B)COBOL (C)FORTRAN (D)Java[110身心五等]

C 語言中特有的指標,可以透過記憶體映射的方式直接控制硬體。

 

D42.C++程式中:using namespace std;下列有關這個指令的敘述,何者正確? (A)必不可缺,因為要指定命名空間 (B)必不可缺,因為C++語言設計上,是為多個團隊共同合作,因此需要命名空間 (C)可以不用,因為C++預設命名空間為"std" (D)可以不用,但是要使用特定指令時,要加註空間名稱。[110身心五等]

名稱空間會使得C語言複雜化,也沒有辦法完全解決名稱衝突的問題,盡量不要使用using namespace std

 

D43.一個C++程式片段如下:

void abc(int &x, int &y){y = x + 1;}

int main(){int a = 1, b = 5; abc(a, b); cout << a << b << endl;}

下列何者正確 (A)compile不會通過因為上述指令不符合C++語法 (B)compile會通過但執行會當機因為上述指令void abc(...){...}會干擾執行應改為int abc(){...} (C)會正常執行,列印出15 (D)會正常執行,列印出12[110身心五等]

a = 1, b = 5 abc(&x, &y) = abc(1, 5)

y = x + 1 y = 1 + 1 = 2 b = 2

(D)印出12

 

D44.一個C++程式片段如下:

int abc(int x){if (0 >= x) return 1; return abc(x - 1) + abc(x - 2);}

int main(){cout << abc(3) << endl;} (A)compile不會通過因為(0 >= x)不符合C++語法應該是(x <= 0) (B)compile會通過但執行會進入無窮遞迴。因為abc(int x){...}內,又再呼叫了2abc(...),如此不停呼叫,導致無法停止 (C)會正常執行,列印出3 (D)會正常執行,列印出5[110身心五等]

abc(-1) = 1abc(0) = 1

abc(1) = abc(0) + abc(-1) = 2

abc(2) = abc(1) + abc(0) = 1 + 2

abc(3) = abc(2) + abc(1) = 3 + 2 = 5

 

C45.下列C程式執行後的輸出為何?

#include <stdio.h>

int main(void)

{

 int a[4][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}};

 printf("%d", *((int*)a + 8));

 return 0;

} (A)3 (B)8 (C)9 (D)11[110身心四等]

(int*)aa[4][3]的第1個記憶體位置

*((int*)a + 8)a[4][3]的第9個記憶體位置

 

A46.依據一般常見的通用程式語言,下列的算術運算式所計算出來的值為何?3 * 4 % 6 + 4 * 5 (A)20 (B)22 (C)12 (D)30[110初考資處]

3 * 4 % 6 + 4 * 5 = 12 % 6 + 20 = 0 + 20 = 20

 

C47.依據下列C語言的程式片段,那一行程式碼可能永遠不會被執行到? (A)a = a + 5; (B)a = a + 2; (C) a = 5; (D)每一行都可能會執行。[110初考資處]

while (a < 10)

  a = a + 5; a <= 9執行

if (a < 12)

  a = a + 2; a <= 11執行

if (a <= 11)

  a = 5;

 

A48.大部分程式語言都是以列為主(row major)的方式儲存陣列。在一個8×4的二維陣列(array)A裡面(A為以列為主的方式儲存陣列),若每個陣列元素需要兩個單位的記憶體大小,且若A[0][0]的記憶體位址為108(十進制表示),則A[1][2]的記憶體位址為何? (A)120 (B)124 (C)126 (D)128[110初考資處]

A[0][4]A[1][2],記憶體位址 = 108 + (4 + 2) * 2 = 120

 

B49.下列的R()為一個C語言的遞迴函式片段,若R(3, 7)執行後,其回傳值為何? (A)128 (B)2187 (C)6561 (D)1024[110初考資處]

int R(int a, int x){

  if(x == 0)

    return 1;

  else

    return (a * R(a, x - 1));

}

R(a, 0) = 1

R(a, 1) = a * R(a, 0) = a * 1 = a

R(a, 2) = a * R(a, 1) = a * a = a2

R(a, 3) = a * R(a, 2) = a * a2 = a3

axR(3, 7) = 37 = 2187

 

C50.物件導向開發理論中,類別中的成員(即屬性與方法)都可設定其存取權限,對於存取權限的描述,下列那一項錯誤? (A)public的成員所有的類別都可以存取 (B)private的成員只有該類別可以存取 (C)protected的成員只有該物件可以存取 (D)protected的成員子類別可以存取。[110初考資處]

Protected的成員,限同一package成員直接存取,其它package的成員,必須透過繼承的方式,才可以在子類別中存取。

 

B51.給定下列一個C語言程式片段,其中s被宣告為全域變數(global variable),此程式執行後的輸出結果為何? (A)1, 6, 7, 7, 8, 8, 9 (B)1, 6, 7, 7, 8, 1, 9 (C)1, 6, 7, 8, 9, 9, 9 (D)1, 6, 7, 7, 8, 9, 9[110初考資處]

int s = 1;   //全域變數

s = 1

 

 

void add(int a){

 

int 1

 

  int s = 6;

//區域變數

s = 6

 

  for(; a >= 0; a = a - 1){

 

a = 1

a = 0

    printf("%d, ", s);

 

6

7

    s++;

 

s = 7

s = 8

    printf("%d, ", s);

 

7

8

  }

 

 

 

}

 

 

 

int main(){

 

 

 

  printf("%d, ", s);

1

 

 

  add(s);

 

 

 

  printf("%d, ", s);

 

 

1

  s = 9;

 

 

s = 9

  printf("%d", s);

 

 

9

  return 0;

}

 

D52.若輸入整數依序為0, 1, 2, 3, 4, 5, 6, 7, 8, 9,下列C語言程式片段的x[]陣列的元素值依順序為何?

int x[10] = {0};

  for(int i = 0; i < 10; i++){

    scanf("%d", &x[(i + 2) % 10]);

} (A)0, 1, 2, 3, 4, 5, 6, 7, 8, 9 (B)2, 0, 2, 0, 2, 0, 2, 0, 2, 0 (C)9, 0, 1, 2, 3, 4, 5, 6, 7, 8 (D)8, 9, 0, 1, 2, 3, 4, 5, 6, 7[110初考資處]

scanf("%d", &x[(i + 2) % 10]);,是i = 0時,x[2] = 0x[3] = 1x[4] = 2;…;x[0] = 8x[1] = 9

 

D53.求下列C語言遞迴函數值ds(5) = ?

int ds(int n)

{

if ( n <= 2)

  return 1;

else

  return (ds(n - 3) + ds(n - 2) + ds(n - 1) + 2);

} (A)5 (B)8 (C)16 (D)17[110初考資處]

ds0 = 1

ds1 = 1

ds2 = 1

ds3 = 1 + 1 + 1 + 2 = 5

ds4 = 1 + 1 + 5 + 2 = 9

ds5 = 1 + 5 + 9 + 2 = 17

 

B54.C語言中一個三維陣列a[9][10][11]一共含有多少元素 (A)720 (B)990 (C)1000 (D)1320[110國安五等]

9×10×11 = 990

 

B55.下列C程式執行後的輸出為何?

#include<stdio.h>

Int main(void)

{

int i, j, n = 0;

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

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

n++;

printf("%d", n);

return 0;

} (A)5050 (B)5151 (C)66 (D)55[110國安五等]

n為程式執行中j的次數,(1+101)×101÷2=5151

 

C56.請問以下之程式中,f(1542, 66)的值為何? (A)2 (B)4 (C)6 (D)8[110國安五等資處]

int f(int m, int n){

  if (n == 0) return m;

  else if (m >= n) return f(m - n, n);

  else return f(n - m, m);

}

m

n

n == 0

m >= n

f(m - n, n)

f(n - m, m)

1542

66

F

T

f(1476, 66)

 

|

|

 

 

 

 

90

66

F

T

f(24, 66)

 

24

66

F

F

 

f(42, 24)

42

24

F

T

f(18, 24)

 

18

24

F

F

 

f(6, 18)

6

18

F

F

 

f(12, 6)

12

6

F

T

f(6, 6)

 

6

6

F

T

f(0, 6)

 

0

6

F

F

 

f(6, 0)

6

0

T

m = 6

 

C57.請問以下的程式片段,最後的C值是多少? (A)20 (B)38 (C)65 (D)103[110國安五等資處]

A = 1; B = 2; C = 3;

Do

A

B

C

{

1

2

3

B = A + B;

1 + 2 = 3

1 + 2 = 3

3 + 3 + 3 = 9

A = A + 2;

3 + 2 = 5

3 + 3 = 6

5 + 6 + 9 = 20

C = A + B + C;

5 + 2 = 7

5 + 6 = 11

7 + 11 + 20 = 38

} while(A <= 10);

7 + 2 = 9

7 + 11 = 18

9 + 18 + 38 = 65

 

A58.給定下列一個C程式片段請問此程式執行後輸出為何 (A)83 (B)38 (C)85 (D)53[110國安五等資處]

int x = 5; //全域變數

void main()

{

  int x = 3;

x = 3

 

  m();

 

  printf("%d", x);

 

輸出3

}

 

 

void m()

 

{

 

 

  x = 8;

x = 8

 

  n();

 

}

 

 

void n()

 

{

 

 

  Printf("%d", x);

輸出8

 

}

 

D59.下列C++程式執行後的輸出為何? (A)1, 2 (B)2, 2 (C)2, 3 (D)3, 3[110普考資處]

#include <stdio.h>

int main(void)

{

  int *p1, *p2;

  p1 = new int;

  p2 = new int;

  *p1 = 1;

  *p2 = 2;

  p1 = p2; p1共用p2記憶體位置

  *p1 = *p1 + 1; *p1 = 2 + 1 = 3

  printf("%d, %d", *p1, *p2); 3, 3

  return 0;

}

 

B60.下列程式將新增幾個process(不含原process)

main()

{

  fork();

  fork();

} (A)2 (B)3 (C)4 (D)5[110普考電子]

     fork()       //執行第1fork()

    /     \      //變成2process

fork()    fork()  //執行以下的程式,共3process

 

C61.執行以下的C程式,結果為下列何者? (A)10:10-10:10 (B)10:10-10:11 (C)10:10-10:20 (D)10:10-20:20[110普考電子]

#include <stdio.h>

int main() {

  int data[] = {10,20,30,40};

  int *ptr = data; ptr = data[0] = 10*ptr指標用來存放data[]陣列的記憶體位址

  printf("%d:%d-", data[0], *ptr); 執行結果10:10-

  ptr++; 下一個位址data[0]+1 = data[1] = 20

  printf("%d:%d", data[0], *ptr); 執行結果10:20

}

 

B62.執行下列C++程式碼後,會輸出幾個'$' (A)15 (B)20 (C)25 (D)30[110普考電子]

int main() {

  int i = 0, j = 0;

  do{

    j = 0;

    do{

      if(i != j) cout<<'$';

        j++;

      }while(j < 5);

      i++;

    }while(i < 5);

    return 0;

}

i

j

$

說明

0

== 0

 

0等於0,執行i++;

 

!= 1, 2, 3, 4

$$$$

0不等於1, 2, 3, 4,輸出4$

1

!= 0

$

1不等於0,輸出$

 

== 1

 

1等於1,執行i++;

 

!= 2, 3, 4

$$$

1不等於2, 3, 4,輸出3$

2

!= 0, 1

$$

2不等於0, 1,輸出2$

 

== 2

 

2等於2,執行i++;

 

!= 3, 4

$$

2不等於3, 4,輸出2$

3

!= 0, 1, 2

$$$

3不等於0, 1, 2,輸出3$

 

== 3

 

3等於3,執行i++;

 

!= 4

$

3不等於4,輸出$

4

!= 0, 1, 2, 3

$$$$

4不等於0, 1, 2, 3,輸出4$

 

== 4

 

4等於4,執行i++;

合計輸出20$

 

C63.下列C++的部分程式碼,會產生何種問題? (A)程式語法的錯誤 (B)資料型態不相容的錯誤 (C)p1是迷途指標(dangling pointer) (D)p2是迷途指標(dangling pointer)[110普考電子]

int *p1 = new int;

int *p2 = new int;

*p2 = 40;

p1 = p2; p1記憶體位址指向p2記憶體位址

delete p2; p2被刪除,p1變成迷途指標

 

A64.執行以下的C程式,並輸入"aabbccd",程式的輸出為何?

#include <stdio.h>

int main() {

  char token;

  int n = 0;

  for (token = getchar(); token! = 'd'; token = getchar()){

    if (token == 'a' || token == 'b')

      continue;

    n++;

}

printf("%d", n);

} (A)2 (B)4 (C)6 (D)7[110普考電子]

 

D65.下列C程式執行的結果 (A)8 (B)6 (C)4 (D)2[110普考電子]

#include <stdio.h>

int main(void) {

  int i = 7;

  if (i < 10) i = 2; 7 < 10 成立,i = 2

  else if(i < 5) i = 6;

  else i++;

  printf("%d", i); 輸出2

  return 0; }

 

B66.執行下列C指令會輸出什麼

unsigned short i = 2, j = 1, k = 0;

printf("%hd", ~i & j ^ k); (A)0 (B)1 (C)2 (D)4[110普考電子]

10次方 = 1

2 AND 1 = 0

~(0) = not 0 = 1

 

D67.下列所定義之C語言的字串變數s,

char s[] = "Computer", *p;

for (p = s; *p; p++)

  --*p;

puts(s); (A)Computer (B)retupmoc (C)Bomputer (D)Bnlotsdq[110普考電子]

p = s p的記憶體位址移到s

p++ s[0]s[1]s[2]……

直到*p = 0(false)結束迴圈,*p = s[0]

--*p s[0]的字元-1ASCII-1

"Computer" "Bnlotsdq"

 

B68.下列C程式語言的指令執行完之後,會產生什麼輸出? (A)i = 120, j = 5 (B)i = 120, j = 6 (C)i = 128, j = 6 (D)i = 128, j = 7[110普考電子]

int i = 1, j = 1;

while (i < 100)

{

  i *= j++;

i

1

1

2

6

24

120

}

j

1

2

3

4

5

6

printf(“i=%d, j=%d, i, j);

 

C69.若執行以下 C++程式碼片段,則變數「sentence2」的值,為下列那個字串? (A)"ov" (B)"ve" (C)"ve Ta" (D)"ove T"[110普考電子]

#include <iostream>

using namespace std;

int main(){

  string sentence1 = "I love Taiwan";

0

1

2

3

4

5

6

7

8

9

  string sentence2 = sentence1.substr(4, 5);

I

 

l

o

v

e

 

T

a

i

  /*以下省略*/

}

 

C70.針對C++程式語言,下列敘述何者錯誤? (A)是一種高階程式語言 (B)是一種物件導向語言 (C)具有可攜性,使用C++編譯器得到的執行檔案可以直接拿到其他不同作業系統的機器上執行 (D)沒有內建垃圾收集(garbage collection)機制,程式設計者必須自行負責釋放已配置但已不再需要的記憶體空間。[110關務四等]

C++是高效率且可攜性佳的程式語言,可在修改少許程式碼的情況下,便能在不同的作業系統執行。

 

B71.執行下列C語言的程式,輸出結果為何?

void foo(int n1, int n2) {

  int temp;

  temp = n1;

  n1 = n2;

  n2 = temp;

}

  int main(void) {

  int x = 1, y = 2, z = 3;

  foo(x, y);

  foo(y, z);

  printf(“%d, %d, %d”, x, y, z);

} (A)2, 3, 1 (B)1, 2, 3 (C)2, 1, 3 (D)3, 2, 1[110鐵路員級]

傳值呼叫,不影響實際值,輸出結果為1, 2, 3

 

D72.根據以下的C++宣告,下列何者不是"ListB"類別的私有成員(private member)

class ListA {

  int first;

  public: void add(int);

};

class ListB: privateListA {

  int second;

  public: void put(int);

}; (A)first (B)add (C)second (D)put[110鐵路員級]

 

A73.如下所示之C程式,其輸出為 (A)cc = 0, xx = 2, yy = 0 (B)cc = 2, xx = 0, yy = 0 (C)cc = 1, xx = 0, yy = 2 (D)cc = 1, xx = 1, yy = 2[110鐵路員級]

#include<stdio.h>

int cc = 0, xx = 0, yy = 0;

int f1(int nn)

{

  static int cc = 0;

  int xx = nn;

  cc++;

}

int f2(int nn)

{

  static int cc = 0;

  int yy = nn;

  xx = nn;

  cc++;

}

int main(void)

{

  f1(1); cc, xx皆為區域變數,原值不變

  f2(2); cc, yy皆為區域變數,原值不變;xx為全域變數,xx = 2

  printf("cc = %d, xx = %d, yy = %d\n", cc, xx, yy); cc = 0, xx = 2, yy = 0

  return 0;

}

 

D74.下列C語言程式執行後產生的輸出為何 (A)10;10; (B)10;20; (C)20;20; (D)20;30;[110鐵路員級]

#include<stdio.h>

void unknown() {

(1)

(2)

static int x = 10;

x為靜態變數

x為靜態變數

  x = x + 10;

x = 10 + 10 = 20

x = 20 + 10 = 30

  printf(“%d;”, x);

20

30

}

 

 

int main() {

 

 

  unknown();

(1)

 

  unknown();

 

(2)

}

 

C75.假設a,b,c,d,e,f是類別CLS的六個物件變數(object variables),下列C++語言程式片段,a,b,c,d,e,f六個物件的建構(construct)順序為何?

void foo(void) {

  CLS a;

  static CLS b;

  &frac14;

}

CLS c;

int main(void) {

  CLS d;

  Static CLS e;

  if(1){CLS f; &frac14;}

  foo();

  &frac14

} (A)abcdef (B)defabc (C)cdefab (D)bcdefa[110鐵路員級]

C為全域變數,會先建構。

 

B76.C語言宣告一個名稱為FOX的二維陣列(Two-dimensional array),下列何者為正確的寫法? (A)array FOX[20][20]; (B)int FOX[20][20]; (C)int FOX[20,20]; (D)char FOX[20];[111地方四等電子]

C語言二維陣列語法:型態 陣列名稱[列數][行數];

 

D77.下列輸出何者正確? (A)2  1 (B)2  2 (C)2  3 (D)3  3[111地方四等電子]

int p = 1, *q = &p; P = 1*q = 1

p = ++*q; *q + 1 = 2p = 2

*q = ++p; p + 1 = 3*q = 3

Printf("%d %d", p, *q++); 輸出3  3

 

C78.假設已經宣告變數"x"和變數"next"為整數型態,然後執行下列的C程式。若輸入的內容為"2 1 0",則程式的執行結果為何? (A)2: (B)3: (C)3:2:1: (D)3:2:1:0:[111地方四等電子]

for(int x = 3; x != 0; x = next){

  scanf("%d", &next);

  printf("%d:", x);

}

x

輸入

next

printf

x = next

3

2

2

3:

2

2

1

1

2:

1

1

0

0

1:

0

0

結束執行

執行結果為3:2:1:

 

D79.執行以下C程式,則螢幕輸出為何? (A)Excellent (B)Good (C)Satisfactory (D)Normal[111地方四等電子]

#include <stdio.h>

int main(){

  char degree = 'u'; degree = 'u'

  int salary = 40000;

  switch (degree){

    case 'g': if (salary > 100000) 'u' 不等於 'g'

        printf("Excellent");

      else

        printf("Good");

      break;

    default: if (salary > 50000) salary = 40000 < 50000

        printf("Satisfactory");

      else

        printf("Normal"); 輸出 Normal

  }

}

 

C80.下列C語言程式的輸出,結果為何?

#include <stdio.h>

int main(void){

char member[ ][5] = {"Bill", "John", "Matt", "Alex", "Joe", "Jack"};

  printf("%c", member[3][2]);

return 0;} (A)a (B)A (C)e (D)J[111地方四等電子]

member[0] = "Bill"member[1] = "John"member[2] = "Matt"

member[3] = "Alex"member[4] = "Joe"member[5] = "Jack"

member[3][0] = "A"member[3][1] = "l"member[3][2] = "e"member[3][3] = "x"

 

C81.C指令定義一個名稱為EGA_colors的列舉型態,下列何者正確?

enum EGA_colors {BLACK, LT_GRAY=7, DK_GRAY, WHITE=15}; (A)printf("%d", BLACK); 會輸出1 (B)printf("%d", BLACK); 會輸出6 (C)printf("%d", DK_GRAY); 會輸出8 (D)printf("%d", DK_GRAY); 會輸出14[111地方四等電子]

enum的列舉成員,對應值預設由0開始

BLACK前面沒有對應值,對應值預設為0

LT_GRAY後續列舉成員沒有對應值,會自動加1DK_GRAY = 7 + 1 = 8

 

D82.下列那個C函式執行f(5)的呼叫結果,與其他3者不同? (A)int f(int n){ if (n==0) return 0; else return n+f(n-1);} (B)int f(int n){ if (n==1) return 1; else return n+f(n-1);} (C)int f(int n){ if (n>=1) return n+f(n-1); else return 0;} (D)int f(int n){ int a=0; while (n>1) a+=n--; return a;}[111地方四等電子]

 

B83.考慮下列的C語言程式:

#include <stdio.h>

int main(void){

  int a;

  printf("%d", a=strcmp("XYZ", "abc"));

  return 0;}

下列何者是這個程式的輸出結果? (A)編譯錯誤 (B)-1 (C)0 (D)1[111地方四等電子]

strcmp()函数:比較兩個字串

返回值 < 0,表示str1 < str2

返回值 > 0,表示str2 < str1

返回值 = 0,表示str1 = str2

Asc("X") = 88

Asc("a") = 97

"XYZ" < "abc" 輸出 -1

 

B84.執行下列C++程式碼後,螢幕印出的數字為何? (A)3 (B)4 (C)5 (D)6[111地方四等電子]

int f(int* m, int n){

  int tmp;

  tmp=*m; *m=n; n=tmp;

}

int main(){

a

b

c

d

e

g

  int a=1, b=2, c=3, d=4, e=5, g=6;

1

2

3

4

5

6

  f(&a,b); f(&c,d); f(&e,g);

2

2

4

4

6

6

  f(&a,c);

4

 

4

 

 

 

  f(&a,d);

4

 

 

4

 

 

  cout<<a<<endl;

4

 

 

 

 

 

  return 0;

}

 

C85.下列何者不是C++定義繼承關係的關鍵字? (A)private (B)protected (C)virtual (D)public[111地方四等電子]

(A)private:只有自己能看

(B)protected:只有子孫能看

(D)public:大家都可看

 

A86.請問下列程式執行結果為何? (A)6 6  8 4 (B)6 6  4 8 (C)6 6  10 2 (D)6 6  2 10[111身心五等]

#include <stdio.h>

void main(void){

  int x = 6, y = 6;

x = 6, y = 6

x = 8, y = 4

x = 10, y = 2

  while (x < 9){

6 < 9 True

8 < 9 True

10 < 9 False

    printf("%2d%2d", x, y);

6 6

8 4

 

    x += 2;

x = 8

x = 10

 

    y -= 2;

y = 4

y = 2

 

  }

}

 

B87.假設定義int a[2][3]={{1, 2}, {3, 4, 5}};則下列敘述何者錯誤? (A)a[0][0]=1 (B)a[0][2]=5 (C)a[1][1]=4 (D)a[1][2]=5[111身心五等]

 

0

1

2

0

1

2

 

1

3

4

5

 

D88.請問下列C程式執行結果為何? (A)241891203602115 (B)152421180961230 (C)031269018212415 (D)152106301291824[111身心五等]

遞迴函數,先* 3,再採後進先出列印。

 

C89.請問若執行foo(6)則會輸出幾個#符號?void foo(inti){if(i>1){foo(i/2);foo(i/2);}printf("#");} (A)3 (B)4 (C)7 (D)8[111身心五等]

i=6 輸出#

foo(3) 輸出##

foo(3) 輸出##

foo(1) 輸出##

 

C90.根據下列的C程式碼片段,請問sum++大約會執行幾次(N為大於1的整數) (A)N (B)2N (C)log2N (D)Nlog2N次。[111身心五等]

for (int k = 1; k < N; k = k * 2)

    sum++;

執行X次,k * 2XN

k = 12XN

使用log2Xlog2N

 

D91.下列是一個C程式碼,請問其輸出結果為何? (A)7 (B)18 (C)26 (D)無法執行,因編譯錯誤。[111身心五等]

#include <stdio.h>

int main()

{

  int n = 21;

  if (n > 16)

  {

    if (n > 32)

      printf("%d", n + 5);

    else

      printf("%d", n / 3);

  }

  else

  {

    if (n < -10)

      printf("%d", a * 2); a變數未宣告無法執行

    else

      printf("%d", a - 3); a變數未宣告無法執行

  }

  return 0;

}

 

D92.執行下列C程式後,產生的輸出為何? (A)0.5 (B)0.333 (C)編譯時出現錯誤 (D)執行時出現錯誤。[111身心四等]

#include <stdio.h>

main()

{

  int a[]={3, 0}; a[1] = 0

  int b[]={1, 2, 3, 10}; b[1] = 2

  printf("%d", b[1]/a[1]); 2 / 0,執行時會出現錯誤

}

 

A93.假設要撰寫一個C程式來處理學生資料,而每一個學生有兩類資料,第一類為其姓名、型態為字串,第二類為其班級排名、型態為整數,則應該使用C語言的何種型態來表示每一筆學生資料最合適? (A)struct (B)union (C)enum (D)double[111身心四等]

struct 結構名稱

{

  資料型態 欄位名稱1;

  資料型態 欄位名稱2;

};

 

B94.如下所示之C程式,其輸出為下列何者? (A)211 (B)2048 (C)22 (D)121[111身心四等]

#include <stdio.h>

int func(int a, int b)

{

  int p;

  if(b == 0) return 1;

  p = func(a, b / 2);

  p *= p;

  return (b % 2) ? a * p: p;

}

int main(int argc, char *argv)

{

  printf("%d\n", func(2, 11)); 遞迴函數211 = 2048

  return 0;

}

 

B95.執行下列C程式後,產生的輸出為何? (A)four one four two four (B)four one two three four two three four (C)one two three four two three four three four (D)four one two three four two three four three four[111身心四等]

#include <stdio.h>

int main(){

  int i;

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

0

1

2

    switch(i){

 

 

 

      case 0: break;

 

 

 

      case 1: printf("one");

 

one

 

      case 2: printf("two");

 

two

two

      case 3: printf("three");

 

three

three

    }

 

 

 

    printf("four");

four

four

four

  }

  return 0;

}

 

D96.對下列之C函式:

int f(char *s, char *t)

{

  char *p1, *p2;

  for (p1 = s; *p1; p1++)

  {

    for (p2 = t; *p2; p2++)

      if(*p1 == *p2) break;

    if(*p2 == '\0') break;

  }

Return p1-s;

}

若執行此函式呼叫f("abcd", "babc"), 所得到的回傳值為何 (A)0 (B)1 (C)2 (D)3[111身心四等]

 

D97.下列C程式的執行結果為何

int fn(char s[])

{

  int i = 0, num = 0;

  while (s[i])

  if (str[i++] == 'e')

    num++;

  return num;

}

int main()

{

  char c[] = "To be or not to be, that's the question";

  printf("%d", fn(c));

  return 0;

} (A)1 (B)2 (C)3 (D)4[111身心四等]

尋找字串中'e'的個數,有4個。

 

C98.執行下列C程式後,產生的輸出為何? (A)5, 5 (B)5, 25 (C)25, 5 (D)25, 25[111身心四等]

#include <stdio.h>

int f(int *a){

  int i, t;

  t= *a; t = 5

  for(i = 1; i < t; i++){

    *a += t; *a += 5,迴圈4次,5 + 5 * 4 = 25

  }

  return t; return 5

}

main(){

  int = 5, y = 0;

  y = f(&x); call by address

  printf(“%d, %d\n”, x, y); printf(“%d, %d\n”, 25, 5)

}

 

B99.給定以下類別定義

class A

{

  public:

    A(){  cout << ":::";  }

    A(int a){  cout << "***";  }

    A(int a, int b){  cout << "$$$";  }

  private:

};

若在main()中執行以下指令,

A v1; :::

A v2(1,2); $$$

A v3(3); ***

則將產生的輸出為何? (A)$$$*** (B):::$$$*** (C):::*** (D)$$$***[111身心四等]

 

C100.下列遞迴函數,當執行FR(51)後,回傳值為何?

int FR(int N){

  if(N <= 1) return1;

  else return N * FR(N/3);

} (A)3375 (B)4000 (C)4335 (D)5000[111初考資處]

51 * 51/3 * 17/3 * 5/3 * 1 = 51 * 17 * 5 * 1 * 1 = 4335

 

C101.對於下列C程式片段執行Cfun(3)的輸出內容,下列敘述何者錯誤? (A)輸出內容中有整數5 (B)輸出內容中有整數8 (C)輸出內容中有整數9 (D)輸出內容中有整數16[111初考資處]

void Cfun(int n)

{

  while(n != 1){

    n =(n%2)? 3*n+1 : n/2

    printf("%d", n);

  }

}

n

n%2

3*n+1

n/2

3

3 mod 2 = 1

3*3+1 = 10

 

10

10 mod 2 = 0

 

10/2 = 5

5

5 mod 2 = 1

3*5+1 = 16

 

16

16 mod 2 = 0

 

16/2 = 8

 

A102.執行下列C程式片段後,下列敘述何者正確?

for(i = j = k = 0; i < 5; i++, j++)

  k++;

  if(j%2 == 0) continue;

  k++;

  if(i%3 == 0) break;

}

prints("i = %d, j = %d, k = %d", i, j, k); (A)印出i = 3, j = 3, k = 6 (B)印出I = 3, j = 6, k = 10 (C)印出I = 6, j = 3, k = 6 (D)印出I = 6, j = 3, k = 10[111初考資處]

if (i%3 == 0 ) break; i = 3跳出迴圈,i, j同步加1i, j = 3k累加 = 3 * 2 = 6

 

B103.下列那一個邏輯運算,常被用來加速乘法運算? (A)AND (B)SHIFT (C)NOT (D)OR[111普考資處]

2<<3 2左移3

10 10000,輸出16

 

C104.執行下列C程式時

int len=0, num=0;

float sum=0;

while (ch=getchar()!='\n')

{

  if (ch!=' ')

    len++;

  else

    {

      sum+=len;

      len=0;

      num++;

    }

}

printf("%.1f",sum/num);

若輸入以下一段文字後再輸入換行鍵

It was deja vu all over again.

則輸出為 (A)1.2 (B)2.3 (C)3.4 (D)4.5[111普考電子]

sum = 18(.字元), num = 6(空格),輸出為3.0,無答案。

 

A105.執行下列C++程式碼後,螢幕印出的數字為何? (A)135 (B)180 (C)225 (D)270[111普考電子]

int main(){

  int i=0, sum=0;

  do{ 介於0~100之間

    if((i%5==0) && (i%9==0)) 可同時被59整除有4590

      sum+=i; 將兩數相加,45+90=135

    i=i+1;

  }while(i<100);

  cout<<sum<<endl; 135

  return 0;

}

 

A106.執行下列C程式碼片段後,會得到下列那個效果? (A)只有將變數head的值變大 (B)只有將變數tail的值變大 (C)headtail兩個變數的值都變大 (D)回傳headtail兩個變數相加的值。[111普考電子]

int head=2;

int *tail;

tail = &head; tail位址指向head

(*tail)++; tail位址+1head+1

 

C107.執行下列C語言的程式後,產生的輸出為何? (A)4 (B)99 (C)100 (D)101[111普考電子]

#include <stdio.h>

#include <iostream>

int main() {

  int x=100, c=4;

  if (c<5) {if (c < 3) x++;} 4<5成立

    else x--;

  printf("%d", x); 輸出100

}

 

D108.考慮以下的資料結構

定義及變數宣告:

typedef struct Node {

  char pile[6];

  struct Node* left;

  struct Node* right;

} node;

node n1, n2, *n3, *n4;

下列何者設定句會造成編輯錯誤? (A)strcpy(n1.pile, n2.pile); (B)n1.left=(*n3).right; n1.right=n4; (C)n4=(node *)malloc(sizeof(node)); (D)n2.left=&n1; n2.right=n4.left;[111普考電子]

(D)n2.left = &n1; n2.right = n4->left;

應該使用 -> 運算符號來訪問指針所指向的結構成員

 

D109.處理C語言中的char(字元)型態資料的指令,下列何者錯誤?char c; (A)c='A'; (B)c=2*c-1; (C)putchar(c); (D)printf(c);[111普考電子]

%c:顯示字元

printf("%c", 'A');  //輸出A

 

A110.下列C語言指令,何者可以將短整數變數i16個位元中的第4位元翻轉(01,或是10),且其他位元(1~3位元,以及第5~16位元)維持不變? (A)i^0x0008 (B)i&0x0008 (C)i|0x0008 (D)i+0x0008[111普考電子]

(A)^XOR(B)&AND(C)|OR(D)+:相加。

 

D111.執行下列C程式後,產生的輸出為何? (A)3-4;4-3; (B)3-4;3-4; (C)4-3;4-3; (D)4-3;3-4;[111普考電子]

#include<stdio.h>

void swap (int x, int y){ x = 3, y = 4

  int z;

  z = x; z = 3

  x = y; x = 4

  y = z; y = 3

  printf(“%d-%d;”, x, y); ⑥輸出4-3

}

void main(){

  int a = 3, b = 4;

  swap(a, b); a = 3, b = 4

  printf(“%d-%d;”, a, b); 輸出3-4

 

C112.C++程式語言中,下列何者為其「作用域解析運算子」(scope resolution operator) (A)<< (B)>> (C):: (D)->[111普考電子]

C++專有之作用域解析運算子「::

int num::n = 9;

int a = b::c;

 

C113.關於下列C語言中的有號短整數之處理,將產生何種輸出?

shorts = 32768;

printf("%hd%hd", s, ~s); (A)-32768 32768 (B)32768 32767 (C)-32768 32767 (D)32767 32768[111鐵路員級]

有號短整數之範圍:-32768 ~ 32767

 

C114.int a[6] = {1, 3, 5, 2, 4, 6}, *p = a, *q = a + 5, temp;

while (p < q)

{

  temp = *p;

  *p++ = *q;

  *q-- = temp;

}

for (p = a; p < a + 5; p++)

  printf("%d", *p); (A)123456 (B)654321 (C)642531 (D)246135[111鐵路員級]

*p = a p指向a[0]

*q = a + 5 q指向a[5]

*p++ = *q,分成2步驟

(1)*p = *q q指向位置的值放到p指向位置)

(2) p++ p指標右移一格

答案為64253

 

A115.以下迴圈指令

for (int i = 1; ++i < 10; i += 2)

  printf("%d",i);

執行後的輸出為何? (A)258 (B)2468 (C)13579 (D)147[111鐵路員級]

++i < 10

printf

i += 2

1 + 1 = 2 < 10 True

2

2 + 2 = 4

4 + 1 = 5 < 10 True

5

5 + 2 = 7

7 + 1 = 8 < 10 True

8

8 + 2 = 10 break

 

D116.執行下列C語言的程式,輸出結果為何? (A)0 (B)2 (C)4 (D)7[111鐵路員級]

#include <stdio.h>

int main(void){

  int x = 0;

  char s = 'b';

  switch (s){

    case 'a': x += 1;

    case 'b': x += 2; 0 + 2 = 2

    case 'c': x += 3; 2 + 3 = 5

    default: x += 2; 5 + 2 = 7

  }

  printf("%d", x); 7

  return0;}

 

A117.假設我們現在以動態作用域法則(dynamic scope rule)來決定每個變數對應到那一個宣告。下列以C語言撰寫的虛擬程式碼,程式執行後的輸出為何? (A)3 (B)10 (C)13 (D)沒有固定的輸出。[111鐵路員級]

#include <stdio.h>

void second(){

  printf("%d", y); printf 3

}

void first(){

  int y= 3;

  second(); y = 3 呼叫second()

}

int main(){

  int y = 10;

  first(); y = 10 呼叫first()

}

 

B118.下列C語言的函式,

int f(int a, int b)

{

  if (a%b)

    return f(b, a%b);

  else

    return b;

}

若執行f(4, 6)之呼叫,將會產生什麼輸出? (A)0 (B)2 (C)4 (D)6[111鐵路員級]

(4, 6)之最大公因數為2

 

D119.下列以C語言所撰寫程式的執行結果,應為何者? (A)2 (B)10 (C)11 (D)12[111鐵路員級]

#include <stdio.h>

int A(int n){ n = 10

  n = n+1; n = 10 + 1 = 11

  return n+1; 11 + 1 =12

}

int main(){

  printf("%d\n", A(10));

  return 0;

}

 

D120.下列C++程式其執行結果為何? (A)16 (B)18 (C)20 (D)無法列印,編譯過程有問題。[111鐵路員級]

class gcd{

private:

  int a;

  int b;

  int result;

public:

  gcd(int x, int y){a = x; b = y;};

  void compute(){

    while(1){

      if(a > b){

        a = a - b;

        if (a == 0){

          result = b;

          return;

        }

      }

      else{

        b = b - a;

        if (b == 0){

          result = a;

          return;

        }

      }

    }

  }

};

int main(){

  gcd AA(48, 16);

  AA.compute();

  printf("greatest common divisor=%d\n", AA.result);

}

private內宣告result,則類別以外的成員都不能讀寫。

 

B121.下列何者是C程式語言,所具有的性質之一? (A)過載函數(Overloading function) (B)靜態變數(Static variable) (C)建構子(Constructor) (D)this指標(this pointer)[111鐵路員級]

C語言,以static儲存類別宣告的變數。

 

C122.C語言程式中,宣告於函數(function)內的變數(未加static修飾字)會被配置於那個記憶體區段? (A)code segment (B)data segment (C)stack segment (D)heap segment[112地方四等電子]

(A)code:儲存程式所需要的指令。

(C)stack:儲存函式呼叫與區域變數的資訊。

(D)heap:儲存動態分配的記憶體。

 

C123.下列C語言程式的執行結果為何? (A)output=90 (B)output=110 (C)output=130 (D)output=150[112地方四等電子]

#include<stdio.h>

int b = 100; 全域變數

int A(int c) A(20) c = 20

{

  int a = 10;

  return a + b + c; 10 + 100 + 20 = 130

}

int main()

{

  int a = 30, b = 60; 區域變數

  printf("output=%d\n", A(20)); output = 130

  return 0;

}

 

C124.執行下列C遞迴函式若傳入整數10,則輸出為何?

void fn(int n)

{

  if(n == 0)

    return;

  else

  {

    fn(n / 2);

    printf("%d", n % 2);

  }

} (A)10 (B)101 (C)1010 (D)10101[112地方四等電子]

fn(10 / 2) fn(5)

fn(5 / 2) fn(2)

fn(2 / 2) fn(1)

fn(1 / 2) fn(0)

printf(1 % 2) 1

printf(2 % 2) 0

printf(5 % 2) 1

printf(10 % 2) 0

 

B125.考慮下列C語言結構變數(Structure variable)的宣告

struct member {

  int id;

  char name[20];

  int age;

  char gender;

};

struct member bill;

下列何者設定句錯誤? (A)bill.id=-999; (B)bill.name='A'; (C)bill.age=300; (D)bill.gender='2';[112地方四等電子]

(B)會有assignment to expression with array type error.

改用strcpy()函數拷貝字串:strcpy(bill.name, "A");

 

B126.執行下列C++程式碼後,螢幕印出的數字為何?

int f(int m, int n) {

return (m > n) ? (m - n):(m + n);

}

int main() {

  cout << f(f(3, 4), f(6, 5)) << endl;

  return 0;

} (A)3 (B)6 (C)9 (D)12[112地方四等電子]

return (m > n) ? (m - n):(m + n); if m > n then m - n else m + n

f(3, 4) = 7, f(6, 5) = 1, f(7, 1) = 6

 

C127.呼叫下列C函式,若傳入兩字串"abcd""babc",將會在螢幕上輸出那兩個字母?

int f(char *s, char *t)

{

  char *p1, *p2;

  for (p1 = s; *p1; p1++)

  {

    for (p2 = t; *p2; p2++)

      if (*p1 == *p2) break;

    if (*p2 == '\0')break;

  }

  printf("%c %c", *p1, *s);

  return p1 - s;

} (A)'a''b' (B)'b''c' (C)'a''d' (D)'b''d'[112地方四等電子]

 

D128.下列C語言中的字串變數

char str[] = "abc";

下列那個指令的執行結果,與其他指令不同? (A)*str = 0; puts(str); (B)str[0] = '\0'; puts(str); (C)strcpy(str, ""); puts(str); (D)strcat(str, ""); puts(str);[112地方四等電子]

(A)(B)(C)皆為空字串。

(D)strcat()函數會將string2連結至string1,並以空值字元結束產生的字串,執行結果為abc

 

B129.執行下列C程式,輸出結果為何?

#include<stdio.h>

int i = 2, j = 1;

void sub(int *m, int *n) {

  *m = i + *n;

  *n = j + *m;

  printf("(%d, %d)", *m, *n);

  printf("(%d, %d)", i++, j++);

}

int main(void) {

  sub(&i, &j);

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

  return 0;

} (A)(2, 4)(2, 4)(3, 5) (B)(3, 4)(3, 4)(4, 5) (C)(3, 5)(3, 5)(4, 6) (D)(2, 4)(1, 2)(2, 3)[112地方四等電子]

 

A130.有一簡短C程式如下:

#include <stdio,h>

int main() {

  int A[] = {1, 2, 3 ,4, 5, 6, 7};

  int i, sum = 0;

  for(i = 1; i < 5; i++) sum = sum + A[i];

  printf("%d, %d", sum, A[i]);

  return 0;

}

其執行結果為何 (A)14, 6 (B)14, 7 (C)10, 5 (D)10, 4[112地方四等電子]

A[0] = 1A[1] = 2A[2] = 3A[3] = 4A[4] = 5A[5] = 6A[6] = 7

i = 1加到i = 42 + 3 + 4 + 5 = 14

i = 5A[5] = 6

 

A131.下列C程式執行的結果為何char ch; int x; ch = 'F'; x = ch - 'B'; printf("%d", x); (A)4 (B)5 (C)F (D)B[112身心五等]

ASCII code  B = 66,’F = 7070 - 66 = 4

 

A132.假設C++程式中已宣告整數變數score、指標變數scorePtr。下列那個敘述會將變數score的記憶體位址(Memory Address)指定給scorePtr (A)scorePtr = &score; (B)scorePtr = *score; (C)&scorePtr = score; (D)*scorePtr = score;[112身心五等]

&位址運算子:用來取得變數或陣列元素在記憶體的位址。

 

A133.C語言運算式r = !((3 <= 8)||(3 != 8)),其計算結果是 (A)0 (B)1 (C)3 (D)8[112身心五等]

r = !((3 <= 8)||(3 != 8))

r = Not ((3 <= 8) Or (3 != 8)

r = Not (1 Or 1)

r = Not 1

r = 0

 

B134.階層值m!(m>=0)的遞迴演算法的虛擬碼如下,下列何者錯誤? (A)Z = (m - 1) (B)Z = m (C)Y = m (D)X = 1[112身心五]

Algorithm:F(m)

{ if (m=0)

   return X

 Else

   return Y×F(Z) }

3!為例

F(3)=3*F(3-1)=3*F(2)

F(2)=2*F(2-1)=2*F(1)

F(1)=1*F(1-1)=1*F(0)

F(0)=1 往回帶入

F(1)=1*F(1-1)=1*F(0)=1*1=1

F(2)=2*F(2-1)=2*F(1)=2*1=2

F(3)=3*F(3-1)=3*F(2)=3*2=6

 

B135.下列C語言程式片段

int S = 0;

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

  S = S + i * i;

執行後,變數S的值為何? (A)28 (B)30 (C)32 (D)34[112國安五等]

i

0

1

2

3

4

S

0 + 0 * 0 = 0

0 + 1 * 1 = 1

1 + 2 * 2 = 5

5 + 3 * 3 = 14

14 + 4 * 4 = 30

 

C136.下列C語言程式片段

for(i = 2; i < 100; i++){ 2 i 99

  flag = 1;

  for(j = 2; j <= i / 2; j++){ 2 j i / 2

    if(i % j == 0){ i j 整除

      flag = 0; i 不是質數

      break; 跳出迴圈

    }

  }

  if(flag == 1){ i 是質數

    printf("%d\n",i); 印出 i 的值

  }

}

印出的數值為何? (A)299中所有的奇數 (B)299中所有的偶數 (C)299中所有的質數 (D)299中所有的合數(非質數)[112國安五等]

 

D137.下列程式是C語言的函式(function)

int ff(int n)

{

  if(n <= 4) return n;

  else return ff(n - 3) + ff(n - 2);

}

呼叫ff(10)會得到多少? (A)65 (B)47 (C)33 (D)21[112國安五等]

ff(1) = 1

ff(2) = 2

ff(3) = 3

ff(4) = 4

ff(5) = ff(2) + ff(3) = 5

ff(6) = ff(3) + ff(4) = 7

ff(7) = ff(4) + ff(5) = 9

ff(8) = ff(5) + ff(6) = 12

ff(9) = ff(6) + ff(7) = 16

ff(10) = ff(7) + ff(8) = 21

 

C138.下列是C語言的函式mm

int mm(int x, int y)

{ /*assume x >= 1 && y >= 1 */

  int i, max = x * y;

  for(i = x; i <= max; i++)

    if(i % x == 0 && i % y == 0)

      return i;

}

請問呼叫mm(mm(20, 30), 21)會回傳多少 (A)1 (B)20 (C)420 (D)1260[112國安五等]

mm(20, 30) max = 20 * 30 = 600

20 i 600

2030之最小公倍數

return i 回傳 i = 60

mm(60, 21) max = 60 * 21 = 1260

60 i 1260

6021之最小公倍數

return i 回傳 i = 420

 

B139.有關C程式語言執行過程的敘述下列何者錯誤 (A)編譯器(Compiler)的功能,是將C原始碼程式轉成組合語言或機器語言目的模組(Object module) (B)連結器(Linker)的功能,是將動態連結函式庫模組,與由C原始碼程式轉出目的模組,組合出可執行機器碼程式 (C)載入器(Loader)的功能,是將由C程式轉換的可執行機器碼程式載入電腦記憶體去執行 (D)連結器會產生原始碼與機器碼的連結資訊,方便程式除錯時參考。[112國安五等資處]

(B)連結器的功能,是將連結函式庫模組,與由C原始碼程式轉出目的模組,組合出可執行機器碼程式。

 

B140.下列為C語言的程式碼,請問執行f(16)後其回傳值為何?

int f(int n){

  int value = 0;

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

    if(i % 3 == 0) value = value + 2 * i;

    else i = i + 1;

  }

} (A)16 (B)18 (C)32 (D)45[112國安五等資處]

 

B141.如下所示之C程式

#include<stdio.h>

int data[] = {

  6,8,4,3,11,18,17,29,25,23,27,24,22,48,43,55,68,63,62,69,65,72,77,85,88,81,99,97,92,94,91

};

int count[10] = {0,0,0,0,0,0,0,0,0,0};

int main(void)

{

  int ii, nn = sizeof(data) / sizeof(data[0]);

  for (ii = 0; ii < nn; ii++){

    count[data[ii] / 10]++;

  }

  for (ii = 0; ii < 10; ii += 2){

    printf("%2d,", count[ii]);

  }

  return 0;

}

其輸出為何 (A)4,3,6,0,2 (B)4,6,2,5,3 (C)3,0,1,2,5 (D)4,3,6,0,2,1,5,2,3,5[112普考電子]

32位元電腦,整數的記憶體空間為4Bytes

nn = sizeof(data)/sizeof(data[0]); sizeof(data)=31*4Bytessizeof(data[0])=4Bytesnn=31*4/4=31

data[] = {6,8,4,3,11,18,17,29,25,23,27,24,22,48,43,55,68,63,62,69,65,72,77,85,88,81,99,97,92,94,91}

data[]/10 = {0,0,0,0,1,1,1,2,2,2,2,2,2,4,4,5,6,6,6,6,6,7,7,8,8,8,9,9,9,9,9}

count[] = {4, 3 ,6, 0, 2, 1, 5, 2 ,3, 5}

printf("%2d,", count[ii]); count[0],count[2],count[4],count[6],count[8] 輸出4,6,2,5,3

程式中沒有return,系統會自動加上return

最後一次執行i = i + 1;i = 16 + 1 = 17,印出17

迴圈結束時,i = 17 + 1 = 18,回傳值為18

 

A142.執行下列C程式,並輸入「10 10 9

#include<stdio.h>

#include<iostream>

int main(){

  int count = 0, x = 10, next;

  scanf("%d", &next);

  while(next == x)

  {

    count++;

    scanf("%d", &next);

  }

  printf("%d", count);

}

下列何者為程式的輸出? (A)2 (B)3 (C)9 (D)10[112普考電子]

計算輸入值「10 10 9」為10,有2

 

D143.下列那個C語言的迴圈指令執行的次數,與其他不同? (A)for(i=0;i<10;i++)… (B)for(i=0;i<10;++i)… (C)for(i=0; i++<10;)… (D)for(i=0;++i<10;)…[112普考電子]

(D)1 = i <10,執行9次。(A)(B)(C)執行10次。

 

B144.給定以下類別定義:

Class A

{

  private;

  static int cnt;

  class B

  {

    private;

    public;

  };

  B* p[5];

public:

  A() {cnt = 0;}

  int f()

  {

    if (cnt < 5)

      p[cnt++] = new B;

    return cnt;

  }

};

int A::cnt = -100;

若在main()中執行以下指令:

  A var;

  var.f();

  ver.f();

  cout << var.f();

則將產生的輸出為何? (A)1 (B)3 (C)5 (D)7[112普考電子]

 

D145.以下C語言中的結構變數定義:

struct A{

  union{

    struct{unsigned int i;} B;

    struct{unsigned short s1; unsigned short s2;} C;

    struct{unsigned char c1; unsigned char c2; unsigned char c3; unsigned char c4;} D;

    };

  };

struct A a;

a.B.i = 0x01020304;

下列敘述何者正確? (A)執行printf("%hx",a.C.s1)將會輸出102 (B)執行printf("%hx",a.C.s2)將會輸出304 (C)執行printf("%d",a.D.c1)將會輸出1 (D)執行printf("%d",a.D.c4)將會輸出1[112普考電子]

 

C146.關於C++類別的建構函式(constructor),下列敘述何者錯誤? (A)一個類別可以有多個多載(overloaded)的建構函式 (B)建構函式可以設定預設值(default value) (C)建構函式可以回傳(return)一個常數值(constant) (D)一個類別可以不宣告任何建構函式。[112普考電子]

建構函式之目的是在創建物件時初始化該類別的成員變數,在定義時不需要指定回傳值,也不能有回傳值(包括常數值)

 

D147.下列C程式以指標處理陣列

int a[] = {1,2,3,4}, n = sizeof(a)/sizeof(int), *p = a,*q = &a[n-1], temp;

while(p < q)

{

  temp = *p;

  *p++ = *q;

  *q-- = temp;

}

printf("%d  %d  %d  %d", a[0], a[1], a[2], a[3]);

執行後會產生何種輸出? (A)1234 (B)2341 (C)3412 (D)4321[112普考電子]

a[] = {1,2,3,4}改為由大而小排序

 

D148.使用C語言時,關於陣列(Array)和鏈結串列(Linked List),下列敘述何者錯誤? (A)陣列的大小在建立時就已經決定了,無法改變;鏈結串列的大小隨著節點的加入或刪除而改變 (B)陣列中的每個元素具有相同的資料型態,鏈結串列中的元素可以有不同的資料型態 (C)陣列支援隨機存取(Random Access),而鍵結串列只能使用循序存取(Sequential Access) (D)陣列可以處理多維資料,而鏈結串列只能處理一維資料。[112鐵路員級]

(D)陣列與鏈結串列皆可處理多維資料

 

A149.下列那個程式語言,並沒有提供以直譯(interpretation)的方式來執行其程式? (A)C++ (B)JavaScript (C)Python (D)Visual Basic[112鐵路員級]

C++需要透過編譯器將程式碼編譯成二進位的可執行檔,然後才能在特定的平台上執行。

 

D150.如下所示之C++程式

#include<iostream>

#include<string>

using namespace std;

class P {

  int xx;

public:

  P(int x): xx(x){}

  void show(const std::string& pad = ""){

    cout << "xx=" << xx << pad; 輸出xx = 3

  }

};

class Q: public P {

  int yy;

public:

  Q(int x, int y): P(x), yy(y){} ②將3傳送P

  void show(const std::string& pad = ""){

  P::show(","); 輸出,

  cout << "yy = " << yy << pad; 輸出yy = 5

  }

};

int main(void)

{

  Q q(3, 5); 3, 5傳送Q

  q.show("\n");

  return 0;

}

其輸出為 (A)yy = 5, xx = 3 (B)yy = 3, xx = 5 (C)xx = 5, yy = 3 (D)xx = 3, yy = 5[112鐵路員級]

 

A151.若執行下列C語言的程式碼片段,並輸入"1 0"

int b, a = 3;

while (a != 0){

  printf("%d-", a); 輸出 3-

  scanf("%d", &b); b = 1

  a = b; a = 1

  if (a == 1) break ; 跳離, 結束

}

執行結果為下列何者? (A)3- (B)1-0- (C)3-1- (D)3-1-0-[112鐵路員級]

 

C152.下列C語言程式的指令執行時

int a[] = {1, 3, 5, 7};

int *p = a, n = sizeof(a) / sizeof(int);

printf("%d%d", n, ++*p);

會產生何種輸出? (A)1 2 (B)3 4 (C)4 2 (D)3 1[112鐵路員級]

*p:指標p指向陣列a的第一個元素1

n:陣列a的大小除以整數的大小,元素個數4

++*p*p值遞增為2

Printf:輸出n值和++*p值,即4 2

 

B153.執行下列C語言程式

#include<stdio.h>

void ifswap(char p, char q){ p = A, q = B

  char r;

  r = p; r = A

  p = q; p = B

  q = r; q = A

  printf("%c%c-", p, q); BA-

}

int main(){

  char x = 'A', y = 'B';

  ifswap(x, y); (A, B)

  printf("%c%c-", x, y); AB-

}

產生的輸出為下列何者 (A)AB-BA- (B)BA-AB- (C)BA-BA- (D)AB-AB[112鐵路員級]

 

C154.下列C語言程式執行後

#include<stdio.h>

void subroutine(){

  int y = 20;

  y--; y = 20 - 1 = 19

}

int main(){

  int y = 30;

  y--; y = 30 - 1 = 29

  subroutine();

  printf("%d", y); 29

}

輸出結果為下列何者? (A)19 (B)28 (C)29 (D)30[112鐵路員級]

 

C155.C語言程式裡面宣告int *A[10],對於此一宣告的敘述,下列何者正確? (A)此宣告一個10筆整數的陣列,第一筆整數為A[0] (B)陣列兩個相鄰元素A[i], A[i+1]之數值一定差4 (C)此宣告一個10個元素的陣列,其陣列起始位址為A (D)此宣告一個10個元素的陣列,其陣列結束位址為&A[112鐵路員級]

(A)int *A[10]宣告A是包含10個指向整數的指標陣列。

(B)陣列兩個相鄰元素A[i]A[i+1]之數值不一定差4

(D)&A表示整個陣列A的位址。

 

A156.給定以下類別定義:

Class A

{

  friend class B;

  private:

    int data;

  public:

    A(){data = 0;}

    void fa(){data = 100;}

};

Class B

{ private:

    int data;

  public:

    B(){data = 400;}

    void fb(A v)

      {

        data = 200;

        v.data = 300;

        v.fa();

        cout << v.data << endl;

        cout << data << endl;

      }

};

若在main()中執行以下指令,則將產生的輸出為何?A v1; B v2; v2.fb(v1); (A)100 200 (B)100 400 (C)300 200 (D)300 400[112鐵路員級]

 

B157.下列C語言敘述片段執行結果為何? (A)0101 (B)0100 (C)1001 (D)語法錯誤。[113初考資處]

int q = 30, a, b, c, d;

a = (q > 30 && q < 40); 0 And 1 = 0

b = (q >= 30 || q < 80); 1 Or 1 = 1

c = (q > 90 || q <= 20); 0 Or 0 = 0

d =! q; 0

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

  return 0;

 

B158.現有一C語言函數Fun如下所示,如輸入陣列a[]={8,6,4,1,3,5}n=6,執行後a[]陣列為下列何者? (A){1,3,4,5,6,8} (B){8,6,5,4,3,1} (C){8,6,4,1,3,5} (D){5,3,1,4,6,8}[113初考資處]

Fun(int a[],intn){

int i, j, t;

for(i = n - 1; i > 0; i--)

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

    if(a[j] < a[j + 1]){ 由大至小排序

      t = a[j]; a[j] = a[j + 1]; a[j + 1] = t;

}}

 

C159.下列C語言敘述片段執行結果為何? (A)1,2,0,0 (B)1,0,0,2 (C)1,2,1,2 (D)語法錯誤。[113初考資處]

struct iptr

{

  int *p1;

  int *p2;

};

int main(int argc, char *argv[]){

struct iptr newptr;

int a = 1, b;

newptr.p1 = &a; p1a共用位址,a = p1 = 1

newptr.p2 = &b; p2b共用位址,b = p2 = 2

*newptr.p2 = 2;

printf("%d,%d,%d,%d", a ,b, *newptr.p1, *newptr.p2);

return 0;}

 

C160.C語言撰寫的程式碼共三層for迴圈,留意變數i, j, k控制每層迴圈的執行次數,請問整個程式碼執行完一遍,最內層的cout指令將會執行幾次?

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

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

    for (k = 1; k <= 20; k++)

      cout <<“~~ Good Luck ~~” << endl; (A)n*10 (B)(n+1)*n*5 (C)(n+1)*n*10 (D)(n+1)*n*20[113初考資處]

 

C161.下列C語言的敘述,何者可以正確通過編譯器(compiler)的語法檢查? (A)X=113; Y=10; X+Y=123; (B)B=2; 4B=8; (C)X=120; X+=6; (D)X=300; X\=6;[113初考資處]

(A)X=113; Y=10; X+Y = 123; X+Y不能作為賦值的左側。

(B)B=2; 4B = 8; 4B不是有效的變數名稱。

(C)X=120; X+=6; X+=6;等同X = X + 6;

(D)X=300; X\=6; \=不是有效的賦值運算符。

沒有留言:

張貼留言

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