【文档说明】C语言程序设计教程第2章程序流程课件.ppt,共(72)页,665.500 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-44517.html
以下为本文档部分文字说明:
第二章程序设计和程序结构本章概述2.4流程图及程序例子2.2流程图2.1程序设计与算法2.3程序结构本章概述•本章主要介绍了C语言的程序结构、流程图的绘制和程序设计的过程。•学习目标:•1、理解程序的开发、设计过程•2、掌握C语言程序结构
C语言程序设计第二章程序设计和程序结构3、掌握程序流程图的绘制方法4、了解三种程序结构:顺序、选择与循环5、熟练C语言程序的开发过程6、逐步建立程序的概念7、了解良好的程序设计风格内容框架:程序设计与程序结构程序设计与算法程序设计的概念算法流程图程序结构C语言程序总体结构函数的结构流程图
及程序例子函数头函数体说明语句部分执行语句部分预定义、头包含命令main()主函数函数组成程序流程图图符三种基本逻辑结构:顺序、选择、循环C语言程序设计第二章程序设计和程序结构2.1.1程序设计的概念1.程序包括对数据的描述
和对数据处理的描述数据处理数据程序包括C语言程序设计第二章程序设计和程序结构2.1程序设计与算法•(2)对数据处理方法的明确描述,即算法,是程序的灵魂,是程序设计的核心。著名计算机科学家数据结构算法=+程序沃思(NikiklausWirth)C语言程序设计第二章程序设计和程序结
构实际上,一个程序除了数据结构和算法外,还必须使用一种计算机语言来实现,C语言就是这样的一种计算机语言。C语言程序设计第二章程序设计和程序结构•2.程序设计过程C语言程序设计第二章程序设计和程序结构问题描述准确认真分析明确系统目标条件内容分析详尽力求似是而非简单化避免(2)设计算法:
根据题目要求,设计合理的算法。对于复杂的问题,一般都需经过抽象后再建立数学模型,即对问题进行数学上的描述,使问题变得简明而有效。(3)选择合适的程序结构:根据算法和所用的计算机语言特点,确定程序结构。C语言程序设计第二章程序设计和程序结构(4)确定变量及其数据类型:
一般的程序都会用到变量,根据问题的条件、处理过程、结果要求所涉及到的所需的各种数据,选用适当的变量形式来描述、处理。正确、合理、经济地处理所需的变量,是计算机应用技术的基本功之一。C语言程序设计第二章程序设计和程序结构(5)画流程图(7)调试程序结构变量类型算法确定流程图详细思
路画出体现程序语句调试(6)编写代码C语言程序设计第二章程序设计和程序结构良好的程序编写风格会大大缩短调试过程,附录4介绍了C语言程序的一般书写风格,附录11介绍了一些常见的错误。C语言程序设计第二章程序设计和程序结构2.1.2算法在实际的编
程过程中要注意:1、避免拿起题目就开始写程序的2、应该先设计出合适的算法C语言程序设计第二章程序设计和程序结构用程序实现对一个具体问题的处理,往往基于手工处理的方式,也就是设计人员对实际问题的分析。在算法设计之前首先,要认真考虑和设计数据的组织方式然后,再针
对此数据结构设计相应的操作步骤计算机中的算法可以更简洁地表示繁琐的手工操作过程。C语言程序设计第二章程序设计和程序结构算法具有如下性质:(1)有穷性(2)确定性(3)有效性(4)有0个或多个输入(5)有一个或多个输出另外,算法还应有清晰、直
观的表示方式,以利于算法的理解、维护。C语言程序设计第二章程序设计和程序结构描述算法的方法初学者可以从流程图开始(1)自然语言(2)N-S图(3)结构化流程图应先分析题意画出流程图再进行编程在实际编程过程中C语言程序设计第二章程序设计和程序结构2.2流程图•流程图是用几何图形、箭头和文字说明
来表示算法的框图。直观形象描述算法清楚的表达设计者的思路C语言程序设计第二章程序设计和程序结构图形符号名称操作起止流程的起点与终点处理各种形式的数据处理输入\输出数据的输入与输出判断根据条件选择相应的分支预定义过程一个定义过的过程,如函数连接点与流程图其它部分连接流程线连接
各图框,表执行顺序表2-1程序流程图符号•在长期的程序设计实践中,人们提•出了结构化的流程图,即一个流程图都可以由三种基本的结构(顺序、选择、循环)组成,程序设计语言对这三种结构都可以实现,而且计算机都能
够执行。C语言程序设计第二章程序设计和程序结构•顺序、选择、循环这三种基本结构可以相互嵌套,从而组成复杂的算法。根据结构化流程图写出的程序就是结构化的程序。三种基本结构的流程如图2-1所示。它们的特点是:•顺序结构:按语句书写顺序执行。•选择结构:根
据条件判断选择执行的分支。•循环结构:根据给定条件反复执行某程序段。•C是一种结构化程序设计语言,其任何程序都可由这三种基本逻辑结构来描述。C语言程序设计第二章程序设计和程序结构2.3程序结构一个完整的C语言程序的组成若干个其它函数一个main()函数一个main()函数或C语言
程序设计第二章程序设计和程序结构•如果一个程序中有多个源文件,则只能在一个源文件中存在。在第二章至第五章的例题中,主要以只有一个函数的程序进行讲解;第六章开始,我们将介绍由多个函数构成的程序。C语言程序设计第二章程序设计和程序结构main(
)main()2.3.1C语言程序总体结构C语言程序设计第二章程序设计和程序结构编程思路:这是第一个程序例子,通过这一例子,我们来了解源程序的结构:首先是对源程序的一些说明例2-1由main()函数构成的C语言程序。包括文
件名、程序功能,放在由“/*”和“*/”对构成的注释部分中指定程序中要调用的函数printf()所在的头文件;接下来给出以“#include”开始的预处理命令行接下来是main()函数,将所有需要程序完成的语句均放在以‘{’、‘}’括起来的函数体内
,本程序中只有一条语句,用来在屏幕显示信息。C语言程序设计第二章程序设计和程序结构程序源代码如下:/*代码文件名:E2_1.C*//*功能:由main()函数构成的程序示例*/#include"stdio.h"main(){printf
("Wonderful,thisismyfirstCprogram.\n\n");}程序运行结果:C语言程序设计第二章程序设计和程序结构其中最后一行的“Pressanykeytocontinue”是VC6.0自动添加在每
个程序运行结果后面的一句提示信息,它表示当程序执行结束时,操作者可以按任意键返回到编辑界面。在后面的程序运行结果中,将不再给出这一信息。C语言程序设计第二章程序设计和程序结构例2-2求两个整数的和。编程思路:要求两个整数的和,首先必须存在两个整数,因此先定义两个整数:程序中用整型变量
来表示再从键盘输入两个整数,然后将两个数相加,最后在输出两个数的和如果没有输出,就不知道结果在main()函数中,对变量的定义要放在输入、相加、输出等可以执行的语句前面。当然,还得定义一个整型变量存放两数之和。C语言程序设计第
二章程序设计和程序结构程序源代码如下:/*代码文件名:E2_2.C*//*程序功能:实现两个整数的相加*/#include"stdio.h"main(){intnum1,num2,sum;printf
("Inputthe1stintegernumber:");scanf("%d",&num1);printf("Inputthe2ndintegernumber:");scanf("%d",&num2);sum=num1+num2;printf
("sum=%d\n",sum);}C语言程序设计第二章程序设计和程序结构程序运行结果:通过以上两个程序,我们来了解一下C语言程序结构的特点:1、程序的前两行是用一对‘/*’、‘*/’括起的描述性语句,这是程序中的注释部分,对程序的功能作了简要的说明,在编译过程中将忽略。C语
言程序设计第二章程序设计和程序结构2.有一行命令:#include"stdio.h"其中的“stdio.h”是C提供的一个头文件,在其中定义了多个函数;当后面的程序要调用一些已经定义过的库函数(如printf()、scanf()函数)时,就要先用include命令对包含被调用函数的头文
件(如stdio.h)进行预定义说明。3.程序中有一个main(),在其后面有一对‘{’、‘}’,在‘{’、‘}’中有多行以‘;’结尾的语句。main()函数是C语言程序的主函数,一个程序有且只有一个main()主函数。C语言程序设计第二章程序设计和程序结构不论它在程序
前面还是后面,整个程序总是从函数开始执行;执行完毕时,程序也执行完毕。一般放在一个源文件的最前头。main()main()main()如果在程序中还有其它函数,它们也是直接或间接地被main()调用。函数是C语言程序的基本单位。2.3.2函数的一般结构C语言程序设计第二章
程序设计和程序结构任何函数(包括主函数main())都是由函数头和函数体两部分组成。其一般结构如下:[函数类型]函数名([函数参数表])/*函数头部分*/{/*函数体部分*/说明语句部分;执行语句部分;}C语言程序设计第二章程序设计和程序结构1、函数头函数头由函数类型(可缺省)、函数名和函数参数
表(可缺省)三部分组成。2、函数体在函数说明部分的下面、大括号(必须配对使用)内的部分。函数体一般由说明语句和可执行语句构成:C语言程序设计第二章程序设计和程序结构(1)说明语句部分由变量定义、自定义类型
说明、外部变量说明等组成。如果不需要,也可以缺省变量定义语句。(2)可执行语句一般由若干条可执行语句构成,所有可执行语句必须在说明语句部分之后。C语言程序设计第二章程序设计和程序结构下面是例2-2中main()函数的结构说明:/*主函数
main()*/#include"stdio.h"/*头文件说明*/main()/*函数头部分*/{/*下面为函数体部分*/intnum1,num2,sum;/*变量定义部分*//*下面是可执行语句部分
*/printf("Inputthe1stintegernumber:");scanf("%d",&num1);printf("Inputthe2ndintegernumber:");scanf("%d",&num2);sum=num1+num2
;printf("sum=%d\n",sum);}C语言程序设计第二章程序设计和程序结构函数体内的说明语句不能放在可执行语句中间,在下面的例2-3中,定义语句“intmax;”的位置就是非法的:例2-3一个位置错误的定
义语句。编程思路:函数中的说明语句只能放在可执行语句之前,本程序给出了一个位置错误的定义语句。C语言程序设计第二章程序设计和程序结构程序源代码如下:/*代码文件名:E2_3.C*//*主函数main()*/#include"stdio.h"main(){intx,y;x=3
;y=6;intmax;max=x>y?x:y;printf("max=%d\n",max);}/*头文件说明*//*说明语句:定义2个整型变量x、y*//*可执行的赋值语句:将3赋值给x*//*可执行的赋值语句:将6赋值给y*//*说明语句:定义一个整型变量max*/C语言程序设计
第二章程序设计和程序结构在main()函数中,第4条语出现在可执行语句后面,是非法的,应该将其移到第2条语句的前面。intmax;x=3;C语言程序设计第二章程序设计和程序结构下面给出C源程序的结构特点:1.
一个C语言源程序可以由一个或多个源文件组成。2.每个源文件可由一个或多个函数组成。C语言程序设计第二章程序设计和程序结构3.一个源程序不论由多少个文件组成,都有一个且只能有一个main()函数,即主函数。4.源程序中可以有预处理命令(include命令
仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。5.每一个说明、每一个语句都必须以分号结尾,但预处理命令,函数头和花括号‘}’之后不能加分号。6.标识符与关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。2.4流程图及程序例子说明:在这
一节中,给出了本教材中涉及到的各类数据类型和控制结构的例子,学习时主要领会编程的思路和流程图的绘制;而对于程序代码,可以在上机练习时参考调试,以建立程序的概念。C语言程序设计第二章程序设计和程序结构C语言程序设计第二章程序设计和程
序结构例2-4用*号输出字母C的图案。编程思路:可先用‘*’号在纸上写出字母C,再分行输出。流程图如右图2-2所示。开始结束输出“****”输出“*”输出“*”输出“****”C语言程序设计第二章程序设计和程序结构程序源代码如下:程序运行结果:/*代码文件名:E2_4.C*//*输
出练习*/#include"stdio.h"main(){printf("****\n");printf("*\n");printf("*\n");printf("****\n");}C语言程序设计第二章程序设计和程序结构例2-5输入三个整数x,y,z,并将这三个数由小到大
输出。编程思路:我们先来看一个熟悉的环境:学校是一个进行教学活动的场所:每个班级都有不同的名称思考题:如果希望输出的图案效果更好一点,该如何调整程序?C语言程序设计第二章程序设计和程序结构如06软件(1)班、05机电(2)班等每个班级都有一定数量的学生,学校为每个
班级分配了一个大小合适的教室以进行各种活动,如图2-3(a)所示,我们知道,如果没有学生,这些班级就没有意义,教室浪费了,也不存在教学活动;而且一个教室只能安排一个班级C语言程序设计第二章程序设计和程序结构比如3203教室原来是分配给06软件(1)班,而如果现在要安排05机电(2)班在320
3教室上课那么就必须给06软件(1)班另外安排一个足够容得下该班所有学生的教室,否则该班就无法上课了。在教学活动的各种场合,通常以班级名称来安排各种活动。类似的,计算机中的程序要运行,完成一定的功能,就要进行各种数
据处理。我们可以用x、y、z等来表示这些要处理的数据,在程序执行时,x、y、z均有具体的数值,而且这它们的值是存放在系统为它们分配的各个存储单元(每存储单元均有编号)中,如图2-3(b)所示。C语言程序设计第二章程序设计和程序结构同样,一个存储单
元只能存放一个数值,比如x的值存储在编号为12000的单元中,值为300;现在如果要使x的值为z的值,那么就必须为x原来的数值(300)分配另外一个存储单元,否则x原来的值就会丢失,因此我们可以将它另存到编号为12006的单元中,并以t来表示。C语言程序设计第二章程序设计和程序结构在程
序运行中,各数据量(如x)的存储单元是在数据处理之前就由系统分配好的,如果它没有具体的数值,那么就没有意义,系统为其分配的存储单元也浪费了。而且,在程序中,通常以数据的名称(如x)参与数据处理,对于存储单元可以不必关心(一般由系统自动分配)。C语言程序设计第二章程序设计和程序结构C语
言程序设计第二章程序设计和程序结构06软件(1)班41人06软件(2)班39人05机电(1)班37人05机电(2)班40人学校:教学活动教室班级学生3203320632053204程序:数据处理x2y3z6t存储单元数据名
称数值12000120061200412002(a)学校中班级的安排(b)程序中的数据存储图2-3学校中的班级安排与程序中的数据存储C语言程序设计第二章程序设计和程序结构下面,我们分析本例的题目要求:要实现将三个数x、y、z由小到大输出,可以:(1
)先把最小的数放到x上:先将x与y进行比较,如果x>y,则将x与y的值进行交换;然后再用x与z进行比较,如果x>z,则将x与z的值进行交换,这样能使x最小;(2)将剩下y、z进行比较,如果y>z,则交换y与z的值。这样,z的值最大,y的值居于中间;C语言
程序设计第二章程序设计和程序结构(3)要交换两个变量x、y的值,如果直接使用:x=y;y=x;由前面的分析可知,当进行x=y处理时(x的存储单元存入了y的值),x的值就会丢失,无法实现交换两个数的目的C语言程序设
计第二章程序设计和程序结构因此需借助另外的一个变量(设为t),先将x的值给t(x的值存于t所对应的存储单元中)再把y的值给x(y的值存于x的存储单元),最后将t的值(即x原来的值)赋给y(t的值存于y所
对应的存储单元中),这样就完成了交换x与y的值。开始A结束流程图如图2-4所示。输入x、y、z交换x、y:t-x,x-y,y-t交换x、z:t=x,x=z,z=t交换y、z:t=y,y=z,z=t输出:x、y、zA定义:三个整数x、y、z,一个临时变量tNy>zYNNX>zY
X>yYC语言程序设计第二章程序设计和程序结构说明:在流程图中的A是连接点,表示右边的流程图连接在左边的流程图之后,这在流程图较大或较长时可以使用。程序源代码如下:/*代码文件名:E2_5.C*//*选择
程序设计例题*/#include"stdio.h"main(){intx,y,z,t;printf("请输入三个整数:\n");scanf("%d%d%d",&x,&y,&z);C语言程序设计第二章程序设计和程序结构i
f(x>y){/*如果x>y,则交换x、y的值*/t=x;x=y;y=t;}if(x>z){/*交换x,z的值*/t=z;z=x;x=t;}if(y>z){/*交换z,y的值*/t=y;y=z;z=t;}printf("这三个数从小到大排列顺序为:%
d%d%d\n",x,y,z);}C语言程序设计第二章程序设计和程序结构程序运行结果:C语言程序设计第二章程序设计和程序结构例2-6打印输出个位数为6且能被3整除的所有正的5位数。编程思路:程序处理对象用整型变量i来表示,i是个位数为6的5位数,即范围是10006-99996,在VC6.0环境
下,int型数据的宽度为4个字节,可用整型int或长整型longint来定义i(在TC2.0环境下,int型数据的宽度为2个字节C语言程序设计第二章程序设计和程序结构所能表示的整数范围是-32768~32767,就要用长整型lon
gint来定义i);接下来判断i是否能被3整除,如果整除就输出,否则就不输出。一个数判断完毕后,再判断下一个数,直到将这一范围符合条件的数全部输出,因此要用循环的方法来处理。结束定义一个整型变量:i=10006输出i开始i=i+10i%3==0YYNi>99996N流程图如
图2-5所示。C语言程序设计第二章程序设计和程序结构/*代码文件名:E2_6.C*//*循环程序设计*/#include"stdio.h"main(){inti=10006;printf("个位数为6且能被3整除的所有5位数:\n");while(i<=99996
){if(i%3==0)printf("%d,",i);i+=10;}printf("\n");}程序源代码为:C语言程序设计第二章程序设计和程序结构程序运行结果:这是部分运行结果,因为程序运行的结果有多页,无法全部给出,所以只给出部分截图。C语言程序设计第二章程序设计和程序结构
例2-7求一个3*3矩阵主对角线元素之和。编程思路:3*3矩阵用一个二维数组a[3][3]来表示,第i行j列的元素可表示为a[i][j],再利用双重循环来完成输入数组元素;主对角线上的元素是行、列下标
值相等的元素,将这些元素累加后输出。为了使程序具有通用性,选用浮点型来定义数组。C语言程序设计第二章程序设计和程序结构流程图如图2-6所示。N开始定义:二维数组a[3][3],行、列下标控制变量I、j,累加变量和sum下一列:j=j+1行号i=0,sum=0行号i<3?Y下一行:i
=i+1N列号j<3?列号J=0输入a[i][j]Y下一行:i=i+1累加行列号相等的元素A[i][j]sum=sum+a[i][j]输出和sum结束N行号i=0行号i<3?YC语言程序设计第二章程序设计和程序结构/*代码文
件名:E2_7.C*//*数组在程序设计中的应用*/#include"stdio.h"main(){floata[3][3],sum=0;inti,j;printf("请输入一个3*3矩阵(共9个数):\n
");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%f",&a[i][j]);for(i=0;i<3;i++)sum=sum+a[i][i];printf("此矩阵主对角线元素之和为%g\n",sum);}程序源代码如下:C语言程序设计第二章程序设计和程序结构
程序运行结果: