{ int a,b,k=0,s[99]
scanf("%d%d",&a,&b)
for(a!=0a/=b)
{k++s[k]=a%b}
for(k>=1k--)
printf("%d,",s[k]) /*转换后的数字每一位用‘,’隔开*/
getchar()
}
#include<iostream.h>#include<string.h>
#include<math.h>
#include<stdio.h>
#include <stdlib.h>
char exchange(int s)//将十进制转换成的36进制对应的数字换成字母
{
char ch
if(s>9)//将大于10的数字换成相应的字母
ch=char('a'+s-10)
else ch = char(s+'0')//小于10的数字保持不变
return ch
}
int exchangealph(char s)//将36进制对应的字母转换成数字,然后进行运算
{
if(s>='a' &&s <='z')
return int(s-'a'+10)
else return int(s-'0')
}
void main()
{
while(1)//大循环体,使程序可以一直处于等待输入状态,可以去掉
{
int a,b=0
char num[128]="/0"
cout<<"输入进制和数字,以空格隔开"<<endl
cin>>a>>num
b=atoi(num)//将输入的字符转换成数字,主要用于10进制转换36进制时使用
if(a==10)//十进制转换36进制
{
char backnumber[128]="0/"
int number =0
while(1)
{
if(b<36)//判断输入数据是否大于36
{
char temp1
temp1= exchange(b)
backnumber[number]=temp1
for(int i =0i<(number+1)/2i++)
{
int temp = backnumber[i]
backnumber[i]=backnumber[number-i]
backnumber[number-i]=temp
}
break
}
int temp =0,remainder=0
temp = int(b/36)
remainder=b%36
b=temp
char temp1
temp1= exchange(remainder)
backnumber[number]=temp1
number++
}
cout<<"输入的10进制数"<<num<<",转换为36进制为"<<backnumber<<endl
}
else if(a==36)//36进制转换为十进制
{
int stl = strlen(num)//输入数据是几位数
int backnumber=0
int temp2=0
for(int i=0i<stli++)
{
temp2 =exchangealph(num[i])
backnumber += int(temp2*pow(36,stl-1-i))
}
cout<<"输入的36进制数为:"<<num<<",转换为10进制为"<<backnumber<<endl
}
else
cout<<"请检查输入的进制数是否正确!!!"
cout<<endl
}
}
//整体思路是十进制转换为36进制时,将十进制数除以36,余数放在最末位,让后将商再除以36,余数放到倒数第二位,直到商小于
//36为止
//36转换为十进制思路为从右往左依次是36的0次方,1次方,2次方,将每位上的数字转换为十进制数在对应的36的n次方相乘再相加即可
#include <iostream>char ans[500]
int main()
{
int n
std::cin >> n
int l = 0
while (n > 0)
{
ans[l++] = n % 36 > 9 ? n % 36 - 10 + 'a' : n % 36 + '0'
n /= 36
}
for (int i = l-1 i >= 0 --i) std::cout << ans[i]
return 0
}
Basic不会……c++应该好懂的……
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)