cs50信用循环问题以除数

时间:2019-02-23 04:23:08

标签: c cs50

我遇到了CS50信用问题。我试图查找数字的倒数第二位。例如,4003600000000014。应为4,0,6,0,0,0,0,1。 我对此循环感到困惑。当我使用数字1,2,...15代替2i-1时,它可以工作。但是在这个循环中,它没有用。它给了我6,6,6,6,6,6,6,6 谢谢您的帮助!

`

long answer=get_long("Number: ");
int i;
long a;

for (i=1; i<9 ; i++)
{
    a= fmod((answer / (pow(10,2i-1))),10);
    printf("%ld\n",a)
}   

`

1 个答案:

答案 0 :(得分:2)

表达式2i-1不是您想的那样。

2i实际上是一个复数常数。然后,当您将复数值2i-1传递给pow时,虚部将被截断,而传递的实际值是-1

将两个数字/变量相乘时,必须使用*运算符:

2*i-1