文章

145

粉丝

217

获赞

21

访问

84.3k

头像
进制转换 题解:C
P1178 北京大学上机题
发布于2024年3月1日 18:08
阅读数 1.0k

#include <stdio.h>
#include <string.h>

int Binary(int d[],int b[],int n)
{
	int i = 0,j,k = 0,a,c,num;
	while(i < n)
	{
		for(j = i; j < n;)
		{
			a = d[j] % 2;	//余数
			c = d[j] / 2;	//商
			d[j] = c;
			num = a*10+d[j+1];
			d[++j] = num;
		}
		//最后的a的值为一个二进制位
		b[k++] = a;
		while(d[i] == 0) i++;
	}
	return k;
}

int main()
{
	char s[31];
	while(scanf("%s",s) != EOF)
	{
		int d[31],b[100],n;
		for(n = 0; n < strlen(s); n++)
			d[n] = s[n]-'0';
		int len = Binary(d,b,n);
		for(n = len-1; n >= 0; n--)
			printf("%d",b[n]);
		printf("\n");
	}
	return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发