ブルーブリッジカップの16進数変換10進数(c++コード実装)

1628 ワード

/*問題は、キーボードから8ビットを超えない正の16進数文字列を入力し、正の10進数に変換して出力することを示します.注:16進数の10~15は、それぞれ大文字のアルファベットA、B、C、D、E、Fで表されます.サンプル入力FFFFサンプル出力65535*/法1:

#include
#include
#include
using namespace std;
int main(){
	string shiliu;
	long long sum=0;//     ,          。 
	cin>>shiliu;
	int t=0;
	int len=shiliu.size();
	for(int i=len-1;i>=0;i--)
	{
		if(shiliu[i]<='9'&&shiliu[i]>='0')
			sum+=(long long)(shiliu[i]-'0')*(long long)pow(16.0,t);
		else if(shiliu[i]-'A'>=0&&shiliu[i]-'F'<=0)
			sum+=(long long)(shiliu[i]-'A'+10)*(long long)pow(16.0,t);
		t++;
		
	} 
	
	cout<
#include
using namespace std;
int main()
{
	string s;//     s
	cin>>s;
	int len = s.size();
	long long sum=0;
	//         
	for(int i = 0;i='A'&&s[i]-'A'<=5)
			sum+=(long long)(s[i]-'A'+10)*(long long)pow(16.0,len-i-1);
		else 
			sum+=(s[i]-'0')*(int)pow(16.0,len-i-1);
	} 
	cout<
#include 
using namespace std;
int main() {
    string s;
    while (cin >> s) {
        int len = s.length();
        long long sum = 0;
        for (int i = 0; i < len; i++) {
            if (s[i] >= 'A' && s[i] <= 'F') {
                sum = sum * 16 + s[i] - 'A' + 10;
            }
            else {
                sum = sum * 16 + s[i] - '0';
            }
        }
        cout << sum;
    }
    return 0;
}