代码如下:
#include<stdio.h>
#define nn 100
int pow(int n,int k)
{
int i,m=1;
for(i=0;i<k;i++)
m*=n;
return m;
}
void main()
{
int m,n,i,j,a[nn],b;
int s=0,k=0;
scanf("%d%d",&m,&n); //m为十进制数,n表示进制
for(i=0;m!=0;i++) //十进制数转换为n进制的规律(2<=n<=10)
{
a[i]=m%n;
m=m/n;
}
for(j=i-1;j>=0;j--) //输出十进制数转换为n进制的数
printf("%d",a[j]);
printf("\n");
for(j=0;j<i;j++) //输出十进制数转换为n进制数的反序数
printf("%d",a[j]);
printf("\n");
for(i=j-1;i>=0;i--) //根据按权展开求和法,转换成新的十进制数
{ //输出新的十进制数
b=pow(n,k);
k=k+1;
s=s+a[i]*b;
}
printf("%d ",s);
}
结果如下:
11 2
1011
1101
13 请按任意键继续. . .
从键盘输入一个十进制数,将其转换为新的n进制数(2<=n<=10),反序后再转成新的十进制数后输出。代码如下:
#include<stdio.h>
#define nn 100
int pow(int n,int k)
{
int i,m=1;
for(i=0;i<k;i++)
m*=n;
return m;
}
void main()
{
int m,n,i,j,a[nn],b;
int s=0,k=0;
scanf("%d%d",&m,&n); //m为十进制数,n表示进制
for(i=0;m!=0;i++) //十进制数转换为n进制的规律(2<=n<=10)
{
a[i]=m%n;
m=m/n;
}
for(j=i-1;j>=0;k++,j--) //根据按权展开求和法,转换成新的十进制数
{ //输出新的十进制数
b=pow(n,k);
s=s+a[j]*b;
}
printf("%d ",s);
}
结果如下:
11 2
13 请按任意键继续. . .
类似:编写函数fun的功能是:将十进制正整数m转换成k(2<=k<=9)进制数,并按位输出。例如,输入8和2,则应输出1000。
#include<stdio.h>
int fun(int m,int k )
{
int a[20],i;
for(i=0;m!=0;i++)
{
a[i]=m%k;
m/=k;
}
for(;i;i--)
printf("%d ",a[i-1]);
}
main()
{
int b,n;
scanf("%d%d",&n,&b); //十进制正整数n转换成b(2<=b<=9)进制数
fun(n,b);
printf("\n ");
}
结果如下:
8 2
1 0 0 0
请按任意键继续. . .