微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法获得我需要的输出

如何解决无法获得我需要的输出

_equalGroups

所以我很难在这代码中找到问题。输入我的号码后,输出应该是这样的:

以 5 为底的 144 以 10 为底的 49

但是当我编译并运行代码时,它看起来像这样:

基数 5 中的 1 是基数 10 中的 49

我可以就问题所在以及如何解决问题寻求帮助吗?

解决方法

您的代码每次运行 base5_v 时都会修改 base5_v /= 10;

在您的示例中,您将 144 作为输入传递。第一次取模后修改为14,第二次取模后保留1

我认为您的代码中最大的错误是没有使用任何循环。如果用户输入 1234 或其他数字长度会发生什么?您可以通过多种方式对其进行编码,但这是其中一种(忽略用户输入验证):

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>

#define MAX_DIGIT_LENGTH    10

int main()
{
    char base5_v[MAX_DIGIT_LENGTH] = { '\0' };

    printf("> ");
    scanf("%s",base5_v);

    int base10_v     = 0;
    int digit_length = (int)strlen(base5_v);
    for (int digit = 0; digit < digit_length; digit++)
    {
        base10_v += pow(5,digit) * (base5_v[digit_length - digit - 1] - '0');
    }
    printf("%s in base 5 is %d in base 10\n",base5_v,base10_v);

    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。