做了个任意转进制的程序。。大家评价评价
#include<stdio.h>#include<math.h>
main()
{
int a,b,x,i[50],j,g;
char y,w;
N0:printf("要有几进制转换成几进制?用隔开,如10 2___:");
scanf("%d\040%d%c",&a,&b,&w);
N1:printf("\n输入需要转换的整数");
x=0;
j=1;
y=0;
while(1)//输入,并把每位转成10进制
{
scanf("%c",&y);
if(y==10)
{
j--;
g=j;
goto N2;
}
if(y>='0'&&y<='9')
{
if(y>=a+'0')
{
printf("你选择的是%d进制,输入错误,重新输入",a);
goto N1;
}
else i[j]=y-'0';
j++;
}
if(y>='A'&&y<='Z')
{
if(y>=a+'0'+7)
{
printf("你选择的是%d进制,输入错误,重新输入",a);
goto N1;
}
else i[j]=y-'0'-7;
j++;
}
}
//j等于位数
N2:while(j>=1)//将整个数转成10进制
{
x=x+i[j]*pow(a,g-j);
j--;//g++;
}
//x为输入的数,j为0
while(x>0)
{
i[j]=x%b;
x=x/b;
j++;
}
j--;
//转换的数的最高位为j
printf("转换成%d进制为:",b);
while(j>=0)
{
if(i[j]<10)
{
printf("%c",i[j]+'0');
j--;
}
else
{
printf("%c",i[j]+'0'+7);
j--;
}
}
printf("\n输入新的数按y,重头开始按a,退出按任意键");
scanf("%c%c",&w,&y);
if(w=='y')goto N1;
if(w=='a')goto N0;
}
虽然只能用来转整数。。。