//1.将M进制转换成N进制
小于等于36位
0-9 A-Z
#include <stdio.h>
#include <string.h>
void main()
{
char s[80],c;
int i,j,sum=0,M,N,flag;
//----------------------------
printf("将M进制转换成N进制(所用字符为:0-9 A-Z)\n\n");
printf("请输入M和N(M,N<=36):\n");
scanf("%d%d",&M,&N);
printf( "\n");
c=getchar();
//接收scanf()的垃圾字符
//------------
do
{
printf("请输入一个正确的%d进制数:\n",M);
gets(s);
flag=0;
for(i=0;c=s[i];i++)
if(!(c>='0'&&c<='9'||c>='A'&&c<='A'+M-10))
flag=1;
}while(flag);
printf( "\n");
//----------------------------
//--从M进制转换为十进制
sum=0;
for(i=0;c=s[i];i++)
if(c>='0'&&c<='9')
sum=sum*M+c-'0';
else if(c>='A'&&c<='Z')
sum=sum*M+c-'A'+10;
//----------------------------
//--从十进制转换为N进制
for(i=0;sum!=0;i++)
{
c=sum%N;
if(c>=0&&c<=9)
s[i]=c+'0';
else
s[i]=c+'A'-10;
sum=sum/N;
}
s[i]='\0';
sum=strlen(s);
for(i=0,j=sum-1;i<j;i++,j--)
{
c=s[i];s[i]=s[j];s[j]=c;
}
//----------------------------
printf( "转化后的%d进制数为:
\n",N);
puts(s);
printf( "\n");
}