C语言程序设计基础2为什么学习c语言?C语言是目前实际程序设计工作中使用最广泛的语言之一目前有许多软件系统是用C编写的,或基本上是用C编写的C语言是一种很灵活的语言很多新型的语言都是衍生自C语言程序设计是计算机领域的基础课程3什么是C语言?1973年由美国贝尔实验室设计发布的目前是计算机程序设计语言的主流语种是世界上最为广泛使用的语言之一C语言的流行归功于两个主要因素使用正确的C语言指令几乎可以完成任何任务是可移植的C编译系统的广泛采用C语言是一种能够让软件工程师与计算机进行有效对话的介于汇编语言和高级语言之间的编程语言C语言的主要特点C语言主要特点:运算符丰富。有34种运算符把括号、赋值、强制类型转换等都作为运算符处理表达式类型多样化数据类型丰富。包括:整型、浮点型、字符型、数组类型、指针类型、结构体类型、共用体类型C99又扩充了复数浮点类型、超长整型(longlong)、布尔类型(bool)指针类型数据,能用来实现各种复杂的数据结构(如链表、树、栈等)的运算。具有结构化的控制语句如if…else语句、while语句、do…while语句、switch语句、for语句用函数作为程序的模块单位,便于实现程序的模块化C语言是完全模块化和结构化的语言语法限制不太严格,程序设计自由度大。对数组下标越界不做检查对变量的类型使用比较灵活,例如,整型量与字符型数据可以通用C语言允许程序编写者有较大的自由度,因此放宽了语法检查C语言的主要特点C语言的主要特点允许直接访问物理地址,能进行位操作,可以直接对硬件进行操作C语言具有高级语言的功能和低级语言的许多功能,可用来编写系统软件这种双重性,使它既是成功的系统描述语言,又是通用的程序设计语言用C语言编写的程序可移植性好。C的编译系统简洁,很容易移植到新系统在新系统上运行时,可直接编译“标准链接库”中的大部分功能,不需要修改源代码几乎所有计算机系统都可以使用C语言生成目标代码质量高,程序执行效率高。7本课程的组织第一部分基础第二部分简单程序设计第三部分高级程序设计算法概念、编程原理、编程风格、基本数据类型定义、算术运算符及表达式顺序结构、选择结构、循环结构、数组的定义及应用、程序设计过程函数、变量的存储类别、指针、结构体与共用体、文件8程序设计什么是程序设计?使用某种程序语言编写程序的过程,就是用计算机语言对所要解决的问题中的数据以及处理问题的方法和步骤所做的完整而准确的描述的过程怎样进行程序设计?分析问题确定算法编制程序调试程序9程序设计一个程序主要包括以下两方面的信息:(1)对数据的描述。在程序中要指定用到哪些数据以及这些数据的类型和数据的组织形式这就是数据结构(datastructure)(2)对操作的描述。即要求计算机进行操作的步骤也就是算法(algorithm)程序=数据结构+算法10算法什么是算法(Algorithm)?就是为了解决一个特定的问题而采取的确定的、有限的、按照一定次序进行的、缺一不可的执行步骤注意为了有效地利用计算机解决实际问题,在设计算法时不仅要保证计算机执行算法的正确性,还要考虑算法的质量,选择适合于具体问题的算法11算法通常计算机算法分为两大类:数值运算算法和非数值运算算法数值运算是指对问题求数值解有确定的数学模型非数值运算是指事务处理过程种类繁多,很难提供统一规范的算法更多的是需要用户设计其算法的算法算法的特性有穷性:一个算法应包含有限的操作步骤,而不能是无限的。确定性:算法中的每一个步骤都应当是确定的,而不应当是含糊的、模棱两可的。有0个或多个输入:所谓输入是指在执行算法时需要从外界取得必要的信息。有1个或多个输出:算法的目的是为了求解,“解”就是输出。没有输出的算法是没有意义的。有效性:算法中的每一个步骤都应当能有效地执行,并得到确定的结果。1213算法的表示常用的方法有:自然语言传统流程图结构化流程图伪代码……用自然语言表示算法用自然语言表示通俗易懂,但文字冗长,容易出现歧义性用自然语言描述包含分支和循环的算法,不很方便除了很简单的问题外,一般不用自然语言14用流程图表示算法流程图是用一些图框来表示各种操作用图形表示算法,直观形象,易于理解起止框输入输出框处理框判断框流程线连接点注释框x≧0Y……N……一个入口两个出口2.4.2用流程图表示算法流程图是用一些图框来表示各种操作用图形表示算法,直观形象,易于理解起止框输入输出框处理框判断框流程线连接点注释框③①②①③②③位置不够防止交叉通过以上几个例子可以看出流程图是表示算法的较好的工具一个流程图包括以下几部分:(1)表示相应操作的框(2)带箭头的流程线(3)框内外必要的文字说明流程线不要忘记画箭头,否则难以判定各框的执行次序18结构化的程序设计方法程序的三种基本结构问题的提出结构化程序设计必须采用的结构顺序结构、选择结构和循环结构被称为程序设计的三种基本结构算法的实现过程是由一系列操作组成的,这些操作之间的执行次序就是程序的控制结构总体结构流程都是自上而下顺序执行的。19结构化的程序设计方法程序的三种基本结构顺序结构,顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的选择结构表示程序的处理出现了分支,它需要根据某一特定的条件选择其中的一个分支执行ABYpNAYpN循环结构循环结构循环结构,程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环①当型循环结构AYp1NYx5N0x输出x的值x+1x输出0,1,2,3,4循环结构②直到型循环结构AYp2NYx≧5N0x输出x的值x+1x输出1,2,3,4,5以上三种基本结构,有以下共同特点:(1)只有一个入口(2)只有一个出口一个判断框有两个出口一个选择结构只有一个出口(3)结构内的每一部分都有机会被执行到。也就是说,对每一个框来说,都应当有一条从入口到出口的路径通过它(4)结构内不存在“死循环”用N-S流程图表示算法N-S流程图用以下的流程图符号:ABABYNpA当p1成立A直到p2成立顺序结构选择结构循环结构(当型)循环结构(直到型)用伪代码表示算法伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法用伪代码写算法并无固定的、严格的语法规则,可以用英文,也可以中英文混用例2.16求5!。begin(算法开始)1t2iwhilei≤5{t*iti+1i}printtend(算法结束)用计算机语言表示算法要完成一项工作,包括设计算法和实现算法两个部分。设计算法的目的是为了实现算法。不仅要考虑如何设计一个算法,也要考虑如何实现一个算法。最简单的C语言程序举例例1.1要求在屏幕上输出以下一行信息。ThisisaCprogram.解题思路:在主函数中用printf函数原样输出以上文字。最简单的C语言程序举例#includestdio.hintmain(){printf(”ThisisaCprogram.\n”);return0;}函数的名字,表示主函数C程序必须有一个main函数最简单的C语言程序举例#includestdio.hintmain(){printf(”ThisisaCprogram.\n”);return0;}主函数类型最简单的C语言程序举例#includestdio.hintmain(){printf(”ThisisaCprogram.\n”);return0;}函数体最简单的C语言程序举例#includestdio.hintmain(){printf(”ThisisaCprogram.\n”);return0;}输出函数输出语句最简单的C语言程序举例#includestdio.hintmain(){printf(”ThisisaCprogram.\n”);return0;}输出语句最简单的C语言程序举例#includestdio.hintmain(){printf(”ThisisaCprogram.\n”);return0;}换行符最简单的C语言程序举例#includestdio.hintmain(){printf(”ThisisaCprogram.\n”);return0;}当main函数执行结束前将整数0作为函数值最简单的C语言程序举例#includestdio.hintmain(){printf(ThisisaCprogram.\n);return0;}表示语句结束用到函数库中的输入输出函数时最简单的C语言程序举例C语言允许用两种注释方式://:单行注释可单独占一行可出现在一行中其他内容的右侧/*……*/:块式注释可包含多行#includestdio.hintmain(){inti,t;t=1;i=2;while(i=5){t=t*i;i=i+1;}printf(%d\n,t);return0;}例(求5!)用C语言表示。39C语言词汇标识符每种程序语言都规定了在程序里描述名字的规则这些名字包括:变量名、常数名、数组名、函数名、文件名、类型名等,被统称为标识符C语言标识符C语言的标识符是满足如下条件的字符序列只能由英文字母、数字和下划线组成必须以英文字母或下划线开头注意C语言对大、小写字母严格区分标识符不要与关键字同名合法的标识符:如sum,average,_total,Class,day,BASIC,li_ling不合法的标识符:M.D.John,¥123,#33,3D64,a>b4041C语言词汇关键字具有特定含义的,用作专用的标识符C语言中关键字绝大多数是由小写字母构成的字符序列注意:这些特定的关键字不允许用户作为自定义的标识符使用42C语言词汇运算符分隔符常量注释符43C语言的数据类型数据类型空类型指针类型构造类型结构体类型数组类型共用体类型枚举类型文件类型基本类型整型实型字符型单精度型双精度型短整型整型长整型指针类型用于存放地址(指针),用来解决动态数据的建立、删除和使用空类型用于数据类型的转换基本类型构造简单,已由系统定义好构造类型由其它数据类型按一定规则构造而成。44C语言的数据类型数据类型的体现常量和变量是在计算机中数据类型的表现形式常量是一成不变的变量则可以不断改变数据类型的长度在计算机中,由于软硬件的各种原因,数据类型必须有一个长度的限制溢出处理不同的数据类型规定了不同的机内表示长度,也决定了对应数据量的变化范围,当某一数据超出该数据类型所规定的范围时,计算机会拒绝接受,而将之转换成范围内的另外某个数,这种情况称之为溢出处理。45常量在程序运行过程中其值不能被改变的量值C语言提供的常量数值常量整型如1000,12345,0,-345长整型常量,在常数之后加上字母l或L实型十进制小数形式:如0.34-56.790.0指数形式:如12.34e3(代表12.34103)字符常量字符常量如‘?’字符串常量如“boy”特殊形式常量符号常量#definePI3.141646常量实型常量有效位数单精度有效数字位数为十进制数的6~7位双精度有效数字位数为十进制数的15~16位长双精度型有效数字位数为十进制数的18~19位两种形式小数形式由正负符号、整数部分、小数点及小数部分组成例:3.0,5.123,-120.1,0.0指数形式由尾数、字母e或E及指数部分组成例:123.0E-1,-1.23e3标准的指数形式是:小数点的左侧只有一位数字47常量字符常量包括可以全部在计算机上显示的符号ASCII码表上的全部字符一个字符的存储占用一个字节表示方法用单引号‘’括起来的一个字符‘A’,‘1’用单引号‘’括起来的以‘\’字符开始的字符‘\n’,‘\t’48常量字符常量C语言中字符型数据和整型数据可以通用字