案例1:键盘输入一个数判断是否是2的幂次方
通过列举一些2的幂次方来观察规律
2^0=1 观察可以发现每一个数都是前一个数的2倍
2^1=2 且一直除以2最终都可以得到1
2^2=4
2^3=8
2^4=16
2^5=32
2^6=64
#include<stdio.h>
int main() {
int num;
printf("请输入一个数:");
scanf("%d", &num);
while (num > 1 && num % 2 == 0) {
num /= 2; //将能整除2的数依次除以2看最后的商是否为1
}
if (num ==1) {
printf("是2的幂次方");
}
else {
printf("不是2的幂次方");
}
}
案例2:
珠穆朗玛峰的高度为8844.43米,这里有一张厚度为0.1毫米的纸
需要折叠多少次才能大于等于珠穆朗玛峰的高度
#include<stdio.h>
int main() {
//先将单位转换为统一长度
//8844.43米=8844430毫米
int x = 8844430; //珠峰的高度
double y = 0.1; //纸张的厚度
int count = 0; //统计循环次数(要折叠多少次)
while (y < x) {
y = y * 2; //每折叠一次纸张的厚度是原先的2倍
count++; //每循环一次加1
}
printf("要折叠%d次", count);
}