main() {int n,a[100],i=0,j; scanf("%d",&n); while(n>=1) {a[i++]=n%2; n=n/2; } for(j=i-1;j>=0;j--) printf("%d",a[j]); printf("\n"); }
是这样吧!
比如: 请输入转换进制:16 2 请输入转换数据:A1 10100001 Press any key to continue
#include <stdio.h> #include <string.h> #include <math.h> /*该函数可以实现小于整型数据的任意进制之间转换*/ /*以下函数将a进制数s转换成b进制并输出*/ void f(int a,int b,char s[]) { char r[17]; int i,n,t,k; for(n=strlen(s)-1,i=t=0;*(s+i)!='\0';i++,n--) /*这里先转换成十进制数*/ { if(*(s+i)<='9') t+=(*(s+i)-'0')*int(pow(a,n)); else t+=(*(s+i)-'A'+10)*int(pow(a,n)); } for(i=0;t!=0;i++) /*再转换成b进制*/ { k=t%b; if(k>9)r[i]='A'+k-10; else r[i]='0'+k; t/=b; } r[i]='\0'; s=strrev(r); printf("%s\n",s); } void main() { int a,b; char s[17]; printf("请输入转换进制:"); scanf("%d%d",&a,&b); printf("请输入转换数据:"); scanf("%s",s); f(a,b,s); }