一,变量名命名规则
- 硬性规则(必守):仅含字母 / 数字 / 下划线、不以数字开头、不使用关键字、区分大小写;
- 软性规则(建议):见名知意、统一风格、避免混淆字符;
- 核心目标:变量名既要符合语法,又要让自己和他人能快速理解用途。
fabs()绝对值函数,引用math.h库


int ch1 = getchar();
getchar(); // 吸收回车符\n
int ch2 = getchar();
getchar()输入
putchar(ch1)输出ch1
pow函数的用法

常规的补码规则(补码→反码→原码)只适用于 -127 ~ 0 的负数,而 -128 是 8位 signed char 的 “边界值”,没有对应的原码 / 反码,是人为规定的:
- 8 位二进制能表示的正数范围:
00000000 ~ 01111111(0 ~ 127),共 128 个数; - 为了表示负数,需要用剩下的
10000000 ~ 11111111(128 个数)对应-128 ~ -1; - 常规规则下:
11111111→-1,11111110→-2…10000001→-127; - 最后剩下
10000000,没有对应的负数了,于是规定它表示-128(而非 0)。
简单说:8位 signed char 要凑够 -128~127 共 256 个数,10000000 就被分配给了 -128,这是补码规则的 “特殊补充”,不是常规转换能推出来的。

运算符等级
| 优先级 | 运算符类型 | 具体运算符 | |||
|---|---|---|---|---|---|
| 1(最高) | 括号 / 下标 / 成员等 | () [] . -> 后缀++/-- | |||
| 2 | 单目运算符 | ! ++ -- * & + -(正 / 负) | |||
| 3 | 算术运算符 | * / % > + - | |||
| 4 | 关系运算符 | > >= < <= > == != | |||
| 5 | 逻辑与 | && | |||
| 6 | 逻辑或 | ` | ` | ||
| 7(最低) | 赋值运算符 | = += -= 等 | |||
括号成员第一组,单目运算第二组,乘除取余第三组,加减第四组,移位第五组,关系第六组,等于不等第七组,位与第八组,位异或第九组,位或第十组,逻辑与十一组,逻辑或十二组,条件十三组,赋值十四组,逗号十五组。
一,最大公约数和最小公倍数思路:
一、最大公约数(最大公因数)
通俗理解:就是能同时整除这两个数的最大那个数。
方法1:从大到小试(暴力枚举)
-
从较小的数(比如 12)开始往下试,看哪个数能同时整除 12 和 18。
-
12 能整除 12 吗?能。12 能整除 18 吗?不能。→ 不行
-
11 能整除 12 吗?不能。→ 跳过
-
10?不能
-
9?9 能整除 18,但不能整除 12
-
8?不能
-
7?不能
-
6?6 能整除 12,也能整除 18 → 找到了!就是 6。
所以最大公约数是 6。
二、最小公倍数
通俗理解:就是能同时被这两个数整除的最小的那个数。
方法1:从小到大试(暴力枚举)
-
从较大的数(比如 18)开始往上试,看哪个数能同时被 12 和 18 整除。
-
18 能被 18 整除,但能被 12 整除吗?不能(18÷12 不是整数)→ 不行
-
19?不能被 12 整除
-
20?不能被 12 整除
-
...一直试到 36,36 能被 12 整除(36÷12=3),也能被 18 整除(36÷18=2)→ 找到了!就是 36。
所以最小公倍数是 36。

输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。


阶乘求和问题
5字符串处理函数
(1)puts函数——输出字符串的函数
puts(字符数组);
其作用是将一个字符串(以'\0'结束的字符序列)输出到终端。
(2)gets函数——输入字符串的函数
gets(字符数组);
(3)strcat函数——字符串连接函数
strcat(字符数组1,字符数组2);
其作用是把两个字符数组中的字符串连接起来,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值,即字符数组1的地址。
【说明】
①字符数组1必须足够大,以便容纳连接后的新字符串。
②连接前两个字符串的后面都有'\0',连接时将字符串1后面的'\0'取消,只在新串最后保留'\0'。
(4)strcpy和strncpy函数——字符串复制函数
strcpy(字符数组1,字符串2);
它表示“字符串复制函数”,作用是将字符串2复制到字符数组1中去。
【说明】
①字符数组1必须定义得足够大,以便容纳被复制的字符串2。
②“字符数组1”必须写成数组名形式(如str1),“字符串2”可以是字符数组名,也可以是一个字符串常量。
③可以用strncpy函数将字符串2中前面n个字符复制到字符数组1中去。例如:
strncpy(str1,str2,2);
(5)strcmp函数——字符串比较函数
①一般形式
strcmp(字符串1,字符串2);
②比较规则
将两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到'\0'为止。
a.如全部字符相同,则认为两个字符串相等;
b.若出现不相同的字符,则以第1对不相同的字符的比较结果为准。
③比较结果
a.如果字符串1=字符串2,则函数值为0;
b.如果字符串1>字符串2,则函数值为一个正整数;
c.如果字符串1<字符串2,则函数值为一个负整数。
(6)strlen函数——测字符串长度的函数
strlen(字符数组);
函数的值为字符串中的实际长度(不包括'\0'在内)。
(7)strlwr函数——转换为小写的函数
strlwr(字符串);
(8)strupr函数——转换为大写的函数
strupr(字符串);
【说明】在使用字符串处理函数时,应当在程序文件的开头用#include<string.h>把“string.h”文件包含到本文件中。
编一个程序,将两个字符串s1和s2比较,若s1>s2,输出一个正数;若s1=s2,输出0;若s1<s2,输出一个负数。不要用strcpy函数。两个字符串用gets函数读入。输出的正数或负数的绝对值应是相比较的两个字符串相应字符的ASCII码的差值。例如,"A"与"C"相比,由于"A"<"C",应输出负数,同时由于'A'与'C'的ASCII码差值为2,因此应输出“-2”。同理:"And"和"Aid"比较,根据第2个字符比较结果,"n"比"i"大5,因此应输出“5”。

gets函数,读一串字符串读到“\0”停止
char *gets(char *str)
二、一维数组名做函数参数
1. 核心逻辑
一维数组名传参时,函数接收的是「指向数组第一个元素的指针」,因此有 3 种等价的参数声明写法(本质都是int *):
表格
| 写法 | 说明 |
|---|---|
void func(int arr[]) | 最直观的写法,新手友好([] 里写数字也可以,比如arr[5],但编译器会忽略) |
void func(int arr[10]) | [] 里的数字仅作提示,编译器不会检查数组实际长度 |
void func(int *arr) | 最本质的写法(数组名退化为指针) |
2. 二维数组参数的等价写法
以int arr[3][4]传参为例,函数参数的合法写法:
表格
| 写法 | 说明 |
|---|---|
void func(int arr[3][4]) | 完整写法,直观 |
void func(int arr[][4]) | 省略第一维长度(推荐,更通用) |
void func(int (*arr)[4]) | 最本质的写法(指向一维数组的指针) |

1万+

被折叠的 条评论
为什么被折叠?



