用C语言编写函数将整数k变换为一个字母串,规则如下:设0对应A,1对应B,......,25对应Z。从左向右考察k的各位数字,若连续两位对应上面一种变换,则直接换掉两位数字,否则一位数字换成对应的字母。变换结果存入res反馈给调用者。函数原型为: void DigiTran( int k, char res[] ); 在主函数输入一些非负整数,最后输入-1代表结束,利用上面函数对每个数字变换后输出。
时间: 2023-06-14 20:05:00 浏览: 306
将整数转换成字符串的函数
4星 · 用户满意度95%
以下是实现函数DigiTran的代码:
```c
#include <stdio.h>
void DigiTran(int k, char res[]) {
char letter[26] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
}; // 存储字母表
int i = 0, j = 0;
while (k != 0) {
int d1 = k % 10; // 取当前位数
k /= 10;
int d2 = k % 10; // 取前一位数
if (d2 * 10 + d1 <= 25 && d2 != 0) { // 连续两位可以表示一个字母
res[i++] = letter[d2 * 10 + d1];
j++; // 跳过前一位数
k /= 10;
} else { // 单独一个数表示一个字母
res[i++] = letter[d1];
}
}
res[i] = '\0'; // 字符串结尾
// 反转字符串
for (int k = 0; k < i / 2; k++) {
char temp = res[k];
res[k] = res[i - k - 1];
res[i - k - 1] = temp;
}
}
int main() {
int k;
char res[100];
while (scanf("%d", &k) != EOF && k != -1) {
DigiTran(k, res);
printf("%s\n", res);
}
return 0;
}
```
我们可以使用一个字符数组`letter`来存储字母表,然后从右往左取数字,判断它和上一个数字组成的两位数是否可以表示一个字母。如果可以,则将该字母存入结果数组中,并跳过上一个数字,否则将该数字对应的字母存入结果数组中。最后将结果数组反转即可。
阅读全文