diff --git a/homework/11989.c b/homework/11989.c new file mode 100644 index 0000000..8501a16 --- /dev/null +++ b/homework/11989.c @@ -0,0 +1,58 @@ +#include + +void DigiTran(int k, char res[]); + +int s; + +int main() { + while (scanf("%d", &s)) { + if (s == -1) { + return 0; + } + char res[233]; + DigiTran(s, res); + printf("%s ", res); + } +} + +int ws(int a) { + int ans = 0; + while (a) { + ans++; + a /= 10; + } + return ans; +} + +void DigiTran(int k, char res[]) { + int rr[233]; + if (k == 0) { + res[0] = 'A'; + res[1] = '\0'; + return; + } + int n = ws(k); + for (int i = 0; i < n; i++) { + rr[n - i - 1] = k % 10; + k /= 10; + } + // rr 为将数组拆解为一位一位的数组 + int ki = 0; // 标识 res 位数 + for (int i = 0; i < n; i++) { + if (i == n - 1) { + res[ki++] = rr[i] + 'A'; + continue; + } + int ls = rr[i] * 10 + rr[i + 1]; + // 如果两位数字符合条件 + if (ls >= 10 && ls <= 25) { + res[ki++] = ls + 'A'; + i++; + // 替换两位需要将 i++ + } else { + //如果不符合,只用一位变换 + res[ki++] = rr[i] + 'A'; + } + } + res[ki] = '\0'; +} \ No newline at end of file