代码如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int x,i,y=1;
scanf("%d",&x);
for(i=1;y<x;i++)
{
y=y*2;
if(y==x)
{
printf("yes,是2的%d次方\n",i);
}
}
if(y>x)
{
printf("no\n");
}
return 0;
}
---------------------------------------------------------------------------------------------------------------------------
输出结果
本代码思路:
假如要判断26是否为2的多少次幂,则从2的1次方开始循环乘2,并且所得数赋值给y。
当i=4时,2的4次方为16,因为16小于26,所以继续循环。i=5时,2的5次方为32,大于26,退出循环,并且判断,y=32,是否y等于26,如果等于,则输出yes,输出i;如果不等于,说明26在2的4次方到2的5次方之间,说明26无法等于2的若干次。所以打印“no”.