如何解决无法获得我需要的输出
_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 举报,一经查实,本站将立刻删除。