美文网首页
2019-01-31

2019-01-31

作者: Hey王小葩 | 来源:发表于2019-01-31 21:08 被阅读0次

#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;

}

相关文章

网友评论

      本文标题:2019-01-31

      本文链接:https://www.haomeiwen.com/subject/aavlsqtx.html