C语言入门课程
第一章
-
什么是程序
日常生活中, 程序通常指完成某些事务的既定方式和过程。
既定方式和过程
如:学习某知识的程序:找到我要看的书,打开封面,查看目录,找到所要学习的课程,打开对应页码,进行学习。
计算机中,程序是为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合。
初学者可以这么记:程序是一系列有序指令的集合
-
什么是算法?
通俗来说,算法是一个定义明确的计算过程,可以以一些值或一组值作为输入并产生一些值或一组值作为输出。因此算法就是将输入转为输出的一系列计算步骤。
简单来说,算法就是可完成特定任务的一系列步骤
它包括:
枚举法(穷举法)
迭代法
递归法
1.枚举法
基本思想:首先根据题目的部分条件确定答案的大致范围,然后在此范围内对所有可能的情况逐一验证,直到全部情况验证完毕。
从左向右如果从左到右一个一个新娘的盖头掀起来验证,那就是穷举法。
2.迭代法
迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。
例:一个饲养场引进一只刚出生的新品种兔子,这种兔子从出生的下一个月开始,每月新生一只兔子,新生的兔子也如此繁殖。如果所有的兔子都不死去,问到第 12 个月时,该饲养场共有兔子多少只?
分析:这是一个典型的递推问题。我们不妨假设第 1 个月时兔子的只数为u1 ,第 2 个月时兔子的只数为 u2 ,第 3 个月时兔子的只数为 u3 ,……根据题意,“这种兔子从出生的下一个月开始,每月新生一只兔子”,则有
u1 = 1,u2 = u1 + u1 × 1 = 2,u3 = u2 + u2 × 1 = 4…根据这个规律,可以归纳出下面的递推公式:un = u(n - 1)× 2 (n ≥ 2)对应 un 和 u(n - 1),定义两个迭代变量 y 和 x ,可将上面的递推公式转换成如下迭代关系:y = x * 2x = y让计算机对这个迭代关系重复执行 11 次,就可以算出第 12 个月时的兔子数。
3.递归法
基本思想:如果一个过程直接或间接地调用它自身,则称该过程是递归的。递归过程必须有一个递归终止条件。递归是从函数本身出发,逐次上溯调用其本身求解过程,直到递归的出口,然后再从里向外倒推回来,得到最终的值。
3.1二分查找法
基本思想:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。
4.回溯法
回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。
回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。
什么叫做程序?
程序就是数据结构+算法+适当的注释。其实很多问题都可以转换为算法问题,学习算法最大的作用就是更清楚地了解了很多东西。 -
流程图
流程图是算法的一种图形化表示方式
流程图使用一组预定义的符号说明如何执行特定任务
-
C语言的特点
结构化的程序设计语言
层次评议,便于按模块化方式组织程序,便于调试和维护。
结构化的缺点就是可重用性差。
语言简洁
适合作为入门语言,语句简单,使用方便灵活
可移植性好
统计表明不同机器上的C语言编译程序的代码是公共的,C语言的编译程序便于移植。
功能强大
即可用于系统软件的开发,也适合应用软件的开发。