




已阅读5页,还剩51页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第 1 章 程 序 的 概 念 与 算 法 1 1.1 程序的概念 程序是指把希望计算机做的工作写成一定形式的指令 ,并把它们存储在计算机的内部存储器中。 当人们给出命令之后,它就按指令操作顺序自动进行, 把这种可以连续执行的一条条指令的集合称为“程序”。 目前,正在使用的计算机程序设计语言有很多种,有 些语言是面向机器的,如二进制语言,而多数是面向问题 的语言。 2 目前的程序设计一般可分为非结构化程序设计、结构化 程序设计和面向对象的程序设计. C语言是结构化程序设计语言,而C+称为面向对象的 语言。 面向问题的语言都被称为计算机的“高级语言”,如C与 C+语言等。 3 程序是为了解决某个问题而设计,用C语句所写的序列 称为C源程序,它的后缀为(.c/.cpp) . C源程序经过编译(Compile)后生成一个目标文件(.obj). 经过链接库函数后生成可执行文件(.exe)。 这些语言都是用接近人们习惯的自然语言和数学语言作 为语言的表达形式,人们学习和操作起来感到十分方便。 4 问题的提 出及分析 确定该问 题的算法 用C语言描述算法 建立语言源程序 C 编译生成.obj 文件 连接有关库函数后 生成可执行文件 运行程序并输 出正确的结果 C程序的设计过程如下图所示: 5 1.2 算法与流程图 什么是算法? 算法是指解决问题所使用的一系列合乎逻辑的解题步骤. 一个程序应包括两方面内容: (1). 对数据的描述. 要指定数据的类型和数据的组织形式, 即数据结构. 6 (2). 对操作的描述, 操作步骤,即算法(algorithm). 著名计算机科学家Wirth(沃思)提出: 数据结构+算法程序 在计算机科学中,算法要用计算机算法语言描述. 要解决一个复杂的问题,需要仔细的分析与研究此问题 ,并进行精确的逻辑分析,找到解决问题的方法,再用计 算机实现。 7 当然,求解一个给定的可解的问题,不同的人可以编写出 不同的程序。 例如判断一个整数的奇偶性,大致分成以下几步: 计算机读入该数; 将该数除以2; 判断余数是否为0; 如果为0,该数为偶数; 否则为奇数. 以上这些解决问题的一系列步骤就是算法,并且可 以用C语言编写成程序,用以解决数的奇偶性问题。 8 什么是流程图? 流程图是一种用图解方式说明,解决一个问题所要的一 系列操作。 流程图比文字更容易理解,更加直观. 流程图中的符号含义如下所示: 9 输输入输输出 连连接符 控制流 条件判断 加工、处处理 程序的入口和出口 含义义 常用基本组组件 流程图的符号及含义 10 例1.1 从键盘输入两个数,求这两数 之和,并把结果输出. 画出此问题的流程图。 开始 输入两数 两数相加 显示结果 结束 定义两个变量 程序流程图 11 1.3 结构化程序设计包含的三种结构 结构化程序设计由三种结构组成: 顺序结构、选择结构、循环结构。 1.3.1 顺序结构 顺序结构的程序是一条语句接一 条语句顺序地往下执行的。 例如右图中,先执行语句1,然后 执行语句2,最后执行语句3. 顺序结构的程序是最简单的程序。 语句1 语句2 语句3 12 例1.2 编写一个C语言程序,输出显示下列图形。 * C语言的学习要努力! * 这是一个典型的顺序执行的程序设计,输出三个字符串 ,输出字符串用函数printf()完成,具体的过程描述为: 开始 输出: * 换行后再输出:C语言的学习要努力! 换行后再输出:* 程序结束 13 程序流程图如图所示: 开始 输出: * 结束 输出:C语言的学习要努力! 输出: * 14 下面先介绍几个C语言程序, 使我们对C语言程序的特点 有一个初步认识和了解. 刚开始学习,可能在某些语法点上还有不理解的地方,可 以在以后的章节中得到介决和加深. #include /*包含标准输入输出库预处理命令*/ int main( ) /*主函数开始*/ printf(“*n”); printf(“C语言的学习要努力!n”); printf(“*n”); return 0; /*程序结束*/ 虽然这是一个并不复杂的程 序, 但它包含了很多重要的语 法点和一个程序的框架. 下面逐条进行分折讲解: 15 用C语言写成的源程序为:(P4) #include /*包含标准输入输出库预处理命令*/ int main( ) /*主函数开始*/ printf(“*n”); printf(“C语言的学习要努力!n”); printf(“*n”); return 0; /*程序结束*/ 1. main( )是主函数,每一个C 程序 都必须一个main( )主函数. 且只能有一个main( )主函数. 3. 这是一条编译预处理命令. C语言程序设计中往往要用到输入与输 出函数printf 、 sacnf, 因此要有文件包含 命令:#include. 2. 函数体用大括 号 括起来。 16 #include int main( ) printf(“*n”); printf(“C语言的学习要努力!n”); /*输出一行字符*/ printf(“*n”); return 0; printf ( )函数是C 语言中的专用输出函 数, 双引号内的字符串按原样输出. /*/是注释部分,对编 译和运行不起作用, 基本上 可放于程序任何地方. n 是一转义字 符 (为换行符). 语句最后有一 个分号 ; 。 17 #include int main( ) printf(“*n”); printf(“C语言的学习要努力!n”); printf(“*n”); return 0; /*与main函数中的int相对应*/ main( )函数是由操作系统调用的. 标准C+要求main( )函数声明 为int 型. 如果程序正常执行,则 向操作系统返回0, 否则 返回1. 细节问题将通过随后章节的学习,以及上机 练习来加深理解. 18 上机练习1 (P5) 步骤1: 在Visual C+环境下新建文件: 开始按钮 所有程序 Microsoft Visual C+6.0 如果出现每日提示,如图所 示,即点击关闭按扭。 19 步骤骤2: 在引导导出的C+集中开发环发环 境中,点击击菜单单: 文件 新建 20 在随后出现现的”新建”对话对话 框中,点击击菜单单: 文件C+ Sourse File 输入文件名: 如:1_1.c 指定存放此文件 的位置: 例如: D:VC+ 21 步骤骤3:在编辑编辑 框内输输入C源程序。 22 步骤骤4:在Visual C+环环境下点击击工具图标图标 : 进进行编译编译 (相当:Ctrl+F7), 产产生 .obj文件. 出现对话现对话 框(英文): 回答:是 这条编译命令需要一个活动 的工程工作区.你要产生一个默 认的工作区? 23 如果程序无错,编译通过. 产生一个相应的1_1.obj文 件. 24 如果程序有错,编译没有通过. 提示错误信息. 25 步骤骤5:点击连击连 接图标图标 : 现设程序无错,编译通过. 进进行连连接(相当:F7), 产产生 .exe文件. 26 如果程序无错,连接通过. 产生一个相应的1_1.exe文件. 27 步骤骤6:点击执击执 行图标图标 : 进进行执执行此 1_1 .exe文件. 28 思考: 1在例1-1.c中,如果没有main(),编译程序后出现的错误 提示是什么?在C程序设计中要注意什么问题? 2在例1-1.c中,如把main写成了Main,编译程序后出现 的错误提示是什么?在C程序设计中要注意什么问题? 3在例1-1.c中,如printf(“*n”); 后少了“;”号, 编译程序后出现的错误提示是什么?在C程序设计中要注 意什么问题? 29 4在例1-1.c中,如没有写上预处理命令#include, 编译程序后出现的错误提示是什么?想想这是为什么? 5在例1-1.c中,任何一行的输出语句中少了符号n, 程序运行后的结果有什么变化?问在C语言中符号n 的作用是什么? 6在例1-1.c中,如printf(“*n”); 后少了双引 号,编译程序后出现的错误提示是什么? 30 1.3.2 分支结构 在程序执行过程中,程序的流程可由多路分支组成,根 据不同的条件去执行不同的语句块。 这是一个两分支结构。 首先判断条件是否为“真”, 如为真,执行语句块1,否则执 行语句块2。 语句块2 语句块1 假 真 条件 31 假如判断从键盘输键盘输 入的两个数的大小: 如果: xy,提示:x大于y. 如果: xy? 输出x小于y 真假 输出x大于y 下一步 此时将会用到如下所示的流程图: 输出: 32 例1.3 从键盘输入两个数,判断两个数的大小。 分析:这是一个分支程序设计,具体的过程描述为: 程序开始 定义两个变量: x,y 输入二个数给x,y 如果x大于y 输出:x大于y 否则 输出:x小于y 程序结束 33 开始 给x,y输入相应的值 定义两个变量:x,y 结束 xy ? 输出: x小于y 输出:x大于y 两数中求最大值流程图 真 假 34 例1.3 用C语言写成的源程序为: (P8) #include int main( ) int x, y; /*定义二个变量*/ scanf(“%d%d”, /*读入两个整型数给变量x、y*/ if(xy) /*如果x大于y*/ printf(“x大于yn”); /*输出:x大于y */ else /*否则*/ printf(“x小于yn”); /*输出:x小于y */ return 0; 这一行为变量定义,指明 x, y是 整型变量(integer)。 scanf( ) 函数是专用的输入函数. 编译程序后出现的 错误提示是什么?在C程序设计中要注意什么问题? 2在例1_2.c中,如把语句scanf(“%d %d”, 写成 :scanf(“%d %d”,x,y); 用来读入两个整型数给变量x、y, 程序的运行结果会如何? 40 3在例1-2.c中,如程序在运行时输入为:1000,500,程 序能否得出正确的运行结果? 4在例1-2.c中,如果在if(xy) 后加上“;”号,编译程 序后出现的错误提示是什么?想想这是为什么? 5在例1-2.c中,输入源程序后,int、if、else为什么会 变颜色,在C程序设计中有什么特殊的意义? 41 1.3.3 循环结构 如果在程序中需要根据某项条件重复地执行某项任务 若干次,直到满足或不满足某条件为止,这就构成循环结 构。 循环环条件 ? 初始条件 循环语环语 句 假 真 循环语句执行完成后,又转 去判断循环条件,如循环条 件仍为真,再次执行循环语 句,如此反复,直到循环条 件为假,退出此循环。 注: 循环不是简单的重复. 首先判断循环条件是否 为“真”,如循环条件为“ 真”,执行循环语句. 42 例如,要做一个累加运算,从1加到100. 算法是: 先把计数变量i 和 sum设为0,然后变量i从1开始,把1 加入总数;然后i增加1,i为2,把i加入总数;然后i再增加 1,i为3,再把i加入总数; 一直累加,当i为100加入总数后,i还要增加1,到i的值 为101,此时条件不满足,循环不再做。 最后的总数就是1加到100的和。 43 例1.4 计算1+2+3+4+100的值,用循环的方法,画 出程序的流程图。 分析: 和的初始值sum为0,循环变量i的变化从1到100。 当i值为1时,把i加入sum,然后判断i的值是否小于100, 如果是, i增1,再把i加入sum; 然后判断i的值是否小于 100,如此反复循环,当i的值 大于100时,停止循环,最后输出sum。 sum为什么 要置0? 44 具体的过程描述为: 程序开始 定义变量sum,i ,并分别赋值0、1 判断i是否小于等于100 如是,把i加入sum ,i增加1 否则停止循环 输出sum 程序结束 开始 定义变量sum 、i i int main( ) int i=1,sum=0; while(i int main( ) int i=1,sum=0; while(i=100) sum=sum+i; i+; printf(“从1加到100的和为:%d n“, sum); return 0; 1_4.c : 计算1+2+3+4+100的值 %d 为数据输出格式说明。 输出时,该位置由后面的变 量sum的值代替. 注: 这里没有”;”号 47 上机练习 1. 编辑文件名1_4.c . 2.编译编译 ,连连接1_4.c,产产生可执执行文件1_4.exe。 3.执执行程序1_4.exe 48 执执行程序1_4.exe,程序运行结结果如图图所示。 49 第 1 章 程 序 的 概 念 与 算 法 结束 50 思考: 1在例1_3.c中,为什么语句int i=1,sum=0;中的sum要 赋初值0?如果不赋值,程序运行时会有什么结果? 2在例1-3.c中,如语句while(i=100)后有”;”号,程序 的运行结果会如何? 51 3在例1-4.c中,如语句段中: while(i=100) sum=sum+i; i+; 无大括号,程序的运行结果会如何? 复合语句: 用一对“ ”将若干语句顺序 组合在一起,形成了一个程序 段(块),称为复合语句. 4在例1-4.c中,上述程序段中少了i+,程序能否得 出 正确的运行结果? 52 练习与实践 1. 写出用符号*输出描绘汉字”大”的流程图。 提示:用顺序结构的多个printf语句输出。 53 2. 输入一个数,如果此数大于零,输出一个+号,否则输 出一个-号,请描述程序设计的过程,并画出流程图。 提示: 用判断的方法解决此问题,可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家居用品佣金合同
- 餐厅合作入股合同范本
- 餐饮设备采购合同范本
- 酒水回收销售合同范本
- 上海窗帘加盟合同范本
- 道路绿化保养合同
- 焊接水管合同范本
- 管道拆装维修合同范本
- 光缆熔接施工合同范本
- 工业围挡租赁合同范本
- 急救护理学高职PPT完整全套教学课件
- AutoCAD计算机辅助设计标准教程(中职)PPT完整全套教学课件
- 安全生产费用使用范围及计量办法
- 肾脏疾病常见症状和诊疗
- 安全环保职业卫生消防题库及答案
- 数据中心负荷计算方法
- 金X绅士无双攻略
- 第八章 立体几何初步(章末复习) 高一数学 课件(人教A版2019必修第二册)
- GB/T 27518-2011西尼罗病毒病检测方法
- GB/T 26255-2022燃气用聚乙烯(PE)管道系统的钢塑转换管件
- GB/T 14202-1993铁矿石(烧结矿、球团矿)容积密度测定方法
评论
0/150
提交评论