进制转换类问题
标签: 进制转换类问题
学习人数: 50.4k


高清播放
赞赏支持

进制转换类的题目在绝大多数学校都是必考题目之一,这类题目的既基础又灵活,能看出学生的编程功底,所以这类题目一定要掌握。

 

总的来说,跟进制相关的题目可以分为以下几种题型

1、反序数:输入一个整数如123,将其转换为反序之后的整数321
2、10进制转2进制:将一个10进制整数转化为一个2进制的整数
例如:7转换为111
3、10进制转16进制:将一个10进制整数转化为一个16进制的整数
例如:10转换为A
4、10进制转x进制:将一个10进制整数转化为一个x进制的整数
解析:这是前面两个的一种通解,如果会前面两种那么这个自然也触类旁通。
5、x进制转10进制:将一个x进制整数转化为一个10进制的整数
解析:这是上一种情况的反例,看代码之后相信也能容易理解。
6、x进制转y进制:将一个x进制整数转化为一个y进制的整数
解析:遇到这种情况,可以拆解为x先转为10进制,然后再将10进制转为y进制。
7、字符串转浮点数
例如:有一串字符串31.25 将其转换为一个浮点数,可以先转整数部分,再转小数部分,最后相加即可。
8、浮点数转字符串
例如:有一个浮点数23.45将其转换为一个字符串进行存储,可以将整数和小数拆开再合并成一个字符串。
9、字符串转整型和整形转字符串
解析:直接用atoi函数和itoa函数即可。

 

反序数代码

#include <stdio.h>  
  
int main() {  
    int n;  
    scanf("%d", &n);  
    int ans = 0;//将反序之后的答案存在这里  
    while (n > 0) {//将n逐位分解  
        ans *= 10;  
        ans += (n % 10);  
        n /= 10;  
    }  
    printf("%d\n", ans);  
    return 0;  
}  

 


10进制转x进制代码(x小于10的情况)

#include <stdio.h>  
  
int main() {  
    int n, x;  
    int s[105];  
    //输入10进制n 和 要转换的进制x  
    scanf("%d%d", &n, &x);  
    int cnt = 0;//数组下标  
    while (n > 0) {//将n逐位分解  
        int w = (n % x);  
        s[cnt++] = w;  
        n /= x;  
    }  
    //反序输出  
    for (int i = cnt - 1; i >= 0; i--) {  
        printf("%d", s[i]);  
    }  
    printf("\n");  
    return 0;  
}  
转x进制代码(通用版)

 

 

10进制转x进制代码(通用版)

#include <stdio.h>  
  
int main() {  
    int ...
登录查看完整内容


课后作业

题目练习

DreamJudge 1454 反序数
DreamJudge 1259 进制转换2
DreamJudge 1176 十进制和二进制
DreamJudge 1380 二进制数
DreamJudge 1417 八进制
DreamJudge 1422 进制转换3
DreamJudge 1097 负二进制


登录后开始许愿

1 条上岸许愿
Lepain
2026年3月16日 10:26

//反序数 
#include<bits/stdc++.h>
using namespace std;
int main(){
    cout<<"输入一个整数:";
    int n;
    cin>>n;
    int reverse_n=0;
    while(n>0){
        int p=n%10;
        reverse_n=10*reverse_n+p;
        n=n/10;
    }
    cout<<reverse_n;
    return 0;

//十进制转x进制 ,x<10 
#include<bits/stdc++.h>
using namespace std;
string tentox(int n,int x){
    string m;
    while(n>0){
        int p=n%x;
        m.push_back('0'+p);
        n/=x;
    }
    reverse(m.begin(),m.end());
    return m;

int main(){
    cout<<"输入一个十进制整数:";
    int n;
    cin>>n;
    cout<<endl; 
    cout<<"你想转换为几进制呢?";
    int x;
    cin>>x;
    cout<<endl;
    cout<<tentox(n,x);
    return 0;
}

//十进制转x进制 ,x>10 
#include<bits/stdc++.h>
using namespace std;
string tentox(int n,int x){
    string m;
    while(n>0){
        int p=n%x;
        if(p>=10) {
            p='A'+(p-10);
            m.push_back(p);
        }
        else m.push_back('0'+p);
        n/=x;
    }
    reverse(m.begin(),m.end());
    return m;

int main(){
    cout<<"输入一个十进制整数:";
    int n;
    cin>>n;
    cout<<endl; 
    cout<<"你想转换为几进制呢?";
    int x;
    cin>>x;
    cout<<endl;
    cout<<tentox(n,x);
    return 0;
}

 

赞(0)