如何用C语言做36以内的进制转换

如何用C语言做36以内的进制转换,第1张

main()

{ 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++应该好懂的……


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8174954.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存