1. 2~16
#include<stdio.h>
#include<string.h>
// 2进制 转16
int main(){
int N,n,k,t,i,j,m;
char a[10005];
int b[10005]={0};
scanf("%d",&N);
while(N--){
scanf("%s",&a);
n=strlen(a);
for(i=0;i<n;i++)
b[i]=0;
k=0;
t=1;
m=0;
for(i=n-1;i>=0;i--){
b[k]+=(a[i]-'0')*t;
t*=2;
m++;
if(m%4==0){
k++;
t=1;
}
}
for(i=0;i<n;i++){
if(b[i]>=10){
switch(b[i]){
case 10 : b[i]='A'; break;
case 11 : b[i]='B'; break;
case 12 : b[i]='C'; break;
case 13 : b[i]='D'; break;
case 14 : b[i]='E'; break;
case 15 : b[i]='F'; break;
}
}
}
for(i=k;i>=0;i--){
if(b[i]!=0){
for(j=i;j>=0;j--){
if(b[j]>=65 && b[j]<=70 )
printf("%c",b[j]);
else printf("%d",b[j]);
}
break;
}
}
if(i==-1) printf("0");
printf("\n");
}
}
2. 2~10
#include <stdio.h>
#include <stdlib.h>
int main()
{
char ch;
int a=0;
while(ch=getchar(),ch!='\n')
a=a*2+(ch-'0');
printf("%d\n",a);
return 0;
}