題目:
給定一個正整數,請定義一個函數判斷它是否為2的冪(1, 2, 4, 8, 16, …)
分析:
:
代碼
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdbool.h>/*
給定一個正整數,請定義一個函數判斷它是否為2的冪(1, 2, 4, 8, 16, ....)。
*/
bool is_pows(int num) { return num > 0 && (num & (num - 1)) == 0;}
int main(void) {int number;printf("請輸入一個正整數: ");scanf("%d", &number);if (is_pows(number)) {printf("%d 是2的冪\n", number);}else {printf("%d 不是2的冪\n", number);}return 0;
}
解決方案總結:
記住這條性質:num如果是2的正整數冪,那么和(num-1)相與運算,結果一定是0
:注意細節: