C语言:将任意的十进制的整数转化成八进制输出(VS)

一,问题:输入一个十进制整数decnum,让其转化成八进制的数octnum

二,思路:利用转“二进制”的“倒除法”,不断求出每一次的余数即可,如下图所展示的一样:

(1)输入一个十进制的整数decnum,先将该整数以为正数处理,而负数就只是加个“-”就可以了;   

   

    int decnum;
    printf("请输入一个decnum:");
    scanf_s("%d", &decnum);
    int i;

(2)申明一个数组arr,方便接下来将每一次求余后的余数存放在数组的每一个地址中;因为在VS中,难定义一个自由长度的数组,所以在赋予存储空间时,尽量大一点,防止溢出;
  

 int arr[100] = { 0 };

(3)接下来就是利用循环将余数存放与数组arr中了

        1.申明变量a,用于暂时存储decnum对8的余数
    
        2.在求完一次余数后,就要求一次decnum对8的商,用于下一次循环的求余;
        3.注意:这里的decnum申明时是整型变量,故decnum如果是小数的话,会强制舍弃小数部分转化成整数;
        
        4.将每一次的余数都存进arr这个数组中,方便后面打印;
     
        5.之所以decnum会变成0,是因为0.00..会自动变成0;
        6.当decnum==0时,上面已经求过余了,所以便跳出循环

for (i = 0; i < 100; i++)
    {
        //申明变量a,用于暂时存储decnum对8的余数
        int a = decnum % 8;
        //在求完一次余数后,就要求一次decnum对8的商,用于下一次循环的求余;
        //注意:这里的decnum申明时是整型变量,故decnum如果是小数的话,会强制舍弃小数部分转化成整数;
        decnum = decnum / 8;
        //将每一次的余数都存进arr这个数组中,方便后面打印;
        arr[i] = a;
        //之所以decnum会变成0,是因为0.00..会自动变成0;
        //当decnum==0时,上面已经求过余了,所以便跳出循环
        if (decnum == 0)
        {
            break;
        }
    }

(4)但此时的arr是逆序的,所以要倒序输出;
    

    int octnum = 0;
    printf("该decnum转化成octnum为:");
    for (int j = i; j >= 0; j--)
    {
        printf("%d", arr[j]);
    }

三,代码加运行

#include<stdio.h>
int main()
{
	int decnum;
	printf("请输入一个decnum:");
	scanf_s("%d", &decnum);
	int i;
	int arr[100] = { 0 };
	for (i = 0; i < 100; i++)
	{
		int a = decnum % 8;
		decnum = decnum / 8;
		arr[i] = a;
		if (decnum == 0)
		{
			break;
		}
	}
	int octnum = 0;
	printf("该decnum转化成octnum为:");
	for (int j = i; j >= 0; j--)
	{
		printf("%d", arr[j]);
	}
	return 0;
}


  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值