我遇到了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)
}
`
答案 0 :(得分:2)
表达式2i-1
不是您想的那样。
2i
实际上是一个复数常数。然后,当您将复数值2i-1
传递给pow
时,虚部将被截断,而传递的实际值是-1
。
将两个数字/变量相乘时,必须使用*
运算符:
2*i-1