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

大数进制转化

发布时间:2020-12-14 03:28:05 所属栏目:大数据 来源:网络整理
导读:1.倒序取余法 #include stdio.h#include string.h#define N 1000void print_result(int *num,int count){int i;for(i=count-1; i=0; --i){printf("%d",num[i]);}printf("n");}void convert(int *integer,int len,int *num,int *count,int m,int n){int i;in

1.倒序取余法

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

#define N 1000

void print_result(int *num,int count)
{
	int i;

	for(i=count-1; i>=0; --i)
	{
		printf("%d",num[i]);
	}
	printf("n");	
}

void convert(int *integer,int len,int *num,int *count,int m,int n)
{
	int i;
	int mod,tmp;
	int tag = 1;
	*count = 0;
	
	while(tag != 0)
	{	
		mod = 0;
		tag = 0;
		
		for(i=0; i<len; ++i)
		{
			if(integer[i] != 0)
			{
				tag = 1;
			}
			tmp = mod*m + integer[i];
			integer[i] = tmp / n;
			mod = tmp % n;
		}
		
		if(tag != 0)
		{
			num[(*count)++] = mod;
		}
	}
}

int main(void)
{
	char str[N];
	int integer[N];
	int num[4000];
	
	while (scanf("%s",str) != EOF)
	{
		int len;
		int count;
		
		if(0 == strcmp(str,"0"))
		{
			printf("0n");
		}
		else
		{
			for(len=0; str[len]!=''; ++len)
			{
				integer[len] = str[len] - '0';
			}
			
			convert(integer,len,num,&count,10,2);
			//print_result(num,count);

			convert(num,count,integer,&len,2,10);
			print_result(integer,len);
		}
	}
	
	return 0;
}

2.倒序取余法

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

#define N 31

void printResult(int *result,int count)
{
	int i;

	for (i=count-1; i>=0; --i)
	{
		printf("%d",result[i]);
	}
	printf("n");	
}

void convert(int *integer,int n,int *result,int *count)
{
	int i,mod,tmp,isContinue; 
	
	while (1) 
	{	
		mod = 0;
		isContinue = 0;
		
		/*计算每一次取余的结果*/
		for (i=0; i<n; ++i)
		{
			if (integer[i] != 0)
			{
				isContinue = 1; /*存在不为0的位数,置标志为1*/
			}

			tmp = integer[i] + (mod * 10);	
			integer[i] = tmp / 2;		
			mod = tmp % 2;
		}
		
		if (isContinue != 0)
		{
			result[(*count)++] = mod;
		}
		else
		{
			break; /*每次取余后结果不为0时,继续*/
		}
	}
}

int main(void)
{
	char str[N];
	
	while (scanf("%s",str) != EOF)
	{
		int i,integer[N],result[110];
		int count = 0;
		
		if (0 == strcmp(str,"0"))
		{
			printf("0n");
		}
		else
		{
			for (i=0; str[i]!=''; ++i)
			{
				integer[i] = str[i] - '0';
			}
			
			convert(integer,i,result,&count);
			printResult(result,count);
		}
	}
	
	return 0;
}

(编辑:李大同)

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

    推荐文章
      热点阅读