cs50积分循环问题分号

cs50 credit loop problem to divide the number

我在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)
}   

`

表达式 2i-1 与您想象的不一样。

2i其实是一个复数常量。当您随后将复数值 2i-1 传递给 pow 时,虚部被截断,传递的实际值为 -1.

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

2*i-1