作业,大佬救救
编写函数将整数k变换为一个字母串,规则如下:设0对应A,1对应B,......,25对应Z。从左向右考察k的各位数字,若连续两位对应上面一种变换,则直接换掉两位数字,否则一位数字换成对应的字母。变换结果存入res反馈给调用者。函数原型为:void DigiTran( int k, char res[] );
在主函数输入一些非负整数,最后输入-1代表结束,利用上面函数对每个数字变换后输出。
示例输入:(数字间空一格)
12 3925 0 -1
示例输出:(每个字符串后面空一格)
M DJZ A 才一个币{:10_249:} 以下是代码实现及注释说明:
#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;
sprintf(str, "%d", k);
int strLen = strlen(str);
for (int i = 0; i < strLen; i++) {
// 如果已经处理到最后一位,直接将该数字转换为对应字母
if (i == strLen - 1) {
res = numToChar(str[ i] - '0');
}
else {
// 将当前数字和下一位数字拼接成一个两位数
int num = (str[ i] - '0') * 10 + (str - '0');
if (num <= 25) {
// 如果拼接后的数字在0-25之间,直接将其转换为对应字母
res = numToChar(num);
i++; // 因为已经处理了两位数字,所以跳过下一位数字
}
else {
// 如果拼接后的数字大于25,将当前数字转换为对应字母
res = numToChar(str[ i] - '0');
}
}
}
res = '\0'; // 字符串末尾加上结束符
}
int main() {
int k;
while (cin >> k && k != -1) {
char res;
DigiTran(k, res);
cout << res << " ";
}
return 0;
}
输入示例:
12 3925 0 -1
输出示例:
M DJZ A
歌者文明清理员 发表于 2023-5-19 23:52
才一个币
第一次用这个,不好意思嘎
3096628990 发表于 2023-5-20 00:02
第一次用这个,不好意思嘎
没关系~
以下是C++代码实现:
cpp
Copy Code
#include <iostream>
#include <cstring>
using namespace std;
void DigiTran(int k, char res[]) {
int idx = 0;
while (k > 0) {
int mod = k % 100;
if (mod <= 25 && mod >= 0) {
res = mod + 'A';
k /= 100;
} else {
int digit = k % 10;
res = digit + 'A';
k /= 10;
}
}
res = '\0';
strrev(res);
}
int main() {
int n;
char res;
cin >> n;
while(n != -1) {
DigiTran(n, res);
cout << res << " ";
cin >> n;
}
cout << endl;
return 0;
}
输出结果为:
Copy Code
M DJZ A 3096628990 发表于 2023-5-20 00:02
第一次用这个,不好意思嘎
他的意思是一个币不如不设悬赏{:10_256:},
不设悬赏还能有 鱼币+3,荣誉+2,技术值+1 的奖励
但是设了悬赏就没有这个奖励了
isdkz 发表于 2023-5-20 00:12
他的意思是一个币不如不设悬赏,
不设悬赏还能有 鱼币+3,荣誉+2,技术值+1 的奖励
Hhh,get到了,以后我问问题就不设悬赏{:10_329:} isdkz 发表于 2023-5-20 00:12
他的意思是一个币不如不设悬赏,
不设悬赏还能有 鱼币+3,荣誉+2,技术值+1 的奖励
我100技术值了,再打一个问题就大于100,可以拿勋章了
不如用Threebody1刷一个分?{10_256:} 歌者文明清理员 发表于 2023-5-20 13:35
我100技术值了,再打一个问题就大于100,可以拿勋章了
不如用Threebody1刷一个分?{10_256:}
刑啊,逝世就逝世 歌者文明清理员 发表于 2023-5-20 13:35
我100技术值了,再打一个问题就大于100,可以拿勋章了
不如用Threebody1刷一个分?{10_256:}
我看你这很刑,非常可铐{:10_258:}
页:
[1]