标题:
实现十六进制的加法
其中’a’代表0,z代表25,以此类推
输入是26个小写字母’a’~’z’的组合,
输出也是’a’~’z’的组合
思路:先将输入的字符串转换为十进制数,相加,再转换为十六进制数
#include
#include
using namespace std;
/* 功能:26进制的加法
其中, '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;
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 之前是一个字符,它默认以字符类型显示。
部分参考资料:
© 版权声明
本站下载的源码均来自公开网络收集转发二次开发而来,
若侵犯了您的合法权益,请来信通知我们1413333033@qq.com,
我们会及时删除,给您带来的不便,我们深表歉意。
下载用户仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,访问及下载者下载默认同意本站声明的免责申明,请合理使用切勿商用。
THE END
暂无评论内容