C程序设计(第二版)第4章

上传人:飞*** 文档编号:46118191 上传时间:2018-06-22 格式:PPT 页数:72 大小:423KB
返回 下载 相关 举报
C程序设计(第二版)第4章_第1页
第1页 / 共72页
C程序设计(第二版)第4章_第2页
第2页 / 共72页
C程序设计(第二版)第4章_第3页
第3页 / 共72页
C程序设计(第二版)第4章_第4页
第4页 / 共72页
C程序设计(第二版)第4章_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《C程序设计(第二版)第4章》由会员分享,可在线阅读,更多相关《C程序设计(第二版)第4章(72页珍藏版)》请在金锄头文库上搜索。

1、4.1 C语句概述 4.2 程序的三种基本结构 4.3 赋值语句 4.4 数据输入输出的概念及在语言中的实现 4.5 字符数据的输入输出 4.6 格式输入与输出 4.7 顺序结构程序设计举例 习题第4章 最简单的c程序设计顺序程序设计在上一章介绍了程序中用到的一些基本要素( 常量、变量、运算符、表达式等),它们是 构成程序的基本成分。在第1章中已经介绍 了几个简单的c程序。本章将介绍为编写简 单的程序所必需的一些内容。4.1 C语句概述和其他高级语言一样,c语言的语句用来向计算机系统 发出操作指令。一个语句经编译后产生若干条机器指 令。一个实际的程序应当包含若干语句。应当指出,c 语句都是用来

2、完成一定操作任务的。声明部分的内容 不应称为语句。如:int a;不是一个c语句,它不产生 机器操作,而只是对变量的定义。从第1章已知,一 个函数包含声明部分和执行部分,执行部分即由语句 组成。c程序结构可以用图4.1表示。即一个c程序可以 由若干个源程序文件(分别进行编译的文件模块)组成 ,一个源文件可以由若干个函数和预处理命令以及全 局变量声明部分组成(关于“全局变量”见第7章,“预编 译命令”见第8章),一个函数由数据定义部分和执行语 句组成。图4.1在第2章中已经说明,程序应该包括数据描述(由声 明部分来实现)和数据操作(由语句来实现)。数据 描述主要定义数据结构(用数据类型表示)和数

3、据 初值。数据操作的任务是对已提供的数据进行加 工。 C语句可以分为以下5类: (1) 控制语句,完成一定的控制功能。c只有9种控 制语句,它们是: if()else (条件语句) for() (循环语句) hile() (循环语句) dohile() (循环语句) continue (结束本次循环语句) break (中止执行switch或循环语句) sitch (多分支选择语句) goto (转向语句) return (从函数返回语句) 上面9种语句中的括号()表示其中是一个条件,表 示内嵌的语句。例如:“if()else”的具体语句 可以写成:if(xy) z=x;else z=y; (

4、2) 函数调用语句。由一次函数调用加一个分号构 成一个语句,例如:printf(“this is a c stateent “);(3) 表达式语句。 由一个表达式构成一个语句, 最典型的是,由赋值表达式构成一个赋值语句。a=3是一个赋值表达式,而a=3;是一个赋值语句。可以看到一个表达式的最后加一 个分号就成了一个语句。一个语句必须在最后出 现分号,分号是语句中不可缺少的一部分(而不像 pascal语言那样,分号只是语句间的分隔符号)。 例如:i=i+1 (是表达式,不是语句)i=i+1; (是语句)任何表达式都可以加上分号而成为语句,例如i+ ;是一语句,作用是使i值加1。又如x+y;也是

5、一 个语句,作用是完成x+y的操作,它是合法的, 但是并不把x+y的和赋给另一变量,所以它并无 实际意义。 表达式能构成语句是c语言的一个重要特色。其实“ 函数调用语句”也是属于表达式语句,因为函数 调用(如sin(x)也属于表达式的一种。只是为了便 于理解和使用,我们把“函数调用语句”和“表达 式语句”分开来说明。由于c程序中大多数语句是 表达式语句(包括函数调用语句),所以有人把c语 言称作“表达式语言”。(4) 空语句。下面是一个空语句:; 即只有一个分号的语句,它什么也不做。有时用来 做被转向点,或循环语句中的循环体(循环体是空 语句,表示循环体什么也不做)。 (5) 可以用 把一些语

6、句括起来成为复合语句, 又称分程序。如下面是一个复合语句。z=x+y;t=z/100;printf(“%f“,t);注意:复合语句中最后一个语句中最后的分号不能 忽略不写(这是和pascal不同的)。 C语言允许一行写几个语句,也允许一个语句拆开 写在几行上,书写格式无固定要求(fortran、 cobol有严格要求)。 4.2 程序的三种基本结构为了提高程序设计的质量和效率,现在普遍采用结 构化程序设计方法。结构化程序由若干个基本结 构组成。每一个基本结构可以包含 一个或若干个 语句。有三种基本结构: (1) 顺序结构,见图4.2。先执行a操作,再执行b操作, 两者是顺序执行的关系。图中(b

7、)是ns结构化流程 图(下同)。图4.2图4.3(2) 选择结构,见图4.3。p代表一个条件,当p条件成 立(或称为“真”)时执行a,否则执行b。注意,只能执 行a或b之一。两条路径汇合在一起然后出口。 (3) 循环结构,有两种循环结构: 当型循环结构,见图4.4。当p条件成立(“真”)时, 反复执行a操作。直到p为“假”时才停止循环。 直到型循环结构,见图4.5。先执行a操作,再判断p 是否为“假”,若p为“假”,再执行a,如此反复,直到p 为“真”为止。图4.4图4.5由选择结构可以派生出另一种基本结构: 多分支选 择结构,见图4.6。 根据k的值(k1,k2,kn)不同而决定执行a1,a

8、2,an 之一。 已经证明,由以上基本结构组成的程序能处理任何 复杂的问题。上面图4.2图4.7中方框中的 a,b,a1,an等可以是一个简单的语句,也可以又是 一个基本结构。例如,图4.7是一个顺序结构,它由 两个操作顺序组成。虚线框内是一个当型循环结 构,可以用“b”表示,因此图4.7就可以理解为图 4.2(a)所示的顺序结构。图4.6 图4.7关于三种基本结构的特征以及结构化程序设计方法 ,读者可能已在学习其他高级语言程序设计时学习 过,在此不再重复。只是应当强调说明,在今后的 程序设计中应当采用结构化程序设计方法。在本 章中,我们将介绍几种最基本的语句,以及用它们 构成顺序结构的程序。

9、在第4、第5章介绍选择结 构和循环结构的程序设计。4.3 赋值语句前已介绍,赋值语句是由赋值表达式加上一个分号 构成。由于赋值语句应用十分普遍,所以专门再 讨论一下。 C语言的赋值语句具有其他高级语言的赋值语句的 一切特点和功能。但也应当注意到它们的不同: (1) C语言中的赋值号“=”是一个运算符,在其他大 多数语言中赋值号不是运算符。 (2) 关于赋值表达式与赋值语句的概念,其他多数 高级语言没有“赋值表达式”一概念。作为赋值表 达式可以包括在其他表达式之中,例如:if(a=b)0)t=a;按语法规定if后面的( )内是一个条件,例如可以 是:“if(x0)”。现在在x的位置上换上一个赋

10、值表达式“a=b”,其作用是:先进行赋值运算(将 b的值赋给a),然后判断a是否大于0,如大于0, 执行t=a。在if语句中的“a=b”不是赋值语句而是 赋值表达式,这样写是合法的。如果写成if(a=b ;)0)t=a;就错了。在if的条件中不能包含赋值 语句。由此可以看到,c把赋值语句和赋值表达 式区别开来,增加了表达式的种类,使表达式的 应用几乎“无孔不入”,能实现其他语言中难以实 现的功能.4.4 数据输入输出的概念及在C语言中的实现 (1) 所谓输入输出是以计算机主机为主体而言的。从 计算机向外部输出设备(如显示屏、打印机、磁盘 等)输出数据称为“输出” ,从外部向输入设备(如 键盘、

11、磁盘、光盘、扫描仪等)输入数据称为“输 入”。 (2) C语言本身不提供输入输出语句,输入和输出操 作是由函数来实现的。在c标准函数库中提供了一 些输入输出函数,例如,printf函数和scanf函数。 读者在使用它们时,千万不要误认为它们是C语言 提供的“输入输出语句”。printf和scanf不是C语言 的关键字,而只是函数的名字。实际上完全可以 不用printf和scanf这两个名字,而另外编两个输入输出函数, 用其他的函数名。C提供的函数以 库的形式存放在系统中,它们不是c语言文本中的组 成部分。 在第1章中曾介绍,不把输入输出作为C语言提供的语 句的目的是使C语言编译系统简单,因为将

12、语句翻译 成二进制的指令是在编译阶段完成的,没有输入输出 语句就可以避免在编译阶段处理与硬件有关的问题, 可以使编译系统简化,而且通用性强,可移植性好, 对各种型号的计算机都适用,便于在各种计算机上实 现。各种版本的C语言函数库是各计算机厂商(或软 件开发公司)针对某一类型计算机的情况编写的,并 且已编译成目标文件(.obj文件)。它们在连接阶段与 由源程序经编译而得到的目标文件相连接,生成一 个可执行的目标程序。如果在源程序中有printf函数,在编译时并不把它翻译成目标指令,而是在 执行阶段中调用已被连接的函数库中的printf函 数。由于c编译系统与c函数库是分别进行设计的 ,因此不同的

13、计算机系统所提供函数的数量、名 字和功能是不完全相同的。不过,有些通用的函 数(如printf和scanf等),各种计算机系统都提供 ,成为各种计算机系统的标准函数。c语言函数 库中有一批“标准输入输出函数” ,它是以标准的 输入输出设备(一般为终端设备)为输入输出对象 的。其中有:putchar(输出字符),getchar(输入 字符),printf(格式输出),scanf(格式输入), puts(输出字符串),gets(输入字符串)。在本章中 介绍前面4个最基本的输入输出函数。(3) 在使用c语言库函数时,要用预编译命令“ include”将有关的“头文件” 包括到用户源文件中。在 头文件

14、中包含了与用到的函数有关的信息。例如使用 标准输入输出库函数时,要用到“stdio.h”文件。文件 后缀“h” 是head的缩写,#include命令都是放在程序 的开头,因此这类文件被称为“头文件” 。在调用标 准输入输出库函数时,文件开头应有以下预编译命令 : #include 或 #include “studio.h“ studioh是standard input putchar(n);putchar(b);putchar(n); putchar(c); putchar(n);则输出结果为:boy也可以输出其他转义字符,如:putchar(101)(输出字符a)putchar() (输出

15、单引号字符)putchar(015) (输出回车,不换行,使输出 的当前位置移到本行开头)4.5.2 getchar函数(字符输入函数) 此函数的作用是从终端(或系统隐含指定的输入设 备)输入一个字符。getchar函数没有参数,其一 般形式为 getchar()函数的值就是从输入设备得到的字符。例如: 例4.2输入单个字符 #include main()charc;c=getchar();putchar(c);在运行时,如果从键盘输入字符a并按回车键,就会在屏 幕上看到输出的字符a。a (输入a后,按“回车”键,字 符才送到内存)a (输出变量c的值a) 请注意,getchar()只能接收一个字符。getchar函数得到的 字符可以赋给一个字符变量或整型变量,也可以不赋给 任何变量,作为表达式的一部分。例如,例4.2第4、5行 可以用下面一行代替:putchar(getchar(); 因为getchar()的值为a,因此putchar函数输出a。也可以 用printf函数输出: printf(”%c“,getchar();请不要忘记,如果在一个函数中( 今为main函数)要调用getchar函数,应该在该函数的前面 (或本文件开头)加上“包含命令”#include 4.6.1 printf函数(格式输出函数

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 其它考试类文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号