文章
25
粉丝
82
获赞
480
访问
33.4k
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--){...
登录后发布评论
我也是通过率是80%,你找到原因吗