借此复习一下printf格式码:

%d —— 以十进制形式打印一个整型值

%o ——   八进制

%x ——   十六进制

参考代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    int num;
    scanf("%d", &num);

    printf("%o", num);

    return 0;
}

还有另一种求法,用来学习~

#include <stdio.h>

int main()
{
    int num;
    scanf("%d", &num);

    int rest = num % 8; //rest用来保留最后一位
    while (num / 8 != 0)
    {
        num = num / 8;
        putchar(num + '0'); //以ascii码的形式打印
    }
    putchar(rest + '0');

	return 0;
}


点赞(29)
 

0.0分

87 人评分

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

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

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

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

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

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

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

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

评论列表 共有 30 条评论

DJTU破晓 4年前 回复TA
第二种方法貌似有点局限。。。。
DARLING·02 4年前 回复TA
第三种
#include<stdio.h>

void Octal(int x){
	if(x>0){
		Octal(x/8);
		printf("%d",x%8);
	}
}

int main(void)
{
	int x=0;
	scanf("%d",&x);
	Octal(x);
	return 0;
}
foxnull2 4年前 回复TA
#include <stdio.h>
#include <math.h>

int main(void)
{
	int i = 0, num = 0, div = 0, rem = 0, onum = 0;
	scanf("%d", &num);
	while (1) {
		div = num/8;
		rem = num%8;
		onum += pow(10,i++)*rem;
		if (0 == div)break;
		num = div;
	}
	printf("%d", onum);
	return 0;
}
这样可以代替第二种方法
小雨 5年前 回复TA
以二进制打印是%什么
陈玕 5年前 回复TA
@三叶半夏 我试了一下在他的编译器中不带就是错的,但是用其他编译器就能编译
三叶半夏 5年前 回复TA
请问第一种方法#include <stdlib.h> #include <string.h>这两个头文件可以不带上吗
withme 5年前 回复TA
第二个  只能用于64以下的数吧。。。。
zxh666 6年前 回复TA
是啊,第二种方法不行
屁屁屁喏漕 6年前 回复TA
只能求二位数的吧?。。。。
北的极 6年前 回复TA
100试试