#include<stdio.h> 1142二进制转化
#include<string.h>
int bToD(char str[])
{ int a,x=1,sum=0,b,i;
b=strlen(str);
for(i=b-1;i>=0;i--)
{
sum+=(str[i]-'0')*x;
x=x*2;
}
return sum;
}
int main()
{int a[3],t,i,j;
char str[33];
for(i=0;i<3;i++)
{scanf("%s",str);
a[i]=bToD(str);
}
for(i=1;i<3;i++)
for(j=1;j<3;j++) //循环排序
{ if(a[j]<a[j-1])
{ t=a[j-1];
a[j-1]=a[j];
a[j]=t;
}
}
for(i=0;i<3;i++)
printf("%d ",a[i]);
return 0;
}
核心
int bToD(char str[]) //2进制到10进制
{ int a,x=1,sum=0,b,i; //其他进制 2可替换
b=strlen(str); // 注意字符要减去0字符
for(i=b-1;i>=0;i--)
{
sum+=(str[i]-'0')*x;
x=x*2;
}
10进制到二进制
void convert(int n, char str[])
{ int i=0,d;
if(n==0)
printf("0");
while(n>0)
{d=n%2;
str[i]=d; //注意没有0字符
i++;
n=n/2;
}
for(i=i-1;i>=0;i--) //注意倒序输出
{ printf("%d",str[i]); %c还是%d
}
}