申論 1根據以下C程式碼,回答下列問題:1#include <stdio.h>2void g(int *x, int *y) {3*x = *y - 1;4*y = *y - 2;5printf("*x = %d, *y = %d\n", *x, *y);6}8void f(int *z, int *w) {9int n = 13;10g(w, &n);11printf("*z = %d, *w = %d, n = %d\n", *z, *w, n);12}14int main() {15int i = 21;16int j = 5;17int n = 137;18f(&i, &j);19printf("print 1: i = %d, j = %d, n = %d\n", i, j, n);20g(&n, &n);21printf("print 2: i = %d, j = %d, n = %d\n", i, j, n);22return 0;23}㈠請說明程式碼第8行至第12行中,每一行之運算子符號「*」及「&」操作所代表的意義。(10分)㈡請問該程式碼執行後輸出的結果為何?(15分)
本卷皆為申論題,點「看答案與解析」查看擬答。
弱點分析
未作答的題目不計分。看我的紀錄
申論 2根據以下C程式碼,回答下列問題:1#include <stdio.h>2int f(int a, int b){3if (b==1) return a;4else {5int value = a + f(a, b-1);6return value;7}8}9int main() {10printf("%d\n", f(5, 3));11printf("%d\n", f(0, 0));12}㈠請問那一行是此遞迴程式的中止條件?(5分)㈡請說明第10行的輸出,以及其運作邏輯。(6分)㈢請說明第11行的輸出,以及其運作邏輯。(7分)㈣請說明函式f的主要功能,包含輸入參數與輸出結果的關係。(7分)
申論 3關於搜尋法程式:㈠說明循序(Sequential)搜尋法,以及二元(Binary)搜尋法的優缺點。(8分)㈡以下二元搜尋程式碼有部分錯誤,若要修正為正確程式,請說明「最少」需修改程式碼行數、原因與修改方法。(17分)01 public class BinarySearch{02public int faultyBinarySearch(int[] arr, int x){03int l=0, r=arr.length-1;04int m=(l+r)/2;05while(l<=r){06m=(l+r)/2;07if(arr[m]==x) return m;08if(arr[m]>x) l=m+1;09if(arr[m]<x) r=m-1;10}11return -1;12}13 }
申論 4請依據以下Java程式碼回答下列問題:01import java.util.Scanner;02public class MyJavaCode {03public static void main(String[] args) {04Scanner in = new Scanner(System.in);05int a = in.nextInt();06Animal dog = new Dog();07dog.run(a);08dog.run();09}10}12class Dog extends Animal {13public void run(int units){14System.out.println("Dog's running speed is " + units);15}16public void run(){17System.out.println("Dog's default running speed is 20");18}19}㈠請說明Java中class、abstract class與interface之間的主要差異?(10分)㈡請說明上述程式碼那幾行會產生編譯錯誤,以及錯誤的原因。(5分)㈢不改變原1-19行程式碼順序的條件下,請修正問題㈡之編譯問題,使之可以正常執行。修正不包含左右大括號「{}」,新增或修改之指令行數不可以超過3行。(10分)