发布网友
发布时间:2022-04-21 20:11
共3个回答
热心网友
时间:2023-07-19 08:56
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
void k_add(string a, string b, int k)
{
//将长的字符串放在前面
if (a.size() < b.size())
{
string temp = a;
a = b;
b = temp;
}
//对源字符串进行翻转
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
bool carry = false; //进位
//字符串相加
size_t i = 0;
for (; i < b.size(); i++)
{
if (i < b.size())
{
a[i] += b[i] - '0';
if (carry) a[i] += 1;
carry = false;
if (a[i] >= k + '0')
{
a[i] -= k;
carry = true;
}
}
}
for (; i < a.size(); i++)
{
if (carry) a[i] += 1;
carry = false;
if (a[i] >= k + '0')
{
a[i] -= k;
carry = true;
}
}
if (carry)
{
a.push_back('1');
}
//输出
bool begin = false;
for (int j = a.size() - 1; j >= 0 ; j--)
{
if (a[j] > '0')
{
begin = true;
}
if (begin)
{
cout << a[j];
}
}
cout << endl;
}
简单模拟即可
3进制测试
10进制测试
热心网友
时间:2023-07-19 08:56
热心网友
时间:2023-07-19 08:57
C语言字符串的学习,输入指定字符串,并且计算字符串的位数