加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数的十进制转换成二进制(C语言)

发布时间:2020-12-14 02:35:57 所属栏目:大数据 来源:网络整理
导读:题目1138:进制转换 题目描述: 将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。 输入: 多组数据,每行为一个长度不超过30位的十进制非负整数。 (注意是10进制数字的个数可能有30个,而非30bits的整数) 输出: 每行输出对应的二进制数。
题目1138:进制转换
题目描述:

将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。

输入:

多组数据,每行为一个长度不超过30位的十进制非负整数。
(注意是10进制数字的个数可能有30个,而非30bits的整数)

输出:

每行输出对应的二进制数。

样例输入:
0
1
3
8
样例输出:
0
1
11
1000
#include <string.h>
#include <stdio.h>
#define false 0
#define true 1
char src[40];
int tar[100];
int cha=0;
int lenof(char tar[])
{
	int i=0;
	int len=0;
	while(tar[i]!='') {
		i++;
		len++;
	}
	return len;
}
int  isZero(char src[])
{
	int i;
	for ( i=lenof(src)-1; i>=0; i--) {
		if (src[i] != '0') {
			return false;
		}
	}
	return true;
}

void ToBin(char src[])
{
	int i=0;
	int j=0;
	int len=lenof(src);
	while(!isZero(src)) {
		int temp=0;
		int yu=0;
		for(i=0; i<len; i++) {
			if(i==len-1) {
				temp = (yu*10 + (src[i]-'0'))/2 ;
				yu=(yu*10 + (src[i]-'0'))%2;
				src[i]= '0'+temp;
				tar[j]=yu;
				j++;
			} else {
				temp = (yu*10 + (src[i]-'0'))/2 ;
				yu=(yu*10 + (src[i]-'0'))%2;
				src[i]='0'+temp;
			}
		}
	}
	cha=j;

}

int main()
{
	int i=0;
	memset(tar,sizeof(tar));
	while(scanf("%s",src)!=EOF) {
		if(isZero(src)) printf("0");
		else {
			ToBin(src);
			for(i=cha-1; i>=0; i--) {
				printf("%d",tar[i]);
			}
		}
		printf("n");
		cha=0;
	}
	return 0;
}

附上网上看到的别人的C++代码

#include <stdio.h>
#include <cstring>
#include <string>
#include <iostream>
using namespace std;
char binvec[1001];

void tenToBin(string str)
{
	int j=0;
	int sum=1;
	int len=str.size();

	while (sum) {
		sum=0;
		for (int i=0; i<len; ++i) {
			int temp=(str[i]-'0')/2;
			sum+=temp;
			if (i==len-1) {
				binvec[j++]=(str[i]-'0')%2+'0';

			} else {
				str[i+1]=str[i+1]+(str[i]-'0')%2*10;//算出下一个被除数
			}
			//记录该次得出的商
			str[i]=temp+'0';
			
		}

	}
}
void resout()
{
	//逆序
	int len1=strlen(binvec);
	for (int i=0,j=len1-1; i<len1/2; ++i,--j) {
		char temp=binvec[j];
		binvec[j]=binvec[i];
		binvec[i]=temp;

	}
	cout<<binvec<<endl;
}
int main()
{
	string str;
	while(cin>>str) {
		memset(binvec,'',sizeof(binvec));
		tenToBin(str);
		resout();

	}
	return 0;

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读