刷题:
思维导图:
#include <stdio.h>
// 手动定义32位有符号整数的范围
#define INT_MAX 2147483647
#define INT_MIN (-2147483647 - 1)
int reverse(int x)
{
int rev = 0; // 初始化反转后的数字为0
while (x != 0)
{ // 当x不为0时,继续循环
int pop = x % 10; // 取出x的最后一位数字
x /= 10; // 去掉x的最后一位数字
// 检查溢出情况
if (rev > INT_MAX / 10 || (rev == INT_MAX / 10 && pop > 7))
return 0; // 如果反转后的数字大于最大值,返回0表示溢出
if (rev < INT_MIN / 10 || (rev == INT_MIN / 10 && pop < -8))
return 0; // 如果反转后的数字小于最小值,返回0表示溢出
rev = rev * 10 + pop; // 将最后一位数字添加到反转后的数字中
}
return rev; // 返回反转后的数字
}
int main()
{
int x;
printf("请输入一个整数: ");
scanf("%d", &x);
printf("Input: %d, Reversed: %d\n", x, reverse(x));
return 0;
}
核心要点总结
一、Shell 基础
-
定义
- Shell 是用户与内核交互的接口,本质是多个指令的集合,需满足逻辑关系。
- 类比“贝壳”,保护内核。
-
作用
- 作为用户与内核交互的核心接口。
-
语言类型对比
- C语言:编译型语言,需编译器(如
gcc
),修改后需重新编译。 - Shell:解释型语言,需解析器(如
bash
),每次执行都需解析,速度较慢,但能直接操作内核。
- C语言:编译型语言,需编译器(如
二、Shell 脚本创建
-
文件创建
- 使用
vim ***.sh
创建脚本文件。
- 使用
-
Shebang 声明
- 第一行添加
#!/bin/bash
,指定解析器路径。
- 第一行添加
-
注释
- 单行注释:以
#
开头。 - 多行注释:使用
<<COMMENT ... COMMENT
(可能报错,非必要不使用)。
- 单行注释:以
三、运行 Shell 脚本
-
查看解析器
echo $SHELL
:显示当前 Shell。cat /etc/shells
:查看系统支持的解析器。
-
常见解析器
bash
(Debian/Ubuntu 默认)、sh
(早期解析器)、dash
、csh
、ksh
。
-
运行方式
- 方式1:
bash ***.sh
(新终端执行,结果返回当前终端)。 - 方式2:
source ***.sh
(直接在当前终端执行)。 - 方式3:
- 赋予执行权限:
chmod +x ***.sh
(或chmod 777
)。 - 直接运行:
./***.sh
。
- 赋予执行权限:
- 方式1:
四、环境变量修改
-
意义
- 将脚本路径加入
PATH
,使脚本能像系统命令一样直接运行(如ls
)。
- 将脚本路径加入
-
操作步骤
- 临时生效(仅当前终端):
bash
export PATH=$PATH:/自定义路径 # 添加路径到环境变量
- 赋予权限:
chmod +x ***.sh
。 - 直接运行:输入脚本文件名(如
01_test.sh
)。
- 临时生效(仅当前终端):
-
查看环境变量
env
或echo $PATH
。
关键区别说明
-
bash ***.sh
vssource ***.sh
bash
在新终端运行,脚本中的变量不会影响当前终端。source
直接在当前终端运行,脚本中的变量和修改会保留。
-
环境变量修改的时效性
export
命令仅临时生效,重启终端后失效。永久生效需修改配置文件(如~/.bashrc
)。