|
发表于 2023-5-19 23:53:31
|
显示全部楼层
以下是代码实现及注释说明:
- #include <iostream>
- #include <cstring>
- using namespace std;
- // 将数字转换为对应字母
- char numToChar(int num) {
- return 'A' + num;
- }
- void DigiTran(int k, char res[]) {
- int len = 0;
- // 将数字转换为字符串
- char str[10];
- sprintf(str, "%d", k);
- int strLen = strlen(str);
- for (int i = 0; i < strLen; i++) {
- // 如果已经处理到最后一位,直接将该数字转换为对应字母
- if (i == strLen - 1) {
- res[len++] = numToChar(str[ i] - '0');
- }
- else {
- // 将当前数字和下一位数字拼接成一个两位数
- int num = (str[ i] - '0') * 10 + (str[i + 1] - '0');
- if (num <= 25) {
- // 如果拼接后的数字在0-25之间,直接将其转换为对应字母
- res[len++] = numToChar(num);
- i++; // 因为已经处理了两位数字,所以跳过下一位数字
- }
- else {
- // 如果拼接后的数字大于25,将当前数字转换为对应字母
- res[len++] = numToChar(str[ i] - '0');
- }
- }
- }
- res[len] = '\0'; // 字符串末尾加上结束符
- }
- int main() {
- int k;
- while (cin >> k && k != -1) {
- char res[20];
- DigiTran(k, res);
- cout << res << " ";
- }
- return 0;
- }
复制代码
输入示例:
输出示例:
|
|