借此复习一下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 条评论

leee 6月前 回复TA
@leee c应该是t写错了
leee 6月前 回复TA
#include<stdio.h>
int main()
{
    int a,b[10],i=0,t;
    scanf("%d",&a);
    do{
        t=a;
        a=a/8;
        b[i]=c%8;
        i++;
    } while(a!=0);
    for(i=i-1;i>=0;i--)
    {
         printf("%d",b[i]);
    }
}
人去四海 1年前 回复TA
可还行?
#include <iostream>
using namespace std;

int Change(int m) {
	if (m / 8 == 0)
		return m;
	else {
		return m % 8 + 10 * Change(m / 8);
	}
}


int main()
{
	int m;
	cin >> m;
	cout<<Change(m);
}
LikeWater 1年前 回复TA
#include<iostream>
using namespace std;
// 编程,输入一个10进制正整数,然后输出它所对应的八进制数。
int main()
{
    long long Dec,Oct=0,Inter,Power=1;
    cin >> Dec;
    while(1){
        Inter=Dec%8;
        if(Inter==0 && Dec<10){
            Oct += Dec/8*Power*10;
            break;
        }
        Dec=Dec/8;
        Oct += Inter*Power;
        Power*=10;
    }
    cout << Oct;
    return 0;
}//除8取余法
天苜仙影 2年前 回复TA
第二种方法超过65好像就不行了
SinzoL 2年前 回复TA
第二种方法不对哦
耗子MOUSE123 2年前 回复TA
#include <stdio.h>
int main()
{
	int a[20],n,i=0,j;
	printf("请输入一个十进制正整数:");
	scanf("%d",&n);
	j=n;
	do
	{
		a[i]=j-j/8*8;
		printf("a[%d]=%d\n",i,a[i]);
		j=j/8;
		i++;	
	}while(j/8!=0);
	if(j/8==0)
	{
		a[i]=j%8;
		printf("a[%d]=%d\n",i,a[i]);
	}
	printf("十进制数%d转化为八进制数为0",n);
	for(j=i;j>=0;j--)
	{
		printf("%d",a[j]);
	}
	printf("\n");
	
	return 0;
}
夜羊s 2年前 回复TA
#include<stdio.h>
int mi(int x);
int mi(int x)
{int n,sum;
sum=1;
for(n=1;n<=x;n++)
{
	sum*=8;
}
	return(sum);
	
}
	
	
	
	

	
int main()
{
	int m,b[100]={0},i,j,n,k;
	
	m=0;
	i=1;
int mi(int x);
	scanf("%d",&m);
	n=m;
	for(i=1;;i++)  
	{ n/=8;
	    if(n==0) break;
	}
	k=i;
		for(j=0;i-1>=0;i--)
		
		{b[j]=m/mi(i-1);
		m%=mi(i-1);
		j++;
			
		}
		
		for(j=0;j<k;j++)
		printf("%d",b[j]);
		return 0;
}
直接暴力,新手只会暴力,太弱了,那种用递归和直接转的方法我真的好羡慕,想不到。
夜羊s 2年前 回复TA
@阳春 用暴力肯定没这么短
古锦今貂 3年前 回复TA
第二种方法不对呀