2019-01-31

#include<stdio.h>

#include<string.h>

int decimal(char x[100],int m,int leng)

{

int i,temp,sum=0,flag;

for(i=0;i<leng;i++)

{

if(x[i]>='0'&&x[i]<='9')

temp=(x[i]-'0');

else if(x[i]>='A'&&x[i]<='Z')//Z的界限,就是进制基数的上限

temp=(x[i]-'A'+1);

else

flag=1;//用来标记输出是否输入合法

sum=sum*m+temp;//很重要,第一次就算错了

}

return sum;

}

void numberTransform(int sum,int n)//十进制数转为n进制数,利用相除取余的算法(让计算机能理解)?

{

int i,j,a[100];

for(i=0;i<100;i++)

a[i]=-1;

i=0;

do{

a[i]=sum%n;

i++;

sum=sum/n;

}while(sum!=0);

// for(j=0;j<i;j++)//用来测试a【】的数组

// printf("%d\n",a[j]);

i--;

while(i>=0)

{

if(a[i]<10)

printf("%d",a[i]);

else

printf("%c",a[i]+55);

i--;

}

}

int main()

{

int m,n,sum,leng;

char x[100],*p;

printf("请输入要转换的数值:\n");

scanf("%s",x);

p=x;

printf("请输入该数值的基数:\n");

scanf("%d",&m);

printf("请输入转换的基数:\n");

scanf("%d",&n);

leng=strlen(x);

sum=decimal(p,m,leng);

// printf("%d",sum);

numberTransform(sum,n);

return 0;

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容