Learn More →
    
CC 姓名標示─非商業性─相同方式分享
int s1[2][2] = {0, 1, 2, 3};
int s2[2][2] = {4, 3, 2, 1};
for (int i = 0; i < 2; i++) {
    for (int j = 0; j < 2; j++)
        printf("%d ", s1[i][j] * s2[j][i]);
    printf("\n");
}
      詢問輸出結果
for (int i = 0; i < 100; i++)
    a[i] = 0, s[i] = 0;
s[0] = 1;
for (int i = 0; i < 100; i++) {
    int index = i / 50;
    s[i] = s[i] + s[a[index]];
}
printf("%d", s[50]);
      詢問輸出結果
int sum = 0;
for (int i = 0; i < n; i++) {
    if (i % 2 == 0)
        sum = sum + (-arr[i]);
    sum = sum + arr[i];
}
printf("%d\n", sum);
      詢問輸出結果
void func(int n, int m) {
    int arr[100];
    int tail = 0;
    for (int i = 1; i <= n; i++) {
        arr[tail] = i;
        tail = tail + 1;
    }
    int head = -1, count = 0;
    while (tail > head + 1) {
        count = count + 1;
        head = head + 1;
        if (count == m) {
            arr[tail] = arr[head];
            count = 0;
            tail = tail + 1;
        }
    }
    return arr[head];
}
func(30, 4)
      詢問回傳結果
(A) 18
(B) 14
(C) 30
(D) 24
您好請問這一題 是要問func(a, 4)嗎 填充答案是多少啊 謝謝您
void func(int a[], int n) {
    int target = a[n], j;
    for (__1__; (a[j - 1] > target) && __2__; __3__) {
        a[j] = a[j - 1];
    }
    a[j] = target;
}
int main(){
    int a[5] = {16, 18, 19, 20, 17};
    func(a, 4);
    for (int i = 0; i <= 4; i++)
        printf("%d ", a[i]);
    printf("\n");
    return 0;
}
      詢問輸出結果
int main(){
    int a[] = {9, 8, 7, 6, 5, 4, 3, 2, 1};
    int n = 9;
    for (int i = 0; i < n; i++) {
        for (int j = i; j < n; j++) {
            if (a[j] > a[j + 1]) {
                int tmp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = tmp;
            }
        }
    }
    for (int i = 0; i < n; i++) {
        printf("%d ", a[i]);
    }
    printf("\n");   
}
      詢問輸出結果
int a[] = {0, 1, 5, 4, 5, 4, 5};
int n = 7, i, key = 5, F = 0;
for (i = 0; i < n; i++) {
    if (a[i] == key) {
        F = i;
        __?__;
    }
}
      若 F 為 2,____ 要填啥
(A) break
(B) continue
(C) i++
(D) i–
void func(int x) {
    int a = {0, 2, 15, 20, 25, 30}, i = 0, j = 6;
    do {
        int m = (i + j) / 2;
        if (a[m] == x)
            break;
        if (a[m] < x)
            i = m;
        else
            j = m;
    } while (i + 1 < j);
}
      問 func(3), func(15), func(4) int m = (i + j) / 2 call 了幾次
int a = 30;
void b() {
    int a = 20;
}
int main() {
    int a = 10;
    b();
    for (int i = 0; i < 3; i++)
        printf ("%d ", a);
}
      詢問輸出結果
如果 !x1 && !x2 && !x3 為 True 且 x1 為 False, 問 x2 和 x3 應該為多少
int g(int a, int b) {
    while (b != 0) {
        int t = b;
        b = a % b;
        a = t;
    }
    return a;
}
int f(int a, int b) {
    return a * b / g(a, b);
}
int main() {
    printf("%d", f(10, 20));
}
      詢問輸出結果
int pas[6] = {1};
for (int i = 0; i < 6; i++) {
    int prev = 0;
    for (int j = 0; __1__; j++) {
        tmp = pas[j];
        pas[j] = __2__ + tmp;
        prev = tmp;
    }
}
      填空
(A) j < i - 1, pas[j]
(B) j < i + 1, pas[j - 1];
(C) j < i - 1, pas[j - 1];
(D) j < i + 1, pas[j]
void f(int x, int y) {
    if (x == 0) return y;
    else return f(x - 1, x + y)
}
int main() {
    printf("%d\n", f(100, 10));
}
      詢問輸出結果
int k(int n) {
    switch(n) {
        case 0: return n;
        case 1: return n + k(n / 2);
        default: return n + k(n / 4);
    }
    return n;
}
int main() {
    printf("%d\n", k(30));
}
      詢問輸出結果
int x = -100;
for (int i = 1; i <= 8; i++)
    for (int j = 1; j <= i; j++)
        for (int k = 1; k <= j; k++)
            x += 1;
printf("%d", x)
      詢問輸出結果
int f(int a) {
    return -a;
}
int g(int a, int b) {
    return a + 2 * b; 
}
int h(int a, int b) {
    return (!a) * b;
}
int main() {
    int out_a = 1, out_b = 1;
    if (!f(g(h(out_b, out_a), out_a)))
        out_a = 1;
    else
        out_b = 1;
    if (out_b == 1)
        out_a = 3;
    else
        out_b = 3;
    printf("%d %d", out_a, out_b);
    return 0;
}
      詢問輸出結果
void func() {
    int b = 10, i;
    double a = 47;
    for (i = 0; i < 10; i++) {
        b = a / b;
        printf("%d", b);
    }
}
      (a) i 偶數輸出 4
(b) i 奇數輸出 11
(A) 兩個都對
(B) 兩個都錯
(C) 只對 (a)
(D) 只對 (b)
int func(int n) {
    if (n > 10)
        n = n + 5;
    while (n < 12)
        n = n + 1;
    if (n == 14)
        n = 5;
    return n;
}
      詢問 func(n) 不可能會回傳什麼數值
(A) 15
(B) 16
(C) 17
(D) 18
int a = 1, b = 2, c = 3;
a = b;
b = c;
c = a;
      問 a, b, c 的值
下段程式碼為檢查一個 array 內的數字是否連續, 例如 {5, 3, 4, 2, 6} 完美覆蓋 2 ~ 6,而 {3, 5, 2, 6, 7} 缺 4
const int MAXN = 1e5;
int f(int a[], int n) {
    int iMax = a[0];
    for (int i = 1; i < n; i++)
        if (a[i] > iMax)
            iMax = a[i];
    int iMin = a[0];
    for (int i = 1; i < n; i++)
        if (a[i] > iMin)
            iMin = a[i];
    
    int ok = 1;
    if (iMax - iMin == n) {
        int cnt[MAXN] = {};
        for (int i = 0; i < n; i++) {
            if (cnt[a[i]] == 1)
                __1__; 
            cnt[a[i]] = 1;
        }
        if (ok)
            __2__;
    }
    __3__;
}
      (A)
ok = 0,
return 1,
return 0
(B)
return 1,
ok = 0,
return 0
(C)
return 0,
ok = 0,
return 1
(D)
return 1,
return 0,
ok = 0
void func(int n) {
    if (n > 0) {
        printf ("%d", n % 2);
        func(n / 2);
    }
}
func(21)
      詢問回傳結果
void func(int n) {
    printf("%d ", 2 * n);
    if (n < 4)
        func(n + 1);
    printf("%d ", 2 * n - 1);
}
func(2)
      詢問輸出結果
int f(int i) {
    if (i % 3 != 0) {
       if (i == 1 || i > 50)
           return 5;
        else
            return i + f(i + 1);
    } else 
        return f(i + 2);
}
f(3);
      詢問輸出結果
int p(int n, int k) {
    if (k == 0)
        return 1;
    else if (k == 1)
        return n;
    else
        return n * p(n - 1, k - 1);
}
p(5, 4);
      詢問輸出結果
***1*****
**3******
*5*******
7********
      
int n = 4;
for (int i = 0; i < n; i++) {
    for (int j = 0; j < 10; j++) {
        if (j < n - i - 1 || j > ____) {
            printf("*")
        } else {
            printf("%d", 2 * i + 1)
        }
    }
}
      填空程式碼
問 f(1000) 和 f(49999) 回傳是 6 和 10,___ 填多少
int f(int n) {
    int sum = 0;
    while (n) {
        n = n - n % 5;
        ______
        n = n / 5;
    }
    return sum;
}
      (A) isZero = isZero - n / 5
(B) isZero = isZero + n / 5
(C) isZero = isZero + n / 6
(D) isZero = isZero + n % 6
int a[3][3] = {};
for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        if (i == j)
            a[i][j] = i + j;
        else
            a[i][j] = 0;
    }
}
for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++)
        printf("%d ", a[j][i]);
    printf("\n");
}
      詢問輸出結果
void func(int f) {
    while (f) {
        f = f - 1;
        int a = 4;
        for (int i = 1; i <= a; i++) {
            for (int j = 0; j < i; j++)
                printf("%d", i);
            printf("\n");
        }
        for (int i = a - 1; i >= 1; i--) {
            for (int j = 0; j < i; j++)
                printf("%d", i);
            printf("\n");
        }
        if (f) printf("\n");
    }
}
func(2);
      詢問輸出結果
要實作一個加總 
double x = 0, y = 1;
int i = 1, n = 10;
while (n--) {
    _______;
    y = -y;
    _______;
}
      填空
(A) x = x + y / i, i = i + 3
由大到小排
void func(int a[], int n) {
    int t;
    for (int i = 0; i < n; i++) {
        for (int j = i; j < n; j++) {
            if (___) {
                ___
            }
        }
    }
}
      (A)
a[i] < a[j]
t = a[i];
a[i] = a[j];
a[j] = t;
(B)
a[i] > a[j]
t = a[i];
a[i] = a[j];
a[j] = t;
(C)
a[i] < a[j]
t = a[i];
a[j] = a[i];
a[i] = t;
(D)
a[i] > a[j]
t = a[i];
a[j] = a[i];
a[i] = t;
填空
void func(int a[], int an, int b[], int bn) {
    int ai = 0, bi = 0, c[200], ci = 0;
    for (; (ai < an && bi < bn); ____) {
        if (____) {
            c[i] = a[ai];
            ai = ai + 1;
        } else {
            c[i] = b[bi];
            bi = bi + 1;
        }
    }
}
      (A) ci = ci + 1, a[ai] <= b[bi]
double a = 1.0;
const double b = 2.0;
int sw(double a, double b) {
    return a + b;
}
int main() {
    double b = 3.0;
    b = sw(a, b);
    a = a + 1.0;
    printf("%.2f %.2f", a, b);
}
      規則
int f(int pay) {
    if (pay <= 40)
        return 0;
    if (pay <= 100)
        return (pay - 40) * 0.1
    if (pay <= 150)
        return pay * 0.2;
    return (pay - 150) * 0.3 + 12.5 + 6;
}
      以上是錯的,要如何更改
(A) 第 4 和 6 行要變成 else if
(B) 第 7 行為 pay * 0.25 - 19
(C) 第 7 行為 (pay - 100) * 0.25 + 10
(D) 第 7 行為 (pay - 100) * 0.25 + 14
int main() {
    int Q[5];
    int i, j, loc = 0;
    while(scanf("%d%d", &i, &j) == 2) {
        if (i == 1) {
            for (int i = loc; i > 0; i--) {
                Q[i] = Q[i - 1];
                Q[0] = j;
            }
            loc++;
        } 
        else if (i == 2) {
            Q[loc - 1] = 0;
            loc = loc - 1;
        }
    }
    for (int i = 0; i < 5; i++)
        printf("%d ", Q[i]);
}
      若輸入為 1 1 1 2 1 4 1 1 1 2 2 3 2 1,輸出為何
(A) 2 1 4 0 0
void logic(int i, int j, int k) {
    int m[4] = {}, c = 0;
    m[c] = (i + k <= j);
    c = c + 1;
    // 不重要
}
logic(1, 5, 4);
      (A)
(B)
(C) 1011
(D)
char a[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'};
for (int i = 0; i < 9; i++)
    a[i] = a[i] + i * 2;
      下列何者是對的
(A) a[2] = 'd'
(B) a[4] = 'm'
(C) a[6] = 't'
(D) a[8] = 'x'
問下列怎麼填可輸出 bababb
char s[] = {'a', 'b', 'a', 'b', 'a', 'a'};
void f(char x) {
    for (int i = 0; i < 7; i++) {
        ______
        else s[i] = x;
    }
}
int main() {
    f('a');
    for (int i = 0; i < 7; i++)
        printf("%c", s[i]);
}
      (A) if (s[i] == c) s[i] = s[i] + 1;
int f1(int a, int b) {
    if (___)
        return b * 2;
    else
        return a * b;
}
int f2(int a, int b) {
    for (int i = 0; i < b; i++)
        a = a + i * 2;
    return a;
}
int main() {
    int a = 3, b = 2, c = 1;
    c = f1(a, b);
    a = f2(a, c);
    printf("%d %d", a, c)
}
      若輸出為 10, 6 則空白應填入
(A) a + 2 < b
你可以在 APCS 官網:評量架構 裡面找到下面這段關於考試筆試題型的介紹
Jun 3, 2024:::info 以下題目是人工從考場背出來的,題目敘述會盡可能與原題相似,但無法保證完全一致。關於題目或選項有任何建議歡迎使用 HackMD 的留言功能於下方留言。 :::  CC 姓名標示─非商業性─相同方式分享 筆試第一場 if grade
Jun 2, 2023P1 給定K個提交的時間點和提交後分數,根據公式算出得分和第一次獲得最高分時的時間點,題目保證時間點是由小到大排序? 當提交分數為嚴重錯誤時用 -1 代表 公式:最高分 - #提交次數 - 2*嚴重錯誤 時間範圍介於 $[1, 100]$, 假定沒有重複的 60 : $K = 3$ 40 : $1 \leq K \leq 6$, -1<=分數<=100
Jan 8, 2023https://drive.google.com/drive/folders/1XLeCHTzrrf1Io9wZ2IPWAJylZp2ZeDyr [toc] :::info TODO: 講解題目 題目標題
Oct 23, 2022or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up