首页 > 其他分享 >五进制十进制互相转换 校招笔试题

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

时间:2022-10-11 16:59:41浏览次数:54  
标签:string ten int stand str 校招 十进制 进制

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;
}

标签:string,ten,int,stand,str,校招,十进制,进制
From: https://www.cnblogs.com/asmurmur/p/16779731.html

相关文章