C++ 实现二十六进制加法

题目:

实现26进制的加法
其中, 'a'代表0,z代表25,依次类推
输入为 'a'~'z'26个小写字母的组合,
输出也为 'a'~'z'的组合

思路:先将输入字符串转换为10进制数,进行加法之后,再转换为26进制

 

#include<iostream>
#include<string>
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 < str1.size(); i++) {         //从最高位开始遍历
				if (str1[i] >= 'a' && str1[i] <= 'z') {     //判断元素是不是小写字母
					num = str1[i] - 'a';                    //将小写字母转换为对应10进制数
					sum1 = sum1 * 26 + num;                 //26代表26进制数,若为其他进制,更改为其他数字
				}
			}
		}
		if (!str2.empty()) {     //将str2转换为10进制数
			int num = 0;
			for (int i = 0; i < str2.size(); i++) {
				if (str2[i] >= 'a' && str2[i] <= 'z') {
					num = str2[i] - 'a';
					sum2 = sum2 * 26 + num;
				}
			}
		}
		//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为字符,默认以字符类型显示。

 

 

部分借鉴资料:

https://blog.csdn.net/langmanqishizaijia/article/details/51087443

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值