不求结局 2022-10-20 16:07 采纳率: 60%
浏览 17
已结题

C语言迭代问题,引用函数输出错误

C语言使用迭代求将一个数从10进制转化为7进制

#include <stdio.h>
#include<math.h>
//迭代技术(8bits)
double trans(int a);
int main()
{
    printf("Please input a 十进制整数");
    int i,k;//i为十进制,k为七进制;
    scanf("%d",&i);
    trans(i);
    printf("%d的七进制表示为%lf",i,trans(i));
    getchar();
    return 0;
}
double trans(int a)
{
    int n = 8;
    for(n=8;n>=0;n--)
    {
        int j=pow(7,n);  
        if(a/j>=1)
        {
            int z = a/j; 
            printf("%d",z);
            a = a - z*j;
        }
        else
        {
            printf("0");
        }
    }
}

结果就是输出有问题,无论输入什么输出结果都是0,并且我设置的输出为8bit位,他只有7位

在我定义的函数区,我意思 20/7不能显示小数位,所以直接 用20/7表示整数
我想要的结果:
输入20
输出00000076

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-10-20 16:19
    关注

    为啥10进制20的7进制是00000076?

    #include <stdio.h>
    #include<math.h>
    //迭代技术(8bits)
    void trans(int a);
    int main()
    {
        printf("Please input a 十进制整数");
        int i,k;//i为十进制,k为七进制;
        scanf("%d",&i);
        printf("%d的七进制表示为:",i);
        trans(i);
        getchar();
        return 0;
    }
    void trans(int a)
    {
        int n;
        for(n=7;n>=0;n--)
        {
            int j=pow(7.0,n);  
            if(a/j>=1)
            {
                int z = a/j; 
                printf("%d",z);
                a = a - z*j;
            }
            else
            {
                printf("0");
            }
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 10月28日
  • 已采纳回答 10月20日
  • 创建了问题 10月20日

悬赏问题

  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)