1、C语言程序设计,绵阳师范学院 物理与电子工程学院 郭兴吉,2008年春 于四川绵阳,第一专题,专题一: C语言基础教学目标:掌握计算机语言的执行过程、计算机程序结构、算法及其描述、C程序结构及其执行过程。教学内容:1.1 计算机语言1.2 计算机程序结构1.3 算法及其描述1.4 C程序基础,1.1 计算机语言 一、计算机语言分类随着计算机软件技术的发展,几十年来,计算机语言有一百余种之多,但常用语言也不超过十种。从计算机执行程序的角度来看,计算机语言分类可分为:低级语言中级语言高级语言,通常将机器语言称为低级语言,汇编语言称为高级语言,其余语言称为高级语言。,二、计算机语言执行方式从“计算机
2、文化基础”课程学习中可知,计算机只能直接执行低级语言,其他种类的语言需要事先“翻译”为低级语言后才能执行。根据“翻译”方式的不同,计算机语言的执行方式又可分为“解释执行”和“编译执行”。解释执行:对高级语言源程序翻译一行执行一行的程序执行方式。编译执行:先对高级语言源程序全部翻译为低级语言然后再执行的程序执行方式。例如:Java解释执行C、Delphi编译执行Visual Basic既可解释执行又可编译执行,三、计算机语言的构成正如人类语言用于人与人之间交流的工具一样,计算机语言就是人与计算机之间进行交流的工具。与人类语言一样,计算机语言有其固有的语法规则,不同的计算机语言有不同的语法规则。人
3、类语言的表达通常是由单词根据句法构成单句,由单句根据文法构成段落,进而形成文章。计算机语言与此类似,由表达式根据语法构成语句,语句根据逻辑关系形成程序。因此,学习计算机语言的顺序应该是:程序结构、算法描述、表达式、语法,进而学会程序设计。,四、过程式语言与面向对象程序设计语言所谓过程式语言是指程序执行过程在设计程序时就可以确定的程序设计语言。例如C语言就是一种过程式语言。面向对象程序设计语言是指程序操作是基于“对象”的,没有脱离“对象”而单独存在的实体。这种程序设计语言在程序设计时不可能知道程序的执行顺序。例如C+就是一种面向对象程序设计语言。,1.2 计算机程序结构 一、计算机程序基本结构
4、1.宏观结构从宏观上讲,计算机程序的结构大致可划分为:主过程(启动过程或主函数等)过程体(或函数体)过程(或函数)过程体(或函数体),2. 微观结构可划分为:顺序结构、分支结构和循环结构,顺序结构 分支结构 循环结构,当型循环 直到型循环,二、程序基本结构与程序语句的关系顺序结构一般由赋值语句、过程(或函数)调用语句构成,其中不含分支语句和循环语句。分支结构一般由双路分支或多路分支语句构成。循环结构一般由循环语句构成,对于当型循环和直到型循环有不同的循环语句与之对应。,1.3 算法及其描述 一、算法算法是指完成一个任务准确而完整的描述。也就是说给定初始状态或输入数据,经过计算机程序的有限次运算
5、,能够得出所要求或期望的终止状态或输出数据。算法常常含有重复的步骤和一些比较或逻辑判断。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。,例如:有三个可以称重的物体,要求按其重量从重到轻顺序排列。其算法可以描述为: 从3个物体中选出最重物体放在第1位置; 从剩余两个物体中选出最重物体放在第2位置; 剩余物体放在第3个位置。注意:算法描述可以不与任何语言相关,计算机语言只是用于实现这些算法的工具。,二、程序流程图程序流程图同样不与任何语言相关,它只是用于对算法的图形化
6、描述。 1.图素用于设计流程图的最小框图称为图素,共有7种:,2.流程图画法根据算法设计选择上面相应图素,用流程线连接起来形成的一个整体就是流程图。,例如:算法 从3个物体中选出最重物体放在第1位置; 从剩余两个物体中选出最重物体放在第2位置; 剩余物体放在第3个位置。为了便于描述,假定装物体的三个容器分别编号为X、Y、Z,且排序后X容器中放最重物体,Z容器中放最轻物体。,三、算法的描述算法描述就是根据实际问题进行分析,以给出解决问题的步骤的行为。算法描述可以粗也可以细,要根据实际情况而定。一般原则是尽可能细,便于下一步的流程图设计和程序设计。实例1:随机产生50个1001000之间的整数,找
7、出其中的素数。分析:该问题要解决的实际有两个问题,其一是产生出符合要求的随机整数;其二是找出其中的素数(素数是指只能被1和自身整除的数)。,算法:1.置随机数种子且计数器初始化;2.产生1个符合要求的随机整数,计数器+1;3.如果计数器满50则继续下一步,否则重复上一步;4.输出这50个数,同时计数器清0;5.判定一个数是否素数,如果是则输出;6.计数器+1,如果满50,则继续下一步,否则重复5;7.结束。,实例2:随机产生100个100-1000之间的整数,找出其中的最大值及其所在的位置。分析:最大值所在的位置是指该值是第X个数。算法:1.置随机数种子;2.产生100个符合条件的随机整数,并
8、输出;3.置记录位置变量X为0,记录最大值变量M为第1个数,计数器清0;4.如果M下个数,则将该数赋值给M,同时记录X的值,计数器+1;5.如果计数器满100则继续下一步,否则转第4步;6.输出M和X的值;7.结束。,实例3:随机产生12个值在10-100之间的整数使其构成3行4列的矩阵,找出其中的鞍点(鞍点是指该值在行中是最小值,在其列中是最大值)。算法:1.定义1个3*4的矩阵空间(用数组方式);2.按要求随机产生12个整数,构成该矩阵;3.找出1行中的最小值;4.判定最小值所对应列中是否是最大值,如果是,输出该数和该数所处的行、列数,并结束程序;否则找下一行,重复第3步;5.如果全部行都
9、找遍了没有满足条件的数,则输出该矩阵无鞍点;6.结束。,1.4 C程序基础 一、第一个C程序问题:随机产生10个10-50之间的整数,并输出。,二、C程序结构从上个例子可以看出,C语言的结构如下:头文件引入主函数()函数体;自定义函数()函数体;,C程序特点: 1.每个程序由#include开头,引导该程序所需全部头文件; 2.每个程序都必须包含main()主函数,这是程序执行时的入口位置; 3.每句程序都以“;”结尾; 4.每个程序可以包含自定义函数,也可以没有自定义函数。,三、C程序执行过程1.宏观角度:编辑源程序(.c)、汇编(.obj)、链接(.exe)生成可执行文件。2.程序角度:从main()函数开始,按语句的执行顺序执行。,