还是判断是否是整数的问题,老是乱码。
用了大家提供的方法,还是不得要领,还请大家重新指正,多谢。
我的程序如下,问题出在哪里?
#include <stdio.h>
#include <math.h>
main()
{
int m,n;
double r;
printf( "Please input m and n:\n ");
scanf( "%d %d ",&m, &n);
r = log(m/n)/log(2);
r = fabs(r);
while(r> =1.000000)
r-1;
if(r> 0.000000001)
printf( "m/n isn 't the power of 2!\n ");
else
printf( "m/n is the power of 2!\n ");
}
程序运行中停止,不知道怎么回事。
[解决办法]
while(r> =1.000000)
r=r-1; //这里
[解决办法]
#include <stdio.h>
#include <math.h>
main()
{
int m,n;
double r;
printf( "Please input m and n:\n ");
scanf( "%d %d ",&m, &n);
r = log(m/n)/log(2);
r = fabs(r);
while(r> =1.000000)
r--;
if(r> 0.000000001)
printf( "m/n isn 't the power of 2!\n ");
else
printf( "m/n is the power of 2!\n ");
}
[解决办法]
i=i-1用了一次运算,一次赋值
i--,只用了一次自减,速度更快,更适合于循环中
[解决办法]
就本程序的bug而言就是:r-1; 改成 r--; 或--r;
但LZ的程序意图是测试一个数是不是2的幂,不用这么麻烦一个if判断就搞定
int a = 8;
bool b = false;
b = (a&(a-1))?false:true;
[解决办法]
r-1,r的值是不会变的,只是做了一次运算而已
r--,--r,或者r -= 1,r= r-1,都可以了