该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#include
#define NUM 2
#define ZERO 0.000001
int PrnMainMenu(void);
void ProcessLoop(void);
void two(void);
void ten(void);
int a,b[10],i=0,c=0;
void integer(int n) //定义整数部分
{
if(n>0)
{
integer(n/NUM);
printf("%d",n%NUM);
}
}
void decimal(double m)//定义小数部分
{
if(m>ZERO)
{
m=m*NUM;
printf("%d",(long)m);
decimal(m-(long)m);
}
}
main() /*主函数*/
{
ProcessLoop();
return 0;
}
void ProcessLoop(void)
{
int iChoice;
iChoice = PrnMainMenu();
while (iChoice != 3)
{
switch(iChoice)
{
case 1:
two();
break;
case 2:
ten();
break;
}
system("pause");/*暂停*/
system("cls"); /*_clearscreen(0);清屏 */
iChoice = PrnMainMenu();//返回主菜单
}
return;
}
void two(void)//十进制转二进制
{
double f;
long n;
printf("请输入原数据:");
scanf("%lf",&f);
if(f<0)
{
printf("-");
f=-f;
}
n=(long)f;//整数部分
printf("转换成%d进制的小数为:",NUM);
integer(n);
printf(".");
decimal(f-n);//小数部分的转换
printf("\n");
}
void ten(void)//二进制转十进制
{
printf("请输入原数据\n");
scanf("%d",&a);
while(a!=0)
{
b[i]=a%10;
a/=10;
i++;
}
i--;
for(;i>=0;i--)
c=c*2+b[i];
printf("十进制为:%d\n",c);
}
int PrnMainMenu(void)//主菜单
{
int iChoice;
printf("\n");
printf("----------------菜单-----------------\n");
printf("\n");
printf(" 1:将十进制数转换为二进制数\n");
printf(" 2:将二进制数转换为十进制数\n");
scanf("%d",&iChoice);
return iChoice;
}