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;
}
还没有评论,来说两句吧...