十进制通过短除法转化为八进制运用了库函数
(“pow(int x,iny y)”)或者自建一个函数进行位次的变化。
以下是通过库函数实现的过程
#include<math.h> //使用库函数所需
#include <stdio.h>
int main ()
{
int a=0,b=0,c=0,m=0,n=0,x=0,y=0;
scanf("%d",&a); //a;输入的数.
if (a<=8)
{
printf("%d",a);
}
else
{
while (a>8)
{
b=a%8; //b:所得余数 。
c=(a-b)/8; //c:所得的商。
a=c; //给a赋值进入下一个循环。
m=pow(10,n); //库函数pow(x,y)表示x的y次方。
x= b * m;
y=x+y;
n=n+1; //n:10的指数。
if (a<=8) //输出最后无法再被8除的数
{
m=pow(10,n);
x= a * m;
y=x+y;
}
}
printf("八进制为%d",y);
}
return 0;
}
所谓位次的变化就是通过将余数不断乘以10的n次方来实现
以下是通过自建函数来实现的过程的过程
#include <stdio.h>
int main ()
{
int cimi(int n); //声明自建函数 .
int a=0,b=0,c=0,m=0,n=0,x=0,y=0; //a;输入的数 .
scanf("%d",&a);
if (a<=8)
{
printf("八进制为%d",a);
}
else
{
while (a>8)
{
b=a%8; //b:所得余数 .
c=(a-b)/8; //c:所得的商 .
a=c; //给a赋值进入下一个循环 .
m=cimi(n); //自建函数(输出10的n次幂) .
x= b * m; //x:余数乘以10的n次方以达成进位的目的.
y=x+y; //y:所有余数进位后之和.
n=n+1; //n:10的指数 .
if (a<=8) //输出最后无法再被8除的数.
{
m=cimi(n);
x= a * m;
y=x+y;
}
}
printf("八进制为%d",y);
}
return 0;
}
int cimi(int n ) //定义自建函数 .
{
int m=1,x=0; //如果m=0后续输出的m都为0 ,所以初始值为 1 .
while (x!=n)
{
m=10*m;
x=x+1;
}
return m;
}