当时刚学的时候写的个程序= =以前写的,现在看太冗长了些,不过至少是对的╮(╯_╰)╭
这个是C++,你要C语言的话把里面的cin改成scanf,把cout改成printf,头文件的<iostream>改成<stdio.h>就好
#include<iostream>
#include<math.h>
using namespace std;
int TentoTwo(int n)
{
int b[10000],a[10000],i,j;
for(i=0;n>=2;i++)
{
a[i]=n%2;
n=n/2;
}
a[i]=n;
cout<<"转换为二进制:";
for(j=0;i>=0;i--,j++)
{
b[j]=a[i];
cout<<b[j];
}
return 0;
}
int TentoSixteen(int n)
{
int i,j;
char b[10000],a[10000];
for(i=0;n>=16;i++)
{
a[i]=n%16;
n=n/16;
switch(a[i])
{
case 1:a[i]='1';break;
case 2:a[i]='2';break;
case 3:a[i]='3';break;
case 4:a[i]='4';break;
case 5:a[i]='5';break;
case 6:a[i]='6';break;
case 7:a[i]='7';break;
case 8:a[i]='8';break;
case 9:a[i]='9';break;
case 10:a[i]='A';break;
case 11:a[i]='B';break;
case 12:a[i]='C';break;
case 13:a[i]='D';break;
case 14:a[i]='E';break;
case 15:a[i]='F';break;
}
}
a[i]=n;
switch(a[i])
{
case 1:a[i]='1';break;
case 2:a[i]='2';break;
case 3:a[i]='3';break;
case 4:a[i]='4';break;
case 5:a[i]='5';break;
case 6:a[i]='6';break;
case 7:a[i]='7';break;
case 8:a[i]='8';break;
case 9:a[i]='9';break;
case 10:a[i]='A';break;
case 11:a[i]='B';break;
case 12:a[i]='C';break;
case 13:a[i]='D';break;
case 14:a[i]='E';break;
case 15:a[i]='F';break;
}
cout<<"转换为十六进制:";
for(j=0;i>=0;i--,j++)
{
b[j]=a[i];
cout<<b[j];
}
return 0;
}
int TwotoTen(int n)
{
int i,ans=0,a;
for(i=0;n>0;i++)
{
a=n%10;
n=n/10;
ans=ans+a*pow(2,i);
}
cout<<"转换成十进制:"<<ans;
return 0;
}
int SixteentoTen(int n)
{
int i,t;
int ans=0;
char a[10000];
cout<<"请输入一个数:";
cin>>a;
for(i=0;a[i];i++)
{
if(a[i]<='9')
t=a[i]-'0';
else
t=a[i]-'A'+10;
ans=ans*16+t;
}
cout<<"转换成十进制:"<<ans;
return 0;
}
int main()
{
int n,k=1,m;
while(k!=0)
{
cout<<"0、退出 1、十进制转二进制 2、十进制转十六进制 3、二进制转十进制 4、十六进制转十进制"<<endl;
cout<<"请选择功能:";
cin>>n;
if(n==0)
break;
else if(n==4)
{
SixteentoTen(m);
cout<<endl<<endl;
}
else
{
cout<<"请输入一个数:";
cin>>m;
switch(n)
{
case 1:TentoTwo(m);cout<<endl<<endl;break;
case 2:TentoSixteen(m);cout<<endl<<endl;break;
case 3:TwotoTen(m);cout<<endl<<endl;break;
}
}
}
return 0;
}
本回答被提问者和网友采纳