进制转换

 1 #include <stdio.h>
 2 
 3 void convertHex(char* s,int data)
 4 {
 5     static int i = 0;
 6     if(data != 0)
 7     {
 8         convertHex(s,data/16);
 9         *(s+i++) = "0123456789ABCDEF"[data%16];
10     }
11 }
12 
13 int main()
14 {
15     static char s[100];
16     int data;
17     if(scanf("%d", &data))
18     {
19         convertHex(s,data);
20         puts(s);
21     }
22     else
23         fprintf(stderr,"input error");
24 
25     return 0;
26 }

 

 1 #include <stdio.h>
 2 
 3 void convertHex(char* s,int data)
 4 {
 5     static int count = 0;
 6     static int index = 0;
 7 
 8     if(data != 0)
 9     {
10         count++;
11         convertHex(s+1,data/16);
12         count--;
13         *(s-count + index++) = "0123456789ABCDEF"[data%16];
14     }
15     else
16         *s = '\0';
17 }
18 
19 int main()
20 {
21     char str[100]="hello world";
22     int data;
23     if(scanf("%d", &data))
24     {
25         convertHex(str,data);
26         puts(str);
27     }
28     else
29         fprintf(stderr,"input error");
30     for(int i = 0;i<10;i++)
31         printf("%d ",str[i]);
32     return 0;
33 }

 

 

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int i,j,k=0,num,sum=0,n,m,d;
 5     char str[2000],str1[2000];
 6     printf("输入要转换的数: \n");
 7     scanf("%s",str);//输入要转换的数,并存储在字符串数组中
 8     printf("输入这个数本身的进制数: \n");
 9     scanf("%d",&n);
10     printf("要求转换成的进制数: \n");
11     scanf("%d",&m);
12     for(i=0;str[i]!='\0';i++)
13     {
14         if(str[i]>='0'&&str[i]<='9')//将每一个数找出
15             num=str[i]-'0';
16         else
17             num=str[i]-'a'+10;
18         sum=sum*n+num;
19     }
20     while(sum)
21     {
22         d=sum%m;
23         str1[k++]="0123456789abcdef"[d];/*这里其实还有一种方法就是判断余数与10的大小关系,如果余数大于等于十将这个数字加上87(若字母为大写就加55)转化为对应的字母,若为数字就按此方发存入数组。*/
24         sum/=m;
25     }
26     for(i=k-1;i>=0;i--)
27     {
28         if(str1[i]>='0'&&str1[i]<='9')
29             printf("%d",str1[i]-'0');
30         else
31             printf("%d",str1[i]-'a'+10);
32     }
33     return 0;
34 }

 

 

 

C++

#include <iostream>
using namespace std;

void convertHex(string& s,string::size_type data)
{
    if(data != 0)
    {
        convertHex(s,data/16);
        s = s + "0123456789ABCDEF"[data%16];
    }
}

int main()
{
    string result;
    string::size_type data;
    while(cin >> data)
    {
        convertHex(result,data);
    }
    cout << result << endl;

    return 0;
}

 

posted @ 2020-09-15 19:12  Σωκράτης  阅读(81)  评论(0)    收藏  举报