字符数组
%c——逐个输入元素和字符(char)
%s——整体输入和输出字符串(string)
用格式%c逐个输入时,必须输够定义的字符,否则不会自动加结束符\0。输出时也不会自动检测\0。
用格式%s输入时,数组名本身就代表该数组首地址,无需加&。末尾自动加\0。当输入多个字符串,scanf()中空格为其分隔符,只有第一个空格前的字符串生效。(当输入一句话时,需定义和单词相等数量的数组)(存储了包括\0的n+1个字符)
如果数组中没有\0,输出时会将内存中该数组其他内容也一并输出,直到遇见\0为止。因此最好用%c输出各元素。
只有字符数组可以整体输入和输出。
字符串处理函数
1、gets:将字符串整行输入
2、puts:将字符串整行输出,结尾自动加\n
3、strlen:测字符串长度(strlen与sizeof结果不一定相同)
4、strcmp:比较两字符串大小,1比2大则输出正数,反之输出负数,相等则为0.(大写的ASC码比小写小32)
5、strcpy:将字符串2包括\0全部复制到1中
6、strcat:将字符串2连接到1后变为一个字符串,1的\0被覆盖。
函数递归算法
1、递推归纳:将原问题归类为同类规模更小的问题,归纳出一般递推公式。
2、递归终止:规模小到一定程度自动结束调用。
调用的执行分两阶段完成,先逐层调用(函数自身),再逐层返回返回到调用该层的位置后继续执行操作。每层调用都用堆栈保护主调层的现场和返回地址。调用的层数称为递归的深度。(堆栈的概念暂时看不懂,先放在这里)
堆栈(英语:stack)又称为栈或堆叠,是计算机科学中一种特殊的串列形式的抽象数据类型,其特殊之处在于只能允许在链表或数组的一端(称为堆栈顶端指针,英语:top)进行加入数据(英语:push)和输出数据(英语:pop)的运算。另外堆栈也可以用一维数组或链表的形式来完成。堆栈的另外一个相对的操作方式称为队列。
堆栈数据结构使用两种基本操作:推入(压栈,push)和弹出(弹栈,pop):
推入:将数据放入堆栈的顶端(数组形式或串列形式),堆栈顶端top指针加一。
弹出:将顶端数据数据输出(回传),堆栈顶端数据减一。
递归三要素
1、找出函数功能,找出基础公式
2、找出递归结束的条件
此处书上考虑到0!=1,更为严谨。
3、找出函数的等价关系式,即归纳一般递推公式