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

博客主要介绍在C语言中,将十进制整数转化为八进制数的方法。先输入十进制整数,以正数处理,负数加“-”。利用倒除法,将每次求余的余数存于数组,因VS难定义自由长度数组,要赋予较大存储空间。最后倒序输出数组得到八进制数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,问题:输入一个十进制整数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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值