C语言十进制转换二进制八,十六进制。code
十进制转二进制有个计算公式,就是除以2取余再倒序显示余数就是了。能够根据公式写。八制进公式也同理。十六进制有点不同,大于9的要转为字母。A,B,C,D,E,F。get
#include <stdio.h> void totwo(); void toeight(); void tosixt(); int main() { totwo(); toeight(); tosixt(); return 0; } void totwo() { int p,m,n,a[100]; printf("十进制转二进制\n"); printf("输入十进制数:"); scanf("%d",&p); for(m=0;p>0;m++) { a[m]=p%2; p=p/2; } for(n=m-1;n>=0;n--) printf("%d",a[n]); printf("\n"); } void toeight() { int p,m,n,a[100]; printf("十进制转八进制\n"); printf("输入十进制数:"); scanf("%d",&p); for(m=0;p>0;m++) { a[m]=p%8; p=p/8; } for(n=m-1;n>=0;n--) printf("%d",a[n]); printf("\n"); } void tosixt() { int p,m,n,a; char ch[100]; printf("十进制转十六进制\n"); printf("输入十进制数:"); scanf("%d",&p); for(m=0;p>0;m++) { a=p%16; if(a<10) { ch[m]=a+'0'; }else { ch[m]=a-10+'A'; } p=p/16; } for(n=m-1;n>=0;n--) printf("%c",ch[n]); printf("\n"); }
--11-2二进制转十进制。也是有一个公式,好比二进制1010对应十进制是10,从前面位开始1*2^3+0*2^2+1*2^1+0*2^0=8+2=10.还有就是判断输入的是否是二进制数了。io
#include<stdio.h> void towtoten(); int pow(int a); int main() { towtoten(); return 0; } void towtoten() { int temp,n=0,i,j,sum=0; char p,a[100]; printf("\n二进制转十进制\n"); printf("输入二进制数:"); while((p=getchar())!='\n') { a[n]=p; n++; } j=n; for(i=0;i<n;i++) { if(a[i]=='.') { printf("不支持小数。"); towtoten(); return; } if(a[i]=='-') { printf("不支持负数。"); towtoten(); return; } if(a[i]!='1'&&a[i]!='0') { printf("输入有误,不是二进制数。"); towtoten(); return; } if(a[i]=='1') { temp=pow(j-1); }else { temp=0; } sum+=temp; j--; } printf("十进制数:%d",sum); printf("\n"); } int pow(int a) { int product=1; for(int i=0;i<a;i++) { product*=2; } return product; }