C语言【程序48】题目:八进制转换为十进制、二进制转换为十进制、十进制转换为二进制 、十进制转换为八进制、十六进制转换为十进制、十进制转换为十六进制

基本思想: 八进制转十进制,二进制转十进制都一样的道理

在这里插入图片描述

八进制 --> 十进制

//【程序48】
//题目:八进制-->十进制
#include<stdio.h>
#include<math.h>
int main()
{
	int i=0,n,tmp,sum=0;
	scanf("%d",&n);
	while(n)
	{
		tmp=n%10;
		n=n/10;
		sum+=tmp*pow(8,i);
		i++;
	}
	printf("%d",sum);
	return 0;
}

二进制 --> 十进制

#include<stdio.h> //二进制-->十进制
#include<math.h>
int main()
{
	int i=0,n,tmp,sum=0;
	scanf("%d",&n);
	while(n)
	{
		tmp=n%10;
		n=n/10;
		sum+=tmp*pow(2,i);
		i++;
	}
	printf("%d",sum);
	return 0;
}

十进制 --> 二进制

#include<stdio.h>  //十进制-->二进制 
int main()
{
	int i=0,n,str[15];
	scanf("%d",&n);
	while(n)
	{
		str[i]=n%2;
		n=n/2;
		i++;
	} 
	for(int j=i-1;j>=0;j--)
		printf("%d",str[j]);
	return 0;
}

十进制 --> 八进制

#include<stdio.h>  //十进制-->八进制 
int main()
{
	int i=0,n,str[15];
	scanf("%d",&n);
	while(n)
	{
		str[i]=n%8;
		n=n/8;
		i++;
	} 
	for(int j=i-1;j>=0;j--)
		printf("%d",str[j]);
	return 0;
}

十六进制 --> 十进制

#include<stdio.h> //十六进制-->十进制 eg. (十六进制)AB-->171(十进制) 
#include<math.h>                                  //ABCD-->43981
int main()
{
	int i,j,k=0;
	long int sum=0,tmp;
	char str[15],a[15]; 
	gets(str);
	for(i=0;str[i]!='\0';i++)
	{
		if(str[i]>='0'&&str[i]<='9')
			a[i]=str[i]-'0';
		if(str[i]>='a'&&str[i]<='z')
			a[i]=str[i]-'a'+1+9;
		if(str[i]>='A'&&str[i]<='Z')
			a[i]=str[i]-'A'+1+9;
	}
	for(j=i-1;j>=0;j--)
	{
		tmp=a[j]*pow(16,k);
		sum+=tmp;
		k++;
	}
	printf("%ld",sum);
	return 0;	
}
//#include<stdio.h>         //方法二:参看大佬的解法   
//int main()                //16-->10进制 
//{
//	int num = 0;
//    printf("输入一个十六进制数: ");
//    scanf("%x", &num);
//    printf("十六进制数 %x 转换为十进制为 %d\n", num, num);
//	return 0;
//}

十进制 --> 十六进制

#include<stdio.h>
int main()
{
	int n,i=0,j;
	char ten[16],str[17]="0123456789ABCDEF";  //10进制-->16进制 
	scanf("%d",&n);                           //46-->2E; 59-->3B
	while(n)                                  //46= 2*16^1 + 14*16^0
	{
		ten[i++]=str[n%16];
		n=n/16;
	}
	for(j=i-1;j>=0;j--)
		printf("%c",ten[j]); 
	return 0;
}

在这里插入图片描述

  • 9
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值