首师大考研C语言简答题总结(总5
页)
-本页仅作为预览文档封面,使用时请删除本页-
C语言大题总结
1、冯.诺伊曼模型的基本组成部分。
输入设备、输出设备、存储器(内存储器、外存储器)、运算器、控制器
2、请写出结构化程序的含义和基本思想。
以模块设计为中心,将待开发的软件系统划分为若干相互独立的模块,完成每一个模块的功能独立而明确,为设计大的软件打下了基础。结构化程序设计的基本思想是自顶向下,逐步求精。
3、一个算法应该具有以下五个重要的特征:1.有穷性:算法的有穷性是指算法必须能在执行有限个步骤之后终止2.确切性:算法的每一步骤必须有确切的定义;3.输入项:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;
4.输出项:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;5.可行性:算法中执行的任何计算步都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成。(也称之为有效性)
4、请列举三种以上的排序算法,并从稳定性、算法复杂度进行比较。
1.稳定度:就是说排序过程中,出现错误排序(从小到大排列时,某次交换是8排到了7前面,就作为一次错误排序)的次数越少,稳定性越好。
2.计算的复杂度:可用时间复杂度来衡量,对于一个n元素的数组,最好的排序复杂度自然是O(n)但是做不到,退而求其次,O(nlogn)也不错,最差的是O(n2). 稳定算法 不稳定算法 名称 复杂度 名称 复杂度 O(n2) O(n2) 插入排序 选择排序 O(n2) O(nlogn) 冒泡排序 堆排序 O(nlogn)-O(n2) 快速排序 5、什么是算法什么是算法复杂度
算法是指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程。算法的复杂度指的是算法在运行过程中所需要的资源(时间、空间)多少 。所需资源越多,表明算法的复杂度越高。
6、算法分析的目的是什么?
是为了建立衡量算法优劣的标准,用以比较同一类问题的不同算法。为了对算法的某些特定输入,估算该算法所需的内存空间和运行时间;
7、算法设计的常用技术是什么?
①分治法;②回溯法;③贪心法;④动态规划法⑤分治限界法;⑥穷举法;⑦递推法; ⑧递推法
2
8、什么是递归算法递归算法的特点
递归算法:是一个模块(函数、过程)除了可调用其它模块(函数、过程)外,还可以直接或间接地调用自身的算法。 递归算法特点:
①要有终止条件,不然会无限循环
②要找到一个可以循环调用的递归表达式
9、分治法的基本思想是什么
将一个规模为N的问题分解为K个规模较小的子问题,这些子问题互相独立且与原问题相同。递归地解这些子问题,然后将各子问题的解合并得到原问题的解。
10、递归算法的优点是什么 结构清晰,可读性强,容易用数学归纳法来证明算法的正确性,因此它为设计算法、调试程序带来很大方便。 11、递归算法的缺点是什么?
运行效率较低,耗费的计算时间和占用的存储空间都多。为了达到此目的,根据具体程序的特点对递归调用工作栈进行简化,尽量减少栈操作,压缩栈存储空间以达到节省计算时间和存储空间的目的。
12、C语言为什么要规定对所有用到的变量要“先定义,后使用”这样做有什么好处?
因为C语言是一种强类型语言,要求所有变量在使用之前先定义数据类型。
1、根据数据类型分配内存空间。
2、便于提高源代码的安全性。 例子:假如一个全局变量money在代码中多次使用。但有一次写成了menoy。由于变量不需要事先声明的。所以程序正常运行,但是逻辑错误,难以排除。如果要求事先定义,则不会出现这样的错误。
13、简述C语言中指针与数组的联系与区别。
数组名只是指针中的一种,它是指针中只指向栈区的且指针的移动范围是有限的,即数组长度。而且数组在定义之初就已经有了自己的内存,一般的指针如果未指向某一个内存块时,它是没有自己的内存的,即所谓的野指针。 联系:如上面所说,数组只是定义在栈区的一个连续变量,它的首地址就是一个指针。
区别:数组是地址的常量,指针是保存地址的变量。
14、在编写程序的过程中,可能会出现程序编译错误或执行结果不正确等情况,为了有效的检查和分析错误原因,经常采用调试的方法。请写出至少2种常见的程序调试方法。
1、设置断点 2、分段隔离 3、跟踪打印 4、单步执行 5、查看变量 6、预定义使用
3
首师大考研C语言简答题总结
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)