设有一个字符串A$的结构为:A$= m<n>p 其中m为数字串(长度<=20),而n,p均为1或2位的数字串(其中所表达的内容在2-10之间)。 程序要求: 从键盘上读入A$后(不用正确性检查),将A$中的数字串m(n进制),以p,用c
时间: 2024-05-09 19:15:01 浏览: 66
一个对字符串处理的程序,要求能够识别字符串中大写字母、小写字母以及数字的个数并输出,识别“L”、“o”、“v”、“e”四个字符的
5星 · 资源好评率100%
++语言实现如下:
```cpp
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main()
{
string str;
cin >> str;
int m = 0, n = 0, p = 0;
int len = str.length();
int i = 0;
// 提取m
while (i < len && isdigit(str[i])) {
m = m * 10 + str[i] - '0';
i++;
}
// 提取n
i++;
while (i < len && isdigit(str[i])) {
n = n * 10 + str[i] - '0';
i++;
}
// 提取p
i++;
while (i < len && isdigit(str[i])) {
p = p * 10 + str[i] - '0';
i++;
}
// 将m从n进制转换成10进制
int decimal = 0;
int base = 1;
while (m != 0) {
int digit = m % 10;
decimal += digit * base;
base *= n;
m /= 10;
}
// 将10进制的decimal转换成p进制
string result;
while (decimal != 0) {
int digit = decimal % p;
char c = digit < 10 ? digit + '0' : digit - 10 + 'A';
result = c + result;
decimal /= p;
}
cout << result << endl;
return 0;
}
```
以上代码中,我们首先读入字符串A$,然后通过循环分别提取m、n和p的值。接着,我们将m从n进制转换成10进制,然后再将10进制的结果转换成p进制,最终得到结果并输出。
阅读全文