您的位置:首页 > 编程语言 > C语言/C++

指尖上的代码[C语言版]-<5>

2012-08-10 01:24 274 查看
<5> 十进制转换为二进制、八进制、十六进制。

分析:











代码:

#include "stdio.h"

/* 函数声明 */
void GetBibary(long int x);
void GetOctal(long int x);
void GetHexadecimal(long int x);
/* 主函数 */
int main(void)
{
long int x;
printf("我会帮您把大于等于零的十进制数转换成二进制、八进制、十六进制数。\n");
printf("请输入您想要转换的十进制数:");
scanf("%ld",&x);
if(x<0)
{
printf("请输入大于等于零的十进制数!\n");
}
else
{
GetBibary(x);
GetOctal(x);
GetHexadecimal(x);
}
return 0;
}
/* 求二进制的函数 */
void GetBibary(long int x)
{
long int X,quotient,remainder;
long int i=0,j,binary[32];
X=x;
if(x>=0&&x<2)
{
printf("%ld的二进制数是%ld.\n",x,x);
}
else
{
do
{
quotient=x/2;
remainder=x%2;
binary[i]=remainder;
x=quotient;
i++;
}while(x>=2);
binary[i]=quotient;
printf("%ld的二进制数为:",X);
for(j=i;j>=0;j--)
{
printf("%ld",binary[j]);
}
printf("\n");
}
}
/* 求八进制的函数 */
void GetOctal(long int x)
{
long int X,quotient,remainder;
long int i=0,j,octal[16];
X=x;
if(x>=0&&x<8)
{
printf("%ld的八进制数是%ld.\n",X,x);
}
else
{
do
{
quotient=x/8;
remainder=x%8;
octal[i]=remainder;
x=quotient;
i++;
}while(x>=8);
octal[i]=quotient;
printf("%ld的八进制数为:",X);
for(j=i;j>=0;j--)
{
printf("%ld",octal[j]);
}
printf("\n");
}

}
/* 求十六进制的函数 */
void GetHexadecimal(long int x)
{
long int X,quotient,remainder;
long int i=0,j,hexadecimal[8];
char change[6]={'F','E','D','C','B','A'};
X=x;
if(x>=0&&x<10)
{
printf("%ld的十六进制数是%ld.\n",X,x);
}
else if(x>=10&&x<16)
{
x=16-(x+1);
printf("%ld的十六进制数是%c.\n",X,change[x]);
}
else
{
do
{
quotient=x/16;
remainder=x%16;
hexadecimal[i]=remainder;
x=quotient;
i++;
}while(x>=16);
hexadecimal[i]=quotient;
printf("%ld的十六进制数为:",X);
for(j=i;j>=0;j--)
{
if(hexadecimal[j]>=0&&hexadecimal[j]<10)
{
printf("%ld",hexadecimal[j]);
}
else
{
hexadecimal[j]=16-(hexadecimal[j]+1);
printf("%c",change[(hexadecimal[j])]);
}
}
printf("\n");
}

}


编译结果:






点石成金 写于 2012/08/10/01:27
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: