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