- 返回类型的转换说明为%zd
- strlen圆括号
- 运算对象为类型时,圆括号必须加
- 运算对象为特定量时,圆括号可有无
- strlen与sizeof的区别
- strlen计算字符时计算空格但不计算空白符
\0
- 符号常量要用英文大写
- 定义字符串或者字符时
- 字符用单引号
- 字符串用双引号
%i
有符号十进制整数、%o
无符号八进制整数、%u
无符号十进制整数、%p
指针- 转换修饰符
- z表示size_t类型的值,即sizeof函数返回的类型
- “-”代打印项左对齐
- “+”显示数值符号
- “空格”显示负号,省去正号
- “#”把结果转换为另一种进制eg:0x
- 转换不匹配
- 符号:如,有符号类型值即将用无符号类打印出来时从“65535=-1”开始依次递减为“32768=-?”,而0~32767为数值本身
- 大小:如需打印的数大于转换说明所规定的数值范围大小时,那么用需要打印的数值 除以 转换说明所规定的数值范围所得的余数 ps:详见c primer plus76页
- 了解“参数传递”即栈的概念 P77
- printf的返回值为打印字符的个数(包括空格和不可见的换行符)
*
用于可变字符宽度,不过需提前提供变量于转换说明前
- 关于是否使用
&
- 基本变量类型的值时,加&
- 字符串读入字符数组时,不加&
- scanf使用空白、换行符、制表符即可多行输入(%c例外,会读取空白)
*
用于抑制赋值(在%和字符中间)- 使用字符宽度时会在字段结尾或第一个空白字符处停止读取
- 赋值运算符:=
- a=1 应当理解为“把右值1赋给左值(对象定位符)a”,而不是“a等于1”
- 区别变量名与变量值 eg:a=a+1 其中,第一个a为变量名,第二个a为变量值,此语句的意思为:“找出变量a的值,然后把该值加1,然后把新值赋给变量a” -在C中,都是从右往左赋值
- 基本运算符:/
-
区别整数除法和浮点数除法:
- 在整数除法中,整数除以整数出现小数部分的话,那么小数部分将会被丢弃,这过程被称为截断
- 混合类型中,例如浮点数除以整数,那么整数将被转换为浮点数
-
注意:
- 正数:变为小于或等于浮点数的最大整数
- 负数:应使用“趋零截断”
- 运算符优先级:
- 乘法和除法的优先级比加法和减法高
- 大多数情况下,都是从左往右
- 从左往右的结合律只适用于共享同一运算对象的运算符
- 求模运算符:%
- 左侧整数除以右侧整数所得的余数 为模
- 只适用于整数,不适用于浮点数
- 递增、减运算符:
- 前缀模式:先使用,再递增
- 后缀模式:先递增,再使用
- 运算优先级只比圆括号低,且只能作用在一个可修改的左值上面
- 关于表达式的值:
- “q>3”,若为真,那么值为1,否则为0
- 关于语句:
-
列举:完整表达式、子表达式、迭代语句或结构化语句(如while语句)
-
序列点:
- 为程序执行的点,所有副作用(即目的)都在进入下一步之前发生。
- 任何一个完整表达式的结束也是一个序列点
-
完整表达式:指这个表达式不是另一个更大表达式的子表达式,例如表达式语句中的表达式和while循环中做为 测试条件的表达式
- 这是一个非常重点的内容,有助于分析递增、减后缀何时发生(P104多读多看)
#include<stdio.h>
char * s_get(char * st,int n)
{
char * ret val;
int i=0;
ret_val=fgets(st,n,stdin);
if(ret_val)
{
while (st[i]!='\n' &&st[i] !='\0') \\检查是否存在换行符
i++; \\逐个字符依次检查
if (st[i]=='\n') \\当为换行符时用空白符替换换行符
st[i]='\0';
else
while(getchar()!='\n') \\键入一个字符跳出if循环
contiune;
}
return ret_val; \\返回ret_val
}
-
提示用户正确输入数据类型;
-
处理用户与目标输入数据类型不匹配的输入
- eg:预设输入数字时,假设用户输入字母和符号;
-
再次提醒用户输入
-
给予反馈
- InitList(*L):初始化操作,建立一个空的线性表L
- ListEmpty(L):若线性表为空,返回true,否则返回false
- ClearList(*L):将线性表清空
- GetElem(L,i,*e):将线性表L中的第i个位置元素值返回给e
- LocateElem(L,e):在线性表中查找与定值e相等的元素,如果查找成功,返回该元素在表中的序号表示成功;否则,返回0表示失败
- ListInsert(*L,i,e):在线性表L中的第i个位置 插入 新元素e
- ListDelete(*L,i,*e):删除线性表L中第i个位置元素,并用e返回其值
- ListLength(L):返回线性表L的元素个数
O(1)<O(LOG)<O(N)<O(NLOG)<O(N2.3.4)<O(2N)<O(N!)<O(NN)