📄 a5进制转换.cpp
字号:
#include<iostream.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
bool back()//返回主菜单函数
{
char c[10];
cout<<">>>按N退出系统,或按其他键返回主菜单:";
cin>>c;
if((c[0]=='n')||(c[0]=='N')) return 0;
else
{
system("cls");
return 1;
}
}
void ttt(long int m,int n)//向二进制转换并输出的函数
{
char a[50];
int i;
long int j=m;
for(i=0;;i++)//除2取余法,用字符串储存2进制
{
a[i]=m%2+48;
m=(m/2);
if(m==0)
break;
}
if(n==8) cout<<"您输入的八进制数为:"<<oct<<j<<endl;
else if(n==10) cout<<"您输入的十进制数为:"<<dec<<j<<endl;
else cout<<"您输的十六进制数为:"<<hex<<j<<endl;
cout<<"该数转换为二进制为:";
for(;i>=0;i--)
cout<<a[i];//逐位输出
cout<<endl;
}
void ttt2()//接收二进制字符串并转为十进制
{
long int tt=0;
int i,j;
char s[30],c[10];
cout<<"请输入二进制的数字:";
cins:cin>>s;//字符串接收二进制输入
for(i=0;s[i]!='\0';i++)//判断输入是否正确
if( (s[i]!='0') & (s[i]!='1') )
{
cout<<"输入中包含非法字符,请重新输入:";
goto cins;
}
j=--i;
for(i=0;i<=j;i++)
if(s[i]=='1')
tt=tt+long int(pow(2,j-i));
//逐位计算权值并累加得到十进制
cout<<"请选择您要转换的数制:"<<endl;
cout<<"(1)八进制 (2)十进制 (3)十六进制 请选择:";
cinc3:cin>>c;
if(c[0]=='1')//2->10->8输出
{
cout<<"您输入的二进制数为:"<<s<<endl;
cout<<"该数字转为八进制是:"<<oct<<tt<<endl;
}
else if(c[0]=='2')//2->10输出
{
cout<<"您输入的二进制数为:"<<s<<endl;
cout<<"该数字转为十进制是:"<<dec<<tt<<endl;
}
else if(c[0]=='3')//2->10->16输出
{
cout<<"您输入的二进制数为:"<<s<<endl;
cout<<"该数转为十六进制是:"<<hex<<tt<<endl;
}
else//选择错误
{
cout<<"您的输入有误,请重新选择:";
goto cinc3;
}
}
bool main()//主函数
{
char c[10];
long int n;
menu:cout<<"请选择您要输入的数制:"<<endl;
cout<<"(1)十进制 (2)二进制 (3)八进制 (4)十六进制 (5)退出程序 请选择:";
cinc:cin>>c;
if(c[0]=='1')//十进制到其他进制
{
cout<<"请输入一个十进制数:";
cin>>n;
cout<<"请选择您要转换的数制:"<<endl;
cout<<"(1)二进制 (2)八进制 (3)十六进制 请选择:";
cinc2:cin>>c;
if(c[0]=='1')//十进制到二进制调用函数处理
{
ttt(n,10);
if(back()) goto menu;
else return 1;
}
else if(c[0]=='2')//十进制到八进制直接输出
{
cout<<"您输入的十进制数为:"<<dec<<n<<endl;
cout<<"该数转换为八进制为:"<<oct<<n<<endl;
if(back()) goto menu;
else return 0;
}
else if(c[0]=='3')//十进制到十六进制直接输出
{
cout<<"您输入的十进制数为:"<<dec<<n<<endl;
cout<<"该数转为十六进制为:"<<hex<<n<<endl;
if(back()) goto menu;
else return 0;
}
else//选择错误
{
cout<<"您的输入有误,请重新选择:";
goto cinc2;
}
}
else if(c[0]=='2')//二进制到其他进制调用函数实现
{
ttt2();
if(back()) goto menu;
else return 0;
}
else if(c[0]=='3')//八进制到其他进制
{
cout<<"请输入一个八进制数:";
cin>>oct>>n;
cout<<"请选择您要转换的数制:"<<endl;
cout<<"(1)二进制 (2)十进制 (3)十六进制 请选择:";
cinc4:cin>>c;
if(c[0]=='1')//八进制到二进制调用函数处理
{
ttt(n,8);
if(back()) goto menu;
else return 1;
}
else if(c[0]=='2')//八进制到十进制直接输出
{
cout<<"您输入的八进制数为:"<<oct<<n<<endl;
cout<<"该数转换为十进制为:"<<dec<<n<<endl;
if(back()) goto menu;
else return 0;
}
else if(c[0]=='3')//八进制到十六进制直接输出
{
cout<<"您输入的八进制数为:"<<oct<<n<<endl;
cout<<"该数转为十六进制为:"<<hex<<n<<endl;
if(back()) goto menu;
else return 0;
}
else//选择错误
{
cout<<"您的输入有误,请重新选择:";
goto cinc4;
}
}
else if(c[0]=='4')//十六进制到其他进制
{
cout<<"请输入一个十六进制数:";
cin>>hex>>n;
cout<<"请选择您要转换的数制:"<<endl;
cout<<"(1)二进制 (2)八进制 (3)十进制 请选择:";
cinc5:cin>>c;
if(c[0]=='1')//十六进制到二进制调用函数处理
{
ttt(n,16);
if(back()) goto menu;
else return 1;
}
else if(c[0]=='2')//十六进制到八进制直接输出
{
cout<<"您输的十六进制数为:"<<hex<<n<<endl;
cout<<"该数转换为八进制为:"<<oct<<n<<endl;
if(back()) goto menu;
else return 0;
}
else if(c[0]=='3')//十六进制到十进制直接输出
{
cout<<"您输的十六进制数为:"<<hex<<n<<endl;
cout<<"该数转换为十进制为:"<<dec<<n<<endl;
if(back()) goto menu;
else return 0;
}
else//选择错误
{
cout<<"您的输入有误,请重新选择:";
goto cinc5;
}
}
else if(c[0]=='5')//退出
return 0;
else//选择错误
{
cout<<"您的输入有误,请重新选择:";
goto cinc;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -