鱼C论坛

 找回密码
 立即注册
查看: 1031|回复: 9

作业,大佬救救

[复制链接]
发表于 2023-5-19 23:50:43 | 显示全部楼层 |阅读模式
1鱼币
编写函数将整数k变换为一个字母串,规则如下:设0对应A,1对应B,......,25对应Z。从左向右考察k的各位数字,若连续两位对应上面一种变换,则直接换掉两位数字,否则一位数字换成对应的字母。变换结果存入res反馈给调用者。函数原型为:
void DigiTran( int k, char res[] );
在主函数输入一些非负整数,最后输入-1代表结束,利用上面函数对每个数字变换后输出。

示例输入:(数字间空一格)
12 3925 0 -1
示例输出:(每个字符串后面空一格)
M DJZ A

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-19 23:52:54 | 显示全部楼层
才一个币
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-19 23:53:31 | 显示全部楼层
以下是代码实现及注释说明:
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4. // 将数字转换为对应字母
  5. char numToChar(int num) {
  6.     return 'A' + num;
  7. }
  8. void DigiTran(int k, char res[]) {
  9.     int len = 0;
  10.     // 将数字转换为字符串
  11.     char str[10];
  12.     sprintf(str, "%d", k);
  13.     int strLen = strlen(str);
  14.     for (int i = 0; i < strLen; i++) {
  15.         // 如果已经处理到最后一位,直接将该数字转换为对应字母
  16.         if (i == strLen - 1) {
  17.             res[len++] = numToChar(str[ i] - '0');
  18.         }
  19.         else {
  20.             // 将当前数字和下一位数字拼接成一个两位数
  21.             int num = (str[ i] - '0') * 10 + (str[i + 1] - '0');
  22.             if (num <= 25) {
  23.                 // 如果拼接后的数字在0-25之间,直接将其转换为对应字母
  24.                 res[len++] = numToChar(num);
  25.                 i++; // 因为已经处理了两位数字,所以跳过下一位数字
  26.             }
  27.             else {
  28.                 // 如果拼接后的数字大于25,将当前数字转换为对应字母
  29.                 res[len++] = numToChar(str[ i] - '0');
  30.             }
  31.         }
  32.     }
  33.     res[len] = '\0'; // 字符串末尾加上结束符
  34. }
  35. int main() {
  36.     int k;
  37.     while (cin >> k && k != -1) {
  38.         char res[20];
  39.         DigiTran(k, res);
  40.         cout << res << " ";
  41.     }
  42.     return 0;
  43. }
复制代码

输入示例:
  1. 12 3925 0 -1
复制代码

输出示例:
  1. M DJZ A
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-5-20 00:02:13 | 显示全部楼层

第一次用这个,不好意思嘎
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-20 00:04:29 | 显示全部楼层
3096628990 发表于 2023-5-20 00:02
第一次用这个,不好意思嘎


没关系~
以下是C++代码实现:
cpp
Copy Code
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;

  4. void DigiTran(int k, char res[]) {
  5.     int idx = 0;
  6.     while (k > 0) {
  7.         int mod = k % 100;
  8.         if (mod <= 25 && mod >= 0) {
  9.             res[idx++] = mod + 'A';
  10.             k /= 100;
  11.         } else {
  12.             int digit = k % 10;
  13.             res[idx++] = digit + 'A';
  14.             k /= 10;
  15.         }
  16.     }
  17.     res[idx] = '\0';
  18.     strrev(res);
  19. }

  20. int main() {
  21.     int n;
  22.     char res[105];
  23.     cin >> n;
  24.     while(n != -1) {
  25.         DigiTran(n, res);
  26.         cout << res << " ";
  27.         cin >> n;
  28.     }
  29.     cout << endl;
  30.     return 0;
  31. }
复制代码

输出结果为:
Copy Code
  1. M DJZ A
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-20 00:12:54 | 显示全部楼层
3096628990 发表于 2023-5-20 00:02
第一次用这个,不好意思嘎

他的意思是一个币不如不设悬赏

不设悬赏还能有 鱼币+3,荣誉+2,技术值+1 的奖励

但是设了悬赏就没有这个奖励了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-20 08:51:02 | 显示全部楼层
isdkz 发表于 2023-5-20 00:12
他的意思是一个币不如不设悬赏,

不设悬赏还能有 鱼币+3,荣誉+2,技术值+1 的奖励

Hhh,get到了,以后我问问题就不设悬赏
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-20 13:35:03 | 显示全部楼层
isdkz 发表于 2023-5-20 00:12
他的意思是一个币不如不设悬赏,

不设悬赏还能有 鱼币+3,荣誉+2,技术值+1 的奖励

我100技术值了,再打一个问题就大于100,可以拿勋章了
不如用Threebody1刷一个分?{10_256:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-20 22:07:11 | 显示全部楼层
歌者文明清理员 发表于 2023-5-20 13:35
我100技术值了,再打一个问题就大于100,可以拿勋章了
不如用Threebody1刷一个分?{10_256:}

刑啊,逝世就逝世
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-21 12:46:31 | 显示全部楼层
歌者文明清理员 发表于 2023-5-20 13:35
我100技术值了,再打一个问题就大于100,可以拿勋章了
不如用Threebody1刷一个分?{10_256:}

我看你这很刑,非常可铐
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-30 21:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表