进制转换
Q:输入一个整数n,输出它的二、八、十六进制。
S:
#include <stdio.h> int chantyp(int type/*目标进制,如:2 */ ,int n,int ans[]); //用于转换进制,返回结果数组的长度 //超级进制转换器,适用于十进制到二、八、十六进制 的转化 int main() { int i,len; int n; int n2[101]={0}; int n8[101]={0}; int n16[101]={0}; scanf("%d",&n); /////////////////////// //以下处理二进制部分的输出 len=chantyp(2,n,n2); for(i=0;i<=len;i++) printf("%d",n2[i]); printf("\n"); //////////////////////// //以下处理八进制部分的输出 len=chantyp(8,n,n8); for(i=0;i<=len;i++) printf("%d",n8[i]); printf("\n"); ////////////////////////////////////// //以下处理十六进制的输出 len=chantyp(16,n,n16); for(i=0;i<=len;i++) { if(n16[i]>=10&&n16[i]<=16) { switch(n16[i]) { case 10:printf("A");break; case 11:printf("B");break; case 12:printf("C");break; case 13:printf("D");break; case 14:printf("E");break; case 15:printf("F");break; case 16:printf("G");break; } } else printf("%d",n16[i]); } printf("\n"); return 0; } int chantyp(int type,int n,int ans[]) //超级进制转换器,适用于十进制到二、八、十六进制 的转化 { int i=0; int len; int j; int temp; while(n/type!=0) { ans[i]=n%type; n/=type; i++; } ans[i]=n; len=i; for(i=0,j=len;i<=len/2;i++,j--) { temp=ans[i]; ans[i]=ans[j]; ans[j]=temp; } return len; }