【发布时间】:2023-02-05 02:45:15
【问题描述】:
我的代码编译成功,但任何时候我运行参数./base.o 42 2,它将它转换为二进制形式的基数2,输出是0,而任何时候我运行./base.o 99 5,结果都是444重复。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[]) {
int remainder = 0;
int num0 = 0;
int i = 0;
int num1 = atoi(argv[1]);
int num2 = atoi(argv[2]);
int quotient = num1;
while (quotient != 0) {
remainder = num1 % num2;
quotient = quotient / num2;
num0 = (remainder * pow(10, i)) + num0;
i++;
}
printf("%d\n", num0);
return 0;
}
【问题讨论】:
-
remainder = num1 % num2;仔细检查是否正确。 -
不要将
pow用于整数。相反,跟踪一个单独的幂变量,该变量从 1 开始并在循环的每次迭代中乘以 10。
标签: c