题意:百练2798
方法:利用2进制的4位表示一位16进制
要点:1:
pow函数,用的时候注意参数类型,C++有很多类型。
2:
2进制不足4位的情况。
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
char input[10005];
int i,temp,length,Case;
scanf("%d",&Case);
while(Case--){
scanf("%s",input);
length = strlen(input);
temp = length%4;
int sum = 0;
if(temp) //巧妙地处理了余数位
{
for(i = 0;i < temp; i++)
sum += (input[i] - '0')*pow(2,temp - 1 - i); //注意函数
printf("%X",sum);
}
for(i = temp;i < length; i += 4) //注意 i 必须要赋值
printf("%X",(input[i] - '0')*8 + (input[i+1] - '0')*4 + (input[i+2] - '0')*2 + (input[i+3] - '0'));
printf("\n");
}
return 0;
}