文章
25
粉丝
19
获赞
2
访问
17.0k
vector总是越界输出,输出乱码
已扩充的值失效
//输入可能是字符和数字混合
//最大为36进制数就是只有26个字母
//输出也要字符和数字混合
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
int m,n,w;
long long num = 0;
string str,ba;
//不用vector<char> 就是string
cin>>m>>n;
getchar();
cin>>str;
//先把m进制转化为10进制
//从高位开始读取,已读数翻m倍,加上当前值作为尾数
for(int i = 0; i<=str.size()-1 ;i++){
num *= m;
if(str[i]>='0'&&str[i]<='9') num += str[i] - '0';
if(str[i]>='A'&&str[i]<='Z') num += str[i] - 'A' + 10;
if(str[i]>='a'&&str[i]<='z') num += str[i] - 'a' + 10;
}
//十进制转n进制
char ch;
int cnt = 0;
while(num>0){
w = num%n;
if(w<10){
ch = w + '0';
}
else{
ch = w-10 + 'a';
//小写
}
ba[cnt++] = ch;
num /= n;
}
//逆序输出
int len = cnt;
// int len = ba.size();
// string和vector的size读取总是在改写值依旧还是失效的
// 修改过程就直接赋值
for(int i = len-1; i>=0; i--){...
登录后发布评论
暂无评论,来抢沙发