求c语言进制转换代码 10进制转换成2 8 16进制 用pow及itoa函数

2024-11-19 02:24:10
推荐回答(1个)
回答(1):

//十进制转二进制
#include 
void trans(int x)
{
 int a[30];
 int i=0,rem;
 do{
  rem=x%2;x=x/2;
  a[i]=rem;
  i++;
 }while(x!=0);
 while(i>0)
  printf("%d",a[--i]);
 printf("\n")
}
void main()
{
 int d;
 printf("请输入一个十进制的正整数:\n");
 do scanf("%d",&d);while(d<0);
 trans(d); 
}

//十进制转八进制
#include "stdio.h" 
#include "math.h" 
main() 

int i,n=0,o=0,j=0; 
scanf("%d",&i); /*改成*/ 
if(i<=7) 
o=i; 
else 

while(i>7) 
{ /*加括号*/ 
j=i%8; 
i=i/8; 
o=j*pow(10,n)+o; 
n++; 
} /*加括号*/ 

o=o+i*pow(10,n); 
printf("o=%d\n",o); 


//十进制转十六进制
#include
char tohex(int n)
{

    if(n>=10 && n<=15)
    {
    return 'A'+n-10;
    }
    return '0'+n;
}
void dec2hex(int n,char *buf)
{
int i=0;
int mod;
while(n)
{
mod = n%16;
buf[i++]=tohex(mod);
n=n/16;
}
//得进行反序。
int j,k;
for(j=0,k=i-1;j{
char temp;
temp = buf[j];
buf[j] = buf[k];
buf[k] = temp;
}
buf[i]='\0';
}

int  main()
{
int n;
scanf("%d",&n);
char a[32];
dec2hex(n,a);
printf("%s",a);
return 0;
}