大数进制转化
发布时间: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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |