c语言实现编写函数将整数k变换为一个字母串,规则如下:设0对应A,1对应B,......,25对应Z。从左向右考察k的各位数字,若连续两位对应上面一种变换,则直接换掉两位数字,否则一位数字换成对应的字母。变换结果存入res反馈给调用者。函数原型为: void DigiTran( int k, char res[] ); 在主函数输入一些非负整数,最后输入-1代表结束,利用上面函数对每个数字变换后输出。 示例输入:(数字间空一格) 12 3925 0 -1 示例输出:(每个字
时间: 2023-06-24 16:07:50 浏览: 163
节换行)
BM
DIYE
A
下面是代码实现:
```c
#include <stdio.h>
void DigiTran(int k, char res[]) {
int last = -1; // 上个数字
int len = 0; // res数组的长度
while (k >= 0) {
int cur = k % 10; // 当前数字
k /= 10;
if (last != -1) { // 如果上一个数字存在
int num = last * 10 + cur; // 组合成两位数字
if (num <= 25) { // 如果可以直接变成一个字母
res[len++] = num + 'A'; // 转成字母
last = -1; // 重置上一个数字
continue;
}
}
if (last != -1) { // 上一个数字不能和当前数字组合成一个字母,需要先把上一个数字转成字母
res[len++] = last + 'A';
}
last = cur; // 更新上一个数字
}
if (last != -1) { // 处理最后一个数字不能和前面的数字组合成一个字母的情况
res[len++] = last + 'A';
}
res[len] = '\0'; // 在字符串末尾加上'\0',表示字符串结束
// 将字符串反转,因为上面是从低位到高位依次转换的,需要反转才是正确的顺序
for (int i = 0; i < len / 2; i++) {
char temp = res[i];
res[i] = res[len - i - 1];
res[len - i - 1] = temp;
}
}
int main() {
int k;
while (scanf("%d", &k) == 1 && k != -1) {
char res[100];
DigiTran(k, res);
printf("%s\n", res);
}
return 0;
}
```
阅读全文