《小白日记》—— 十进制通过短除法转化为八进制

十进制通过短除法转化为八进制运用了库函数

(“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; 
}

本人计科大一新生,分享学习笔记、日常作业和生活,如果我写的有错误,请大佬们多多指教,同时也希望帮助和我一样的小白,用小白的视角解决一些问题,谢谢大家

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值