编写进制转换函数int stoi(char *s,int k),将一个k进制数字字符串转换成10进制整数。并编写main函数进行进制转换函数的测试
时间: 2023-12-14 19:37:07 浏览: 136
C++ 16进制和字符串批量转换
以下是代码实现:
```c++
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
int stoi(char *s, int k) {
int len = strlen(s), res = 0;
for (int i = 0; i < len; i++) {
int num;
if (s[i] >= '0' && s[i] <= '9') num = s[i] - '0';
else num = s[i] - 'A' + 10;
res += num * pow(k, len - i - 1);
}
return res;
}
int main() {
char s[100];
int k;
cout << "请输入数字字符串:";
cin >> s;
cout << "请输入进制数k:";
cin >> k;
int res = stoi(s, k);
cout << "转换后的十进制整数为:" << res << endl;
return 0;
}
```
在该程序中,函数 `stoi` 的参数为一个字符数组 `s` 和一个整数 `k`,表示将 `s` 中的 `k` 进制数字字符串转换为十进制整数。在函数中,首先获取 `s` 的长度 `len`,然后遍历 `s` 中的每一个字符,根据字符的值来计算出其对应的数值,并使用数值与 `k^(len-i-1)` 相乘,最后将每一位的结果相加即可得到最终的十进制整数。
在 `main` 函数中,首先获取用户输入的数字字符串和进制数 `k`,然后调用 `stoi` 函数进行转换,最后输出转换后的十进制整数。
阅读全文