1.10 数值转化
第一部曲:
封装好函数,把字符转化成数字,把数字转化成字符,通过字符数组,变成十进制,再通过十进制变化成目标进制,
第二部曲:
第三部曲:
int char_to_num(char ch)//字符转化成数字
{
if(ch>='0'&&ch<='9') return ch-'0';
else return ch-'A'+10;
}
char num_to_char(int n)//数字转化成字符
{
if(n>=0&&n<=9) return char('0'+n);
else return char('A'+n-10);
}
int shijinzhi(char a[],int x)//转化成十进制
{
int i=0,length=0,sum=0;
for(i=0;a[i]!='\0';i++)
{
length=i;
}
for(i=0;i<=length;i++)
{
sum+=char_to_num(a[i])*pow(x,length-i);//注意是从前往后遍历,刚开始的位数高
}
return sum;
}
void zhuanhua(int sum,int y)
{
int a[1000],i=0;
while(sum/y)
{
a[i]=sum%y;
i++;
sum=sum/y;
}
a[i]=sum%y;
for(int j=i;j>=0;j--)
{
cout<<a[j];//从后往前输入
}
}
第四部曲:
#include<iostream>
#include<cmath>
using namespace std;
const int N=101;
int char_to_num(char ch)//字符转化成数字
{
if(ch>='0'&&ch<='9') return ch-'0';
else return ch-'A'+10;
}
char num_to_char(int n)//数字转化成字符
{
if(n>=0&&n<=9) return char('0'+n);
else return char('A'+n-10);
}
int shijinzhi(char a[],int x)//转化成十进制
{
int i=0,length=0,sum=0;
for(i=0;a[i]!='\0';i++)
{
length=i;
}
for(i=0;i<=length;i++)
{
sum+=char_to_num(a[i])*pow(x,length-i);//注意是从前往后遍历,刚开始的位数高
}
return sum;
}
void zhuanhua(int sum,int y)
{
int a[1000],i=0;
while(sum/y)
{
a[i]=sum%y;
i++;
sum=sum/y;
}
a[i]=sum%y;
for(int j=i;j>=0;j--)
{
cout<<a[j];//从后往前输入
}
}
int main()
{
char a[N];
int x,y;
int flag=1;
printf("转化前的数是:\n");
scanf("%s",a);
//printf("%s",a);
printf("转化前的数制是:\n");
cin>>x;
int sum=shijinzhi(a,x);
printf("转化前的数用十进制表示是:\n");
cout<<sum;
printf("转化后的数制是:\n");
cin>>y;
printf("转化后的数是:\n");
zhuanhua(sum,y);
return 0;
}