C/C++实现的二进制与十进制互转

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;
} 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页