printf("该数是2的次方\n"); else printf("该数不是2的次方\n"); return 0; }
// 推断一个数是不是2的n次方 #include <stdio.h> void judge_n(int a) { int b = a - 1; if ((a & b) == 0) { printf("是2的n次方\n"); return; } else { printf("不是2的n次方\n"); return; } } int main() { judge_n(2); judge_n(3); judge_n(4); return 0; }...
快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方! 将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0; 因此问题可以转化为判断1后面是否跟了n个0就可以了。 如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1;因此将原来的数...
scanf("%d", &num); ret = count(num); if (ret == 1) { printf("是2的整数次方!\n"); } else { printf("不是2的整数次方!\n"); } return 0; } 结果1: 请输入一个整数:8 是2的整数次方! 请按任意键继续. . . 结果2: 请输入一个整数:7 不是2的整数次方! 请按任意键继续. . ....
今天我们来聊聊一个非常基础的C语言编程题,主要是考察循环函数和对循环次数的判断。题目很简单,就是输入一个整数n(0<=n<31),然后输出2的n次方的结果。听起来是不是很简单?让我们一起来看看如何用C语言解决这个问题吧! 输入和输出描述 首先,我们需要了解输入和输出的要求。题目告诉我们,输入是一个整数n,而输出...
实际上很简单,如果一个数是2的n次方的话,二进制表示最高位一定是1,其它位是0,如对于数值x=16,其二进制表示为“10000”,则x-1=15,其二进制表示为“01111”,所以x与x-1位与运算为0,而对于不是2的n次方表示的数值,则不满足这个特点,根据这个思路,可写下面的函数进行判断一个数是否为2的n次方:...
C语言求2的n次幂。简介 #include <stdio.h>#include<math.h>int main(){ int n; unsigned long long sum; printf("请输入要计算的N此方:"); scanf("%d",& 正文 1 #include <stdio.h>#include<math.h>int main(){ int n; unsigned long ...
(n & (n - 1)) == 0);}```如果n是2的幂次方,那么n与n-1的位与运算的结果为0,否则不为0。因此,上述函数可以快速地判断一个数是否为2的幂次方。3. 使用位运算实现快速查找一个数的最高位1查找一个整数的最高位1,可以使用位运算来实现。具体方法是,将该数与它右移一位的结果进行位与运算,...
1 新建一个2的N次方项目,如图所示:2 添加一个 2的N次方.c 文件,如图所示:3 包含需要用到的各种头文件,如图所示:4 输入main函数,如图所示:5 定义三个int变量,如图所示:6 使用scanf函数接受任意次方,如图所示:7 使用for循环语句计算出2的N次方等于多少,如图所示:8 运行程序,查看结果,如图所示:9...
直接用移位运算符<<就行了。左移一位表示乘以2,左移两位就表示乘以4也就是2×2,……,左移n位就表示乘以2的n次方,也就是2×2×……×2,,(,n个2.)。C++中2^n=2*2*2 *2(n个2相乘),所以可以选择循环结构书写此程序。式子中的n输入来确定。include<iostream> using name...