我是在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

关于c - cs50信用循环问题将数除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54838212/

10-15 02:14