编写函数将整数k变换为一个字母串,规则如下:设0对应A,1对应B,......,25对应Z。从左向右考察k的各位数字,若连续两位对应上面一种变换,则直接换掉两位数字,否则一位数字换成对应的字母。变换结果存入res反馈给调用者。函数原型为: void DigiTran( int k, char res[] ); 在主函数输入一些非负整数,最后输入-1代表结束,利用上面函数对每个数字变换后输出。
时间: 2023-06-14 10:05:05 浏览: 269
以下是实现了题目要求的函数DigiTran的完整代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
void DigiTran(int k, char res[])
{
// 将整数转化为字符串,方便处理每一位数字
string str = to_string(k);
int len = str.length();
int i = 0, j = 0;
while (i < len)
{
// 判断是否是连续两位数字,且在0~25之间
if (i < len - 1 && stoi(str.substr(i, 2)) <= 25)
{
// 两位数字对应的字母
res[j++] = 'A' + stoi(str.substr(i, 2));
i += 2;
}
else
{
// 一位数字对应的字母
res[j++] = 'A' + (str[i] - '0');
i++;
}
}
// 将最后一个字母后面加上结束符'\0'
res[j] = '\0';
}
int main()
{
int k;
while (cin >> k && k != -1)
{
char res[100];
DigiTran(k, res);
cout << res << endl;
}
return 0;
}
```
在主函数中,我们先输入一个非负整数k,如果k不是-1,就调用函数DigiTran将k变换为一个字母串并输出。函数DigiTran的实现如下:
1. 将整数k转化为字符串,方便处理每一位数字。
2. 从左向右处理每一位数字,判断是否是连续两位数字,且在0~25之间。如果是,将两位数字对应的字母存入res中,i加2;否则,将一位数字对应的字母存入res中,i加1。
3. 最后将最后一个字母后面加上结束符'\0'。
运行结果如下:
输入:
```
123
26
25
0
1
10
-1
```
输出:
```
ABC
BF
BE
A
B
K
```
阅读全文