X进制转10进制
想要学会进制转换,就要了解string的基本用法和数组等知识点,在以后的学习中我会
发布一些关于string用法和数组等知识点的使用方法。
首先咱们先来吧变量定义好:
int x;//x进制
int ans = 0;//计算答案
int jinzhi = 1;//进行累乘
string s;
接着把s字符串翻转,以便于后面的计算(使用reverse的时候一定要用算法头文件):
reverse(s.begin(),s.end());
定义一个len用来存储s字符串的长度(这里需要用到一个string常用函数size()):
int len = s.size();
我们知道string是从0下标开始的,所以下面遍历字符串的时候需要从0下标
开始,然后到len-1结束,接着再分情况讨论:
for(int i = 0;i <= len-1;i++)
{
//分情况讨论
if(s[i]>='0' && s[i]<='9')
{
ans += (s[i]-48)*jinzhi;
}
else
{
ans += (s[i]-55)*jinzhi;
}
jinzhi *= x;
}
最后输出ans就OK了:
cout << ans;
全部代码(本人喜欢用万能头,不熬介意哈):
#include<bits/stdc++.h>
using namespace std;
string s;
int main()
{
int x;//x进制
int ans = 0;
int jinzhi = 1;
cin >> x;
cin >> s;
reverse(s.begin(),s.end());
int len = s.size();
for(int i = 0;i <= len-1;i++)
{
//分情况讨论
if(s[i]>='0' && s[i]<='9')
{
ans += (s[i]-48)*jinzhi;
}
else
{
ans += (s[i]-55)*jinzhi;
}
jinzhi *= x;
}
cout << ans;
return 0;
}