
语言程序设计实例教程ppt课件.ppt
230页语言程序设计实例教程语言程序设计实例教程中国高等职业技术教育研究会推荐中国高等职业技术教育研究会推荐丁爱萍丁爱萍 刘瑞新刘瑞新 庄建敏庄建敏 编编 高高 职职 系系 列列 教教 材材 西安电子科技大学出版社出版乍扯蒜鸵煞盒迄理本酸弗侩乓荆椿尝盔层簇幕闲舔玲挤祭丝非臭私睡解缆语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件•第1章 程序设计与C语言•第2章 C语言程序设计初步知识•第3章 简单程序设计 •第4章 选择结构程序设计 •第5章 循环结构程序设计 •第6章 数 组 •第7章 函 数 •第8章 指 针 •第9章 编译预处理 •第10章 结构体和共用体 •第11章 位运算 •第12章 文 件 •第13章 程序调试与常见错误分析目录退出退出捣篡意怂腥愉窖攫脯屉乳腰巡邦勇蜘绰坛漆口煞拈哪疟竹沾众蚊蜡相蓑扑语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件第1章 程序设计与C语言 •1.1 程序设计的基本概念 •1.2 算法 •1.3 结构化程序及设计步骤 •1.4 C语言的特点 •1.5 C语言程序的基本结构 •1.6 C程序的上机操作 返回主目录 吟断屋统允每靶诗疾符弛饵否钞猪细崇启犊褪钮鹤氟胀拐焚问透尾槛曝公语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件1.1 程序设计的基本概念 1.1.1 程序程序 电子计算机只是一种以二进制数据形式在内部存储信息、以程序存储为基础、由程序自动控制的电子设备。
程序是一条条有序指令的集合第1章 程序设计与C语言 煞购贞铸络隶举戏在云炔幂熬迭办峪挟怔提潘谴丁搬盈括谤损猛挖痕数州语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 1.1.2 计算机语言计算机语言 程序设计语言是实现程序设计、以便人与计算机进行信息交流的必备工具,又称计算机语言目前,社会上广泛使用的是高级语言,是一种接近人们习惯的程序设计语言,它使用人们所熟悉的文字、符号及数学表达式来编写程序,使程序的编写和操作都显得十分方便第1章 程序设计与C语言 蚁沟暑诺程衅蔽衫咙气销国商釜瘤馅剐敌吝米澎叶暴凉主粪坤姻杭谴壬媳语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 由高级语言编写的程序称为“源程序”在计算机内部,源程序必须翻译为机器能够接受的二进制代码所表示的“目标程序”(也称机器语言)其中,具有这种翻译功能的程序称为“编译程序”,如图1.1所示 源程序编译程序目标程序图1.1 源程序编译过程第1章 程序设计与C语言 骋鉴浮囱洁立膘秒垮森寅坷钵币罩扔控融榔彩作据杂氧散茂卓拉蝶噎肿情语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件1.1.3 程序设计程序设计 程序设计的一般步骤: 1. 确定数据结构。
2. 确定算法 3. 编程 4. 调试 5 整理源程序并总结资料第1章 程序设计与C语言 返回章目录食兑浆予摸傀常栽苞葱态烦啥寒郴知搬起睁责笔啡沈卸浚愤蓟掠做蝇溢蚀语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 1.2 算法算法 所谓算法,是为解决某一特定的问题,所给出的一系列确切的、有限的操作步骤 1.2.1 算法设计算法设计 程序实际上是用计算机语言所描述的算法也就是说,依据算法所给定的步骤,用计算机语言所规定的表达形式去实现这些步骤,即为源程序 在算法设计中应遵循的准则: (1) 可执行性 (2) 确定性 (3) 有穷性 (4) 输入 (5) 输出第1章 程序设计与C语言 被着搂全焙煤臻抨溃桅辰襄福邀彪缀吸棵悠谓括趣喜堑廓田众村酶肥罐哺语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 1.2.2 算法的描述算法的描述 目前,对算法的描述,一般采用自然语言、一般流程图或N-S结构流程图。
常用一般流程图符号如图1.2所示 处理框 输入输出框 判断框 流程线图1.2 常用流程图符号第1章 程序设计与C语言 返回章目录怀狞坎印和省髓眨鳞砒钞及堰臆缚崇懊唾僳逊搞菩脂辨及百喘动恿典脊嚣语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 1.3 结构化程序及设计步骤结构化程序及设计步骤 1.3.1 结构化程序设计的概念结构化程序设计的概念 结构化程序由3种基本结构组成:顺序结构、选择结构、循环结构使用这基本结构编写的程序,称为结构化程序第1章 程序设计与C语言 旷捉袄届暇湍旗稿僧讥纪审坟汤矛赠咱触翠听写须离迁灯潮砧慎含慈娶歼语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 1. 顺序结构 程序中的语句按先后顺序逐条执行s=a+b输出输出b=4a=3a=3b=4s=a+b输出输出s图1.4 顺序结构流程图(a)一般流程图;(b)N-S结构流程图 (a) (b)第1章 程序设计与C语言 蚂三席挥瞳睹功滤绅窑伶次锹先逾臻帅笺握快婆埋屡戳肆憋紫板谁可掘丧语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件2. 选择结构 在执行程序中的选择结构语句时,该语句的执行将根据不同的条件执行不同分支的语句。
图1.5 选择结构流程图 (a) 一般流程图;(b) N-S结构流程图 a>bmax=amax=b输出输出maxnoyesa>b yes no max=a max=b(a) (b) 第1章 程序设计与C语言 蝉壬夫傀食吊晴酪巩遇蔡匹锻盟砒缕控洽云涕上年芬婆帕宇肃套街哄盔落语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 3. 循环结构 在执行程序中的循环结构语句时,该语句将根据各自的条件,对循环结构所限定的语句(即循环体)重复执行多次或零次 循环结构又分为当型循环和直到型循环两种情况 1)当型循环 该循环的特点是:当条件满足时,就执行循环体,否则就退出循环结构 第1章 程序设计与C语言 替凝肚瑞莲蛔珠肄冤圆鞭蹄印柿迭裤标菜爸弓庭控楷茸腾屑盎帅表串秃掏语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件图1.6 当型循环流程图 (a)一般流程图;(b)N-S结构流程图 i=1, t=1第1章 程序设计与C语言 (a)i<=n?输出输出ti=1, t=1输入输入n循环体循环体t=t* *ii=i+1noyes循环条件循环条件i<=n 循环体循环体t=t*i i=i+1 输出输出t(b)讨撇唐闪议漫猾奸开梢订随逮莱篓捞仅翌剖揖痔粮厌削睦诬杀架禹层兹雨语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2) 直到型循环直到型循环 该循环的特点是:先执行循环体,再判断循环条件,条件不满足时,就退出循环结构。
图1.7 直到型循环流程图 (a)一般流程图; (b) N-S结构流程图 i=1,,t=1输入输入n循环体循环体t=t* *ii=i+1i<=n?输出输出tyesnoi=1,,t=1循环体循环体t=t* *ii=i+1循环条件循环条件 i<=n 输出输出t(b)(a)第1章 程序设计与C语言 君赡刮氟咕沏噬匀赶谁借驯确砧警揭妻羽比剩奠揽荣痔赞奈丸沦短巍攀千语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 1.3.2 结构化程序设计步骤结构化程序设计步骤 结构化程序设计步骤与前面一般程序设计步骤大体相同,其步骤如图1.8所示 编程算法设计调试运行确定数学模型数据结构分析问题图1.8 结构化程序设计步骤框图 第1章 程序设计与C语言 返回章目录祝怠脓娟羞紫鞠啤和毅绅享富俗蛇免咐矩蔓燥诲狮硒惯澡艇求镰咕泄侩弹语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件1.4 C语言的特点语言的特点 C语言主要特点如下: (1) C语言是一种模块化程序设计语言 (2) 语言简洁,结构紧凑,程序书写方便、实用灵活。
(3) 运算符丰富,数据处理能力强 (4) 数据类型丰富 (5) 具有结构化的控制语句 (6) 可移植性好 (7) 用小写字母书写程序 (8) 使用方便,完好的集成开发环境 第1章 程序设计与C语言 返回章目录筷铭税撒揽躬蜀虑败藩辩桩撞稀燃眷辕累价奎媳污庞浩抒例写绍峡中举棘语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件1.5 C语言程序的基本结构语言程序的基本结构 一个C语言程序至少包含一个主函数(main函数)或若干个其它函数 C语言程序结构有以下特点: (1) C语言是由函数组成的程序必须包含一个main函数,也可包含若干个其它函数程序的全部工作由函数来完成 (2) 程序总是从main( )函数开始执行由main函数开始调用其它函数其它函数间也可以相互调用,最终返回主函数结束程序第1章 程序设计与C语言 秩沸嘛撑旱捡茁人张锦优走蔫妖鼠瘸榆湿界枕龋拓娱汕绦讫呵怪廖邹转棠语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 (3) 一个函数由两个组成部分。
a. 函数的说明部分:确定函数名并说明函数类型、函数的形式参数名及其类型 b. 函数体:由函数说明部分下的第1对花括号{ }内的若干语句构成 (4) 程序书写较自由,一行可写几条语句,一条语句也可以分行书写 (5) 分号是一条C语言的结束符 (6) 在每条C语句后,可用/* … */对该语句进行注解,以增加程序的可读性 第1章 程序设计与C语言 返回章目录全茁萄床劣获势需瞪化价胀揩蜀喂醒悸蛛虾坛颗配磁预硕浦兄猖缎渍迅辣语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件1.6 C程序的上机操作程序的上机操作 1.6.1 Turbo C的安装的安装 1.6.2 Turbo C的使用的使用 1. 启动Turbo C 启动Turbo C应在DOS方式下执行如下命令: C:\> CD\TC 〈回车〉 C:\TC> TC 〈回车〉 启动成功后,屏幕上将显示Turbo C的主菜单窗口。
2. 选择用户文件的存放目录 选择“File”菜单中的“Change dir”项后回车,弹出子目录提示框在该提示框中输入用户文件的存放目录,输入完后按回车键即可 第1章 程序设计与C语言 涕平愧烛泰析扯健奋酚谈隋稽然猾井桌奥掩绒衡焰携赠洱看豺绿愁八酷勤语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 3. 建立工作环境 操作步骤如下: (1) 按〈F10〉键,选择“Option”菜单并按回车键 (2) 在 “Option”子 菜 单 中 选 择“Directories”选项并按回车键,将弹出子菜单 “Include directories”选项:说明标准包含文件的目录 “Library directory”选项:说明Turbo C运行时库文件所在的目录 “Output directory”选项:即编译、连接后的可执行文件所存放的目录 “Turbro C directory”选项:即Turbo C文件所在的目录。
第1章 程序设计与C语言 挖斟羹纷耙弧历袁册唇坍倡佑骸前褐捶俺覆贪许酚翘箔怎夸腔迂蓬厌瘫醉语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 4. 编写源程序 操作步骤如下: (1) 在主菜单中选择“File”选项并按回车键 (2) 在“File”的下拉菜单中,选择“Load”选项,屏幕将出现一个提示框 用户输入要编辑的文件名并按回即可,将进入全屏幕编辑状态第1章 程序设计与C语言 轰颖珍芋柱悯衷娜卯斥嫌纂饺势剑萝芽候启凡淄蛙晓三既缸布冲挺醒毙霹语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 5. 常用编辑键 〈Insert〉键:控制工作状态是否为“插入状态” 〈Delete〉键:删除光标所在的字符 〈Ctrl〉+〈Y〉键:删除光标所在的一行 〈Ctrl〉+〈N〉键:插入一行第1章 程序设计与C语言 抿曹晦邑主袒下猜厢厨畜朴阂敌侧迪朱钓札剔期券请彰巴搪磊蹿加跨牧呕语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 6. 编译、连接、运行 (1) 对单一源程序文件进行编译、连接、运行。
操作步骤如下: a. 按〈F10〉键选择“Compile”选项 b. 选中“Make exe File”项,回车 c. 按〈Esc〉键回到主菜单,选择“Run”菜单中的“Run”项,运行已生成的可执行文件第1章 程序设计与C语言 洗件巩另浊敬浩仗氰呢臻沉搜饶曲档沉磕满凋宾君棍决区惰样健迭笺脓福语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 (2) 对两个以上源程序文件进行编译、连接、运行 利用Turbo C提供的“Project”菜单项,其功能可直接将两个以上的文件编译连接后生成一个完整的运行程序 操作步骤如下: a. 假设有两个文件组成一个程序,首先要生成两个源文件(如File1.c和File2.c) b. 构造Project文件 c. 选择“Project”菜单中的“Project name”项,回车,输入Project文件名,按〈F9〉键产生相应的可执行文件。
d. 停止编译的方式 e. 运行第1章 程序设计与C语言 返回章目录集傣罢宗溶皮廓磋夺相忻井懊瓜墒禁肆湿纤婴招档考趣以硼挥郭淆愚枷安语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件第第2章章 C语言程序设计初步知识语言程序设计初步知识 •2.1 标识符、常量和变量 •2.2 简单数据类型 •2.3 基本运算表达式 返回主目录 假溅痢帚湘图汞武未扫游石村柬品淌铭蚤衷闰丘闭续誊副营银活詹浙睡嫡语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件2.1 标识符、常量和变量标识符、常量和变量 2.1.1 标识符标识符 标识符是用来标识变量名、符号常量名、函数名、文件名以及一些具有专门含义的有效字符序列 C语言规定:合法的标识符只能由字母、数字和下划线组成,第一个字符必须为字母或下划线大写字母和小写字母被视为两个不同的字符标识符的长度规定取前8个字符为有效字符例如:sum、area、aver.PI、_above、L_1_2_3、S12 合法的标识符 A.B.C、A.123、13、3area、a+b 不合法的标识符第2章 C C语言程序设计初步知识语言程序设计初步知识 凹匣哈蔚氰氓莲讲搬桥聚侵施谚撒飞滔叛瞪康肋莫练宽谚恕畦放潭券丁柔语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 1. 关键字标识符 关键字又称为命令符,在程序中具有特定的含义,不能另作它用,其他字符又无法直接替代。
2. 预定义标识符 预定义标识符是指C语言提供的库函数名和预编译处理命令(如printf、scanf、define)等第2章 C C语言程序设计初步知识语言程序设计初步知识 千晋祁必寄邹赐等挞振副淫化婿卸财岔穆由埂酞瞬闲环炒颅宠缕菲嗜碍熄语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 3. 用户标识符 由用户根据需要自定义的标识符称为用户标识符使用用户自定义标识符时,应注意: (1) 最好根据其含义选用英文缩写及汉语拼音作标识符,这样便于阅读程序 (2) 不能与关键字相同 (3) 如果与预定义标识符相同系统并不报错,程序仍能运行,只是预定义标识符失去原来的含义,代之以用户确认的含义 第2章 C C语言程序设计初步知识语言程序设计初步知识 甲山贞暮西惮免峨抑奄硒技浆断项渍价页尹唤瞬景攘韵跪扑槐寄毫诸龋铭语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件2.1.2 常量和变量常量和变量 1. 常量 在程序运行过程中,其值不能被修改的固定量称为常量,C语言中有3种常量: (1) 算术型运算常量(如整型常量、实型常量等); (2) 字符型常量(如字符常量、字符串常量); (3) 标识符所定义的常量。
第2章 C C语言程序设计初步知识语言程序设计初步知识 照序悬挣灰载瓢恕高瑚河划枷昭疤诉饲功纽撕辙堕轰歇戍生沃伺哼瓶比翌语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2. 变量 程序运行过程中,其值可以改变的量叫变量;程序中使用的变量,属于用户自定义标识符,任何一个变量名必须先定义(即确定变量名和变量的类型)后使用 变量也有类型之分,常用的有整型变量、实型变量、字符型变量等 第2章 C C语言程序设计初步知识语言程序设计初步知识 返回章目录压盈遮庐座鬃垦淤损舀焰迎宛向穆寡侠浴修顶挛珠千扮销刹齐转捐俩汹绍语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件2.2 简单数据类型简单数据类型 C语言中的数据类型,如图2.1所示 图2.1 C语言中的数据类型 无符号型(无符号型(unsigned))长整型(长整型(long))短整型(短整型(short))整型(整型(int))单精度型(单精度型(float))双精度型(双精度型(double))整型整型文件类型(文件类型(file))字符串类型字符串类型数据类型数据类型指针类型指针类型空类型空类型基本类型基本类型(简单类型)(简单类型)数值类型数值类型字符型(字符型(char))构造类型构造类型数组类型数组类型结构体类型(结构体类型(struct))共用体类型(共用体类型(union))实型实型枚举类型(枚举类型(enum))第2章 C C语言程序设计初步知识语言程序设计初步知识 瓮靴求危遂嚷维呸靴吃苔筑巾搔辅跪芽蔼果饿粉蔫份椒搁洪农遭娘剃逛匈语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件2.2.1 整型数据整型数据 1. 整型常量 整型常量,即整型常数。
C语言整型常量可用以下3种形式表示: (1) 十进制整型常数 (2) 八进制数以0开头的数 (3) 十六进制整数以0x开头的数为十六进制数 第2章 C C语言程序设计初步知识语言程序设计初步知识 擎氖呈莉影京懦锈闷阉兴借揽侨好侍婿匪掉甸酒用田犊啊拣衣犀犁遍隐纫语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2. 整型变量 1) 整型变量的分类 整型变量可分为以下4种整型类型: a. 基本型,以int表示; b. 短整型,以short表示; c. 长整型,以long表示; d. 无符号整型,以unsigned表示 第2章 C C语言程序设计初步知识语言程序设计初步知识 啮狠奥曝骇橙躯敝豆扛差翘触蹦颐悦狭异蒲歼龄请好剖烫勤嚷箩柬狞讲汪语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2) 整型变量的定义、使用 变量必须先定义,后使用定义整型变量的格式为: int i , j ; /* 定义i , j为整型变量 */ long e , f ; /* 定义e , f为长整型变量 */ int a=3 , b=4 ; /* 定 义 a , b为 整 型 变 量 同 时将3和4分别赋予a和b */ 3. 整型数据在内存中的存放形式 在C语言中,一个整型数通常占用2个字节,低位在前一个字节,高位在后一个字节。
第2章 C C语言程序设计初步知识语言程序设计初步知识 朵啥捶稗斟欣轨疯秘逝谓问冶溺拙焦邹烧途酵六黍怒列辱骆穆打粘绝秃授语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件2.2.2 实型数据实型数据 1. 实型常量 在C语言中实型表示实数的集合,实型常量又称实数实型常量有两种表现形式 1) 十进制数形式 十进制数形式和数学中的实数形式类同,由数字和小数点组成,小数点是实数的标志 2) 指数形式 实数的指数形式类似于数学中的指数形式组成格式如下: 数字[小数]E[±]整数 ([ ]内为可省项)项)第2章 C C语言程序设计初步知识语言程序设计初步知识 吭驹盾氨共诊甚渔威捶屹蛙情扔智捅互漫硝烬图美阑弗价告瞪碗绣制拔葛语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2. 实型变量 在C语言中实型变量分为单精度(float)和双精度(double)两类 实型变量的定义: float a , b ; /* 定义a , b为单精度实型变量 */ double x , y ; /* 定义x , y为双精度实型变量 */第2章 C C语言程序设计初步知识语言程序设计初步知识 凌瀑刘诛虱弥辞讣浦箍浮别秽乏狰指草愚挖惹拭并毡饲泥阉乎缮豌肩条藻语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件2.2.3 字符型数据字符型数据 1. 字符型常量 字符型常量(简称字符常量)是一个字符,在表示时由两个单引号括起来。
例如'A'、'a'、'+'、'2'等 字符型常量在内存中占用一个字节,存放的是字符的ASCII码值,如字符'A'的值为65;'B'的值为66所有字符常量还可作为整型量进行运算,以及参与相应的各种操作 第2章 C C语言程序设计初步知识语言程序设计初步知识 陡奶恼气诸曙闸垣族鸥逞装八闸简碎铝厌实愈傣蒙闺娩铣矽巨奢豪搂稍嫂语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2. 转义字符 C语言中有一种特殊的字符常量——转义字符,这类字符常量是以反斜杠字符“\”开头的字符序列,它表示某个特定的ASCII码字符在程序中,转义字符要放在一对单引号内 常用的转义字符及其含义: '\n'回车换行至下一行开头 '\r' 回车至本行开头 '\b' 退格符 '\ \' 反斜杠字符\ '\′'单引号字符′第2章 C C语言程序设计初步知识语言程序设计初步知识 掉控斗灵淤蛋罢盏值公寸漓顺晾雾颊磺宦丽耪威茬耐赦糠辞夹酌轮欲歇哀语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 3. 字符变量 字符变量用于存放一个字符常量。
字符变量的定义格式为: char c1 , c2; 其中c1和c2分别被定义为字符型变量 一个字符型变量在内存中占一个字节,字符型变量可以参加任何整型运算 第2章 C C语言程序设计初步知识语言程序设计初步知识 返回章目录蛔于鹤膝枢精肃欢棋找迢龟刘羽白洼坐螟洽另璃洼凋穗哼卡段久姜仿所暴语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件2.3 基本运算表达式基本运算表达式 2.3.1 算术运算符及表达式算术运算符及表达式 1. 基本算术运算符 基本算术运算符及特性,见表2-4 第2章 C C语言程序设计初步知识语言程序设计初步知识 斟点访烧滑曹囤烧釜橇忿眯全俏穴敌鞭倘妄酋憋悉厘稿论蹲踞院观敞袭偷语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件表2-4 基本运算符列表 运算符运算符功能功能操作数个数操作数个数结合方向结合方向优先级优先级+-求正求正求负求负单目单目单目单目自右至左自右至左自右至左自右至左高高 低低*/%乘法乘法除法除法求余求余双目双目双目双目双目双目自左至右自左至右自左至右自左至右自左至右自左至右+-加法加法减法减法双目双目双目双目自左至右自左至右自左至右自左至右第2章 C C语言程序设计初步知识语言程序设计初步知识 子妊缘械泥剂沂丑则按栽德蜕东友呆醋拆滇蟹续斥驹理诺饿囱皇粮瓮测浸语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2. 算术表达式 由算术运算符将操作数连接起来的有意义的式子称为算术表达式。
例如2+a*b 使用运算符时,应注意: (1) 表达式本身的功能 (2) 操作数的个数 (3) 操作数的类型 (4) 运算符的优先级 (5) 结合性 (6) 任何一个表达式除了有其所实现的功能外,还有表达式其自身的值第2章 C C语言程序设计初步知识语言程序设计初步知识 迫辜扛偷标魁率撞奥沁酱呜悔吏章帆权碟极兰满依淳帧褐菱颠柿赊伴羊会语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件2.3.2 赋值运算符及表达式赋值运算符及表达式 1. 赋值运算符 “=”符就是赋值运算符,赋值运算符构成的表达式格式如下: 〈变量名〉〈变量名〉=表达式表达式 2. 复合赋值运算符 在“=”前面加上双目运算符,如“+”、“-”、“*”、“%”、“/”即构成复合赋值运算符 例如:a+=3 等价于a=a+3 所有复合赋值运算符级别相同,且与赋值运算符同一优先级,都具有右结合性。
例如,设a的初值为10,则表达式a+=a-=a*=a等价于:a+=(a-=a*=a)第2章 C C语言程序设计初步知识语言程序设计初步知识 羌颗唬遇栈放缴曼善嚷韵佐领歼摧邻什惋兆谭擞勿鹿按筏凳壶烯际窒痰屑语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件2.3.3 不同类型数据间的转换不同类型数据间的转换 1. 数据类型自动转换数据类型自动转换 数据类型的自动转换常发生在以下情况中: (1) 进行运算时转换 (2) 赋值转换 (3) 输出转换 (4) 函数调用转换 2. 不同类型数据间的混合运算不同类型数据间的混合运算 整型、实型、字符型数据可以进行混合运算在进行运算时,应先把不同类型的数据转换为同一类型,然后进行运算,转换规则,参见图2.2所示 第2章 C C语言程序设计初步知识语言程序设计初步知识 炎童塑宝嗣嗣彤卤烯莽摹惧擂盼鹊奶屯棒硼旁拽腕喝景诅僳湾巷浮亭凑廖语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件图2.2 混合运算时不同类型数据间的转换 doublelongunsignedintchar,shortfloat高高低低第2章 C C语言程序设计初步知识语言程序设计初步知识 训群底生气成何慢幻娘孽獭税恃诚辽珊堡熄捌垫察柿擎盆玩糙助内屈袁舀语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 3. 赋值转换赋值转换 (1) 将整型数据赋给实型变量,这时数值不变,但以实型数据形式存到变量中。
(2) 将实型数据赋给整型变量,这时舍弃小数部分,取整数部分赋给整型变量中 (3) 将int型整型数据赋给无符号型整型变量,int型数据按存储单元中实际二进制位的内容直接赋给unsigned型变量 若int型数据为正数,即存储单元中最高位为0,赋值后,则int型数据与unsigned型数据的数值相同 若int型数据为负数,即存储单元中最高位为1,赋值后,unsigned型数据在使用时,最高位将代表一定的数值第2章 C C语言程序设计初步知识语言程序设计初步知识 幂淆辽返将岁仰玖区拙毋浚缉疟磨茫育肌咆极蒲岿员簇憾魁笛缄鸿寺英碳语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 (4) 字符型数据赋给整型变量 字符型数据占1个字节,而整型变量占2个字节,因此赋值转换过程中,存在位的扩展 a. 对于unsigned型变量,字符型数据(8位)传送给unsigned变量的低8位,而unsigned变量的高8位只须补0; b. 对于int型变量,若字符型数据最高位为0,则int型变量高8位补0。
若字符型数据最高位为1,则int型变量的高8位补1这样可以保持数值不变 第2章 C C语言程序设计初步知识语言程序设计初步知识 绒玉攘旋沈畏际喘柞院市幽视完赠冈溪脊还遵燎竞通骂试岿呈涩窝阀娶侧语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 4. 强制类型转换强制类型转换 在C语言中,可以利用强制类型转换符,将表达式的类型转换为所需类型 一般形式: (类型名类型名)表达式表达式 例如: (int)a表示将a转换成int类型; 第2章 C C语言程序设计初步知识语言程序设计初步知识 实恋叼唁症迅帝韶谗得乒侣鲁瞄谗记洁纫筛隧剔专扰织淤搬鱼雌惟硒涧丧语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件2.3.4 自增、自减运算符及表达式自增、自减运算符及表达式 1. 格式与功能格式与功能 格式: i++ i-- 功能:先使用i的值,然后,变量i的值增加(减少)1,即i=i±1。
格式: ++i --i 功能:变量i先增加(减少)1,即i=i±1,然后,再使用i的值 第2章 C C语言程序设计初步知识语言程序设计初步知识 躺酝蔼猪箍述荒唯沽油在袍拼卧描螺傍颈孪惦刹抡泊雌洁獭繁氮蛹造角继语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2. 自增、自减运算符的运算自增、自减运算符的运算 自增、自减运算为单目运算,其运算数据为单操作数,且操作数只能是变量,不能是常量或表达式 3. 自增、自减运算符的结合性自增、自减运算符的结合性 自增、自减运算符属右结合性 注意: (1) 使用++i或i++单独构成语句时,其作用是等价的,均为i=i+1 (2) 运算对象只能是整型变量和实型变量 (3) 对于表达式(i++)+(i++)+(i++),不同的编程环境,其结果不同第2章 C C语言程序设计初步知识语言程序设计初步知识 摇勇爸儒俯彦尔泼疵割菜嘛瞎槐抢炼摇胎艰胯颤溪角狰驮她赶科僻奇皇刁语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件2.3.5 逗号运算符及表达式逗号运算符及表达式 用逗号将表达式连接起来的式子称为逗号表达式。
1. 逗号表达式的一般形式逗号表达式的一般形式 表达式表达式1 , 表达式表达式2 , 表达式表达式3 , … 表达式表达式n 2. 逗号表达式的功能逗号表达式的功能 先计算表达式1,再计算表达式2,最后计算表达式n最后一个表达式的值即为此逗号表达式的值 第2章 C C语言程序设计初步知识语言程序设计初步知识 少爷貉擦质惟柿门剂隶商澳冉梅篙论痒骆齐蚀寐伴徒痛前龙砖共俏披鳖道语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 3. 逗号运算符的优先级逗号运算符的优先级 在所有运算符中,逗号运算符级别是最低的 利用逗号表达式可实现在一条C语言中对多个变量赋予不同的值第2章 C C语言程序设计初步知识语言程序设计初步知识 返回章目录汁烘渔岩朔苹赂山苹圣秆涉撕锭广哆膏腺炳硷减虹批屠迅犁订此囊糙情稽语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件第第3章章 简单程序设计简单程序设计•3.1 顺序结构程序设计的概念•3.2 赋值语句•3.3 数据输出•3.4 数据输入•3.5 复合语句和空语句返回主目录 晌求侗托掉紫吼募梯卓末给差尤碎络斯挟辜午龟恰瑟铂殴傣裕从贿锌豢心语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 3.1 顺序结构程序设计的概念顺序结构程序设计的概念 顺序结构是一种线性结构,其特点是:在该结构中,各操作块(简称块,它所对应的计算机语言表述形式是程序段)按照各自出现的先后顺序,依次逐块执行。
3.2 赋值语句赋值语句 赋值语句由赋值表达式加上一个分号构成格式为: 变量变量 =〈表达式〉〈表达式〉;第3章 简单程序设计简单程序设计返回章目录蝉查拢赫猪叹贵告蓬羹蝗矛屏囱浙赫杉塑欲翼嘴下快港伎茶呕溯历脯甄雀语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件3.3 数据输出数据输出 在使用库函数中的输入输出函数时,要用编译预处理命令“#include”将有关的“头文件”包含到用户源程序中例如,在使用标准输入输出库函数时,要用到“stdio.h”文件,因此要将此文件包含进来,文件开头应使用下面的编译预处理命令: # include
第3章 简单程序设计简单程序设计拈龚揭属碧弹梭财谤叹问舜珍茶曰驹寿刃佐蔗烯括姨抗圾瞪秆璃并钝迈珠语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2. printf函数中格式控制说明函数中格式控制说明 每个格式控制说明必须用“%”开头,以一个格式控制字符结束,在格式控制字符的前面还可以插入“宽度说明”、左对齐符号“-”、前导零符号“0”等附加字符 1) 格式控制字符格式控制字符 常用的格式控制字符和它们的功能,见表3-1使用时要注意区分大小写 第3章 简单程序设计简单程序设计迟猫赫扩挨裴壁酵巾谬儿江对咙辖刽窜赘纸奏扭腊足碧梳惠例犬郝凿瞪尖语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件表3-1 printf函数的格式控制字符 格格式式控控制制字字符符 说说 明明d , i输出带符号的十进制整型数(正数不输出符号)输出带符号的十进制整型数(正数不输出符号)o输出无符号八进制整型数输出无符号八进制整型数x 或或 X输输出出无无符符号号十十六六进进制制整整型型数数((用用x时时输输出出a~~f,,用用X时时输输出出A~F))u输出无符号十进制整型数输出无符号十进制整型数c输出一个字符输出一个字符s输出字符串输出字符串f以小数形式输出浮点数(隐含输出以小数形式输出浮点数(隐含输出6位小数)位小数)e 或或 E以指数形式输出浮点数,数字部分小数位数隐含输出以指数形式输出浮点数,数字部分小数位数隐含输出6位。
位g 或或 G选用选用%f和和%e格式中输出宽度较短的一种格式格式中输出宽度较短的一种格式p输出变量或数组的地址输出变量或数组的地址第3章 简单程序设计简单程序设计修魄权膜虚芦谋渡狞吉柏颅梆摆炕签弯纠汾沿犯衍判颧肝矾档舜飞块蝉梢语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2) 附加格式说明字符附加格式说明字符 为了使程序的输出结果更加整齐美观,可以在控制字符的前面加上附加格式说明字符,见表3-2 表3-2 printf函数的附加格式说明符 字字 符符 说说 明明字母字母l用于长整型数据,可加在格式控制符用于长整型数据,可加在格式控制符d、、o、、x、、u的前面的前面m(正整数)(正整数)数据最小宽度数据最小宽度n(正整数)(正整数)对对于于浮浮点点数数,,表表示示输输出出n位位小小数数;;对对于于字字符符串串,,表表示示截截取取的的字字符符个个数数;;对对于于整整数数,,指指定定必必须须输输出出的的数数字字个个数数,,若若输输出出的的数字少于指定的个数,则前面补数字少于指定的个数,则前面补0,否则按原样输出,否则按原样输出-输出的数字或字符向左对齐输出的数字或字符向左对齐+输出的结果总是带有输出的结果总是带有+号或号或-号号0 在输出数据前加在输出数据前加0第3章 简单程序设计简单程序设计访快蓄滚点澡物妊根丽橙盅悲剁抚呕冉涟搭耗辜比击亮阳偏面凌荔芜饰甩语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件3.3.2 putchar函数函数 putchar函数的作用是向屏幕终端输出一个字符。
格式为: putchar(ch) ; 其中ch可以是字符型常量、变量或整型变量 第3章 简单程序设计简单程序设计返回章目录份锻可科耍熟坑脯添绽娜象裔畏藏嚏塞罐吸峙卯捞草掘受烛坡盆液肉拾姜语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件3.4 数据输入 3.4.1 scanf函数函数 scanf函数的格式为: scanf(格式控制格式控制 , 地址地址1 , 地址地址2 ,, …); 3.4.2 getchar函数函数 此函数的作用是从屏幕终端输入一个字符getchar函数没有参数,其一般格式为: getchar( ) 当执行此函数调用语句时,变量将获得一个从标准设备上读取的字符代码值 第3章 简单程序设计简单程序设计返回章目录槛飞徽炬矣衙捉械减巧绅犯牢邢竟炭芯诞柳签坏埃谋斡屡筷趋峦往办悟举语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件3.5 复合语句和空语句 3.5.1 复合语句复合语句 在C语言中,一对花括号“{ }”不仅可用作函数体的开头和结尾的标志,也可用作复合语句的开头和结尾的标志;复合语句也可称为“语句块”,复合语句的语句格式为: {语句语句1 ; 语句语句2 ; … ; 语句语句n ; } 一个复合语句在语法上视为一条语句,在一对花括号中的语句数量不限。
3.5.2 空语句空语句 C程序中的所有语句必须由一个分号“;”作为结束如 果语句只有一个分号,就是空语句程序执行空语句时不产生任何动作第3章 简单程序设计简单程序设计返回章目录醒凄哆吓嘉登寻透秃秉御汪堰老臻饺亚庚权眷叁漏桅烧歌参哑腆梧研够略语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件第4章 选择结构程序设计 选择结构是计算机科学用来描述自然界和社会生活中分支现象的手段其特点是:根据所给定选择条件为真(即分支条件成立)与否,而决定从各实际可能的不同操作分支中执行某一分支的相应操作,并且任何情况下恒有“无论分支多寡,必择其一;纵然分支众多,仅选其一”的特性跺迫骤奢远爵棉搓瘪话甜撬死根厚评碰栅玫仁瞪勤憋揩匹门谆呀但哇赔喀语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件•4.1 关系运算符及表达式•4.2 逻辑运算符及表达式 •4.3 条件运算符•4.4 单条件选择 if 语句 •4.5 开关分支 switch 语句 第4章 选择结构程序设计返回主目录 第4章 选择结构程序设计婪瑶懊采叶村某机舞由收堰祷艺率瞒壮乔骇疮高扁耘抱框朴撩恬辣焰南稚语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件4.1 关系运算符及表达式 关系表达式是由关系运算符连接表达式构成的。
1. 关系运算符关系运算符 关系运算符都是双目运算符,共有如下6种: >,<,>=,<=,==,!= 2. 关系表达式关系表达式 由关系运算符组成的表达式,称为关系表达式例如x>y、(x=5)<=y等 关系表达式的值是整数0或1,其中0代表逻辑假;1代表逻辑真第4章 选择结构程序设计返回章目录胜局台混厚焙蝴礼摘看堪痉草优命陨毖政庙劳梧惮鹤辈蓑松急诵双魔孵蓟语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件4.2 逻辑运算符及表达式 逻辑表达式是由逻辑运算符连接表达式构成的 1. 逻辑运算符逻辑运算符 C语言中提供了3种逻辑运算符: (1) 单目逻辑运算符:!(逻辑“非”) (2) 双目逻辑运算符:&&(逻辑“与”) (3) 双目逻辑运算符:||(逻辑“或”) 其中逻辑“与”&&的优先级大于逻辑“或”||,它们的优先级都小于逻辑“非”!。
逻辑运算符具有自左至右的结合性 第4章 选择结构程序设计召圭比楷索裸钡窒茹粟煌雕焉济伎火今愤交豆谜团忘锰耽峦搞姿旅再储忻语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2. 逻辑表达式逻辑表达式 由逻辑运算符组成的表达式称为逻辑表达式 逻辑表达式的结果为1(结果为“真”时)或0(结果为“假“时) 表达式a和表达式b进行逻辑运算时,其运算规则,见表4-1 第4章 选择结构程序设计少颈本悼粕靛玩雕竹辜异奢意俘驹低兔维冉里耶蚤枪湾攻晒涎念咒剂窗铡语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件表4-1 逻辑运算的真值表 ab!a!ba && ba || b非0非00011非0001010非01001001100第4章 选择结构程序设计晦琢注罐疗零芋操滞慰贼硕银饿拽蹄各螟荒偷玄雅踌诈输寇累称昼磨依事语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 3. 短路表达式短路表达式 在由 && 和 || 运算符组成的逻辑表达式中,只对能确定整个表达式值所需要的最少数目的子表达式进行计算。
也就是说,当计算出一个子表达式的值之后便可确定整个逻辑表达式的值时,后面的子表达式就不需要再计算了,整个表达式的值就是该子表达式的值这种表达式也称为短路表达式 第4章 选择结构程序设计返回章目录虽狞楷甲陀啮布郸拽构栓蛔些钟意就继堂畸擞漓泽床洁人碴城守柳到蛾踏语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件4.3 条件运算符 条件运算符是C语言中唯一的三目运算符,条件表达式的一般格式为: 表达式表达式1 ? 表达式表达式2 : 表达式表达式3 条件运算符的执行过程是:先求解表达式1,当值为非0(真),则求解表达式2,此时表达式2的值就作为整个条件表达式的值;否则求解表达式3,此时表达式3的值就作为整个条件表达式的值 条件运算符的优先级高于赋值运算符,但是低于关系运算符和算术运算符条件运算符的结合性为自右至左 第4章 选择结构程序设计返回章目录筏琴脐危夸音度萝渭杖芍况犀章信沮瞅帅儒搭刷烂脐愧卵乞壹口舌兴亚羹语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件4.4 单条件选择 if 语句 单条件选择结构的特点是:所给定的选择条件(它可以是逻辑表达式也可以是关系表达式)的值如果为真,则执行为真时的分支;如果为假则执行为假时的分支。
第4章 选择结构程序设计椒辖唐阿藩哇叮尽跳约研坞漏柳蛰坠腥苯撰互靡绥脐邻检析镊讹谩衍蜘秤语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件4.4.1 if 语句语句 if 语句是根据所给定的条件决定执行的操作,是“二选一”的分支结构If 语句的一般格式为: if (表达式表达式) { 语句序列语句序列1;; } else { 语句序列语句序列2;; }第4章 选择结构程序设计赐戌哎柏神薪小光身痊莹昔翰玄贿财廉嫂肘裙习狠答巴萎庄曼桑眺庙梗键语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件4.4.2 if 语句的嵌套语句的嵌套 条件分支嵌套就是在一个分支中可以嵌套另一个分支 单条件选择 if 语句完整的嵌套格式为: if(表达式表达式1) if(表达式表达式2) 语句序列语句序列1 ; else 语句序列语句序列2 ; else if(表达式表达式3) 语句序列语句序列3 ; else 语句序列语句序列4 ;第4章 选择结构程序设计返回章目录掀亦井旺嘎藉鞋锨读弓琐仗内骏鸽辫壹忆卓篡坤肢肾缸胆审媳或虑疯吾颓语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件4.5 开关分支switch语句 C语言提供了switch多路选择语句。
格式如下: switch(表达式表达式) { case 常量表达式常量表达式1 : 语句组语句组1 ; case 常量表达式常量表达式2 : 语句组语句组2 ; … case 常量表达式常量表达式n : 语句组语句组n ; default : 语句组语句组n+1 ; }第4章 选择结构程序设计返回章目录阶友害令冠誊猪沿宽迎弹粥座怪堵义辉夕扁绩深刹罗赞亲均馅罕瘸暮旭属语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件第5章 循环结构程序设计 •5.1 循环结构程序设计的概念 •5.2 while 语句 •5.3 do … while 语句 •5.4 for 语句 •5.5 循环结构嵌套 •5.6 break 语句和 continue 语句 •5.7 语句标号和 goto 语句 返回主目录 妄角遍柒捻每年噶迟自昨蔗悔溜筏宏惰廖夹伸编咙带暑装返咬宇鞭辞煎奶语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件5.1 循环结构程序设计的概念 实现循环的程序结构称为循环结构,是计算机科学中用以描述客观世界循环现象的重要手段。
程序设计中的循环(简称循环)是指在程序设计中,从某处开始有规律地反复执行某一操作块(或程序块)如果循环永远不会终止,这样的循环就称为死循环 第5章 循环结构程序设计 返回章目录陪剁藉白殖凭命泼折选薛冤亿拎看媒饵廊析霉钝惯淖睛崇骡酉晌夕渝涣疯语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件5.2 while语句 while语句用来实现“当型”循环结构 5.2.1 while语句的一般格式语句的一般格式 while语句是一个循环控制语句,用来控制程序段的重复执行其一般格式为: while(表达式表达式) 循环体循环体 ; 格式中的循环体,可以是单个语句、空语句,也可以是复合语句 第5章 循环结构程序设计 谈缎飘扦底业懈腔号禽烷肋进摄扮阻廖展鲤涅渡平汕擞觅敏斡谤盐囤捏芭语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件5.2.2 while语句的执行过程语句的执行过程 当表达式为非0时,执行while语句中的循环体,然后继续进行表达式的判断,如此循环。
当表达式为0时,则退出循环 说明:如果循环体包含一个以上的语句,就构成块语句,应该用花括号{ }括起来 第5章 循环结构程序设计 返回章目录去峡季仪虞镁脯傍邯谷邯滨隆六唆粱辣速闪贡艇撰测弯碌酒守葱绑壹喻烃语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件5.3 do … while语句 C语言中,用do … while语句构成直到型循环结构 5.3.1 do … while语句的一般格式语句的一般格式 do … while语句也是一个循环控制语句其特点是先执行循环体,然后判断条件是否成立其一般格式为: do 循环体循环体 while(表达式表达式) ; 说明:循环体至少执行一次当循环体有多个语句时必须加花括号{ } 第5章 循环结构程序设计 复婴郎荐谣食厨殃恒峦牛深渤晴鸣活峻羽香护运刨增括抱北炼虏千侄言励语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件5.3.2 do … while语句的执行过程语句的执行过程 先执行一次指定的循环体语句,然后判断表达式。
当表达式的值为非0的数据时,返回重新执行循环体,如此反复直到表达式的值为0为止,此时循环结束第5章 循环结构程序设计 返回章目录务血炳子郎屁茫辕闲倘垣经陪轰艇该辟学步饱程微势苏俄量妖拜勉凭坦牙语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件5.4 for 语句 for语句可以用于循环次数已经确定的情况,还可用于循环次数不确定而只给出循环结束条件的情况 5.4.1 for语句的一般格式语句的一般格式 for语句的一般格式为: for (表达式表达式1 ; 表达式表达式2 ; 表达式表达式3) 循环体循环体 第5章 循环结构程序设计 钩滨凤澄罗剿久颅颁器审摩遣敲湾斤扇贤娟究旺也芍猾故弧迢搪庶浸逛五语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件5.4.2 for语句的执行过程语句的执行过程 for语句的执行过程为: (1) 先求解表达式1,表达式1只执行一次,一般是赋值语句,用于初始化变量 (2) 求解表达式2,若为假(0),则结束循环。
(3) 当表达式2为真(非0)时,执行循环体 (4) 执行表达式3 (5) 转回(2)第5章 循环结构程序设计 返回章目录叫轩渠畏蕉丰傲馈酝醇量靛倘吓旅尝翻耶瘟鸥师释獭纠瓶抽翘箕咯赴放淆语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件5.5 循环结构嵌套 一个循环体内包含另一个完整的循环结构,称为循环的嵌套循环之中还可以套循环,称为多层循环三种循环(while循环、do … while循环和for循环)可以互相嵌套例如: while( ) { … for ( ) { … } … }第5章 循环结构程序设计 返回章目录侗皿霉涸煮赡兽般蔡协航伶疡芜德不亨加耐呀苍袖痒戒逞村戚甜午避秘镭语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件5.6 break语句和continue语句 5.6.1 break语句语句 break语句可以用在循环语句和switch语句中。
在循环语句中用来结束内部循环;在switch语句中用来跳出switch语句 5.6.2 continue语句语句 continue语句的作用是结束本次循环,忽略continue后面的语句,进行下一次循环判定 第5章 循环结构程序设计 返回章目录辛逮酵坟妊蹭勉憎磨勤嚎疼滞翔恋形炊游辛口佳触驱兢熏词绊叫晌膀松镀语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 5.7 语句标号和goto语句 goto语句为无条件转向语句,它的一般格式为: goto 语句标号语句标号 ;第5章 循环结构程序设计 返回章目录套枪猩床庶绘高饼寸越疵戮悠牙佳贼俱浸开谷傍违馁积沥矽鸟涣醇救情野语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件第6章 数 组 •6.1 数组和数组单元的基本概念•6.2 一维数组•6.3 二维数组•6.4 字符数组返回主目录 逼肯讥洽南槐侨匣瘩踊锡啃俐营天迅糙赚轨逝铃溃片外末煎幼咖膀晨段讳语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件6.1 数组和数组单元的基本概念 1. 数组数组 将一组排列有序的、个数有限的变量作为一个整体,用一个统一的名字来表示,则这些有序变量的全体称为数组;或者说,数组是用一个名字代表顺序排列的一组数,顺序号就是下标变量的值。
第6章 数 组 胜逮肋苯沸绚屏战翰熔毛疚给绰塘耕零居扮猴保拍兔泥贞昌余乖售舷漆岂语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2. 数组单元数组单元 在同一数组中,构成该数组的成员称为数组单元(或数组元素、下标变量)C语言中,引用数组中的某一单元,要指出数组名和用括号括起来的数组单元在数组中的位置(顺序号)的下标例如: a[3] 代表a数组中顺序号为3的那个单元 第6章 数 组 惑锐啄恍澡翘渠宛辽砾环茶妙夷株宦拎瞅屋嗽谜铂宠粥峪铂很扦叙刊镊怒语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 3. 数组的维数数组的维数 下标变量中下标的个数称为数组的维数 具有一个下标的下标变量,构成一维数组 具有两个下标的下标变量,构成二维数组 依次类推,三个下标的下标变量,构成三维数组有多少个下标的下标变量,就构成多少维的数组通常把二维以上的数组称为多维数组 第6章 数 组 返回章目录枚磅泽酬腕落儿抒页盲贪稠偿谗河爸冰沈艇巍押科恶荫愤豢老谰党旭邪某语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件6.2 一维数组 用一个统一的标识符,即数组名来标识一组变量(也称元素),用下标来指示数组中元素的序号。
当数组中每个元素只带有一个下标时,此数组称为一维数组 6.2.1 一维数组的定义、引用、初始化一维数组的定义、引用、初始化 1. 一维数组的定义一维数组的定义 定义一维数组的格式为: 类型标识符类型标识符 数组名数组名[常量表达式常量表达式] , … ;第6章 数 组 阳朔浑蛛老匪厢史反拓光涤爬淘瑚丰尾坪盾颇绦憎机盘胖授励织童帖城判语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2. 一维数组的引用一维数组的引用 使用数组必须先定义,后引用 引用时只能对数组元素引用,如a[0],a[i],a[i+1]等,而不能引用整个数组 在引用时应注意以下几点: (1) 由于数组元素本身等价于同一类型的一个变量,因此,对变量的任何操作都适用于数组元素 (2) 在引用数组元素时,下标可以是整型常数或表达式,表达式内允许变量存在在定义数组时下标不能使用变量 (3) 引用数组元素时下标最大值不能出界。
第6章 数 组 夹速的吃陕渝隙棺瞎搬鹤侯钙拧召技啄汝葫桨矛枝倍狙袁俄鲤轰贵垮学趣语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 3. 一维数组的初始化一维数组的初始化 前已述及,可利用赋值语句或输入语句给数组元素赋值C语言还允许在定义数组时对各数组元素指定初始值——称为数组初始化 (1) 数组初始化形式数组初始化形式1 例如:将括号内整型数据0,1,2,3,4分别赋给整型数组元素a[0],a[1],a[2],a[3],a[4]可以写为下面的形式: int a[5]={0, 1, 2, 3, 4} ; 第6章 数 组 藏闻人简诊番却淆雹踌廖迎鄂排瀑既镍笆命蕴薪又涩触撑孙阻侵疼广赠伎语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2) 数组初始化形式数组初始化形式2 例如:对a数组中所有元素赋初值0可以写作下面的形式: int a [10]={0} ; 3) 通过赋初值定义数组大小通过赋初值定义数组大小 例如: int a[ ]={1, 2, 3, 4, 5} ; 等价于:int a[5]={1, 2, 3, 4, 5} ;第6章 数 组 年柔防魔驰爱蔷茫舷话晕菱绞婉痛膨子柴娜宴盂兔兴制档匀森溃诀捐冗紧语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件6.2.2 一维数组程序示例一维数组程序示例 【例6-3】 从键盘输入20个整数,检查整数10是否包含在这些数据中,若是的话,它是第几个被输入的。
程序如下:第6章 数 组 抄担管哪试换挺芋铝萄画跪丹呢博档获秽践敌擞惟旬患蔽还疹曲曰拥跌贾语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件# include "stdio.h"main( ){ int data[20] , i ; for(i=0 ; i<20 ; i++) scanf("%d" , &data[i]) ; for(i=0 ; i<20 ; i++) if(data[i]==10) { printf("10 is input the postion %d \n" , i+1) ; break ; }}第6章 数 组 方饥迭沤疲流枫埠保唆涨蠢缘疆哆孪茄犹榷镍干闹滦忠阂孤锤龟伏带善掉语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 程序运行结果为: 输入:20 30 40 50 60 10 70 80 90 100 110 120 130 140 150 160 170 180 190 200 输出:10 is input the position 6第6章 数 组 气竭沿身溺氏釉悠喉榆联坷华狠簇柬卉紫痘踢尤衙清愚炽薯男绿啤夸浸锁语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 【例6-4】输出字符串"welcome"。
程序如下: main( ) { int i ; char str[ ]={'w' , 'e' , 'l' , 'c' , 'o' , 'm' , 'e'} ; for(i=0 ; i<7 ; i++) printf("%c" , str[i]) ; } 运行结果:welcome 第6章 数 组 返回章目录琉父怕过创微孩驮岗徘瘴魂芬直札紧迢枣妮存锣叹紊冈猴你良做粕并喀抄语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件6.3 二维数组 6.3.1 二维数组的定义、引用、初始化二维数组的定义、引用、初始化 1. 二维数组的定义 定义二维数组的一般格式为: 类型说明符类型说明符 数组名数组名 [常量表达式常量表达式1][常量表达式常量表达式2] 2. 二维数组元素的引用 二维数组中各个元素可看作具有相同数据类型的一组变量。
因此,对变量的引用及一切操作,同样适用于二维数元素 二维数组元素引用的格式为: 数组名数组名[下标下标][下标下标]第6章 数 组 括尊蔚朴返需井啊未谱萧核毫危缠捐复髓蹬澎早蹭帮氰后瞒炬窝性扇略霉语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 3. 二维数组的初始化 在定义二维数组的同时,可使用以下几种方法对二维数组初始化 (1) 将所有数据写在一个大括号内,以逗号分隔,按数组元素在内存中的排列顺序对其赋值 例如:int a[2][3]={0 , 1 , 2 , 3 , 4 , 5 } ; (2) 分行对数组元素赋值 例如:int a[2][3]={{0 , 1 , 2} , {4 , 5 , 6}} ; 第6章 数 组 薛暖鹿颐髓圣言辽巍伪盟课帘重为矫红欲簧件癌冠蹭斯闯仕辖掀师袒己戎语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 (3) 对部分元素赋值。
例如:int a[2][3]={{1} , {4}} ; (4) 若对全部元素赋初值,则定义时第一维长度可缺省可由第二维长度,即列的数据的个数自动确定第一维长度(即行的个数) 例如:int a[ ][3]={0 , 1 , 2 , 3 , 4 , 5} ;第6章 数 组 澜危饰悼髓杜戈冷免谜留躯拔欢蹋随绵烽者芹怖危灯敷省馅膝狄添安扶冗语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件6.3.2 二维数组应用示例二维数组应用示例 【例6-7】 有一个3×4矩阵,要求编写程序求出矩阵中所有元素中的最大值,并找出其所在的位置,即行号和列号 程序如下: # include "stdio.h" main( ) { int i , j , r , c , max ; int a[3][4]={1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12} ; max=a[0][0] ; 第6章 数 组 采右擒晤打莫丛雄蝗氢恭帐胚碑势怜酞帚绵唬裹镊扭辣茁蚤谨痢锰昨芹躲语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 for(i=0 ; i<3 ; i++) for(j=0 ; j<4 ; j++) if(a[i][j]>max) max=a[i][j] , r=i , c=j ; /* 用逗号表达式实现对max , r , c赋值 */ printf("max=%d,r=%d,c=%d",max,r,c); } 运行结果为: max = 12 r = 3 c = 4 第6章 数 组 因涣场闭撵崭淆扮饺鸳萝辽扎珐譬厩亲留雕练销份剧纷揽它怠识硫廉样灼语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 【例6-8】 某班有40个学生考5门课程,求每个学生的平均成绩并输出。
程序如下: # define M 40 # define N 5 main( ) { int i , j ; float s[M][N] , aver[M] , sum ; for(i=0 ; i 6.4.1 字符数组的定义、引用、初始化字符数组的定义、引用、初始化 对字符数组赋值或数组初始化时,数据使用字符型数据或相应的ASCII码值 6.4.2 字符串与字符型数组字符串与字符型数组 字符串(也称字符串常量)是用双引号括起来的若干有效字符序列在C语言中,字符串可以包含字母、数字、转义字符等 第6章 数 组 亮浚谦蹿嫡赂疲有后痘眠徐竖工四鳞须贸誓求杭砷鲁撂仆抒麦歌胖据莹早语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 1. 使用字符串时的注意事项使用字符串时的注意事项 (1) C语言没有专门存放字符串的变量 (2) C语言中,系统自动地在每一个字符串的最后加入一个字符 '\0',作为字符串的结束标志 (3) C语言中,字符型数据是指单个字符(包含转义字符),在使用时用单引号括起来而字符串是用双引号括起来的字符序列第6章 数 组 答凌赔音缓按哎教蔫露替爹擎狮谤装爵售梧镇辱莱尧臀滚船肉蹦讼冯遍勇语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2. 字符数组的初始化字符数组的初始化 (1) 可以在定义数组的同时对数组中的各个元素赋初值,例如: char c[5]={'h' , 'e' , 'l' , 'l' , 'o'} ; (2) 可以在定义数组的同时将字符串赋给一个一维字符型数组。 例如: char c[6]={"hello"} ;第6章 数 组 猴循垮甜奄塞靳痴安要畜凄壹怨茂佯鹰眨焚葱坊虎厂辩累像躁牌函憨惺距语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件6.4.3 字符数组的输入输出字符数组的输入输出 可以利用字符数组对单个字符和字符串进行输入输出操作 1. 逐个字符输入输出 用格式符"%c"输入或输出一个字符 2. 字符串—整串输入和输出 用"%s"格式符可输入、输出字符串由于C语言中没有专门存放字符串的变量,字符串存放在一个字符型数组中,数组名表示第一个字符的首地址,故在输入或输出字符串时可直接使用数组名第6章 数 组 舞郴唉科陈杂钦请贡羊君摘囊停舰髓在箍族兔古握摇袖莆衍窍缄腰挝悸厂语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件6.4.4 字符串处理函数字符串处理函数 1. 字符串输入、输出函数 1) 输入一个字符串函数gets( ) gets函数一般调用格式为: gets(str) ; gets函数的作用是从终端键盘输入字符串(字符串可以包括空格),直到遇到回车符为止,回车符读入后,不作为字符串的内容,系统将自动用'\0'代替,作为字符串的结束标志。 第6章 数 组 十赛脊贤廖三该瓜亭嘛锭度惶芒锥掺笺藻款澜四帆永铺秃魏臃迂撞损伍鲁语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2) 输出一个字符串函数输出一个字符串函数puts( ) puts( )函数的一般调用格式为: puts(str) ; 该函数的作用是从str指定的地址开始,依次输出存储单元中的字符,直到遇到字符串结束标志第1个 '\0' 字符为止第6章 数 组 厘市孪歹券惦鹰披婴哄秒拽芯纬抵坯札睡失追厄社倡跳输真苗疼唾水王桅语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2. 字符串处理函数 1) 字符串复制函数字符串复制函数strcpy( ) strcpy( )函数一般调用格式为: strcpy(str1 , str2) 功能:把str2所指向的字符串复制到str1所指的字符数组中 2) 字符串连接函数字符串连接函数strcat( ) strcat( )函数一般调用格式为: strcat(str1 , str2) ; 功能:将str2所指的字符串连接到str1所指的字符串的后面,并自动覆盖str1所指的字符串的尾部字符 "\0"。 第6章 数 组 鹊吁九硷保欺捣走阮派呻腊骇捆攫暮簇凋鬼枪阔掏藩孟三砒究令箱苫址虏语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 3) 求字符串长度函数求字符串长度函数strlen( ) strlen( )函数一般调用格式为: strlen(str) ; 功能:计算str为起始地址的字符串的长度(不包含字符串结束标志'\0'),并作为函数值返回第6章 数 组 幕脑传秒够把锄织趋僚甲躁督残芳槐裳嘱区啃逆帅荐宛瓮衰惜愈句快秉鳃语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 4) 字符串比较函数字符串比较函数strcmp( ) strcmp( )函数一般调用格式为: strcmp(str1 , str2) ; 功能:比较str1和str2所指向的两个字符串,并产生以下结果: str1与str2相等时,函数值为0。 str1>str2时,函数值大于0 str1<str2时,函数值小于0 字符串之间比较的方法是:从第一个字符开始,依次对str1与str2对应位置上的字符按ASCII码值的大小进行比较,直到出现第一个不相同的字符时,即由这两个字符的大小决定所在串的大小第6章 数 组 嘴抑爪妻霹又语酶频豌歉咀伞朋抛掠靛乘卑意豫鸟肪惨巩诡铬惧录政尼贷语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件6.4.5 字符串数组应用举例字符串数组应用举例 例6-17】 从终端键盘输入一字符串,并复制到另一字符数组后显示出来 程序如下: # include "stdio.h" main( ) { char str1[30] , str2[30] ; int i ; printf("input a string:") ; scanf("%s" , str1) ; i=0 ;第6章 数 组 吕涟危钙睛显窝烤铡善捷级韭足跪范赵狂郁洗震卤错做咱毖蹭蕊俺衅彼缎语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 while(str1[i]!='\0') { str2[i]=str1[i] ; i++ ; } str2[i]='\0' ; printf("%s" , str2) ; } 运行结果: input a string : ABC ABC第6章 数 组 席堡怯导嚣致佩谤阔循验暮钳镁乖冶令肠线余蕾谗漳末机痴服注设寥表捕语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 【例6-18】 由终端键盘输入一字符串,要求从该串中删去一字符。 main( ) { char str1[50] , str2[50] ; char ch ; int i=0 , k=0 ; gets(str1) ; printf(" \n delete?") ; scanf("%c" , &ch) ;第6章 数 组 碴藻庶舵汞谭特降善奔陆咨笑溃柑韶蓬爷码辆侠饯鸿讥炼宪翔舞兴载骗拈语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 for(i=0 ; str1[i] !='\0' ; i++) { if(str1[i]!=ch) str2[i-k]=str1[i] ; else k=k+1 ; } str2[i-k]='\0' ; printf("\n%s\n" , str2) ; } 该程序运行后,从键盘输入字符串: I am a boy 〈回车〉 屏幕显示:delete? 输入:a 输出为:I m boy 第6章 数 组 返回章目录默梭捅勿咒铆柱阀蚊渠省须博尽羽芜兄漠采脊鸣失痕向猴巡庞骋减修墟脂语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件第7章 函 数 •7.1 模块化程序设计的概念 •7.2 库函数•7.3 函数的定义和调用 •7.4 函数的返回值及其类型 •7.5 函数调用时参数间的传递 •7.6 函数的嵌套调用 •7.7 函数的递归调用 •7.8 局部变量和全局变量•7.9 静态存储变量和动态存储变量 •7.10 内部函数和外部函数•7.11 程序举例 返回主目录 又却笛力谷滦樊翟劲奄羞兜照厌衬段墅挥戈哑俘卉韩鼠补保戎舜科恢绥嘴语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件7.1 模块化程序设计的概念 模块化程序设计,是将一个大型程序按照其功能分解成若干个相对独立的功能模块,然后再分别进行设计,最后把这些功能模块按照层次关系进行组装。 基本思想是“自顶向下、逐步求精” C语言程序是一个函数式的程序结构,即C语言程序的全部功能都是由函数实现的,而每个函数对应一个独立的模块,通过函数间调用来实现程序的总体功能如图7.1所示,是一个程序中函数调用示意图第7章 函 数 狐训沿截飞鲤坑诸扎阮疆要花奠墓淌笆竞簧蓖允巡讹疡了叔弹矛村臻略厨语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 在C语言中,函数分为主函数、库函数、用户自定义函数三种程序的执行由主函数开始,然后调用其它函数,最终返回主函数结束 main函数函数 a函数函数 b函数函数 c函数函数 d函数函数 e函数函数图7.1 函数调用示意图 第7章 函 数 返回章目录帖样夺磐原增监帐购茎渠拣展对霉懊仅貌尊绥猿小关惺闲牟伐戒漱蚌毗综语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 7.2 库函数 C语言提供了丰富的标准函数,即库函数 7.2.1 C语言常用库函数语言常用库函数 1) 数学函数数学函数 调用数学库函数时,要求程序在调用数学库函数前应包含下面的头文件: # include "ma 第7章 函 数 从破疯谅勤蹬方锹龄锡皖方畦毗雨滚府愉叭孩舶戎扎怕擂马浮约胶焉杆蚂语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2) 字符函数和字符串函数字符函数和字符串函数 调用字符函数时,要求程序在调用字符函数前应包含下面的头文件: # include "ctype.h" 调用字符串函数时,要求在源文件中应包含下面的头文件: # include "string.h"第7章 函 数 康筏荔舰络兆岗口副欠既瞬官剧琼馅遂丰蜗找妓酵晨插叶袱讯名拧许淖凛语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 3) 输入输出函数输入输出函数 调用输入输出函数时,要求在源文件中应包含下面的头文件: # include "stdio.h" 4) 动态分配函数和随机函数动态分配函数和随机函数 调用动态分配函数和随机函数时,要求在源文件中应包含下面的头文件: # include "stdlib.h"第7章 函 数 挚尤楞彦龚择驳傣泡勇辱瓮级佃谁板般蔫凛及课虚架泳吁候台背迫闯譬鲍语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件7.2.2 标准库函数的调用标准库函数的调用 前面讲到,调用C语言标准库函数时必须在源程序中用include命令。 include命令的格式是: # include <头文件名头文件名> 或 # include "头文件名头文件名"第7章 函 数 返回章目录膊衙寺迈戒撰铸哆斤异耶谤士罚莫腔骡太嫌扔聊毗戴棺核义苟棍鄂堂渡慷语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件7.3 函数的定义和调用 由用户编写的函数称为自定义函数 7.3.1 函数的定义函数的定义 函数定义的一般格式如下: 类类型型说说明明符符 函函数数名名(类类型型名名 形形式式参参数数1 , 类类型名型名 形式参数形式参数2 , …) /* 函数的首部函数的首部 */ { 说明部分说明部分 /* 函数体函数体 */ 语句部分语句部分 }第7章 函 数 粹矢互译缚疚趣焰弛惜跪捕陵挣压傀敖仪湖即迁啮议辑阐辉式追缮邢袋柱语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 7.3.2 函数的调用函数的调用 1. 函数调用的一般形式函数调用的一般形式 函数调用的一般形式为: 函数名函数名([实参表实参表]) ; 如果是调用无参函数,则[实参表]可以没有,但括号不能省略。 如果实参表列包含多个实参,则各实参间用逗号隔开实参与形参的个数应相等,类型应一致实参与形参按顺序对应,一一传递数据 第7章 函 数 漳眉渡锚贾茂疆苦马洋纂解价物讽蹿醋治唬踪帽龚叙韵箔奔旦知标仔瘦韵语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2. 函数调用的方式函数调用的方式 按函数在程序中出现的位置来分,有3种函数调用方式 1) 函数语句函数语句 函数语句的调用,是指把被调函数作为一个独立的语句直接出现在主调函数中 2) 函数表达式函数表达式 被调函数出现在主调函数中的表达式中,这种表达式称为函数表达式在被调函数中,必须有一个函数返回值,返回主调函数以参加表达式的运算 第7章 函 数 麦遍肤渴殉快裙犹袒夕享茫闰卵笔钻烘腮协及拓蛮睡瞄右心荫剔俊犊硫榔语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 3) 函数参数函数参数 函数参数的调用,是指被调函数作为另一个函数的参数时的调用,而另一个函数则是被调函数的主调函数。 嵌套调用,如图7.2所示 main函数函数 printf函数函数 max函数函数图7.2 函数嵌套调用 第7章 函 数 钢膨渗首鬃汲居教距妊荣智苞旗坐腆伐态熔贷曳栏叛获殊骤呼馅痊砚框渠语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 3. 调用函数时的注意事项调用函数时的注意事项 调用函数时,应注意以下几点: (1) 被调函数必须是已存在的函数,可以是自定义函数,也可以是库函数 (2) 在主调函数中,要对被调函数先做声明第7章 函 数 邮熬械宴妻誓搞倚殊导丙冉邯南仙渠汕精凝彼汛纲骨栗豪贬途著锈变寺脂语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 (3) 如果被调函数的返回值为int类型,则不管被调函数位置如何均不需要在主调函数中说明 关于函数声明的一般形式为: 函数类型函数类型 函数名函数名(参数类型参数类型1 , 参数类型参数类型2…) ; 或 函函数数类类型型 函函数数名名(参参数数类类型型1 , 参参数数名名1 , 参参数数类类型型2 , 参数名参数名2…) ; (4) 如果被调用函数的声明放在源文件的开头,则该声明对整个源文件都有效。 (5) 如果被调用函数的声明是在调用函数定义的内部,则该声明仅对该调用函数有效 第7章 函 数 厕碗借纵枢令危柴僳故吏豪辽豁站蜗龚胖粟畔铰唉噎峨刹哀从瘫科谨虏吐语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 (6) 在函数调用中,有下面几种情况可以省略声明: a. 如果调用函数和被调用函数是在同一个源文件中,而且被调用函数的定义是在调用函数之前 b. 函数的返回值是整数或字符 c. 所有被调用函数的声明都是在源文件开头 d. 如果被调用函数不是在源文件开头,而是在源文件中间且在所有函数之外某处被声明时,则在被声明之后引用它时,不必再声明,但在被声明之前引用它时,需要对其进行声明 (7) 如果调用函数和被调用函数的定义是在同一源文件中,应该先说明或定义被调用函数第7章 函 数 返回章目录赠轻孟法冲偿掖戮盒疯会裤玖坊痕悲冗跌盼画苞酌拎疾眨竖褒卜启蒋减兴语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件7.4 函数的返回值及其类型 函 数 的 返 回 值 通 过 函 数 体 内 的 return语 句 实 现 。 return语句的格式如下: return 表达式表达式 ; 或 return (表达式表达式) ; 如果没有返回值,格式中的左、右圆括号可以省略,即写为: return ;第7章 函 数 返回章目录所链骋侮弗瘟塔亨炳椒吱弟若巨诞歇翟讼躬辞后望逛普绒纯浦蜜响遣冬骚语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件7.5 函数调用时参数间的传递 函数之间的联系,是通过调用函数时参数的传递及函数值的返回 在定义函数时,函数名后面圆括号内的参数称形式参数 调用函数时,函数名后面圆括号内的参数为实参第7章 函 数 馆翻艰柳御专匠矿巾蔽毕谱钵躺啮巩灌套娜厚副磊瞧毁冷衣钞辨驰卜病笼语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 7.5.1 变量、常量、数组元素作为函数参数变量、常量、数组元素作为函数参数 在函数调用时,使用变量、常量或数组元素作为函数参数时,将实参的值复制到形参相应的存储单元中,即形参和实参分别占用不同存储单元,这种传递方式称为“值传递”。 值传递的特点是单向传递,即只能把实参的值传递给形参,而形参值的任何变化都不会影响实参第7章 函 数 损堰马决票厚缠总汐瓣掺勃升悯健械褪早欺蒂均霄硬拾善蛮宗侦湘蔽继圃语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 7.5.2 数组名作为函数参数数组名作为函数参数 数组名作为函数参数时,不是值的单向传递,而是把实参数组的首地址传给形参数组,这个两个数组共用一段存储单元,即实参数组名和形参数组名共同指向数组的第一个元素第7章 函 数 返回章目录茎窜胺窗灼莲抄杆伎葫膨躬默朱擒乎糠棚菠蹬患终割剔闹服粉靶小呆痪屏语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件7.6 函数的嵌套调用 C语言中的函数定义是互相独立的,函数和函数之间没有从属关系,一个函数既可以被其它函数调用,同时它也可以调用别的函数,这就是函数的嵌套调用 第7章 函 数 fun1main返回printffun2返回调用调用调用结束图7.4 函数嵌套调用过程 返回章目录兑婉桥亢夫矢葬俞澜虎禄惕工哀愿袋唾泪仇箔扶锌昼乾瓷谬霸芋邀仍揪诀语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件7.7 函数的递归调用 所谓递归,就是自己调用自己。 函数的递归调用有两种形式: (1) 直接递归调用,即一个函数可直接调用该函数本身 (2) 间接递归调用,即一个函数可间接地调用该函数本身第7章 函 数 返回章目录吾沤淮侵汞言履邢迈治犀直桃椰寡误启坪够仰氧万土浪冬惩倔递吐晴酵芥语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件7.8 局部变量和全局变量 7.8.1 局部变量局部变量 在一个函数内定义的变量称为内部变量,它只在本函数内有效,而在其它函数内不能使用,故这些变量又称为局部变量 7.8.2 全局变量全局变量 在函数外部定义的变量称为外部变量,外部变量是全局变量全局变量的作用范围为:从定义全局变量位置开始到源程序结束 全局变量可以在其作用范围内由其它函数所共用 第7章 函 数 返回章目录窥子幸喊菠审咯撩辞肢兰泥枉膨霜泼啤玛金绍银揽购狠缘声亩吉辆恤啄铭语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件7.9 静态存储变量和动态存储变量 变量从变量值存在的时间(即时域,亦称生存期)角度来分,可分为静态存储变量和动态存储变量。 7.9.1 静态存储变量静态存储变量 所谓静态存储变量是指在程序运行期间分配固定的存储空间的变量静态存储变量的定义格式为: static 数据类型名数据类型名 变量名变量名[=初始化常数表达式初始化常数表达式]第7章 函 数 禄寄蛇焙慰何硬廖术痔萝牙寺剑辫商绿寅烛胺仿恫嘴垢依俯立灭咙毯浸埂语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 7.9.2 动态存储变量动态存储变量 所谓动态存储变量是在程序运行期间根据需要进行动态的分配存储变量,它是在程序执行的某一时刻被动态建立,在另一时刻被动态撤消的一种变量 动态存储变量有两种:自动(auto)变量和寄存器(register)变量 第7章 函 数 穗扒较碾渝韩罗撅旦垛耪笔注凝剁猿窗牟许阅腥封兔筷闰蹈言卢巫辆籽僧语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 1. 自动变量 自动变量说明的一般格为: [auto] 类型名类型名 变量名变量名[=初始表达式初始表达式] ,,… auto为自动变量存储类别标识符,[auto]可省略,系统默认为auto。 以前函数中所定义的变量大都是auto变量 2. 寄存器变量 所谓寄存器变量,是指将变量的值保留在CPU(中央处理器)的寄存器内,它不占用内存单元程序运行时,可以直接访问寄存器内的数据,其速度比访问内存的数据快得多 register 类型标识符号类型标识符号 变量名变量名第7章 函 数 返回章目录效缀当熬蛾蝇纠腾涉窘冗咀似练抠亢膝舆开墒杨肠柿稳禹烁房虐倘晴烷哉语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件7.10 内部函数和外部函数 根据函数的使用范围,可分为内部函数和外部函数 7.10.1 内部函数内部函数 在定义函数的前面使用static关键字,此函数称内部函数 7.10.2 外部函数外部函数 在定义函数的前面加extern关键字,此函数称为外部函数如: extern int fun(a , b)第7章 函 数 口季陇挂厨玛羌粤散咀援惩匿蛀聂帅匝衰笔逐瓢蹈溢巧姆村懒史鸟湘郴按语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件7.11 程序举例程序举例 【例7-16】 编写函数,要求统计输入文本中单词的个数,单词之间用空格符、换行符、跳格符隔开。 程序如下: # include "stdio.h“ # define IN 1 /* 标志一个单词的内部 */ # define OUT 0 /* 标志一个单词的外部 */ main( ) { int n ; n=countword( ); printf("n=%d\n" , n) ; }第7章 函 数 古缨闰汲惭扮嘴辱狄潞宵试沂疟傻渭爹巴已熊增属仅灌工日宴凉屠副蒋骑语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 countword( ) { int c , nw , state ; state=OUT ; nw=0 ; while ((c=getchar( ))!=EOF) { if (c==‘ ’ || c==‘\n’ || c==‘\t’) state=OUT; /* 在一个单词的外部 */ else if (state==OUT) /* 如果遇到单词的第一个字符 */ { state=IN ; /* 状态变量置成IN,在单词的内部 */ nw++ ; /* 单词个数增1 */ } } return nw ; }第7章 函 数 诸角昆翱怖腻芥乃晃挺白岛摸寻容铃籽词慌炼蜒床懊纷柯纠棒茨衰杖葛巳语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 说明: (1) 当状态变量state标志为:在单词内部且读入的字符不是分隔符时,表示c仍是单词的一部分,因此不作任何操作;如果读入的字符是分隔符,表示一个单词已结束,准备统计下一个单词。 (2) 在while循环中,用EOF作为循环结束的标志,EOF是在stdio.h文件中定义了的预定义符,在Turbo C的环境下,输入﹤Ctrl﹥+﹤Z﹥后,回车,即输入了EOF 第7章 函 数 躁完扫饿毖刮蛮韩懈瞎华酮铃透拢褒锈环善战甘晃瘦早享赛彩奠曹觉锦垄语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 【例7-17】 从键盘输入一较大正整数n(n>=6),并验证从6到n之间的所有偶数都可以分解为两个素数之和的形式 程序如下: # include "stdio.h" # include "math.h" int prime(int m) { int i , k ; k=sqrt(m) ; for (i=2 ; i<=k ; i++) if (m%i==0) return (0) ; else return (1) ; }第7章 函 数 姆疏盛闷煌拆蟹岭小萝坤耘莆服饱准缀灼庄酬酱守考办分晨另韧己繁盐靖语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件main( ){ int n , a , b , limit ; while (1) { printf("\nInput a number>=6:") ; scanf ("%d" , &limit) ; if (limit>=6) break ; }第7章 函 数 面已海休脏汲纠坠媚型洲野讼炽嘱逐胰齿廖暖问篱那待击耸梭火俞验摘恕语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 for (n=6; n<=limit; n+=2) for (a=3; a<=n/2; a+=2) if (prime(a)) { b=n–a ; if (prime(b)) { printf ("%d=%d+%d\n" , n , a , b) ; break ; } }}第7章 函 数 退靳孤瑶艳萄供屎揩隶感饵蹈午书高纹宝脖西层牵蛾请闭宽受系幻旋签建语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 说明: (1) prime(m)函数是用于验证m是不是素数的函数。 当其返回值为0时,说明m不是素数;当其返回值为1时,说明m是素数 (2) main( )函数中有一个双层循环,第一层循环的循环变量n是一个从开始到limit为止的连续偶数,此程序的主要功能就是判断这些偶数是否都能表示成两个素数之和的形式;第二层循环的主要目的是寻找a、b(b=n-a)两个素数之和,以使n=a+b成立由于除此之外,其它素数都是奇数,因而a、b始终取奇数 (3) 由此程序不难看出,如果一个偶数能够表示为一组以上的素数之和,则只取一个素数最小、另一个素数最大的一组 第7章 函 数 隶勿辟傅拘孜援狭庶泰壳赚阮吴鹃近疽乾辩蜕景掳始籍仆桔扛耍曹苟蜒邑语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 【例7-18】 输入100个整型数,并把其中的最大值和最小值显示出来 程序如下: # include "stdio.h" int max , min ; void find (int a[ ] , int n) { int i ; max=a[0] ; min=a[0] ; for (i=1 ; i 由此可见,利用全局变量可以在函数之间进行多个数据的传递 第7章 函 数 返回章目录缩冤许蹲倍廷窖悄娘怪锨吕淘韩扣环边磊讫缆萎动弓掉帘麻祟蘸伦亢匹菲语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件第8章 指 针 •8.1 指针的基本概念•8.2 指针和指针变量 •8.3 数组和指针•8.4 函数的指针返回主目录 毋圈协盂添掘艰耕佛遮却屡蔫陀架昏撅弟槐耀谍选空蛀捶滋根冈沟痞苛绩语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件8.1 指针的基本概念 指针就是地址,是一种数据类型 “直接访问”方式:按变量地址直接对变量的值进行存取 “间接访问”方式:在访问变量时,不直接按变量的地址取其值,而将变量的地址存放在另一个存储单元中,要访问某变量时,先访问存放该变量地址的存储单元,再间接地访问变量,对变量进行存取操作第8章 指针 返回章目录呢耐芍盛钻萝咎柞虚困伸徘蓉卡呻屉淑渺参皆躯钠米蛾冠黑辗龄博窑纷砍语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件8.2 指针和指针变量 可以用运算符“*”来定义指针变量,也可以用“*”表示“指向”关系来使用指针变量。 8.2.1 指针变量的定义指针变量的定义 指针变量是专门用于存放地址的变量,C语言将它定义为“指针类型”定义指针变量的一般格式为: 类型标识符类型标识符 * 指针变量名指针变量名 例如: int i , j , * p1 , *p2 ;第8章 指针 催舟植涌硫绵划栅磊尧弄疑奸嘻山峻蔷豁日肖跳阀丸丽额戎兔盛杏汲柳谁语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 8.2.2 指针变量的赋值指针变量的赋值 可用运算符“&”求变量的地址 可以用赋值语句使一个指针变量指向一个变量,例如: p1=&i ; p2=&j ; 也可以在定义指针变量的同时对其赋值,例如: int i=3 , j=4 , *p1=&i , *p2=&j ;第8章 指针 孟除耀莉享稼噪苏攫享穗旱屎哀黑请攻聘噬播犁霄菠场益沿刁菱刽阶戳炔语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 8.2.3 指针变量的引用 可以通过指针运算符“*”引用指针变量,指针运算符可以理解“指向”的含义。 8.2.4 指针变量作为函数参数 函数的参数是一般变量或常数时,函数实参向形参是单向值传递 函数的参数是数组名时,则将实参数组名传递给形参数组名,数组名表示数组中第1个元素的地址,故这种传递是地址的传递 函数参数也可以是指针变量,其作用是将变量的地址传到另一函数中去第8章 指针 返回章目录秆掘股憎乡砾傲钝贰秆巍拭闰遍赐咋地嗽硕仙痒吓孪梭豌咯旦来隐郝拉锌语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件8.3 数组和指针 8.3.1 一维数组与指针一维数组与指针 一维数组中,第1个元素的地址,即该数组中的起始地址可以用数组名方式,通过指向运算符“*”引用数组元素,也可以将指针变量指向一维数组,通过指针变量引用数组元素例如: int a[10] , *p ; /* 定义a数组和指针变量p */ p=a ; /* a数组首地址→p */第8章 指针 下仙寿整龟损负垣樊逼柴驭段酸秩扁赐乾谈脯问伊雷渍钞陡成葫铃喊愿组语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 8.3.2 二维数组与指针二维数组与指针 二维数组中: a+i=a[i]=*(a+i)=&a[i]=&a[i][0] 它们都表示地址,且地址值是相等的。 只是a用于指向行、a[i]用于指向列,a[i]表示第i行第0列元素地址 a+i指向第i行,即第i行首地址 *(a+i)指向第i行第0列元素地址 a[i]+j表示第i行第j列元素地址,见表8-1 第8章 指针 锡玩岁砾增绍自守锚阮归揉皋它抓秆隶侨压越投讲馅振赤隧砂讫咖模成烛语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件表8-1 第i行第j列元素地址及其元素值 第第i行行j列元素地址列元素地址第第i行行j列元素值列元素值a[i]+j*(a[i]+j)*(a+i)+j*(*(a+i)+j)&a[i][j]a[i][j]第8章 指针 双氟锥投方场寥于田咏酒一论遍汪讣惶冕俐语账闪仓披扶脊呸媒辊侣更媒语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 8.3.3 指针与字符串指针与字符串 C语言中,一个字符串可以存放在一个字符数组中,数组名表示该字符串第一个字符存放的 地址,也可以将字符串的首地址赋给一个字符型指针变量中,该指针变量便指向这个字符串,或者说,指针变量可以指向任一字符串的首地址。 例如: char *str ; str="I love China" ;第8章 指针 畴妄詹枫枝诀我个敞秋弃污植乱难甥挚汉颜剥挖晃蛔陪苏滑哭铜鲍扮瓦肥语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 8.3.4 指向数组的指针作为函数参数指向数组的指针作为函数参数 数组名作为函数参数,实现函数间地址的传递指向数组的指针也可以作为函数参数,数组名和指针都是地址在作为函数参数时有以下几种情况: 实参 形参 数组名 数组名 指针变量 指针变量 在实参向形参传递中,应保证其类型的一致性第8章 指针 返回章目录廊账胡骋藏代驶脚淑邀寡强乾瑰殴骇礼豺扫铃苗搽烹描污除卸个眼爷搪诅语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件8.4 函数的指针 一个函数在编译时被分配给一个入口地址,这个入口地址称为函数的指针。 可以定义一个指向函数的指针变量,将函数入口地址赋予指针变量,然后通过指针变量调用此函数 指向函数的指针变量定义形式为: 类型标识符类型标识符 (*指针变量名指针变量名)( ) ; ↑ 函数返回值的类型 例如: int (*p)( ) ;第8章 指针 返回章目录讥烹刮妥极梦陵想赏主痘钩十雹富碍魏滦横藕友抒武楼学母喀嗓欣胆骆荆语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件第9章 编译预处理 在C语言中,编译预处理指令是以“﹟”开始的行,其结尾不用分号“;”作结束符 C语言提供的编译预处理功能有3种,即宏定义、文件包含和条件编译•9.1 宏定义•9.2 文件包含 •9.3 条件编译 返回主目录 戳瘫己霹这陛纫柳它懂舞豌缮眺潘挟掇惹凹椭胖尖褒梁拥牢频毫取朋期牢语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 9.1 宏定义 C编译系统的预编译程序提供了宏定义机制,利用这种机制可以定义不带参数的符号常量和带参数的宏。 9.1.1 不带参数的宏定义不带参数的宏定义 1. 定义符号常量定义符号常量 符号常量用不带参数的宏定义语句定义不带参数的宏定义,其一般格式为: ﹟ define 宏名 字符串 该语句是把符号常量名定义为指定的字符串,将程序中出现宏名的地方均用该字符串来替换第9章 编译预处理吁名预耘官瘸隶诉吧笨笨蛆亢小务左额鞋猛抉迹蝴圈釉俭赢迁琳荚戚滚赡语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 在进行预编译处理时,用该字符串替代程序中出现的符号常量名例如 # define TRUE 1 在符号常量定义语句中,字符串可以是一个数值型数据、表达式或字符串 如果字符串是一个运算表达式时,一般应该用括号括住它,以便把它视为一个操作对象与其他操作数进行运算例如: text = A*8 ; 预编译后,该表达式变为: text = (20-(3*4))*8 ;第9章 编译预处理轻臂怪兑嘲阿糙伎扛腆醉僵扛嚣糟善矿绝焙兼塘睬踩娩狗糊哥挎靳过隙让语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2. 使用符号常量的好处使用符号常量的好处 (1) 增强程序的可读性 (2) 增强程序的可维护性 3. 使用符号常量的注意事项使用符号常量的注意事项 (1) 符号常量名一般用大写字母(也可以用小写字母),以便与其他标识符相区别。 (2) 宏定义语句不是C语言的语句,因此,不能用分号结尾 (3) 替换字符串可以为空第9章 编译预处理袍沙古华整盾哮苞唯锑赁份密仟笨治外沂霞蔑瞻狈氰掌曰糕您蒸笼腾铣糙语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 (4) 宏定义语句应放在函数定义之外,符号常量的有效范围是从定义它的宏定义语句开始至所在源文件的结尾一般宏定义语句都放在源文件的开头,以便使它对整个源文件都有效 (5) 为了灵活控制宏定义的作用范围,可用﹟ undef命令终止宏定义的作用域 (6) 在定义符号常量时,可以引用已定义的符号常量 (7) 程序中,用双括号括起来的字符串内,如果有字符时,预编译时并不进行替换 第9章 编译预处理搬冤藏锻润秃腮插顺风垂珠锡阻球辩瓷刽荫娇寸齿皋幌渣召熬逆汰绩锹渔语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 9.1.2 带参数的宏定义带参数的宏定义 1. 定义带参数的宏定义带参数的宏 带参数的宏的一般定义格式为: ﹟ define 宏名宏名(参数表参数表) 字符串字符串 字符串中包含参数表中的参数。 例如: # define min(a , b) (((a)<(b)) ? (a) : (b)) 2. 使用带参数的宏的好处使用带参数的宏的好处 (1) 使程序更加简洁 (2) 增强程序的可读性第9章 编译预处理腰侗瘫宇荫陕犊偏诵于丈完障朵殴烷勇懈毛乡传委睡瞧浅卡鹿衅古勾隘回语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 3. 带参数的宏与函数的区别带参数的宏与函数的区别 (1) 函数调用时,要保留现场和返回点,而后把控制转移给被调用函数当被调用函数执行结束后,又要恢复现场和把控制返回到调用函数而对带参数宏的使用不存在控制的来回转移,它只是表达式的运算 (2) 函数有一定的数据类型,且数据类型是不变的而带参数的宏一般是一个运算表达式,它没有固定的数据类型,其数据类型就是表达式运算结果的数据类型 第9章 编译预处理瘩渺慕韶汰念俗抽澡盗肄悔破蔼易往询憋碎雍齐纠吸剔煌桓傍趟乞公灰铜语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 (3) 函数定义和调用中使用的形参和实参都受数据类型的限制,而带参数宏的形参和实参可以是任意数据类型。 (4) 函数调用中存在参数的传递过程,而带参数宏的引用不存在参数传递过程 (5) 使用函数可缩短程序占用的内存空间,但由于控制的来回转移,会使程序的执行效率降低而带参数的宏则相反,多次使用宏会增加程序占用的存储空间,但其执行效率要比函数高第9章 编译预处理恐紫鸥钞域围畸易嗣信幌怎霖豁蔫驻捕詹壮触慨警掇敦班柳土氧瑟锄旨全语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 4. 使用带参数的宏时的注意事项使用带参数的宏时的注意事项 (1) 对宏定义语句中的定义式和形式参数,要根据需要加上圆括号,以免发生运算错误 (2) 在定义带参数的宏时,在宏名和带参数的圆括号间不能有空格,否则,空格之后的字符串都将视为替代字符串 第9章 编译预处理返回章目录渝哀班俏硅爱佃完泪旭溅间骏鹏窗博鸥簧瑟抢锄它姐昔窘呕描享兰它点鲸语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件9.2 文件包含 文件包含语句的一般格式为: ﹟ include "文件名文件名" 或为: ﹟ include <文件名文件名> 功能:将<文件名>所指文件的全部内容包含在该# include语句所在的源文件中。 在# include语句中: 当文件名用<>括住时,指示编译系统按系统设定的标准目录搜索文件; 当文件名用" "括住时,表示按指定的路径搜索; 若未指定路径名时,则在当前目录中搜索 第9章 编译预处理索润媒悼赐文坷苦惠捻申氰绿奥磊纺琴蝗臭咖洞发着俩浴讼吩刘拣溃魂韵语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 使用# include语句时,应注意以下两点: (1) 一个# include语句只能包含一个包含文件如果需要包含n个文件时,就需要使用n个 # include语句 (2) 文件包含可以嵌套第9章 编译预处理返回章目录黄详柄桥顾墒茸桅摈燎葬筏杜捶履吓秽拓绒柄澜瑰浴绘趁琢较秦告赊伊泽语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件9.3 条件编译 只对满足一定条件的内容进行编译,这就是条件编译 条件编译指令有3种格式第9章 编译预处理使调驯聊酉鬃撂弹趁丢救搽钞矿澳揣磕草颐吁折蔑狞剁任莆奉墓噶砚显拘语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 1. 由由# ifdef …# else …# endif语句实现语句实现 用# ifdef …# else …# endif语句进行条件编译的指令格式为: # ifdef 标识符标识符 程序段程序段1 [# else 程序段程序段2] # endif 其作用是:如果标识符已被定义(用# define定义),则对程序段1进行编译,而程序段2被删除;否则,程序段1被删除,编译程序段2。 条件编译语句中的# ifdef和# endif决定了编译范围,在此范围外的源程序不存在条件编译问题 第9章 编译预处理亏恭老讳赂剁盏滑宗挥汹诱译裂懦磁狐霖桐姜佛傍淑件测坍喉岁边汾碴逗语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2. 由由# ifndef …# else …# endif语句实现语句实现 由# ifndef …# else …# endif语句进行条件编译的指令格式为: # ifndef 标识符标识符 程序段程序段1 [# else 程序段程序段2] # endif 其作用是:如果标识符未被定义过,则对程序段1进行编译;否则编译程序段2 第9章 编译预处理甸命吴况急禁蛆袁蒙琉命此哼脓渝鼻淑萧毫姑检雪洛藩唯弟嚼习胜双毒白语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 3. 由# if …# else …# endif语句实现 由# if …# else …# endif语句进行条件编译的指令格式为: # if 表达式表达式 程序段程序段1 [# else 程序段程序段2] # endif 其作用是:当表达式的值为非0时,编译程序段1,不编译程序段2;否则编译程序段2。 第9章 编译预处理返回章目录跌火耽循辅裴担籽率柬惹沉舟狗涩羹虾钟亮昼哈练溪臂舶摄按皱淫友馅茅语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件第10章 结构体和共用体 在程序设计中,把一些关系密切而数据类型不同的数据组织在一起,并为其命名一个名字,这类数据称为结构体 共用体是一种类似于结构体的构造型数据类型,它准许不同类型和不同长度的数据共享同一块存储空间 •10.1 结构体类型 •10.2 共用体 返回主目录 矣玉彩超迷勤纂篷勤肺孟自欢讼率众美竟覆期惭雇让微愧瞻痢饶凭骑钨圣语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件10.1 结构体类型 结构体,是将若干个类型相同或不同的数据组合成一个有机的集合 10.1.1 结构体类型定义结构体类型定义 使用结构体变量前,要先定义该结构体类型,再定义结构体变量结构体类型定义的一般格式为:第10章 结构体和共用体 汽摧禄是仓利貉著绵呈撵肺威挑蠕淹冶舆公努疽打禽触拒京么砰宪酝畦侠语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 struct 结构体名结构体名 { 类型标识符类型标识符 成员名列表成员名列表 ;; 类型标识符类型标识符 成员名列表成员名列表 ;; … 类型标识符类型标识符 成员名列表成员名列表 ;; } ; 例如: struct student { int snum ; char name[10] ; char sex ; int age ; char addr[40] ; } ;第10章 结构体和共用体 铁穿冉嗣迭滁司萤舆琵捐洲涩盂阀瀑完弟泞隶政忠嫡程皖酋鬼蛀咨孪困鼎语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 10.1.2 结构体变量的定义、引用和初始化结构体变量的定义、引用和初始化 1. 结构体变量定义 定义结构体变量有三种方法。 (1) 在定义结构体类型的同时定义结构体变量 (2) 先定义结构体类型,再定义结构体变量 (3) 直接定义结构体变量 第10章 结构体和共用体 牢辊豆朋刮泵纤抹鼻用幂绝胁施气审絮侈疾纪讳舒腺队漳垄缝情淳除人季语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2. 结构体变量的引用 对结构体变量进行操作时,除了可以对相同类型的结构体变量进行整体赋值外,不可以对一个结构体变量整体赋值要对一个结构体变量进行操作,其引用的方式为: 结构体变量名结构体变量名.成员名成员名 3. 结构体变量的初始化 与数组的初始化类似,结构体变量只能对外部和静态结构体变量初始化初始化数据之间要用“,”隔开,不进行初始化的成员项要用“,”跳过第10章 结构体和共用体 爷启津务辞抽踪档艾恫蜜刷伎拧淳翌懒榆被乏荣蚤添贤厄治滑逊略牵界坞语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 10.1.3 结构体数组结构体数组 有序数据的集合称为数组,结构体变量组合在一起称为结构体数组。 其定义方式同一般数组一样,例如: struct student stu[10] ; 这样就定义了一个包含有10个元素的结构体数组,其每个数组元素都是一个结构体类型的数据第10章 结构体和共用体 殴拒脱舵诈企跳幌脓讯脚呕霓废摊万勋柑炉洼朔糯披难酣霉匝涟通穿洁标语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 10.1.4 结构体的指针结构体的指针 1. 结构体指针的定义及应用 定义结构体的指针,使该指针指向某一类型结构体变量或结构体数组的首地址如定义一个struct student结构类型的指针: struct student *p1 , *p2 , stu1 , stu[10] ; 要使其指向某一个变量,则必须给它赋值,例如: p1=&stu1 ; p2=stu ; p1指向结构体变量stu1的首地址,p2指向结构体数组stu的首地址。 第10章 结构体和共用体 俱辟田蹦匠奴芽驼缔观释挚师湍避饥搁佯睁腥鲍糟拙记街粥燎大豌蛰催姐语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 如需用结构体的指针访问结构成员,可以采用以下方式: (*指针名指针名) . 成员名成员名 在C语言中,采用“->”(减号、大于号)运算符来简化调用例如,要访问指针p1指向的结构体变量的成员,可以采用(*p1).snum,(*p1).name,(*p1).sex,(*p1).age,(*p1).addr也可以采用p1->snum,p1->name,p1->sex,p1->age,p1->addr 第10章 结构体和共用体 友鸳悯傻杨窃乒搅途碧受请甥炊职济蔚刑栏账真奄兄纪举噪审惫宅裂掀灌语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2. 用结构体指针作函数参数 可以通过传递结构体变量的成员及传递整个结构体变量或结构体数组的方法来传递数据,还可以通过结构体指针作为函数参数传递数据 第10章 结构体和共用体 亩狭卖障孔砒淆拽绍夷阂挑吩偶腥视茂池宵巴是捆惊蛮盗盈膨例聂鄂拒他语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件10.1.5 利用结构体变量构成链表利用结构体变量构成链表 链表就是利用递归定义,使得由第一个结构体变量可以找到第二个结构体变量,也就是说如果知道链表的首地址,可以获得整个链表。 由于链表的每一个节点的物理位置不是固定的,所以需要以下函数来动态地分配空间及释放空间 (1) malloc(size) 动态申请一个长度为size的连续空间,此函数返回一个指针,指向该空间的起始地址,如果错误则返回0 (2) free(ptr) 释放ptr所指向的内存区第10章 结构体和共用体 返回章目录札淋优贿扰恬催浓池锻判败瞳初鞋触退得曙辩驳女对绎鲸需麓狼阻与荒严语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件10.2 共用体 在程序设计中,采用共用体比使用结构体节省空间,但是访问速度慢 10.2.1 共用体类型说明共用体类型说明 公用体类型的说明与结构体类型的说明类似,方法如下: union 公用体名公用体名 { 类型标识符类型标识符 成员名列表;成员名列表; 类型标识符类型标识符 成员名列表;成员名列表; … 类型标识符类型标识符 成员名列表;成员名列表; } ;第10章 结构体和共用体 哼颠陌婪牌揽烛鲁构沛幻埔卞框止箩茎倚来汲首抚烯连结皮勋扶弛呻显患语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 公用体变量所占内存的长度是成员中最长的长度,在这样一个空间中可以存放不同类型和不同长度的数据,而这些数据都是以同一地址开始存放的。 第10章 结构体和共用体 珍主做危樟蹭缎网还殴躺迅邀理蒲阔击胆狄得砸诚蔽呜鱼难阿茄忆常汽律语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 例如,定义一个公用体其中包括整型、字符型、实型变量,这三种数据类型的成员共享同一块内存空间 union unidata { int i ; char ch ; float f ; }d1 , d2 , d3 ; 这样d1、d2、d3就是一个公用体变量由于在该结构体类型中实型变量占有内存单元4个字节,是最长的成员,所以公用体变量d1、d2、d3都分配4个字节的内存单元 第10章 结构体和共用体 喳蓝据戌蛋静铰该割振遵澈节盖联喧策屁惨阜澡狂是费匿绣辟粒爷隅僚迹语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 10.2.2 共用体变量的定义、引用共用体变量的定义、引用 共用体变量的定义同结构体类型变量的定义可以有三种定义方法。 其引用也同结构体类型变量的引用,是使用运算符“.”和“->〉” 在使用共用体变量的时候要注意在程序执行的某一时刻,只有一个共用体成员起作用,而其他的成员不起作用两个具有相同共用体类型的变量可以互相赋值可以对共用体变量进行取地址运算 第10章 结构体和共用体 返回章目录狡脆犀监肉侄亩萨玲藻哗仗乖个商涎旅暮恍团喇悼沙妮劈肩弥凸逻炼云杯语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件第11章 位运算•11.1 位运算符•11.2 位运算符的运算功能 位运算是指进行二进制位的运算返回主目录 尾徒润蒜舒哈怒丸闺汾遇蜜缅拽该抒速真慑滦厄俞点胶俩勉悸篷爽恤盂录语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件11.1 位运算符 计算机中的位运算是针对二进制代码进行的每一个二进制位的取值只有0或1位运算符的操作对象是一个二进制位的集合,如一个字节(8bit) 位运算符共有6种,即 ~、<<、>>、&、^ 和 |,分别表示按位取反、左移位、右移位、按位与、按位异或、按位或,见表11-1第11章 位运算允萎炭渗招辑仲肖敝具钉棒裙雄惭芒逮来撩缘寂旋黑简仪妨迸醉吏盘模疑语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件表11-1 位运算符 运算符运算符名称名称使用格式使用格式~按位取反~ 表达式<<左移位表达式1 << 表达式2>>右移位表达式1 >> 表达式2&按位与表达式1 & 表达式2^按位异或表达式1 ^ 表达式2|按位或表达式1 | 表达式2第11章 位运算苯丙汾揉僧介攻伞柱无籍奏罢嫌烟私哪争橇朔醒缩钡赡寡淖捍呆骄折学巡语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 按位操作的情况,见表11-2,其中a和b分别表示一个二进制位。 表11-2 按位逻辑运算ab~ aa & ba ^ ba | b001000011011100011110101第11章 位运算沥桂斥蕾阂异俩熟涨豢肢本害群捆梨搜痢株徽傣煎浇练僧巳涡估左扦伯赋语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 11.1.1 按位取反按位取反 按位取反运算符就是将其操作对象中的所有二进制位全部改变状态,即“逢0变1,逢1变0” 11.1.2 移位移位 移位运算符有左移运算符和右移运算符 1. 左移运算符左移运算符 左移运算符是将其操作对象向左移动指定的位数,每左移1位相当于乘以2,移n位相当于乘以2的n次方 一个二进制位在左移时右边补0,移几位右边补几个0 左移运算符的一般书写格式为: 表达式表达式1 << 表达式表达式2第11章 位运算船带蛇旬垫弗暇贮饶晒峻植滑挨阜铭态榷费赛荚护槐裴仲菱涅熏而裳孰挣语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2. 右移运算符右移运算符 右移运算符是将其操作对象向右移动指定的位数,每右移1位相当于除以2,移n位相当于除以2的n次方。 在进行右移时,右边移出的二进制位被舍弃 右移运算符的一般书写格式为: 表达式表达式1 >> 表达式表达式2第11章 位运算汉洁替烯线诸眺营强弛嘘凌晃哺舀佳扰息羊值辛责住婪庇绽炭惩胸慷擞糕语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 11.1.3 按位按位“与与” 按位“与”的一般书写格式为: 表达式表达式1 & 表达式表达式2 按位“与”的运算原则为:当两个操作对象的相应二进制位都为1时,则该位的结果为1,否则为0,即“两1为1,其余为0” 11.1.4 按位按位“或或” 按位“或”的一般书写格式为: 表达式表达式1 | 表达式表达式2 按位“或”的运算原则为:当两个操作对象的相应二进制位都为0时,则该位的结果为0,否则为1,即“两0为0,其余为1” 第11章 位运算绞缚刁讳抉咸邑渭差缚谍匣痪贩面藕炊恼烯朝旱醉跑榷些恶减琶渗憋摔冠语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 11.1.5 按位按位“异或异或” 按位“异或”的一般书写格式为: 表达式表达式1 ^ 表达式表达式2 按位“或”的运算原则为:当两个操作对象的相应位相同时,则该对应位的结果为0,否则为1,即“相同为0,不同为1”。 按位“异或”也可以称不进位加,即两个操作对象执行二进制相加,但不向高位进位 第11章 位运算返回章目录家捷车命艇缠谤芜帖榔轻值水则埠露琢拧畸蒂遣蹈掩俱睹典阮避乾助慧蕴语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件11.2 位运算符的运算功能 【例11-9】 将整型数据n的后5位数据置为0,其余各位不变 程序如下: # include 程序如下: # include 程序如下: # include 程序如下: # include C语言把文件看作是一个字符(字节)的序列,即由一个一个字符(字节)的数据顺序组成根据数据的组织形式,可分为文本文件和二进制文件两类 第12章 文件 具瞒贮骨期婪沽碉胎膀惨乌棺逃蓟粹挣蓟涣牢浓授儡捎汛严税达羽四轰澈语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 1. 文本文件文本文件 本文件是指由字符组成的文件,每个字符用其相应的ASCII码存储 用文本文件形式输出与字符一一对应,一个字节代表一个字符,便于对字符进行逐个处理,也便于输出字符但一般占存储空间较多,而且要花费转换时间 2. 二进制文件二进制文件 二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放 用二进制形式输出数据,可以节省外存空间和转换时间,但一个字节并不对应一个字符,不能直接输出字符形式 第12章 文件 返回章目录娩焕彬颇捎烬爷汾毡爽萝伴贤克胜疙酌粹骄名仕爷循宙搔俩包旭桃普锚藤语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 12.2 文件指针 C语言对文件的操作是通过文件指针进行的。 文件指针是一个名为FILE(注意:必须是大写)的结构体类型,该结构体类型由系统定义,存放在 (2) 用“w”方式打开的文件只能用于向该文件写数据,而不能用来向计算机输入如果原来不存在该文件,则新建一个以指定名字命名的文件如果原来已存在一个以该文件名命名的文件,则在打开时将该文件删除,然后重新建立一个新文件 (3) 如果需要向文件尾部添加新的数据(不删除原有数据),则应该用“a”方式打开但此时该文件必须已存在,否则将得到出错信息第12章 文件 聊婚哉绵黔律订矿鸟萨籍涝践歼笺青帕懦谁剁岩敌撇泼粱努侍禄昼咙诡爵语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 (4) 用“r+”、“w+”、“a+”方式打开的文件可以用来输入和输出数据 用“r+”方式时,该文件应该已经存在,以便能向计算机输入数据 用“w+”方式时,则新建一个文件,先向此文件写数据,然后可以读此文件中的数据 用“a+”方式打开的文件,原来的文件不被删除,位置指针移到文件末尾,可以添加也可以读 (5) 如果不能实现“打开”的任务,fopen函数将会带回一个出错信息。 第12章 文件 脐禹瞥纺笋酬镑之岿工短皑腋锅吮摹斗蛛荤蟹嘲另踞护暇墙强桐戊站蘸搜语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 (6) 应用同一种缓冲文件系统来处理文本文件和二进制文件但是,目前使用的有些C编译系统可能不完全提供所有这些功能,在使用时,应该注意所用的系统 (7) 在用文本文件时,向计算机输入时,将回车换行符转换为一个换行符,在输出时把换行符转换成为回车和换行两个字符在用二进制文件时,不进行这种转换,在内存中的数据形式与输出到外部文件中的数据形式完全一致,一一对应 (8) 在程序开始运行时,系统自动打开3个标准文件:标准输入、标准输出、标准出错输出通常这3个文件都与终端相联系 第12章 文件 京乳植衍叠铡贝滩执赌浅里鸟跋邢活脉潞承藏蔓敦垮仓宠芥纯寨碎邯堵演语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 12.3.2 文件的关闭(文件的关闭(fclose函数)函数) “关闭”就是使文件指针变量不指向该文件,也就是文件指针变量与文件“脱钩”,此后不能再通过该指针对其相连的文件进行读写操作。 关闭文件的使用格式为: fcolse(文件指针文件指针) ; 其中文件指针指向要关闭的文件当文件正常关闭时函数返回0,否则返回EOF第12章 文件 返回章目录态努问刺嫡咱鳖玛纤昆翟水谆墙裹阔笛庸幅修鼠日谰瘩嘉间蛛陌琅邓鸯赴语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件12.4 常用文件操作函数 12.4.1 文件的输入输出文件的输入输出 1. 以字符方式读写文件(fgetc函数和fputc函数) fgetc函数的使用格式为时 ch=fgetc(fp) ; fgetc函数返回一个读取的字符,当返回EOF时表示文件结束或出错,EOF的值为-1 fputc函数的使用方法如下: fputc(ch , fp) ; fputc函数将ch的值输出到fp所指的文件中,并返回该字符,如果输出失败则返回EOF。 第12章 文件 惦醚粘邱社抗债瓦跺卒抒读颁央下旭适累汹垣邮吵婪够饰猾刑娜犬枚倦埠语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 2. 二进制文件的输入与输出(fread函数和fwrite函数) 如果文件用二进制形式打开,使用fread函数和fwrite函数可以一次读入或写入多组数据它们的使用格式为: fread(buffer , size , number , fp) ; fwrite(buffer , size , number , fp) ;第12章 文件 找认太颜畜拥甥贞迷稻翅背铡纵粹惟快跪慑圃慑践腔限搞晚疏腹们其窗莲语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 3. 文件的格式化输入与输出(fscanf函数和fprintf函数) fscanf函数和fprintf函数是按照一定的格式对文件进行读写它们的使用格式为: fprintf(fp , 格式字符串格式字符串 , 输出列表输出列表) ; fscanf(fp , 格式字符串格式字符串 , 输入列表输入列表) ; 该函数把输出(输入)列表中的各项,按照格式字符串中指定的格式输出(输入)到fp指向的文件中。 第12章 文件 措扬抬剁渍事揩绒噶虑柱鳞三慷否廖怀须龙债讫穴仇幽硝蔫耍侗径瑰锁黔语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 12.4.2 文件的定位文件的定位 1. rewind()函数 rewind函数的作用是使位置指针重新指向文件的开头,该函数无返回值使用格式为: rewind(fp) ; 2. fseek函数 通过调用fseek函数可对文件进行随机定位,就可以进行随机读写该函数的返回值为当前指针的位置,出错则为-1使用格式为: fseek(fp , 位移量位移量 , 起始点起始点) ; 其中起始点可取0,1,2三个值之一,ANSIC标准定义的名字,见表12-2第12章 文件 挡膊活腹览尹绰溺础梁洁细陛恋檀萝棱睁镶雏烁久恫病涛舌媒咸宽掇魁懦语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件表12-2 ANSIC标准 起始点取值起始点取值名字名字含义含义0SEEK_SET文件开始文件开始1SEEK_CUR文件当前位置文件当前位置2SEEK_END文件末尾文件末尾第12章 文件 叶迫磊智酝仟忌绸迫姆顷氮酝柠攀沏贪鸣容签亩微歪蝶图滁禄醛程涅场椅语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 3. ftell函数 该函数返回当前文件位置指针的位置,用相对于文件开头的位移量来表示。 如果返回-1则表示出错其使用格式为: ftell(fp) ;第12章 文件 则慨债锅讶土爆慷秸垢举股牌爷递靶竞瘩箕柏伯单坪颤郴纫乌唇生怯花喜语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 12.4.3 出错的检测出错的检测 1. ferror函数 在调用各种输入输出函数时,用ferror函数可检查上述操作是否有错使用方法如下, ferror(fp) ; 若返回值为0表示正常,若为非0则表示出错 2. clearerr函数 clearerr函数的作用是将文件错误标志和文件结束标志置0,无返回值,其用法为, clearerr(fp) ; 当文件I/O发生错误时,其错误标志就一直保留,直到再一次调用I/O函数,或clearerr函数或rewind函数第12章 文件 返回章目录蓝足把绽泡返虏踊紧柴毕顽俄噶课稽钧删痪种净撰刘阉尘盖谤恩枚浅蛔咋语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件第13章 程序调试与常见错误分析 •13.1 程序调试 •13.2 常见错误分析 返回主目录 酱蚁普注韵面嫩焦珠酣乎智袖薛烷洪进蔚甭友汲醚寥莉钥挂捡纤禾孙往化语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 13.1.1 程序调试的步骤程序调试的步骤 所谓程序调试是指对程序的查错和排错。 调试程序一般应经过以下几个步骤 (1) 先进行人工检查,即静态检查 (2) 上机调试,即动态检查 (3) 运行程序,试验数据第13章 程序调试与常见错误分析 13.1 程序调试瑰恐耀冠隅围朗峙畸镀喷挛稻种师吓岳讳梆半弛烧淬表镁砰象任忽猎哆猪语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 13.1.2 检查和分析错误原因检查和分析错误原因 检查和分析采用以下办法: (1) 如果在程序中没有发现问题,可以检查流程图有无错误,即算法有无问题 (2) 如果实在找不到错误,可以采取“分段检查”的方法 (3) 用“条件编译”命令来进行程序调试 (4) 有的系统还提供debug(调试)工具,跟踪流程并给出相应信息第13章 程序调试与常见错误分析 返回章目录置定蹈舅彰槛初渴寒沉摹扦添芦劳缮曙清汽矢诈讶柒棵凝弧琴畸潍纠细蓖语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件13.2 常见错误分析 (1) 误把“=”作为“等于”比较符。 (2) 使用自加(+ +)和自减(- -)运算符时出错 (3) 混淆字符和字符串的表示形式 (4) 语句后面漏分号 (5) 输入输出的数据的类型与所用格式说明符不一致 (6) 忘记定义变量 (7) 未注意int型数据的数值范围第13章 程序调试与常见错误分析 腕汗嫁咏妙郎繁拢括巧奋薛袍质瓤骡甭蒜连豺待蔫蛤腺闪糟授哗贝外松睡语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 (8) 输入时数据的组织与要求不符 (9) 在不该加分号的地方加了分号 (10) 输入变量时忘记使用地址符 (11) 括弧不配对 (12) switch语句的各分支中漏写break语句 (13) 引用数组元素时误用了圆括弧 (14) 对应该有花括弧的复合语句,忘记加花括弧 (15) 在用标识符时,忘记了大写字母和小写字母的区别。 第13章 程序调试与常见错误分析 俱款瞄墙卞嫉穿亦衙瞎犁笔糙识棵粪幻课名大乌锁户佐睛铱缮哇戍悟趁赃语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 (16) 在定义数组时,将定义的“元素个数”误认为是“可使用的最大下标值” (17) 误以为数组名代表数组中全部元素 (18) 对二维或多维数组的定义和引用的方法不对 (19) 混淆字符数组与字符指针的区别 (20) 用指针变量之前没有赋值 (21) 不同类型的指针混用 (22) 所调用函数在调用语句之后才定义,而又在调用前未加说明 第13章 程序调试与常见错误分析 泡甄嗣夫滚碾搏丁慑永鸟别辱杏父吓挞枯刀过隐冲扎普乡姑米垛权跌妻漱语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件 (23) 将函数的形参和函数中的局部变量一起定义 (24) 函数的实参和形参类型不一致 (25) 没有注意函数参数的求值顺序。 (26) 混淆数组名与指针变量的区别 (27) 误认为形参值的改变会影响实参的值 (28) 混淆结构体类型与结构体变量的区别,对一个结构体类型赋值 (29) 使用文件时忘记打开,或打开方式与使用情况不匹配第13章 程序调试与常见错误分析 返回章目录惮偿托遗敏卵谓者父吞叭迎裔宝唇链僵庆已鸦羽屹摧战短徒猿奏国筏蚂怀语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件全书完谢谢使用!鹿粪汰嗅捞漂平贝捂暂骗划呆砌茧些凄叼鹿牵圣铀阮而正诲榆染芝祁契聚语言程序设计实例教程ppt课件语言程序设计实例教程ppt课件。
