实现26进制的加法其中,##39;a

标题:

实现十六进制的加法

其中’a’代表0,z代表25,以此类推

输入是26个小写字母’a’~’z’的组合,

输出也是’a’~’z’的组合

思路:先将输入的字符串转换为十进制数,相加,再转换为十六进制数

#include
#include
using namespace std;
/*  功能:26进制的加法

图片[1]-实现26进制的加法其中,##39;a-唐朝资源网

其中, 'a'代表0,z代表25,依次类推 输入为 'a'~'z'26个小写字母的组合, 输出也为 'a'~'z'的组合 思路:先将输入字符串转换为10进制数,进行加法之后,再转换为26进制 str1、str2代表输入字符串 str3为输出字符串 */ int main() { string str1, str2; while (cin >> str1) { //在while循环中,实现连续输入 cin >> str2; //将str1和str2转换为10进制数 int sum1 = 0; //存储str1转换为10进制的值 int sum2 = 0; //存储str2转换为10进制的值 if (!str1.empty()) { //将str1转换为10进制数 int num = 0; for (int i = 0; i = 'a' && str1[i] num = str1[i] - 'a'; //将小写字母转换为对应10进制数 sum1 = sum1 * 26 + num; //26代表26进制数,若为其他进制,更改为其他数字 } } } if (!str2.empty()) { //将str2转换为10进制数 int num = 0; for (int i = 0; i = 'a' && str2[i] } } } //total 是两个数的和 int total = sum1 + sum2; //将total转换为26进制数,结果输出到Str3 string Str3 = ""; int t = 0; //t为每次取余的值 while (1) { t = total % 26; total /= 26;

图片[2]-实现26进制的加法其中,##39;a-唐朝资源网

Str3 = (char)(t + 'a') + Str3; // string 类型字符串可以直接进行加法操作,从低位到高位显示字符 if (total == 0) break; // 考虑到输入为aa+aa的情况,特别加了这一步骤 } cout << Str3 << endl; system("pause"); } }

Str3 = (char)(t + ‘a’) + Str3;

‘a’为字符常量,其存储内容为a的ASCII码,默认以字符形式显示。

t 是 int 类型两个十六进制数相加,t + ‘a’ 是 t 的值加上 a 在内存空间的 ASCII 码两个十六进制数相加,强制转换为 char 类型,因为 a 之前是一个字符,它默认以字符类型显示。

部分参考资料:

© 版权声明
THE END
喜欢就支持一下吧
点赞233 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片