
114年公務人員特種考試關務人員、身心障礙人員考試及
114年國 軍 上 校 以 上軍 官 轉 任 公 務人 員 考 試 試 題
考 試 別
關務人員考試
等 別
四等考試
類 科
資訊處理(選試英文)
科 目
程式設計概要
考試時間:1小時 30 分 座號:
※注意:禁止使用電子計算器。
不必抄題,作答時請將試題題號及答案依照順序寫在試卷上,於本試題上作答者,不予計分。
本科目除專門名詞或數理公式外,應使用本國文字作答。
代號
頁次
-
一、下列 C程式,輸入兩個字串,字串長度最長為 10 且字元可重複。程式判
斷字串中的每一個字元,若兩個字串在同一個位置的字元都相同,則記錄
一個 A,若兩個字串都有這個字元但位置不同,則記錄一個 B。程式最終
輸出具 A與B情況的字元與其數量。請寫出程式執行後輸出,以及計算
A,B, partA, partB 的程式碼之運作邏輯。(25 分)
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
void compare_strings(const char *X, const char *Y, int N) {
int A = 0, B = 0;
int countX[256] = {0}, countY[256] = {0};
char partA[11] = {0}, partB[11] = {0};
int indexA = 0, indexB = 0, partAN[11];
for (int i = 0; i < N; i++) {
if (X[i] == Y[i]) {
partA[indexA++] = X[i];
A++;
} else {
countX[(unsigned char)X[i]]++;
countY[(unsigned char)Y[i]]++;
}
}
for (int i = 0; i < 256; i++) {
int min_count = (countX[i] < countY[i]) ? countX[i] : countY[i];
if (min_count > 0) {
for (int j = 0; j < min_count; j++)
partB[indexB++] = i;
B += min_count;
}
}
printf("%dA%dB; A: %s, B: %s", A, B, partA, partB);
}
int main() {
compare_strings("3A5@3" , "35A63" , 5);
compare_strings("f%09#2", "g5029#", 6);
return 0;
}