mirror of
https://github.com/Aexiar/c.git
synced 2024-10-22 14:05:45 +02:00
c
This commit is contained in:
parent
cab9aff435
commit
11a8dcfcae
@ -932,6 +932,98 @@ int main() {
|
||||
}
|
||||
```
|
||||
|
||||
### 5.3.5 应用示例
|
||||
|
||||
* 需求:给出一个整数 n ,判断该整数是否是 2 的幂次方。如果是,就输出 yes ;否则,输出 no 。
|
||||
|
||||
> [!NOTE]
|
||||
>
|
||||
> 思路:
|
||||
>
|
||||
> * ① 2^ 0 = 1 ,2^1 = 2 ,2^2 = 4,2^3 = 8,2^4 = 16,2^5 = 32 ...,规律:每一个数字都是前一个数字的 2 倍(任意一个数字,不断的除以 2 ,最终看结果是否是数字 1 )。
|
||||
> * ② 循环终止条件:
|
||||
> * 结果是 1 的时候,就可以结束,输出 yes 。
|
||||
> * 如果在除以 2 的时候,无法被 2 整数,也可以结束,输出 no ,如: 100 / 2 = 50,50 / 2 = 25 。
|
||||
|
||||
|
||||
|
||||
* 示例:
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
|
||||
int main() {
|
||||
|
||||
// 禁用 stdout 缓冲区
|
||||
setbuf(stdout, NULL);
|
||||
|
||||
int n = 0;
|
||||
printf("请输入一个整数:");
|
||||
scanf("%d", &n);
|
||||
|
||||
while (n > 1 && n % 2 == 0) {
|
||||
n /= 2;
|
||||
}
|
||||
|
||||
if (n == 1) {
|
||||
printf("yes");
|
||||
} else {
|
||||
printf("no");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
### 5.3.6 应用示例
|
||||
|
||||
* 需求:整数反转,如:123 --> 321 。
|
||||
|
||||
> [!NOTE]
|
||||
>
|
||||
> 思路:从右边开始,依次获取每一位数字,再拼接起来。
|
||||
|
||||
|
||||
|
||||
* 示例:
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
|
||||
int main() {
|
||||
|
||||
// 禁用 stdout 缓冲区
|
||||
setbuf(stdout, NULL);
|
||||
|
||||
int num = 0;
|
||||
int original = 0;
|
||||
int rev = 0;
|
||||
printf("请输入一个整数:");
|
||||
scanf("%d", &num);
|
||||
original = num;
|
||||
|
||||
// 从右边开始,依次获取每个数字,然后拼接到 rev 中
|
||||
/**
|
||||
* 第 1 次,123 % 10 = 3,rev = 0 * 10 + 3 = 3
|
||||
* 第 2 次,12 % 10 = 2,rev = 3 * 10 + 2 = 32
|
||||
* 第 3 次,1 % 10 = 1,rev = 32 * 10 + 1 = 321
|
||||
*/
|
||||
// 循环结束的条件是 num == 0
|
||||
while (num != 0) {
|
||||
// 获取 num 右边的第一位数字
|
||||
int temp = num % 10;
|
||||
// 去掉最后一位数字
|
||||
num /= 10;
|
||||
// 将 temp 拼接到 rev 的后面
|
||||
rev = rev * 10 + temp;
|
||||
}
|
||||
|
||||
printf("%d 的反转是 %d\n", original, rev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
## 5.4 do-while 循环
|
||||
|
||||
### 5.4.1 概述
|
||||
|
Loading…
Reference in New Issue
Block a user