解题思路:

思路一:利用输出类型%o直接输出

输出十进制:%d;
输出十六进制:%x;
输出单个字符:%c;
输出字符串:%s;
输出变量所在的地址:%p;

注意事项:无

参考代码:

#include #include #include #include #include #include #include  
int ChangeBase(){
    int n=0;
    scanf("%d",&n);
    printf("%o",n);
    return 0;
}

int main() {
    return ChangeBase();
}


思路二:利用短除法从低位到高位计算数值,同时通过取余和整除的优越性更新处理正整数,利用规律:如29十进制转5进制,对5取余得4,29整除5得5,对5取余得0,对5整除得1,对1取余得1,对1整除得0循环结束,逆向输出为104.

注意事项:题目给定正整数所以没有考虑0和余数情况

参考代码:

#include #include #include #include #include #include int ChangeBase(){//个人习惯写单独函数在main中调用
    int n=0;//如果需要其他进制转换请用注解中的m替换
    //int m=0;
    scanf("%d",&n);
    //scanf("%d",&m);
    int flag=0;
    int a[100]={0};//从低位到高位存放数据
    while (n!=0){
        a[flag++]=n%8;//flag先计算再自增,从低位到高位计算数据
        n/=8;//更新n
//        a[flag++]=n%m;
//        n/=m;
    }
    for (int i = flag-1; i > -1; --i) {
        printf("%d",a[i]);//从高到低输出
    }
    return 0;
}

int main() {
    return ChangeBase();
}

思路三:利用头文件stdlib.h中的itoa函数进行整型和字符串转换itoa函数(整型,字符串,转换进制)

注意事项:只能用整型作为转换对象,若要用无符号整数等类型可以参考使用

itoa() 将整型值转换为字符串

litoa() 将长整型值转换为字符串

ultoa() 将无符号长整型值转换为字符串


参考代码:

#include #include #include #include #include #include #include int ChangeBase(){
    int n=0;
    scanf("%d",&n);
    char string[33]={'\0'};//最大32位故用33位数组储存并初始化数组
    itoa(n,string,8);
    puts(string);
    return 0;
}

int main() {
    return ChangeBase();
}


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论