top1编程
← 返回题目
题解

【入门】8进制、16进制转10进制

1 条题解

  • 0
    @ 2026-7-28 22:10:14
    #include<bits/stdc++.h>
    using namespace std;
    int main(){
    	int n,x=0,t=1;
    	string s; //自定义s数组 
    	cin>>n;
    	for(int i=1;i<=n;i++){
    		cin>>s;
    		if(s[0]=='0' && s[1]=='x'){ //十六进制的 
    			for(int i=s.size()-1;i>=2;i--){//前两位不是
    				if(s[i]>='0'&&s[i]<='9'){
    					x+=(s[i]-'0')*t;//数字部分
    				}
    				else{
    					x+=(s[i]-'a'+10)*t;//字母部分
    				}
    				t=t*16;
    			} 
    			cout<<x<<endl;
    		}
    		else if(s[0]=='0'){ //八进制的 
    			for(int i=s.size()-1;i>=1;i--){
    				x+=(s[i]-'0')*t;
    				t=t*8;
    			}
    			cout<<x<<endl;
    		}
    		t=1;
    		x=0;
    	} 
    }
    
    • 1