【作业描述】
将非负整数n转换成b进制(其中b为2~16)。
用递归和非递归实现。
【代码实现】
#include<iostream>
#include<stdlib.h>
#define N 20
using namespace std;
int fun(int n,int b)
{
char a;
int i;
int k=0;
if(n==0) //递归出口
return 0;
else if(n%b>=10) //当余数大于10的时候
{
fun(n/b,b); //使结果可以正序输出
a=n%b+'A'-10; //ASCII码
cout<<a;
}
else
{
fun(n/b,b);
a=n%b+'0';
cout<<a;
}
}
int main()
{
int b,n;
char a[N];
cout<<"输入要转换的数n:";
cin>>n;
cout<<"输入要转换为的进制b:";
cin>>b;
cout<<"转换后的数为:";
fun(n,b);
system("pause");
return 0;
}
/*int main()
{
int b,n,c,i;
int k=0;
char a[N];//建立数组储存每一次的计算结果
cout<<"输入要转换的数n:";
cin>>n;
cout<<"输入要转换为的进制b:";
cin>>b;
while(n){
c=n%b;
if(c>=10)
a[k++]=c+'A'-10;
else
a[k++]=c+'0';
n=n/b;
}
cout<<"转换后的数为:";
for(i=k-1;i>=0;i--) //倒序输出数组里的数
cout<<a[i]<<endl;
system("pause");
return 0;
}*/