五进制十进制互相转换 校招笔试题

0 2022.9.29 深信服笔试题目 编程题一

五进制十进制互相转换
其中五进制用 oyeas 分别代表 01234

第一个输入多少个待转换的字符串,接着就是输入,判断是十进制数字则转化为五进制,判断是五进制字符串则转化为十进制数字

1 例子:

输入:
4
123456
yeseeayy
987
110

输出:
yeseeayy
123456
yesee
seo

2 实现

#include <iostream>
#include <string>
using namespace std;
int str_to_num(string str){
    string stand = "oyeas";
    int val = 1;
    int ten = 0;
    for(int i=str.size()-1; i>=0; i--){
        ten += stand.find(str[i]) * val;
        val *= 5;
    }
    return ten;
}

string num_to_str(int ten){
    string stand = "oyeas";
    string str="";
    int index;
    while(ten){
        index = ten % 5;
        str += stand[index];
        ten /= 5;
    }
    string reverse_str ="";
    for(int i=str.size()-1; i>=0; i--){
        reverse_str += str[i];
    }
    return reverse_str;
}

int main() {
    int time;
    cin>>time;
    string stand = "oyeas";
    while(time--){
        string input;
        cin>>input;
        if(stand.find(input[0]) != string::npos){
            // str_to_num
            cout<<str_to_num(input)<<endl;
        }else{
            // num_to_str
            cout<<num_to_str(stoi(input, 0, 10))<<endl;
        }
    }
    return 0;
}

3 知识点

3.1 字符串子串查找

string.find(str) != string::npos 查找 string 内有无子串

3.2 将数字变字符串

`to_string(n)`` 将数字变字符串

3.3 字符串变数字

stoi(string, position, 10) string 转 10 进制

#include <iostream>
#include<string>

using namespace std;
int main(int argc, char*argv[])
{
    string s = "15.0";
 	int i = 0;
 	i = stoi(s, 0, 10);
 	cout<<i<<endl;
    return 0;
}
posted @   Dba_sys  阅读(266)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示