
谢谢楼上的朋友
真细心
#include
#define size 64
void transform(int n1,char c[size],int n2)
{
int a[size]={0},j,i=0;
long int num=0;
if(n1>10)
{
while(c[i])
{
if(c[i]>='0'&&c[i]<='9')----》误写为
if(c[i]>'0'&&c[i]<'9')
num=num*n1+c[i++]-48;
else if(c[i]>='A'&&c[i]<='Z')
num=num*n1+c[i++]-55;
else if(c[i]>='a'&&c[i]<='z')
num=num*n1+c[i++]-87;
else
{
puts("error\n");
return;
}
}
i=0;
}
else
while(c[i])
{
if(c[i]<'0'||c[i]>'9')
{
puts("error\n");
return;
}
num=num*n1+c[i++]-'0';
}
i=0;
while(num!=0)
{
a[i++]=num%n2;
num/=n2;
}
printf("(%s)%d转换为:\n(",c,n1);
if(n2<激悔10)
{
for(j=i-1;j>=0;j--)
printf("%d",a[j]);
printf(")%d\n",n2);
}
else
{
for(j=i-1;j>=0;j--)
if(a[j]>=10)------------》这里误写为if(a[i]>=10)
printf("%c",a[j]+55);
else--------------------》这里原来漏了else
printf("%d",a[j]);
printf(")%d\n"桐握,n2);
}
}
main()
{
int n1,n2;
char c[size]={0};
do
{
puts("输入现在数的局铅庆进制类型:\n");
scanf("%d",&n1);
puts("输入需要转换的数据:\n");
scanf("%s",c);
puts("输入目标数的进制类型:\n");
scanf("%d",&n2);
transform(n1,c,n2);
puts("输入y继续,按任意键退出:\n");
getchar();
}while(getchar()=='y');
}
可以使用的程序
又是你?
不懂留言吧
必回
谢谢提醒了
我把程序在看了一遍
我上面还有个问题
我改了
你看还有建议吗
谢谢了
李滚橡凯_华乎盯电的程序不错,不过有处小错误,否则由某进制数向大于等于十进制的数转换会得到错误大顷旁结果。
在函数void transform(int n1,char c[size],int n2) 最后的一个else中
原代码为:
else
{
for(j=i-1;j>=0;j--)
if(a[i]>=10)
printf("%c",a[j]+55);
printf("%d",a[j]);
printf(")%d\n",n2);
}
应改为:
else
{
for(j=i-1;j>=0;j--)
{
if(a[j]>=10)
printf("%c",a[j]+55);
else
printf("%d",a[j]);
}
printf(")%d\n",n2);
}
#include
#include
void main()
{
int nNum,Rad,i=0,Residue;
int Store[50];
printf("请输入一个任意整数:");
scanf("%d",&nNum);
printf("\n请输御辩入一个合法的表示进制的基数[2,16]:");
scanf("%d",&Rad);
if(Rad<=1)
exit(-1);
printf("\n转换后的结果是:");
while(nNum>=Rad)
{
Residue=nNum%Rad;/枣游/0
nNum/=Rad;/镇岩缺/1
Store[i]=Residue;//0
++i;
}
Store[i]=nNum;
for(;i>=0;--i)
switch(Store[i])
{
case 0:
printf("0");
break;
case 1:
printf("1");
break;
case 2:
printf("2");
break;
case 3:
printf("3");
break;
case 4:
printf("4");
break;
case 5:
printf("5");
break;
case 6:
printf("6");
break;
case 7:
printf("7");
break;
case 8:
printf("8");
break;
case 9:
printf("9");
break;
case 10:
printf("A");
break;
case 11:
printf("B");
break;
case 12:
printf("C");
break;
case 13:
printf("D");
break;
case 14:
printf("E");
break;
case 15:
printf("F");
break;
}
printf("\n");
}
来源:http://zhidao.baidu.com/question/42938680.html?si=6
电脑带的计算器高级选项里有转换