首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

还是判断是否是整数的有关问题,老是乱码

2012-02-28 
还是判断是否是整数的问题,老是乱码。用了大家提供的方法,还是不得要领,还请大家重新指正,多谢。我的程序如

还是判断是否是整数的问题,老是乱码。
用了大家提供的方法,还是不得要领,还请大家重新指正,多谢。

我的程序如下,问题出在哪里?

#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,都可以了

热点排行