APCS 2024/06/16 === ###### tags: `2024 觀念題` `筆試題目` ```c= int func( int x, int n ) { int f = n / 2 ; int s = n - f ; return x * f + x * s / 2 ; } ``` 01. 小明到超商購買冷飲,超商正好在促銷第二件5折的活動,於是他編寫了一段程式碼來計算購買n瓶單價x元的飲料時需要支付的費用,但是上述的程式碼出現問題,請問如何修正? + [A] 把s和f的型態修改為 double + [B] 把s現在的位置都替換為f,f則為替換成s + [C] 回傳值修改為 x\*n\* 0.75 + [D] 回傳值修改為 x\*n\* 3 / 2 ```c= for( int i = 5 ; 0 < i; i = i + 1 ){ for( int j = 1 ; j <= i ; j = j + 1 ) if( j == 1 || i == 5 || __?__ ) printf("%c",'*') ; else printf("%c",' ') ; printf('\n'); } ``` ``` * * * * * * * * * * * * ``` 02. 上述程式碼要如何修正,執行後才能得到相同結果 + [A] + [B] + [C] + [D] ```c= int f( int x, int y ) { if( x == 0 ) return y + 1 ; else if( x > 0 && y == 0 ) return f( x - 1 , 1 ) ; else return f( x - 1 , f( x, y - 1 ) ) ; } ``` 03. 執行 f(3,4) 時會回傳多少呢? + [A] 61 + [B] 125 + [C] 237 + [D] 65536 ```c= int main(){ int A[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 } ; int B[3][3] = { 9, 8, 7, 6, 5, 4, 3, 2, 1 } ; int C[3][3] ; int col = sizeof( A[0] ) / sizeof( int ); int row = sizeof( A ) / sizeof( int ) / col ; for( int i = 0 ; i < row ; i = i + 1 ) for( int j = 0 ; j < col ; j = j + 1 ) { C[i][j] = 0 ; for( int k = 0 ; k < col ; k = k + 1 ) C[i][j] = C[i][j] + A[i][k] * B[k][j] ; } } ``` 04. 請問下列哪個選項的敘述是正確的? + [A] C[1][1] = 69 + [B] C[1][2] = 54 + [C] C[2][1] = 114 + [D] C[2][2] = 69 ```c= int main() { int A[8] = { 2, 5, 7, 8, 0, 2, 4, 6 } ; int B[8] ; int l = 0, r = 8 ; int m = ( l + r ) / 2 ; int x = 0, y = m, z = 0 ; while( x < m && y < r ) { } while( x < m ) { } while( y < r ) { } for( z = l ; z < r ; z = z + 1 ) A[z] = B[z] ; } ``` 05. + [A] + [B] + [C] + [D] ```c= ``` 06. + [A] + [B] + [C] + [D] ```c= void func( int l, int r ) { printf("%d %d ", l , r ); if( l == r ) return ; int m = l + ( r - l ) / 2 ; func( l , m ) ; func( m+1 , r ) ; } ``` 07. 執行上述函數 f(0,2) 時輸出結果為下列哪個選項? + [A] 0 2 2 2 0 1 0 0 1 1 + [B] 0 2 0 1 2 2 0 0 1 1 + [C] 0 2 0 1 0 0 1 1 2 2 + [D] 0 0 1 1 0 1 2 2 0 2