int main( void )
{
char buf[9]; /*输入的整数不超过8位*/
int num=0,sign=10;
unsigned int i=0;
while(1)
{
printf("请输入数字: ");
gets(buf);
for (i=0; i<strlen(buf); i++)
{
if ( !(buf[i]>='0' && buf[i]<='9') )
{
printf("含0123456789外的字符,请重先输入: ");
gets(buf);
i=0;
}
}
/*--------------------------------------*/
for(i=0; i<strlen(buf); i++)
{
if ( 49<buf[i]) /*输入的是10进制数*/
{
num = atoi(buf);
itoa(num,buf,2);
printf("十进制数%d的二进制形式是: ",num);
for (i=0; i<8-strlen(buf); i++)
{
printf("%d",0); //高位补零,补足8位
}
printf("%s\n",buf);
return 0;
}
}
/*--------------------------------------*/
printf("--------该数是2进制请输入2,是10进制输入10-----------\n");
scanf("%d",&sign);//格式化输入的数据
if (sign == 10) /*输入的是10进制数*/
{
num = atoi(buf);
if(num > 256)
{
printf("error:你输入的十进制数不在0--256内.\n");
return 0;
}
itoa(num,buf,2);//十进制转成二进制
printf("十进制数%d的二进制形式是: ",num);
for (i=0; i<8-strlen(buf); i++)
{
printf("%d",0); //高位补零,补足8位
}
printf("%s\n",buf);
return 0; //
}
else /*输入的是2进制数*/
{
for (i=0; i<strlen(buf) ; i++)
{
int e = strlen(buf)-i-1;
num +=(int)(pow((float)2,e)*(buf[i]-48));
}
printf("二进制数%s的十进制形式是: %d\n",buf,num);
return 0;
}
/*--------------------------------------*/
}
return 0;
}