原题链接:二级C语言-进制转换
借此复习一下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;
}0.0分
87 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#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]); } }可还行? #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); }#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取余法#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; }#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; } 直接暴力,新手只会暴力,太弱了,那种用递归和直接转的方法我真的好羡慕,想不到。