C语言十进制转换二进制八,十六进制。二进制转十进制。

拈花ヽ惹草 提交于 2020-11-11 03:23:03

C语言十进制转换二进制八,十六进制。

十进制转二进制有个计算公式,就是除以2取余再倒序显示余数就是了。可以根据公式写。八制进公式也同理。十六进制有点不一样,大于9的要转为字母。A,B,C,D,E,F。

#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.还有就是判断输入的是不是二进制数了。

#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;
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!