有一次碰上的面试题,面试者说很简单,但是当时我没有答对。
比如有个数0x1AEF,将小于D的变成F, 需要将它变成0XFFEF
void main(void)
{
int i=0,j=0;
int num;
scanf("%x",&num);
int buffer[100];
while(num)
{
if(num%16 < 13)
buffer[i++] = 15;
else
buffer[i++] = num%16;
num = num/16;
}
int sum=0;
for(j=i-1;j>=0;j--)
sum = sum * 16 + buffer[j];
printf("%x\n",sum);
}
another way, using sprintf, get string eventually
int main(int argc, char* argv[])
{
char tmp[10];
for(int i=0;i<10;i++)
tmp[i] = '\0';
int num;
scanf("%x",&num);
sprintf(tmp,"%x",num);
char *p = tmp;
while(*p!='\0')
{
if(*p<'d')
*p = 'f';
p++;
}
printf("%s\n",tmp);
printf("\n");
return 0;
}