水題T,二進制轉16進制
阿新 • • 發佈:2018-11-14
++ 個數 {0} out bcd 水題 abcd light ()
輸入一個2進制的數,要求輸出該2進制數的16進制表示。
在16進制的表示中,A-F表示10-15
Input第1行是測試數據的組數n,後面跟著n行輸入。每組測試數據占1行,包括一個以0和1組成的字符串,字符串長度至少是1,至多是10000Outputn行,每行輸出對應一個輸入。Sample Input
2 100000 111
Sample Output
20 7
2進制轉換成16進制。
從後面開始,每四位換成一個數,0123456789ABCDEF,不足4位在前面用0補上。
程序一直出問題,因為定義的是char型的數組,所以操作的時候必須用‘0‘ ‘A‘等等。
#include <bits/stdc++.h> using namespace std; char s1[10005]; char convert[] = "0123456789ABCDEF"; int main(){ int n; cin>>n; getchar(); while(n--){ char s3[10000]={0};//存放結果 gets(s1+4); s1[0] = s1[1] = s1[2] = s1[3] = ‘0‘; //令前四位為0 int len1 = strlen(s1); int m = 4; if(len1%4) m = len1%4; int j = 0; for(int i = m; i < len1; i+=4) { s3[j] = convert[(s1[i]-‘0‘)*8 + (s1[i+1]-‘0‘)*4 + (s1[i+2]-‘0‘)*2 + (s1[i+3]-‘0‘)]; j++; } cout<<s3<<endl; } return 0; }
水題T,二進制轉16進制