C语言实用手册速查.doc_第1页
C语言实用手册速查.doc_第2页
C语言实用手册速查.doc_第3页
C语言实用手册速查.doc_第4页
C语言实用手册速查.doc_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章 语言的特点及上机指导. 语言的特点简洁、紧凑,使用方便、灵活,易于学习和应用。语言是面向结构化程序设计的语言。允许直接对位、字节、和地址进行操作。运算符及数据类型(结构)丰富。语言生成的目标代码质量高,可移植性好。. 程序的上机步骤()在UNIX操作系统下运行C程序的步骤:用编辑程序(如UNIX系统的广西行编辑程序ed,或屏幕编辑程序vi)将源程序输入计算机,经修改后存入文件系统(源程序的后辍一般为“.c”)。编译。调用编译程序cc对源文件进行编译:cc f.c (f.c为要编译的文件)连接。将目标程序的库函数或其它目标程序连接成可执行的目标程序。在UNIX系统下,连接是由cc自动完成的。最后得到的可执行目标文件名由系统自动确定为a.out。若想指定文件名在编译时可打入命令:cc o f.out f.c执行程序。输入可执行目标文件名后回车即可。以上过程可用下图表示: 开 始 编 辑 源程序 f.c编 译 目标程序有错? f.c 无连 接 库函数 可执行 和其它目 目标程序 标程序a.out 执 行结果正确?结 束()、在DOS下用MS .编译程序运行程序的步骤:编辑源程序。可用行编辑程序EDLIN或WORDSTAR。编译。要经过道编译,或称次扫描。假设文件名为 .则编译命令为:cc1 f.c (第一次,作用为预处理)cc2 f.c (第二次,语法分析)cc3 f.c (第三次,编译)cc4 f.c (第四次,优化编译)连接。将编译好的目标文件同库函数连接起来。最简单命令为:Link f,cslib注:cslib是系统库(c system library)的缩写。链接成功后得到的可执行文件名自动定为f.exe(文件名与源文件名相同,后缀改为:.exe)。执行程序。只需输入目标文件名: f ()用 urbo 运行程序的步骤:先将装入磁盘。调用urbo 程序:tc 屏幕顶部出现一排“命令”行菜单:FILE EDIT RUN COMPILE PROJECT OPTIONS DEBUG用光标键来选择各菜单项进行相应操作。编辑源文件。根据需要输入或修改源程序。编译源程序。按“F9”键即可进行编译、连接,并在屏幕上显示有无错误和有几个错误。根据此信息修改源程序,然后再重复此项操作。执行程序。按“F10”键,屏幕又出现上述菜单,选中RUN即可执行程序。可用“Alt”和“X”键脱离Turbo ,回到操作命令状态,此时可用系统命令显示源程序和运行程序: TYPE f.c(列出源程序清单) f (执行目标程序f.exe)第二章 数据类型. 语言的基本符号、基本符号:26个英文字母(大小写表示分别表示两个不同的字符)10个阿拉伯数字()其它特殊符号,以运算符为主(、*、!等)、标识符()基本概念:在语言中变量名、数组名、函数名和其它由用户自定义的数据类型名,被统称为标识符。()标识符的书写规则:只能由英文字母、数字和下划线构成;必须以字母或下划线开头;不能以保留字作为标识符。、函数语言的源程序由一个或多个函数组成,每个函数完成一种指定的操作,所以有人又把语言称为函数式语言。构成语言的函数必须有一个主函数(即main函数),在语言的源程序结构中不可缺少的语句是“;”。. 语言的数据类型、概述一个程序应包括两个方面的主要内容:()数据的描述;()操作步骤,即动作的描述。可以这样表示: 程序算法数据结构程序设计方法语言工具、数据类型整型基本类型 字符型 单精度型 实型(浮点型) 枚举类型 双精度型 数组类型 数据类型 构造类型 结构体类型 共用体类型 指针类型空类型. 常量和符号常量、基本概念:在程序运行过程中,其值不能被改变的量称为常量。可以用一个标识符代表一个常量,这种用一个标识符代表一个常量的,称为符号常量。即标识符形式的常量。、符号常量的特点:一是符号常量的实际值易于修改;二是符号常量的意义比较明确。、关于符号常量的说明:符号常量在程序中用define命令行定义,常量名后跟它代表的常量;符号常量的值在其作用域内不能改变,也不能再被赋值;习惯上符号常量名用大写,变量用小写,以示区别。. 常量的类型常量的类型有:整型常量、实型常量、字符型常量和字符串常量四种。、整型常量()概述整型常量即整常数。整常数可用以下三种形式表示:十进制整数。八进制整数。以开头的数是八进制数。如011,代表八进制数11。十六进制整数:以0x开头的数。如0x123,代表16进制数123 。()整型常量的类型int型:其值在3276732768范围内。可赋给int型和long int型变量。long int型:其值范围在21474836482147483647内。short int型:范围同int型。一个int型的常量同时也是一个short int型常量。注意:一个整型常量可以赋给一个长度不小于其长度的整型变量。在一个整常量后面加一个字母l或L,则认为是long int型常量。这往往用于函数调用中。、 实型常量又叫浮点数。有两种表示形式:十进制数形式。由数字和小数点组成。 (424也是一个常量)指数形式:如123e3或123E3都代表123103。应注意:字母e(或E)之前必须有数字,且e后面指数必须为整数,如2.1e3.5、.e3e等都不是合法的指数形式。、字符型常量()概述字符型常量是用单引号括起来的一个字符。如A、a、?等。注意:A和a是不同的常量。还允许用一种特殊的字符常量,就是以一个“”开头的字符序列。这些字符通常是一些转义字符,如:101(101为ASCII码(八进制)代表字符A 。012代表“换行”。代表“回车”。字符常量一般用于替换操作。由预处理命令(Define)定义,其命令行一般放在源程序中最前面部分。表: 常用的特殊字符(“转义字符”) 字符形式功 能 换行 横向跳格(即跳到下一个输出区) 竖向跳格 退格 回车 走纸换页 反斜杠字符“” 单引号(撇号)字符 ddd 到位进制数所代表的字符 xhh 到位16进制数所代表的字符 说明:“转义字符”以反斜杠打头,用来输出一些无法象一般字符那样明确写出来的字符。()字符型数据在内存中的存储形式及使用方法将一个字符常量放到一个字符变量中,实际上并不是把字符本身放到内存单元中,而是将该字符的相应的ASCII码放到存储单元中。它的存储形式与整数的存储形式相类似。所以字符型数据和整整数据之间可以通用。字符型数据既可以以字符形式输出,也可以以整数形式输出。也可以对字符型数据进行算术运算。字符数据与整型数据可以相互赋值。如:int i;char c;i a;c97;注意:有些系统(如PDP,VAX,Turbo )将字符变量所占用的字节的最高位当成符号位,即把字符处理成带符号的整数,这样输出结果与人们习惯不一致,容易出错。、 字符串常量字符串常量是用一对双引号括起来的字符序列。如:“How do you do”,“CHINA”,“”,“12345”。规定在每一个字符串的结尾处加一个“字符串结束标志00是一个ASCII码为0的字符,即“空操作字符”,它不引起任何控制动作,也不是一个可显示的字符。字符串的长度比它实际字符的个数多一(有一个结束标志0,该字符在字符串输出时并不输出)。需要用字符数组来存放。. 变量一、基本概念规定在程序中所有用到的变量都必须在程序中指定其类型,即“定义”。对变量的定义,一般是放在一个函数的开头部分。变量定义的一般形式为:变量类型 变量名变量可以一次性定义一个也可以一次性定义多个,但定义多个变量时,只能同时定义同种类型的变量,变量间用豆号隔开。如:定义两个整型变量: int abj,Abj; 说明:变量名的命名规则与标识符的一样。习惯上变量名用小写字母。二、变量的类型 变量可分为整型、实型、字符型等。、 整型变量()整型变量的分类基本型:以int表示。短整型:以short int表示。或short表示。长整型:以long int表示。或以long表示。无符号型:存储单元中全部二进位用作存放数本身,而不包括符号。又分为无符号整型、无符号短整型、无符号长整型。()各种类型(整型)的数据范围见下表: 表类 型所占位数数 的 范 围Int163276832767 即215 (2151)short int16同上Long int3221474836482147483647 即31 (311)unsigned int16065535 即0 (2151)unsigned short16同上 即0 (2151)unsigned long32042894967295 即0 (311)、 实型变量实型变量分为单精度(float型)和双精度(double型)两类。在一般系统中,一个float型数据在内存中占个字节,一个double型数据占个字节。float型实数提供位有效数字,double型提供15 16位有效数字,数值的范围随机器系统而异。在IBM PC MSC中,单精度实数的数值范围约为1038 1038,双精度实数范围约为10308 10308。、 字符变量字符型变量用来存放字符型常量,一个字符变量只能放一个字符。字符型变量用“char”来定义,一般以一个字节来存放一个字符变量,或者说一个字符变量在内存中占一个字节。字符变量可以接收整型数据。三、 变量赋初值 程序中需要对一些变量预先设置初值。定义变量时赋初值: int zjj,kd;先定义然后再赋初值:int zjj;zjj;注意:定义变量时不能以连等的形式给多个变量赋同一值。也不能同时在定义一个变量后,接着给该变量赋值。如:int j,j;以及int ak1ak2ak3;都是错误的。初始化不是在编译阶段完成的(静态存储变量和外部变量的初始化除外),而是在程序运行时执行本函数时赋以初值的。相当于有一个赋值语句。例如: int ;相当于:int ;= ;. 各类数值型数据间的混合运算double float高 longunsigned低 int char,short整型、单精度型、双精度型数据可以混合运算。整型、实型、字符型数据间也可以混合运算。如: 101.58765.1234是合法的。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则如右图。转换过程是由系统自动进行的。第三章 运算符与表达式语言的运算符范围很宽,把除了控制语句和输入输出以外的几乎所有的基本操作都作为运算符处理。. 算术运算符及算术表达式种类运算符含 义备 注结合性算术运算符的基本类型 加法运算或正值运算自左自右结合即左结合性 减法运算或负值运算和 乘法运算符和除法运算符两个整数相除结果为整数 模运算或称求余运算要求其两侧均为整型量。、基本的算术运算符(见下表)、算术表达式用算术运算符和括号将运算对象(也称操作数)连接起来的、符合语法规则的式子,称算术表达式。运算对象包括常量、变量、函数等。说明:如果一个运算符的两侧的数据类型不同,则先自动进行类型转换,使二者具有同一种类型,然后进行运算。可以利用强制类型转换运算符将一个表达式转换成所需类型。如: (int)(x+y) (将的值转换成整型)在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。在进行除法运算时如果两个整数中有一个为负值,则舍入的方向是不固定的。如:53在有的机器上得到的结果为,有的机器上则给出结果。所有实数都按double型进行运算。、自增、自减运算符作用是使变量的值增或减,如: , (在使用之前,先使的值加(减) , (在使用之后,使的值加(减)说明:自增运算符和自减运算符,只能用于变量,不能用于常量或表达式。和的结合方向为“自右自左”(指变量的左边还有另外同级运算符时)。自增(减)运算符常用于循环语句中使循环变量自动加。也用于指针变量,使指针指向下一个地址。使用和时会出现一些人们“想不到”的副作用,初学者要慎用。、有关表达式使用中的问题说明:在表达式中包含自加或自减运算时,很容易出错。如:若则表达式()()()的值是(Turbo 和MS 系统),然后自加变为。再如:()()()先对自加得,然后进行运算,故得18。有的运算符由两个字符组成时,在表达式中应尽可能多地自左而右将若干个字符组成一个运算符。如:应结合成:()在调用函数时,实参数的求值顺序若有上述类似问题,标准并无统一规定。如: printf(”d,d”,);有的系统中从左至右求值,输出“,”。而在多数系统中对函数参数的求值顺序是自右而,所以上面函数中要输出两个表达式的值,先计算出的值再计算的值。 . 赋值运算符和赋值表达式、赋值运算符赋值符号“”就是赋值运算符,它的作用是将一个数据赋给一个变量。扩展的赋值运算符(复合的赋值运算符):在赋值符之前加上其它运算符构成。类 型示 例说 明等价于: 等价于:() 等价于:()、&、说明:如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时要进行类型转换。转换后的类型与变量一致。字符型数据赋给整型变量时,若系统将将字符处理为无符号的量或对unsigned char型变量赋值,则将字符的位放到整型变量低位,高位补零。若系统将字符处理为带符号的量,当字符最高位时,则整型变量高位补;反之则高位补。这称为“符号扩展”,其目的是使数值保持不变。将带符号的整型数据(int型)赋给long int型变量时,要进行符号扩展,若int型为正值(符号位为),则变量的高16位补;若为负值(符号位为),则高16位补,将整型数的低16位送到long int型低16位中。反之,若将一个long int型数据赋给一个int型变量,只将数据低16位原封不动送到整型变量。将unsigned int型数据赋给long int型变量时,不存在符号扩展问题,只需将高位补即可。将一个unsigned类型数据赋给一个占字节数相同的整型变量,将其内容原样送入,但如果数据范围超过相应整型的范围,则会出现数据错误。如: unsigned int 65535;int ;输出后的值为。因为的值超出了的范围,使得的值最高位为(符号位)。将非unsigned型数据赋给长度相同的unsigned型变量,也是原样照赋。、赋值表达式由一个赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”。赋值表达式的一般形式为: 变量 赋值运算符 表达式说明:上述一般形式中的“表达式”又可以是一个赋值表达式。赋值表达式也可以包含复合的赋值运算符。如: 些表达式的的求解顺序为自右而左。若的值为12,则结果为264。赋值表达式不仅可以出现赋值语句中而且可以出现在其它语句中。. 逗号运算符和逗号表达式、逗号运算符“,”是逗号运算符,用以连接两个表达式。它是所有运算符中级别最低的。逗号运算符又称为“顺序求值运算符”。注意:并不是任何地方出现的逗号都是作为逗号运算符。如函数间的逗号。、逗号表达式概念:用逗号连接起来的两个表达式叫逗号表达式。其一般形式为: 表达式,表达式逗号表达式的求解过程:先求表达式的值,再求表达式的值。整个逗号表达式的值是表达式的值。如,逗号表达式:,的值为60。、应注意的问题并不是任何地方出现的逗号都是作为逗号运算符。如函数的参数间的逗号: printf(”%d,%d,%d”,a,b,c);上行中的“,”并不是一个表达式。如果改为: printf(”,”,(,),)则“(,)”是一个逗号表达式,它的值等于的值。一个逗号表达式又可以和另外一个表达式组成一个新的逗号表达式。如: (,),其值为。逗号表达式的一般形式可以扩展为: 表达式,表达式,表达式,表达式它的值为表达式的值。使用逗号表达式的目的是想分别得到各个表达式的值。常用于循环语句中。. 关系运算符和关系表达式、关系运算符(见下表)种 类运算符含 义优先级备 注关系运算符、 相同、高、 等于运算符相同、低判断两个表达式是否相等!不等于运算符注:关系运算符低于算术运算符,而高于赋值运算符。、关系表达式用关系运算符将两个表达式连接起来的式子,叫关系表达式。关系表达式的值是一个逻辑值。语言没有逻辑型数据,以“”代表“真”,“”代表“假”。.逻辑运算符和逻辑表达式、逻辑运算符运算符含 义说 明优先级! 逻辑非运算相当于其它语言的NOT(反)、二目运算符高& 逻辑与运算相当于其它语言的AND(积)、一目运算符低 逻辑或运算相当于其它语言的OR(和)、二目运算符最低注:二目运算符需要两个运算量。如:()&()。 “&、”的优先级低于关系运算符,而“!”高于算术运算符。、逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来就是逻辑表达式。在判断一个量是否是“真”时,以代表“假”,以非代表“真、。即将一个非零的的数值认作为“真”。说明:逻辑运算符两侧的运算对象不但可以是整数,也可以是任何类型的数据。但系统最终以和非来它们属于“真”或“假”。在逻辑表达式的求解中,并不是所有逻辑运算行都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。如: &只有为“真”时,才需要判别的值,只有和都为真时才需要判别的值。. 条件运算符和条件表达式、条件运算符:? :条件运算符是三目运算符,要求有三个操作对象。其结合方向为“自右至左”型。优先于赋值运算符,低于关系运算符和算术运算符。、条件表达式一般形式为: 表达式?表达式:表达式说明:条件运算符的执行顺序:先求解表达式,若表达式为真则求解表达式,些时表达式的值就作为整个条件表达式的值。若表达式的值为假,则求解表达式3,表达式的值就是整个条件表达式的值。条件表达式不能取代一般的if语句,只有在if语句中内嵌的语句为赋值语句(且两个分支都给同一个变量赋值)时才能代替if语句。如: if () printf(“%d”,a); else printf(“%d”,b);无法用一个条件表达式代替。但可以用下面语句代替: printf(“%d”,?);条件表达式中,表达式的类型可以与表达式和表达式的类型不同。附 语言运算符的优先级和结合性优先级运算符含 义要求运算对象结合方向( )圆括号自左至右 下标运算符指向结构体成员运算符结构体成员运算符!(单目运算符)自右至左按位取反运算符、负号运算符(类型)类型转换运算符批运算符&地址与运算符Sizeof长度运算符乘法运算符(双目运算符)自左至右除法运算符求模(余)运算符续上表优先级运算符含 义要求运算对象结合方向、加、减法运算符自左至右左移运算符自左至右右移运算符 关系运算符自左至右、!等于、不等于运算符自左至右&按位于运算符按位异或运算符自左至右10按位或运算符自左至右11&逻辑与运算符自左至右12逻辑或运算符自左至右13? :条件运算符3自右至左14、&、赋值运算符2自右至左15,逗号(顺序求值)运算符自左至右第四章 数据的输入与输出语言本身不提供输入输出语句,输入和输出操作是由函数来实现的。. 数据的输出“数据输出”一般是指把程序的执行结果或提示语句输出到计算机的屏幕上。、putchar函数(字符输出函数)其作用是向终端输出一个字符。如: putchar(c);输出字符变量的值。可以是字符型变量或整型变量。、printf函数(格式经输出函数)其作用是向终端(或系统隐含指定的输出设备)输出若干个任意类型的数据。()printf函数的一般格式为: printf(格式控制,输出表列);或 printf(“输出格式”,输出项列表);说明:“格式控制”是用双引号括起来的字符串,也称“转换控制字符串”,它包括两种信息:一是格式说明:由“”和格式字符组成,其作用是将输出的数据转换为指定的格式。格式说明总是由“”字符开始,以一个格式字符结束。格式说明间可插入普通字符。二是普通字符:即需要原样输出的字符。“输出表列”是需要输出的一些数据,可以是表达式。如: printf(” ”,);输出表列格式说明 printf(” ”,) 普通字符“格式控制”字符串和“输出表列”实际上都是函数的参数。可以表示为: printf(参数,参数,参数,参数)printf函数的功能是将参数按参数给定的格式输出。 ()格式字符对于不同类型的数据用不同的格式字符。有以下类型: 表. 格式字符格式说明作 用输出有符号的10进制整数(正数不输出符号), 输出无符号10进制整数以无符号进制整数形式输出(不输出前导符)以无符号十六进制整数形式输出(不输出前导符X续上表 格式说明作 用以字符形式输出,只输出一个字符输出字符串以标准指数形式输出实型数,数字部分位小数以小数形式输出实型数,隐含输出位小数选用或格式中输出宽度较短的一种,不输出无意义的0输出百分号表. print函数附加格式说明字符字符说 明字母用于长整型整数的输出,可加在格式符、前面(正整数)指定输出数据的最小宽度.对实数,输出位小数;对字符串,表示截取的字符个数输出的数字或字符在域内向左靠、对使用printf函数的几点说明:有些系统要求格式字符要用小写字母,如不能写成。可以在该函数中的“格式控制”字符串内包含“转义字符”。如“”“t”等。一个格式说明总是以“”开头,中间可以插入附加格式字符(修饰符)如: printf(”cffss”,);其中“、”格式字符,其它为原样输出的普通字符。不同的系统在实现格式输出时,输出结果可能会有些小的差别,如用格式符输出实数时,有些系统输出的指数部分为位(如02)而不是位(如002),前面的数字部分为位小数而不是位等。. 数据的输入1、getchar函数(字符输入函数)其作用是从终端(或系统隐含指定的输入设备)输入一个字符。该函数无参数,其一般形式为: getchar()函数的值就是从输入设备得到的字符。注意:getchar( )函数只能接收一个字符。它所接收的字符可以赋给一个字符变量或整型变量,也可以不赋给任何一个变量,作为表达式的一部分。在一个函数中要用getchar函数,应该在函数的前面(或文本开头)用 include “stdio.h”、scanf函数(格式输入函数)可以用来输入任何类型的多个数据。()一般形式 scanf(格式控制,地址表列);“格式控制”的含义同printf函数,由格式说明符和其它字符组成。“地址表列”是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。()格式说明以开始,以一个格式字符结束,中间可以插入附加的字符。表. scanf函数的格式字符格式字符作 用输入10进制整数 输入进制整数输入16进制整数输入单个字符用来输入字符串,将字符串送到一个字符数组中,在输入时以非空白字符开始,以第一个空白字符结束。字符串以串结束樗作为其最后一个字符。以标准指数形式输出实型数,数字部分位小数以小数形式输出实型数,隐含输出位小数表.4 scanf函数附加的格式说明字符字符说 明字母用于输入长整型数据(加在格式字符、前面);用于输入double型数据(加在格式字符f、e前)h用于输入短整型数据(加在格式字符、前面)域宽(一正整数)指定输入数据所占宽度(列数)表示本输入项在读入后不赋给相应的变量。说明:标准在scanf中不使用u说明符,对unsigned型数据,以d、格式输入.可以指定输入数据所占列数,系统自动按它截取所需数据。如:scanf(”3d3d”, &a,&b);输入 12345系统自动将123赋给,456赋给。也可用于字符型scanf(”3c”, &ch);输入个字符把第一个赋给ch,列如输入abc,ch得到字符a。后面的“、附加说明符,用来表示跳过它相应的数据。如 scnaf(2d 3d 2d,&a,&b);如果输入如下信息:12 345 67将12赋给a,67赋给b。第二个数据“345”被跳过不赋给任何变量。在利用现成的一批数据时,有时不需要其中某些数据,可用此法“跳过”它们。输入数据时不能规定精度,例如scanf(7.2f,&a);是不合法的,不能企图输入以下信息而使a的值为12345.67。1234567()scanf函数执行中应注意的问题scanf函数中的“格式控制”后面应当是变量地址,而不应是变量名。如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。如scanf(”d ,”, &a,&b);输入时应用如下形式:, (注意后面的逗号应输入)在用“c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入。在输入数据时,遇以下情况时该数据认为结束:、遇空格,或按“回车”或“跳格”键。、遇宽度结束,如“3d”,只取列。、遇非法输入。即数据中含有与格式说明不相符的字符或其它类型数据。输入项是字符数组名时,不要再加地址符&.第五章 语言程序的三种基本结构. 概述、算法是为了解决一个问题而采取的确定的有限的步骤。这些步骤是计算机能完成的。编制计算机各种操作步骤的过程,叫做算法。、流程图是描述算法的工具。其好处是:用图形来来表示流程,形象直观,各种操作一目了然,而且不会产生“歧义性”。 起止框:表示算法的开始和结束。 一般处理框:主要用来表示“赋值”、“加减乘除”等操作。 判断框:用来根据指定的条件决定执行几条路径中的某一条。 输入输出框:表示输入输出操作。 流程线:表明程序流程的方向。 、结构化程序设计诞生于19世纪60年代。其要点是:要求程序清晰、可读性强要求程序设计者按一定规范编写程序,而不能随心所欲地设计程序。结构化程序设计方法规定了几种具有良好特性的“基本结构”,用它们作为构成程序的基本单元。“基本结构”应具有以下特点:、只有一个入口;、只有一个出口;、没有永远执行不到的语句;、没有死循环。程序开发者应当采取“自顶向下,逐步细化和模块化的方法。. 程序的三种基本结构、三种基本结构()顺序结构是最常用的一种程序结构,它的特点是:程序按语句从上到下的排列顺序依次执行,每条语句必须执行且只能执行一次。没有执行不到或执行多次的语句。()选择结构特点:程序的流程是由多条支路构成的,在程序的一次执行过程中,根据不同的情况,只有一条支路被选中执行,而其它支路上的语句被直接跳过。由选择结构可以派生出另一种基本结构:多分支选择结构。选择结构由if语句和switch语句来实现。()循环结构由while语句、do while语句、for语句和goto.if语句来实现。可分为:()当型循环结构:当条件为“真”时反复执行某一部分语句(即循环体)。()直到型循环结构:条件为“假”时反复执行某一部分语句。、if语句if语句的三种形式:() if (表达式) 语句 如:if () printf(d,);() if (表达式) 语句 else 语句 如:if () printf(d,); else printf(d,);() if (表达式) 语句else if (表达式) 语句else if (表达式) 语句else if (表达式) 语句else 语句说明:if后面的表达式一般为逻辑表达式或关系表达式。还可是任意的数值类型。如:if (a) printf(d,a); 是合法的。在第、种形式的if语句中,每个else前面有一分号,整个语句结束处有一分号。else语句不能作为b子句单独使用,它是if语句的一部分,必须与if语句配对使用。在if语句和else后面可以含一个或多个内嵌的操作语句。有多个语句时要用“ ”括起来成为一个复合语句。“ ”外面不需要再加分号。复合语句是由一对花括号包围起来的一条或多条语句。if语句后面的表达式要用“()”括起来。if语句可以嵌套使用,嵌套后从最内层开始,else子句总是与它上面最近的(未配对的)if配对。若if与else的数目不一样,为实现程序设计者的企图,可以加花括弧来确定配对关系。、switch语句多分支选择语句。()一般形式switch(表达式) case 常量表达式:语句 case 常量表达式:语句case 常量表达式:语句default : 语句说明:switch后面的表达式,可以是整型、字符型,也可以是枚举型。而新的ANSJ标准允许上述表达式case常量表达式为任何类型。每个case的常量表达式的值必须互不相同。各个case的出现次序不影响执行结果。执行完一个case后面的语句后,执行下一个case 语句。“case 常量表达式”只起语句标号作用,并不作为条件判断。在执行switch语句时,根据其后的表达式的值找到匹配的入口(与表达式的值相等的常量表达式所在的case语句)标号,就从此标号开始执行下去,不再进行判断。用break语句来终止switch语句的执行,即跳出switch结构。多个case可以共用一组执行语句,如: case : case : case :printf(60n);break; ()工作过程:是 表达式常量表达式 语句序列1是 否 表达式常量表达式 语句序列是 否 表达式常量表达式 语句序列是 否 break语句表达式常量表达式 语句序列 否 语句序列 、goto语句 无条件转向语句()一般形式: goto 语句标号 说明:“语句标号”用标识符表示,其命名规则与变量名相同。()用途与if语句一起构成循环结构;从循环体中跳转到循环体外。只是需要从多层循环的内层跳到外层循环外时才使用。但是这种用法不符合结构化原则,一般不宜采用,只有在不得已时(能大大提高效率)才用。、while语句用来实现“当型”循环结构。()一般形式 while (表达式) 语句()特点:先判断表达式,后执行语句(条件成立一直执行)。()应注意的问题:循环体如果包含一个以上的语句,应该用花括号括起来,以复合语句的形式出现。否则只执行到第一个分号处。在循环体中应有使循环趋于结束的语句(即循环控制变量)。对于循环控制变量:首先要对其赋初值,其次要写入正确的循环条件;最后要对控制变量进行更新、调整。、dowhile语句用来实现“直到型”循环结构。即一直做某事,直到不满足条件为止。()一般形式 do 语句; while (表达式);()特点:先执行语句,后判断表达式。不管条件是真还是假,其循环体都要执行一次。表达式的值为时循环结束。do while结构可以转换成while结构。说明:do while语句常用在需要至少执行一次循环体的地方。、for语句不仅可以用于循环次数已定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况。使用最灵活,完全可以代替while语句。()一般形式: for(表达式;表达式;表达式) 语句;可理解为如下形式: for(循环变量赋初值;循环条件;循环变量增值) 语句;真()执行过程: 表达式 表达式 循环体 表达式()对for语句的几点说明:for语句一般形式中的“表达式”可以省略,此时应在for语句之前给循环变量赋初值。注意:省略表达式时其后的分号不能省略。如果表达式省略,即不判断循环条件,循环将无终止地进行下去。表达式也可省略,但此时程序设计者应另外设法保证循环正常结束。可以省略表达式和表达式,只有表达式。三个表达式都可省略。此时循环无终止地执行。表达式可以是循环变量赋初值的赋值表达式,也可以是与循环变量无关的其它表达式。表达式和表达式还可以是逗号表达式。表达式一般是关系表达式或逻辑表达式。也可是数值表达式或字符表达式,只要其值非零就执行循环体。For语句可以把循环体和一些与循环控制无关的操作也都作为表达式和表达式出现。这样程序可以短小简洁,但过分地利用这一特点会使for语句显得杂乱。. 循环的辅助语句、break语句 作用:提前结束循环。其一般形式为: break;注意:break语句不能用于循环语句和switch语句之外的任何其它语句中。 在嵌套中使用时,只影响包含它的最内层循环。、continue语句作用:结束本次循环,提前进行下次循环。但不是终止整个循环的执行。一般形式为: continue;. 循环的嵌套一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,喧就是多层循环。三种循环(while循环、dowhilee循环和fore循环)可以互相嵌套。第六章 数 组 数组属于构造型数据。构造型数据包括:数组类型、结构体类型、共用体类型。数组就是一组有序的、类型相同的数据的集合。使用数组的好处在于:程序简洁、思路清晰、明了。6. 一维数组、一维数组的定义一维数组的定义方式为:类型说明符 数组名常量表达式; 说明:数组名定名规则和变量名相同,遵循标识符定名规则。数组名后是用方括弧“ ”括起来的常量表达式,不能用圆括弧。 常量表达式表示元素的个数,即数组长度。常量表达式中可以包含常量和符号常量,不能包含变量。也就是说,不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。常量表达式的值必须是大于的正整数。、 一维数组元素的引用语句规定只能逐个引用数组元素而不能一次引用整个数组。数组元素的表示形式为:数组名下标、 一维数组的初始化与变量的初始化类似:可以用赋值语句或输入语句使数组中的元素得到值,但占运行时间。 可以使数组在程序运行之前初始化,即在编译阶段使之得到初值。对数组的初始化可以用以下方法实现:定义数组时对数组元素赋初值。如:static int a100,1,2,3,4,5,6,7,8,9;可以只给一部分元素赋初值(其它将自动清)。此时不能省略数组长度。不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论