1、第第1章章 C语言程序设计概述语言程序设计概述第第1章章 C语言程序设计概述语言程序设计概述n1.1 程序、计算机语言与程序设计程序、计算机语言与程序设计n1.2 C语言的产生、发展与特点语言的产生、发展与特点n1.3 C语言程序开发过程语言程序开发过程n1.4 常用常用C语言集成开发环境简介语言集成开发环境简介n1.5 C语言程序设计初步语言程序设计初步n1.6 函数与模块化程序设计函数与模块化程序设计n1.7 算法与结构化程序设计算法与结构化程序设计2 2n问题问题1:你了解计算机吗?能说出计算机科学领域中的哪:你了解计算机吗?能说出计算机科学领域中的哪些著名人物?些著名人物?3 3n问题
2、问题2:什么是硬件?什么是软件?它们是什么关系?:什么是硬件?什么是软件?它们是什么关系?n硬件硬件计算机的躯壳和肉体计算机的躯壳和肉体n软件软件计算机的灵魂和思想计算机的灵魂和思想4 4n问题问题3:什么是计算机程序,它和软件有什么区别?:什么是计算机程序,它和软件有什么区别?5 51.1 程序、计算机语言与程序设计程序、计算机语言与程序设计n程序程序6 6 所谓所谓程序程序,就是为实现特定目标或解决特定问题而,就是为实现特定目标或解决特定问题而用计算用计算机语言机语言编写的编写的指令序列指令序列的集合,或者说是为实现预期目的的集合,或者说是为实现预期目的而设计的一系列语句和指令。而设计的一
3、系列语句和指令。n程序设计程序设计 如果需要利用计算机完成某项任务,就必须首先利用计算如果需要利用计算机完成某项任务,就必须首先利用计算机语言机语言编写完成该项任务的程序编写完成该项任务的程序,这就是通常所说的,这就是通常所说的“编编程程”,术语称为,术语称为“程序设计程序设计”。n问题问题4:人和计算机是如何交流的?:人和计算机是如何交流的?7 71.1 程序、计算机语言与程序设计程序、计算机语言与程序设计n计算机语言计算机语言8 8 所谓计算机语言,也称为程序设计语言,是指一个能完整、所谓计算机语言,也称为程序设计语言,是指一个能完整、准确和规则地表达人们的意图,并用以准确和规则地表达人们
4、的意图,并用以指挥或控制指挥或控制计算机计算机工作的工作的“符号系统符号系统”。n计算机程序设计语言的发展计算机程序设计语言的发展 计算机程序设计语言的发展,经历了从计算机程序设计语言的发展,经历了从机器语言机器语言、汇编语汇编语言言到到高级语言高级语言的历程。其发展过程是功能不断完善、描述的历程。其发展过程是功能不断完善、描述问题的方法越来越贴近问题的方法越来越贴近人类思维方式人类思维方式的过程。的过程。1.2 C语言的产生、发展与特点语言的产生、发展与特点n1C语言的产生及发展过程语言的产生及发展过程9 91.2 C语言的产生、发展与特点语言的产生、发展与特点n2C语言的特点语言的特点10
5、10(1)语言简洁、紧凑,使用方便、灵活语言简洁、紧凑,使用方便、灵活。C语言一共只语言一共只有有32个关键字,个关键字,9种控制语句,程序书写形式自由,主要使种控制语句,程序书写形式自由,主要使用小写字母,压缩了一切不必要的成分。用小写字母,压缩了一切不必要的成分。(2)运算符丰富运算符丰富。C语言的运算符包含的范围很广,共有语言的运算符包含的范围很广,共有34种运算符。种运算符。C语言把括号、赋值、强制类型转换等都作为语言把括号、赋值、强制类型转换等都作为运算符处理,从而使运算符处理,从而使C语言的运算类型符极为丰富、表达式语言的运算类型符极为丰富、表达式类型多样化。类型多样化。1.2 C
6、语言的产生、发展与特点语言的产生、发展与特点n2C语言的特点语言的特点(续)(续)1111(3)数据结构丰富数据结构丰富,具有现代化语言的各种数据结构。,具有现代化语言的各种数据结构。C语言的数据类型有整型、实型、字符型、数组类型、指针语言的数据类型有整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等,能用来实现各种复杂类型、结构体类型、共用体类型等,能用来实现各种复杂的数据结构。尤其是指针类型数据,使用十分灵活和多样的数据结构。尤其是指针类型数据,使用十分灵活和多样化。化。(4)具有结构化的控制语句具有结构化的控制语句。用函数作为程序的模块单。用函数作为程序的模块单位,便于实现
7、程序的模块化。位,便于实现程序的模块化。C语言是理想的结构化程序设语言是理想的结构化程序设计语言,符合现代编程风格的要求。计语言,符合现代编程风格的要求。1.2 C语言的产生、发展与特点语言的产生、发展与特点n2C语言的特点语言的特点(续)(续)1212(5)语法限制不太严格,程序设计自由度大语法限制不太严格,程序设计自由度大。例如,对。例如,对数组下标越界不做检查,整型、字符型数据可以通用,不数组下标越界不做检查,整型、字符型数据可以通用,不专设逻辑型数据而以整型来代替等。较少的限制给程序员专设逻辑型数据而以整型来代替等。较少的限制给程序员带来较大的自由,这就要求程序员在编程时应确实明白自带
8、来较大的自由,这就要求程序员在编程时应确实明白自己在做什么,而不要把检查错误的工作仅寄托于编译程序。己在做什么,而不要把检查错误的工作仅寄托于编译程序。(6)C允许直接访问物理地址,能进行位操作,可以直接允许直接访问物理地址,能进行位操作,可以直接对硬件进行操作对硬件进行操作。因此。因此C语言既具有高级语言的功能,又具语言既具有高级语言的功能,又具有低级语言的许多功能,可用来编写系统软件。有人把有低级语言的许多功能,可用来编写系统软件。有人把C语语言称为言称为“高级语言中的低级语言高级语言中的低级语言”或或“中级语言中级语言”,但一,但一般仍将般仍将C语言称为高级语言。语言称为高级语言。1.2
9、 C语言的产生、发展与特点语言的产生、发展与特点n2C语言的特点语言的特点(续)(续)1313(7)生成目标代码质量高、程序执行效率高,仅比汇编)生成目标代码质量高、程序执行效率高,仅比汇编语言目标代码效率低语言目标代码效率低10%20%。(8)用)用C语言编写的程序可移植性好。程序基本不做修改语言编写的程序可移植性好。程序基本不做修改就能用于各种计算机和各种操作系统。就能用于各种计算机和各种操作系统。1.3 C语言程序开发过程语言程序开发过程n通常将高级语言编写的程序叫做通常将高级语言编写的程序叫做“源程序源程序”,源程序必须,源程序必须先用一种称为先用一种称为“编译程序编译程序”的软件,把
10、它翻译成二进制形的软件,把它翻译成二进制形式的式的“目标程序目标程序”,然后再将该目标程序与系统的函数库,然后再将该目标程序与系统的函数库以及其他目标程序以及其他目标程序连接连接起来,形成可执行程序。起来,形成可执行程序。nC语言既然是高级语言的一种,其程序开发过程也应该是语言既然是高级语言的一种,其程序开发过程也应该是从从“源程序源程序”到到“目标程序目标程序”,再到,再到“可执行程序可执行程序”。具。具体步骤如图体步骤如图1-2所示。所示。14141515图1-2 语言程序开发过程1.4 常用常用C语言集成开发环境简介语言集成开发环境简介n1.4.1 Turbo C 2.0集成开发环境集成
11、开发环境1616Turbo C 2.0是是Borland公司开发的一个公司开发的一个C语言集成开发环语言集成开发环境。可以在境。可以在Turbo C中完成中完成C语言程序的编辑、编译、连接、语言程序的编辑、编译、连接、运行、调试。该系统是运行、调试。该系统是DOS操作系统支持下的软件,在操作系统支持下的软件,在windows环境下,可以在命令提示符窗口中运行。环境下,可以在命令提示符窗口中运行。n1.4.2 Visual C+6.0集成开发环境集成开发环境Visual C+6.0,简称,简称VC或者或者VC 6.0,是微软推出的一款,是微软推出的一款C+编译器,将编译器,将“高级语言高级语言”
12、翻译为翻译为“机器语言(低级语机器语言(低级语言)言)”。Visual C+是一个功能强大的可视化软件开发工具。是一个功能强大的可视化软件开发工具。由于由于C+是由是由C语言发展起来的,也支持语言发展起来的,也支持C语言程序的开发。语言程序的开发。1.4 常用常用C语言集成开发环境简介语言集成开发环境简介n采用采用Visual C+6.0进行进行C 语言程序开发具体步骤语言程序开发具体步骤:17171启动启动VC 6.0,进入如图所示的主界面。,进入如图所示的主界面。1.4 常用常用C语言集成开发环境简介语言集成开发环境简介n采用采用Visual C+6.0进行进行C 语言程序开发具体步骤语言
13、程序开发具体步骤(续):(续):18182选择选择“File”菜单中的菜单中的“New”命令,新建一个命令,新建一个Win 32控控制台应用工程,并给新建工程命名,单击制台应用工程,并给新建工程命名,单击“OK”按钮。如按钮。如图所示。图所示。1.4 常用常用C语言集成开发环境简介语言集成开发环境简介n采用采用Visual C+6.0进行进行C 语言程序开发具体步骤语言程序开发具体步骤(续):(续):19193上一步骤结束后会弹出如图所示的对话框窗口,选择上一步骤结束后会弹出如图所示的对话框窗口,选择创建一个空工程,单击创建一个空工程,单击“Finish”按钮。按钮。1.4 常用常用C语言集成
14、开发环境简介语言集成开发环境简介n采用采用Visual C+6.0进行进行C 语言程序开发具体步骤语言程序开发具体步骤(续):(续):20204选择选择“File”菜单中的菜单中的“New”命令,打开如图所示的新命令,打开如图所示的新建窗口,新建一个建窗口,新建一个C+Source File,在文件名中输入,在文件名中输入C语言语言源文件名,确定名字后即可以开始编辑源文件名,确定名字后即可以开始编辑C程序。程序。注意:注意:一定要加上扩展名一定要加上扩展名“.c”,否则会生成扩展名为,否则会生成扩展名为“.cpp”的的C+源文件。源文件。1.4 常用常用C语言集成开发环境简介语言集成开发环境简
15、介n采用采用Visual C+6.0进行进行C 语言程序开发具体步骤语言程序开发具体步骤(续):(续):21215源代码编辑完成后,依次单击工具栏中的源代码编辑完成后,依次单击工具栏中的“Compile”、“Build”、“Execute Program”按钮编译、按钮编译、连接、运行程序,或直接单击连接、运行程序,或直接单击“Execute Program”按钮,按钮,编译并调试运行程序。如果出现错误,会在下面的窗口编译并调试运行程序。如果出现错误,会在下面的窗口中提示错误内容。如果存在错误,可根据提示的错误信中提示错误内容。如果存在错误,可根据提示的错误信息检查并修改源程序,重复上述步骤,
16、直到程序正确运息检查并修改源程序,重复上述步骤,直到程序正确运行。行。1.4 常用常用C语言集成开发环境简介语言集成开发环境简介n采用采用Visual C+6.0进行进行C 语言程序开发具体步骤语言程序开发具体步骤(续):(续):22221.5 C语言程序设计初步语言程序设计初步n1.5.1 第一个第一个C语言程序语言程序n1.5.2 第一个第一个C语言程序剖析语言程序剖析n1.5.3 C语言程序基本结构语言程序基本结构23231.5 C语言程序设计初步语言程序设计初步n1.5.1 第一个第一个C语言程序语言程序2424【例例1.1】通过屏幕显示通过屏幕显示“This is my first
17、C program.”。1创建源程序文件创建源程序文件l(1)在硬盘上创建工作目录。)在硬盘上创建工作目录。l(2)创建工程。)创建工程。l(3)创建源程序文件。)创建源程序文件。u 注意:注意:文件名是文件名是1_1.C。1.5 C语言程序设计初步语言程序设计初步n1.5.1 第一个第一个C语言程序语言程序(续)(续)25252编辑源程序编辑源程序l在程序编辑工作窗口中输入下面的程序源代码,并保在程序编辑工作窗口中输入下面的程序源代码,并保存至文件存至文件1_1.C中。中。2626源程序:源程序:/*例例1.1:显示:显示“This is my first C program.”。文件名:。
18、文件名:1_1.C*/#include int main()printf(This is my first C program.n);return 0;1.5 C语言程序设计初步语言程序设计初步n1.5.1 第一个第一个C语言程序语言程序(续)(续)2727u 注意:注意:(1)C语言是语言是区分大小写区分大小写的,也称为大小写敏感,不能的,也称为大小写敏感,不能随意更换大小写。随意更换大小写。(2)C语言源程序采用语言源程序采用ASCII码码英文字符英文字符,不能采用全,不能采用全角字符(汉字字符)。角字符(汉字字符)。(3)尖括号)尖括号、圆括号、圆括号()、大括号、大括号和方括号和方括号
19、在在C语语言中的应用场合不同,不能随意替换。言中的应用场合不同,不能随意替换。(4)斜杠()斜杠(/)与反斜杠()与反斜杠()在)在C语言中的应用场合不语言中的应用场合不同,不能随意替换。同,不能随意替换。1.5 C语言程序设计初步语言程序设计初步n1.5.1 第一个第一个C语言程序语言程序(续)(续)28283编译编译 源代码编辑完成后,单击工具栏中的源代码编辑完成后,单击工具栏中的“Compile”按钮按钮进行编译。如果没有错误,则会生成进行编译。如果没有错误,则会生成目标文件目标文件1_1.OBJ。4连接连接 编译完成并生成编译完成并生成OBJ文件后,单击工具栏中的文件后,单击工具栏中的
20、“Build”工具按钮进行连接。如果没有错误,则会生成工具按钮进行连接。如果没有错误,则会生成可执行文件可执行文件1_1.EXE。1.5 C语言程序设计初步语言程序设计初步n1.5.1 第一个第一个C语言程序语言程序(续)(续)29295执行执行l(1)在集成开发环境下运行。连接完成并生成)在集成开发环境下运行。连接完成并生成EXE文件后,单击工具栏中的文件后,单击工具栏中的“Run”工具按钮运行程序,工具按钮运行程序,运行结果为显示运行结果为显示“This is my first C program.”。l(2)在)在DOS环境下运行。生成的环境下运行。生成的EXE文件可以不依文件可以不依赖
21、于集成开发环境在操作系统中直接运行。赖于集成开发环境在操作系统中直接运行。1.5 C语言程序设计初步语言程序设计初步n1.5.1 第一个第一个C语言程序语言程序(续)(续)30306处理错误处理错误l编译器能够指出错误并定位错误出现的位置。编译器能够指出错误并定位错误出现的位置。l双击错误提示,可以定位到源程序中的错误位置。修双击错误提示,可以定位到源程序中的错误位置。修正错误后正错误后重新编译重新编译。l有时一个很小的错误会显示许多错误提示,一般情况有时一个很小的错误会显示许多错误提示,一般情况下从第一个错误开始排查,程序调试也是程序设计者下从第一个错误开始排查,程序调试也是程序设计者必备的
22、一种能力。必备的一种能力。1.5 C语言程序设计初步语言程序设计初步n1.5.2 第一个第一个C 语言程序剖析语言程序剖析31311注释注释 源程序中:源程序中:/*例例1.11.1:显示:显示“This is my first C program.”This is my first C program.”。文件名:。文件名:1_1.C 1_1.C*/一行为注释。一行为注释。l在在C语言中,位于语言中,位于/*和和*/之间的文本为注释。之间的文本为注释。注释注释不执行任何操作,不执行任何操作,也就是说也就是说不会影响程序的运行不会影响程序的运行,它只是用来增加程序的可读性,它只是用来增加程序的
23、可读性,帮助程序员理解程序。帮助程序员理解程序。l注释可以是任意文本(包括汉字文本)。注释不一定单独占一行,注释可以是任意文本(包括汉字文本)。注释不一定单独占一行,无论无论/*和和*/放在源程序的什么位置,其中间的内容都是注释。放在源程序的什么位置,其中间的内容都是注释。l程序员应养成添加注释的良好习惯。程序员应养成添加注释的良好习惯。1.5 C语言程序设计初步语言程序设计初步n1.5.2 第一个第一个C 语言程序剖析(续)语言程序剖析(续)32322预处理命令预处理命令 源程序中:源程序中:#include 一行为预处理命令。一行为预处理命令。l如果在程序中需要使用如果在程序中需要使用C语
24、言标准库语言标准库中的输入输出函中的输入输出函数,例如本例中调用的数,例如本例中调用的printf()函数,应该在源程序的函数,应该在源程序的开头加上这一行。开头加上这一行。u注意:预处理命令不加分号。注意:预处理命令不加分号。1.5 C语言程序设计初步语言程序设计初步n1.5.2 第一个第一个C 语言程序剖析(续)语言程序剖析(续)33333定义定义main()函数函数 源程序中:源程序中:int main()printf(This is my first C program.n);return 0;5行定义了行定义了main()函数。函数。1.5 C语言程序设计初步语言程序设计初步n1.5
25、.2 第一个第一个C 语言程序剖析(续)语言程序剖析(续)34343定义定义main()函数函数lC语言程序由语言程序由函数函数构成,函数是构成,函数是C程序的基本单位。程序的基本单位。一个一个C语言程序必须包含一个且仅有一个语言程序必须包含一个且仅有一个main()函数,函数,通常称为通常称为主函数主函数。除了。除了main()函数外,还可以包含其函数外,还可以包含其他函数,但不是必须的。他函数,但不是必须的。lmain()函数是每个程序执行的起始点。一个函数是每个程序执行的起始点。一个C语言程语言程序总是从序总是从main()函数开始执行,而不论函数开始执行,而不论main()函数在函数在
26、源程序中的位置。源程序中的位置。l一个一个C语言函数由语言函数由函数首部函数首部和和函数体函数体两部分组成。两部分组成。1.5 C语言程序设计初步语言程序设计初步n1.5.2 第一个第一个C 语言程序剖析(续)语言程序剖析(续)35354函数首部函数首部 源程序中:源程序中:int main()一行为一行为main()函数的函数首部。函数的函数首部。l其中其中main为为函数名函数名;()表示这是一个函数;表示这是一个函数;int表示函表示函数返回值类型为整数值,执行完数返回值类型为整数值,执行完main()函数后,通过函数后,通过return语句将整数语句将整数0返回给操作系统,表示程序正常
27、终返回给操作系统,表示程序正常终止。止。1.5 C语言程序设计初步语言程序设计初步n1.5.2 第一个第一个C 语言程序剖析(续)语言程序剖析(续)36365函数体函数体源程序中:源程序中:printf(This is my first C program.n);return 0;4行为行为main()函数的函数体。函数的函数体。l函数体是在函数首部下用函数体是在函数首部下用一对一对 括起来的部分,它包括起来的部分,它包含了实现函数功能的全部语句。含了实现函数功能的全部语句。1.5 C语言程序设计初步语言程序设计初步n1.5.2 第一个第一个C 语言程序剖析(续)语言程序剖析(续)37376输
28、出信息输出信息调用调用printf()函数函数源程序中:源程序中:printf(This is my first C program.n);一行为函数调用语句,通过调用标准库函数一行为函数调用语句,通过调用标准库函数printf()在屏幕上显示字符串在屏幕上显示字符串This is my first C program.。1.5 C语言程序设计初步语言程序设计初步n1.5.2 第一个第一个C 语言程序剖析(续)语言程序剖析(续)3838l函数之间可以相互调用(函数之间可以相互调用(main()函数例外,函数例外,main()函函数不可以被其它函数调用)。被调用的函数可以是系数不可以被其它函数调
29、用)。被调用的函数可以是系统提供的库函数(统提供的库函数(ANSI C提供提供100多个库函数),也多个库函数),也可以是用户根据需要自己编写设计的函数。可以是用户根据需要自己编写设计的函数。C语言本语言本身没有输入输出语句,程序的输入输出工作都是由标身没有输入输出语句,程序的输入输出工作都是由标准库函数实现。准库函数实现。u注意:反斜杠引导的字符称为注意:反斜杠引导的字符称为转义字符转义字符,其意思是将,其意思是将反斜杠(反斜杠()后面的字符变成另外的意思。在本例代)后面的字符变成另外的意思。在本例代码中的字符码中的字符n为换行符,在这里输出的是为换行符,在这里输出的是回车换行回车换行。39
30、l1.5.3 C语言程序基本结构1.5 C语言程序设计初步语言程序设计初步n1.5.3 C语言程序基本结构语言程序基本结构(续)(续)40401C程序由程序由函数函数构成。构成。lC语言是函数式的语言,函数是语言是函数式的语言,函数是C程序的基本单位。一程序的基本单位。一个个C源程序至少包含一个源程序至少包含一个main()函数,也可以包含一函数,也可以包含一个个main()函数和若干个其他函数,但只能有一个函数和若干个其他函数,但只能有一个main()函数。函数。l被调用的函数可以是系统提供的库函数,也可以是用被调用的函数可以是系统提供的库函数,也可以是用户根据需要自己编写设计的函数。户根据
31、需要自己编写设计的函数。C语言程序的全部语言程序的全部工作都是由各个函数完成的。工作都是由各个函数完成的。编写编写C程序就是编写一程序就是编写一个个函数个个函数。1.5 C语言程序设计初步语言程序设计初步n1.5.3 C语言程序基本结构语言程序基本结构(续)(续)41412main()函数(主函数)是每个程序执行的起始点。函数(主函数)是每个程序执行的起始点。l一个一个C程序总是从程序总是从main()函数开始执行,而不论函数开始执行,而不论main()函数在程序中的位置。可以将函数在程序中的位置。可以将main()函数放在整个程函数放在整个程序的最前面,也可以放在整个程序的最后,或者放在序的
32、最前面,也可以放在整个程序的最后,或者放在其他函数之间。其他函数之间。1.5 C语言程序设计初步语言程序设计初步n1.5.3 C语言程序基本结构语言程序基本结构(续)(续)42423一个函数由函数首部和函数体两部分组成。一个函数由函数首部和函数体两部分组成。l(1)函数首部:包括函数类型、函数名、函数参数函数首部:包括函数类型、函数名、函数参数类型、函数参数名。类型、函数参数名。p例如,在例如,在sum()函数的首部为:函数的首部为:p注意:函数可以没有参数,但是后面的一对注意:函数可以没有参数,但是后面的一对()不能省不能省略。略。1.5 C语言程序设计初步语言程序设计初步n1.5.3 C语
33、言程序基本结构语言程序基本结构(续)(续)4343l(2)函数体:函数首部下用一对函数体:函数首部下用一对 括起来的部分。括起来的部分。如果函数体内有多个如果函数体内有多个,最外层是函数体的范围。函,最外层是函数体的范围。函数体一般包括声明部分、执行部分两部分。数体一般包括声明部分、执行部分两部分。声明部分声明部分:在这部分定义本函数所使用的变量。:在这部分定义本函数所使用的变量。执行部分执行部分:由若干条语句组成命令序列(可以在其:由若干条语句组成命令序列(可以在其中调用其他函数)。中调用其他函数)。43431.5 C语言程序设计初步语言程序设计初步n1.5.3 C语言程序基本结构语言程序基
34、本结构(续)(续)44444C程序书写格式自由。一行可以写几个语句,一个语句程序书写格式自由。一行可以写几个语句,一个语句也可以写在多行上。也可以写在多行上。5C程序没有行号,每条语句的最后必须有一个程序没有行号,每条语句的最后必须有一个分号分号“;”表示语句的结束。表示语句的结束。6C语言本身没有输入输出语句。输入和输出的操作是由语言本身没有输入输出语句。输入和输出的操作是由库函数库函数scanf()和和printf()等函数来完成的。等函数来完成的。7可以用可以用/*/对对C程序中的任何部分做注释。一个好程序中的任何部分做注释。一个好的、有使用价值的源程序都应当加上必要的注释,以增强的、有
35、使用价值的源程序都应当加上必要的注释,以增强程序的可读性。程序的可读性。1.6 函数与模块化程序设计函数与模块化程序设计n所谓所谓模块化程序设计模块化程序设计,是以功能模块为单位进行程序设计,是以功能模块为单位进行程序设计,实现求解算法的方法。,实现求解算法的方法。n模块化的目的是为了降低程序复杂度,使程序设计、调试模块化的目的是为了降低程序复杂度,使程序设计、调试和维护等操作简单化。和维护等操作简单化。n在在C 语言程序设计中,这些语言程序设计中,这些功能模块称为函数功能模块称为函数。函数与外。函数与外界有一个特殊的接口,可以将信息传递进来,也可以将函界有一个特殊的接口,可以将信息传递进来,
36、也可以将函数产生的结果传递出去。数产生的结果传递出去。45454545例例:求两个整数之和求两个整数之和。解题思路:解题思路:n设置设置3个变量个变量na和和b用来存放两个整数用来存放两个整数nsum用来存放和数用来存放和数n用赋值运算符用赋值运算符“=”把结果传送给把结果传送给sum4646#include int main()int a,b,sum;a=123;b=456;sum=a+b;printf(”sum is%dn”,sum);return 0;定义整型变量定义整型变量a,b,sum对变量对变量a,b赋值赋值将将a与与b的的和赋给和赋给sum47#include int main(
37、)int a,b,sum;a=123;b=456;sum=a+b;printf(”sum is%dn”,sum);return 0;真正输出时,用真正输出时,用sum的值的值替代替代代替要代替要输出的输出的值值481.6 函数与模块化程序设计函数与模块化程序设计【例例1.2】采用函数实现计算两数之和。采用函数实现计算两数之和。49495050源程序:源程序:#include int sum(int x,int y)/函数实现两数相加函数实现两数相加return x+y;void output(int a)/函数实现和的输出函数实现和的输出printf(sum=%dn,a);50505151源程
38、序(续):源程序(续):int main()int x,y,z;x=32;y=64;z=sum(x,y);output(z);return 0;运行结果:运行结果:sum=9651511.7 算法与结构化程序设计算法与结构化程序设计n1.7.1 算法举例算法举例n1.7.2 算法的特性算法的特性n1.7.3 算法的表示算法的表示52521.7 算法与结构化程序设计算法与结构化程序设计n一个程序应包括以下两方面内容:一个程序应包括以下两方面内容:(1)对数据的描述。在程序中要指定数据的类型和数)对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(据的组织形式,即数据结构(Data
39、 Structure)。)。(2)对操作的描述。即操作步骤,也就是算法)对操作的描述。即操作步骤,也就是算法(Algorithm)。)。n著名计算机科学家沃思(著名计算机科学家沃思(Nikiklaus Wirth)提出了一个公)提出了一个公式:式:程序程序=数据结构数据结构+算法算法n所谓算法就是为解决一个问题而采取的所谓算法就是为解决一个问题而采取的方法和步骤方法和步骤。535353531.7.1 算法举例算法举例n【例例1.3】求求5!(!(12345)。)。求求5的阶乘的最原始的算法如下:的阶乘的最原始的算法如下:l步骤步骤1:先求:先求12,得到结果,得到结果2。l步骤步骤2:将步骤:
40、将步骤1得到的乘积得到的乘积2再乘以再乘以3,得到结果,得到结果6。l步骤步骤3:将:将6再乘以再乘以4,得,得24。l步骤步骤4:将:将24再乘以再乘以5,得,得120。这就是最后的结果。这就是最后的结果。p问题:如果要求问题:如果要求121000?545454541.7.1 算法举例算法举例改进的算法:改进的算法:今设今设t为被乘数,为被乘数,i为乘数。用为乘数。用循环算法循环算法来求结果。可以来求结果。可以将算法改写如下:将算法改写如下:l步骤步骤1:使:使t=1。l步骤步骤2:使:使i=2。l步骤步骤3:使:使ti,乘积仍放在变量,乘积仍放在变量t中,可表示为中,可表示为ti=t。l步
41、骤步骤4:使:使i的值加的值加1,即,即i+1=i。l步骤步骤5:如果:如果i不大于不大于5,返回到步骤,返回到步骤3;否则,算法;否则,算法结束。算法结束后,结束。算法结束后,t中的就是最后的结果。中的就是最后的结果。555555551.7.1 算法举例算法举例p问题:题目改为求问题:题目改为求1357911?算法:算法:l步骤步骤1:使:使t=1。l步骤步骤2:使:使i=3。l步骤步骤3:使:使ti,乘积仍放在变量,乘积仍放在变量t中,可表示为中,可表示为ti=t。l步骤步骤4:使:使i的值加的值加2,即,即i+2=i。l步骤步骤5:如果:如果i不大于不大于11,返回到步骤,返回到步骤3;
42、否则,算法;否则,算法结束。结束。565656561.7.1 算法举例算法举例n可以看出,改进的算法具有通用性、灵活性。可以看出,改进的算法具有通用性、灵活性。n由于计算机是高速进行运算的自动机器,实现循环是轻而由于计算机是高速进行运算的自动机器,实现循环是轻而易举的。易举的。n因此,循环算法更容易在计算机上实现。因此,循环算法更容易在计算机上实现。575757571.7.2 算法的特性算法的特性n一个算法应该具有以下特性:一个算法应该具有以下特性:1有穷性有穷性2确定性确定性3有零个或多个输入有零个或多个输入4有一个或多个输出(即算法必须得到结果)有一个或多个输出(即算法必须得到结果)5有效
43、性有效性会使用和设计常用的算法,根据算法编写程序。会使用和设计常用的算法,根据算法编写程序。585858581.7.3 算法的表示算法的表示n1.7.3 算法的表示算法的表示用自然语言表示算法用自然语言表示算法流程图表示算法流程图表示算法用用N-S流程图表示算法流程图表示算法用计算机语言表示算法用计算机语言表示算法595959591.7.3 算法的表示算法的表示n1用自然语言表示算法用自然语言表示算法自然语言就是人们日常使用的语言,可以是汉语、英自然语言就是人们日常使用的语言,可以是汉语、英语或其他语言。语或其他语言。用自然语言表示通俗易懂,但文字冗长,容易出现用自然语言表示通俗易懂,但文字冗
44、长,容易出现“歧义性歧义性”。用自然语言描述包含分支和循环的算法,不是很方便。用自然语言描述包含分支和循环的算法,不是很方便。606060601.7.3 算法的表示算法的表示n2流程图表示算法流程图表示算法 流程图是一种使用很广的方法,它使用一些约定的几何流程图是一种使用很广的方法,它使用一些约定的几何图形来描述算法,直观形象,易于理解。图形来描述算法,直观形象,易于理解。美国标准化协会美国标准化协会ANSI规定了一些常用的流程图符号,规定了一些常用的流程图符号,已为世界各国程序工作者普遍采用。已为世界各国程序工作者普遍采用。616161616262图图1-12 1-12 流程图符号流程图符号
45、1.7.3 算法的表示算法的表示(1)起止框:表示算法的开始和结束。)起止框:表示算法的开始和结束。(2)输入输出框:表示算法请求输入输出需要的数据)输入输出框:表示算法请求输入输出需要的数据或算法将某些结果输出。或算法将某些结果输出。(3)菱形框(判断框):主要是对一个给定条件进行)菱形框(判断框):主要是对一个给定条件进行判断,根据给定的条件是否成立来决定如何执行其后判断,根据给定的条件是否成立来决定如何执行其后的操作。它有一个入口,两个出口。的操作。它有一个入口,两个出口。(4)处理框:表示算法的某个处理步骤,一般内部常)处理框:表示算法的某个处理步骤,一般内部常常填写赋值操作。常填写赋
46、值操作。(5)连接点:用于将画在不同地方的流程线连接起来。)连接点:用于将画在不同地方的流程线连接起来。同一个编号的点是相互连接在一起的,实际上同一编同一个编号的点是相互连接在一起的,实际上同一编号的点是同一个点,只是画不下才分开画。号的点是同一个点,只是画不下才分开画。63636363646465651.7.3 算法的表示算法的表示n3结构化程序设计结构化程序设计结构化程序设计由结构化程序设计由顺序结构顺序结构、选择结构选择结构和和循环结构循环结构三三种基本结构构成。种基本结构构成。C语言是结构化程序设计语言。语言是结构化程序设计语言。1966年,年,Bohra和和Jacopini提出了用这
47、三种基本结构作提出了用这三种基本结构作为表示一个良好算法的基本单元。为表示一个良好算法的基本单元。由三种基本结构顺序组成的算法结构,可以解决由三种基本结构顺序组成的算法结构,可以解决任何任何复杂的问题复杂的问题。666666666767 图图1-15 1-15 顺序结构顺序结构 图图1-16 1-16 选择结构选择结构注:A框或B框可以有一个是空的。6868 (a)While型型 (b)Until型型图图1-17 循环结构循环结构1.7.3 算法的表示算法的表示n以上三种基本结构有一些共同特点:以上三种基本结构有一些共同特点:(1)只有一个入口。)只有一个入口。(2)只有一个出口。)只有一个出
48、口。(3)结构内的每一部分都有机会被执行到。)结构内的每一部分都有机会被执行到。(4)结构内不存在)结构内不存在“死循环死循环”(无限循环,指程序的(无限循环,指程序的控制流程一直在重复运行某一段代码,无法退出的情控制流程一直在重复运行某一段代码,无法退出的情形)。形)。696969691.7.3 算法的表示算法的表示n4用用N-S流程图表示算法流程图表示算法 基本结构的顺序组合可以表示任何复杂的算法结构,那基本结构的顺序组合可以表示任何复杂的算法结构,那么,基本结构之间的流程线就属于多余的了。么,基本结构之间的流程线就属于多余的了。n美国学者美国学者I.Nasii和和B.shneiderma
49、n 于于1973年提出了一种新年提出了一种新的流程图形式。在这种流程图中,完全去掉了带箭头的流的流程图形式。在这种流程图中,完全去掉了带箭头的流程线。全部算法写在一个矩形框内,在该框内还可以包括程线。全部算法写在一个矩形框内,在该框内还可以包括其他的从属于它的框,或者说,由一些基本的框组成一个其他的从属于它的框,或者说,由一些基本的框组成一个大的框。大的框。n这种流程图称为这种流程图称为N-S结构化流程图结构化流程图。707070707171 图图1-18 顺序结构顺序结构 图图1-19 选择结构选择结构 (a)While型型 (b)Until型型图图1-20 循环结构循环结构7272图图1-
50、13 5!的算法用流程图表示的算法用流程图表示 图图1-21 5!的算法用的算法用N-S图表示图表示1.7.3 算法的表示算法的表示n5用计算机语言表示算法用计算机语言表示算法 用计算机语言表示算法必须严格遵循所用语言的语法规用计算机语言表示算法必须严格遵循所用语言的语法规则。则。737373731.7.3 算法的表示算法的表示n【例例1.5】求求12345,用,用C语言表示。语言表示。#include int main()int i,t;t=1;i=2;while(i=5)t=t*i;i=i+1;printf(%dn,t);return 0;74747474n计算机程序设计最主要的工作就是算