【发布时间】:2021-09-12 00:37:46
【问题描述】:
#include <stdio.h>
#include <math.h>
int main(){
int base5_v;
int digit = 0;
printf("> ");
scanf("%d", &base5_v);
int remainder = base5_v % 10;
base5_v /= 10;
int base10_v = remainder * (int) powf(5, digit++);
remainder = base5_v % 10;
base5_v /= 10;
base10_v += remainder * (int) powf(5, digit++);
remainder = base5_v % 10;
base10_v += remainder * (int) powf(5, digit++);
printf("%d in base 5 is %d in base 10\n", base5_v, base10_v);
return 0;
}
所以我很难在这段代码中找到问题。输入我的号码后,输出应该是这样的:
以 5 为底的 144 是以 10 为底的 49
但是当我编译并运行代码时,它看起来像这样:
以 5 为底的 1 是以 10 为底的 49
我可以就问题所在以及如何解决问题获得一些帮助吗?
【问题讨论】:
-
因为最后,当您打印出
base5_v时,您已经对其进行了修改——您已将其除以 10,两次。尝试保存输入数字的第二个副本,它不会被修改。 -
你需要一个循环...查找
while
标签: c unix base-conversion