回复 9楼 『点点滴滴』
没,我的算法很差的,而且我是匆忙写的,有很多漏洞,我后来玩的时候有发现,我还没去改,而且有很多地方犯了很低级的浪费。。。我只是试试能不能写出来,还没优化。。
你算法好强,
,我要向你学习了

勤能补拙,熟能生巧!
程序代码:
#include <stdio.h>
int main (void) {
int n,i,j=0,a[64];
scanf ("%i",&n);
//先把输入的数字以二进制的形式存入数组a
do {
a[i]=n%2;
n/=2;
i++;
}while(n!=0);
//遍历数组,找出位等于1的个数
for(i--;i>=0;i--) {
if(a[i]==1) {
j++;
}
}
//如果二进制位只有一个为1,则是2的N次幂
//否则,就不是。
if(j==1) {
printf ("Yes!\n");
}else{
printf ("No!\n");
}
//返回OS
return 0;
}
程序代码:
root@~ #cd prog
root@~/prog #cat is2.c
#include <stdio.h>
int main (void) {
int n,i,j=0;
scanf ("%i",&n);
do {
if(n%2==1) {
j++;
}
if(j>1) {
printf ("No!\n");
return ;
}
n/=2;
i++;
}while(n!=0);
printf ("Yes!\n");
return 0;
}
root@~/prog #