如果我是一个编程很厉害的人就好了 2022-11-30 12:01 采纳率: 63.6%
浏览 19

八进制转化为十进制,函数跳出循环

问题遇到的现象和发生背景 题目如下:

【问题描述】编写程序完成进制转换,要求使用函数,函数功能是:十进制转换为八进制,输入输出均在主函数中完成。

【输入形式】十进制数

【输出形式】八进制数

【样例输入】125

【样例输出】175

【样例说明】十进制125转化为八进制结果为175

用代码块功能插入代码,请勿粘贴截图
#include <iostream>
using namespace std;
int a[100],m,n,i(0);
void add(int k)
{
   
    for(;i<100;i++)//这个i<100是不是该改改?
    {a[i]=k%8;//先求被八整除的余数
    m=k/8;//求在z以内能被八整除的最大数
    k=m;
    if(a[i]==0)
    break;//怎么写,这个写的是有问题,但如何在得出结果为零是就终止,然后逆向输出
    }
 
n=i;
}
int main()
{
    int p;
    cin>>p;
    
    add(p);
    for(int w=n-1;w>=0;w--)
    cout<<a[w];

    return 0;
}

运行结果及报错内容

在输入88
应该输出130时没有输出

我的解答思路和尝试过的方法

是不是在函数循环中i<100有错,还是那个break有错?
我是根据计算机导论中学的十进制到八进制转换方法写的。
思路就是一个数不断被八除,除到最后小于八(除得结果为小数)则退出循环。

我想要达到的结果

跳出循环,怎么更改,请多多指教!

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2022-11-30 12:10
    关注

    逆序得用递归,多简单啊

    #include <stdio.h>
    int change(int n)
    {
        if(n<8)
            return n;
        return change(n/8)*10 + n%8;
    }
    
    int main()
    {
        int n;
        scanf("%d",&n);
        printf("%d",change(n));
        return 0;
    }
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 11月30日

悬赏问题

  • ¥15 QQ邮箱过期怎么恢复?
  • ¥15 登录他人的vue项目显示服务器错误
  • ¥15 (标签-android|关键词-app)
  • ¥60 如何批量获取json的url
  • ¥15 comsol仿真压阻传感器
  • ¥15 Python线性规划函数optimize.linprog求解为整数
  • ¥15 llama3中文版微调
  • ¥15 pg数据库导入数据序列重复
  • ¥15 三分类机器学习模型可视化分析
  • ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)