C语言电子教案_第1页
C语言电子教案_第2页
C语言电子教案_第3页
C语言电子教案_第4页
C语言电子教案_第5页
已阅读5页,还剩125页未读 继续免费阅读

下载本文档

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

文档简介

《C语言程序设计》教案总课时数:114适用专业:计算机应用技术、计算机网络系(部)名称:软件工程系教研室名称:修订时间:授课日期:第1周周一5—8周三1—2第2周周一5—8周三1—2授课类型:演示、讲解、练习、辅导课时:12教学内容:1、C语言的历史和特色2、C程序结构3、C程序的开发过程教学目标:1、了解C语言的产生过程2、掌握C程序结构3、掌握C程序开发过程4、掌握用C运行一个C程序教学重点:1、掌握C程序的基本结构构成2、学会用C运行一个C程序教学难点:掌握C程序的开发过程教学过程:内容讲授学生实践作业布置新课内容预告教学手段:多媒体教学软件+个别辅导作业:第1章C语言概述C语言是国际上广泛流行的一门高级程序设计语言,具有语言简洁、使用方便灵活、移植性好、能直接对系统硬件和外围接口进行控制等特点。本章将简要地介绍它的产生过程和特点、C程序结构及C程序的上机步骤,以便对C语言有一个概括的认识。1.1C语言的历史和特色一、历史1.1960年出现了60。2.1963年和1967年,在60的基础上推出了和语言更接近于硬件。3.1970年美国贝尔实验室对语言做了进一步简化,设计了B语言,并用B语言编写了第一个操作系统。4.在1972年至1973年间,贝尔实验室的在B语言的基础上设计出C语言。二、特色1.简洁紧凑,使用方便灵活C语言一共只有32个关键字、9种控制语句,程序书写自由,压缩了一切不必要的成分,语言简练。2.运算符丰富C语言有34种运算符和15个等级的运算优先顺序,使表达式类型多样化,可以实现在其它语言中难以实现的运算。3.数据类型丰富C语言的数据类型有整型、实型、字符型、数组类型、指针类型、结构体类型、联合体类型及枚举类型等,能用来实现各种复杂的数据结构的运算。4.模块化结构C语言用函数作为程序的模块单位,便于实现程序的模块化,而且便于模块间相互调用及传递数据。5.语法限制少和程序设计自由度大C语言允许程序编写者有较大的自由度,放宽了以往高级语言严格的语法检查,较好地处理了“限制”与“灵活”这一对矛盾。6.比较接近硬件C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。7.生成目标代码质量高、程序执行效率高一般只比汇编程序生成的目标代码效率低10%―20%。8.可移植性好基本上不做修改就能用于各种型号的计算机和各种操作系统。1.2C程序结构下面列出几个简单的C程序来说明C程序的结构特征。例1.1输出一行信息。(){("C!\n");}该程序的作用是输出一行信息:C表示“主函数”;函数体用大括号{}括起来。本例题中主函数仅包含一个语句,该语句由()输出函数构成。括号内双引号中的字符串按原样输出;´\n´是换行符,即在输出"C!"后回车换行;语句后面有一个分号,表示该语句结束,这个分号必不可少。例1.2计算两个数之和。()/*求两个数之和*/{a;/*定义3个整型变量*/123;/*以下3行为C语句*/321;;("\n");}该程序的作用是求两个整数a和b之和,并在屏幕上输出。程序中,/*……*/表示注释部分,对编译和运行不起作用。第3行是变量说明,使用的a、b和为整型()变量。第4行是两个赋值语句,使a的值为123,b为321。第5行使的值为,第6行的是输入输出的“格式说明”,表示“十进制整数类型”,函数中括号内最右端的是要输出的变量,当然它的值为444。例1.3比较两个数的大小。()/*主函数,功能输入两个整数,判断后输出较大的数*/{a;/*定义3个整型变量*/("");/*输入变量a和b的值*/();("\n");/*输出c的值*/}(y)/*定义()函数,函数值为整型,为形式参数、整形变量*/{z;/*定义()函数内部用到的变量z为整数*/(x>y);/*将中较大的值赋给z*/;(z);/*将z值返回。通过()函数带回调用处*/}该程序的作用是从键盘输入两个整数,然后在屏幕上输出它们中较大值的数。程序的第5行是调用()函数,在调用过程中将实际参数a和b的值,分别传递给()函数中的形式参数x和y,然后得到一个返回值(z的值),并把这个值赋给变量c。运行情况如下:2,8↙8从以上几个例题,可以看到C程序的结构特征。1.C程序是由函数构成的。一个C程序至少有一个()函数,也可以包含一个()函数和若干个其它函数。2.一个函数有两部分构成。函数说明部分,即函数的第一行,包括函数类型、函数名、形参类型、形参名。函数体,由一对大括号{}括起来的语句集合。函数体一般包括有声明部分和执行部分,声明部分用于定义所用到的变量,执行部分由若干语句组成。3.一个C程序总是从()函数开始执行,而不管()在源程序中的位置,执行完主函数中的所有语句后,程序就结束。4.每个语句和变量定义的最后必须要有一个分号,分号是C语句的必要组成部分。5.C语言本身没有提供输入和输出语句,输入输出操作是通过库函数()、()等函数来实现的。6.C语言用/*……*/对程序进行注释,/和*之间不允许留有空格,/*和*/应当一一对应匹配,注释部分允许出现在程序中的任何位置上。程序中加一些注释,可以增加程序的可读性。1.3C程序的开发过程用C语句编写的程序称为“源程序”。1.C程序开发的4个基本步骤一般C程序开发要经历4个基本步骤:编辑——编译——连接——运行(1)编辑使用字处理软件或编辑工具将源程序以文本文件形式保存到磁盘,源程序文件名由用户自己选定,但扩展名必须为""。(2)编译编译的功能就是调用“编译程序”,将已编辑好的源程序翻译成二进制的目标代码。如果源程序没有语法错误将产生一个与源程序同名,以""为扩展名的目标程序。(3)连接编译后产生的目标程序往往形成多个模块,还要和库函数进行连接才能运行,连接过程是使用系统提供的“连接程序”运行的。连接后,产生以""为扩展名的可执行程序。(4)运行可执行程序生成后,就可以在操作系统的支持下运行,若执行结果达到预期的目的,则开发工作到此完成,否则,要进一步地经过以上过程以取得最终的正确结果。2.使用C开发程序的方法现在,多数的C程序开发使用一个集成C开发工具来完成。下面简单介绍使用C开发程序的方法。(1)C的目录及文件C应装入磁盘的某一目录下,例如,放在c盘的根目录下一级子目录下,C安装完成后,磁盘上将增加以下目录及文件:子目录(c:\):其中包括、、等执行文件。子目录(c:\\):其中包括、、等头文件。子目录(c:\\):其中包括、、1等库函数文件。子目录(c:\):其中包括运行时所需的信息。通过执行命令就可以进入C环境,如果用户的当前目录是C所在的子目录,则只需从键盘输入“”命令即可。C:\>↙(2)C集成环境作简单介绍,它包括以下几个方面的内容:主菜单窗口编辑窗口信息窗口功能键提示行3.用C运行第一个C程序下面介绍使用C编辑和运行一个简单的C程序的操作步骤:(1)编辑或修改源程序。在编辑窗口键入一下源程序:(){("C");}然后执行“”命令;或按“F2”键存盘。(2)编译与连接源程序。执行“”命令或直接按下F9键,即可一次完成编译与连接。(3)运行程序。按“F10”键返回主菜单,用光标移动键将亮条移到“”菜单选项回车或按下“9”键,即可运行刚生成的可执行文件。此时C工作窗口消失,屏幕上显示程序运行结果:C若发现运行结果不对,可再按“F10”键回工作窗口,重复上述步骤。(4)运行程序后查看程序的运行结果。(5)退出C,按“”键,系统即退出环境。本章小结本章对C语言进行了总体介绍,对学生的要求是掌握基本概念,学习的过程要紧密结合本章的知识要点:1.程序的构成,()函数和其他函数。2.头文件、数据说明、函数的开始和结束标志。3.源程序的书写格式。4.C语言的风格。授课日期:第3周周三1—2第4周周一5—8周三1—2第5周周一5—8周三1—2授课类型:演示、讲解、练习、辅导课时:14教学内容:1、常量和变量2、整型数据3、实型数据4、字符型数据5、变量的初始化6、运算符和表达式教学目标:1、掌握常量与变量的书写和定义2、掌握三种基本数据类型3、掌握运算符和表达式的使用4、掌握顺序结构程序设计的方法教学重点:1、三种基本数据类型的定义和使用2、各种运算符的使用教学难点:1、运算符的使用2、使用顺序结构编程教学过程:内容讲授学生实践作业布置新课内容预告教学手段:多媒体教学软件+个别辅导作业:1、编程序,用函数读入两个字符给c1、c2,然后分别用函数和函数输出这两个字符。上机运行此程序,比较和函数输出字符的特点。2、试编写程序,从键盘输入一个大写字母,要求改用小写字母输出。第2章顺序结构程序设计顺序结构是一组按书写顺序执行的语句。本章将主要介绍程序中用到的一些基本要素(常量、变量、运算符、表达式和输入输出语句等),以及基本的数据类型(整型、实型和字符型)。2.1常量和变量一、常量1.常量:在程序运行的过程中,其值不能被改变的量。如2、4、-1.6等。2.分类:普通常量和符号常量。3.符号常量:用一个标识符代表一个常量,这样的标识符称为符号常量。如用代表3.1415926。4.注意:符号常量的值在其作用域内不能改变,也不能再被赋值。如在程序中,对重新赋值:=2;这样是不允许的。二、变量1.变量C语言规定在程序运行的过程中,其值可以改变的量,称为变量。2.标识符:用来标识变量名、符号常量名、函数名、数组名、类型名和文件名的有效字符序列。3.C语言规定:标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。一般变量名的长度不能超过8个字符。如下面是合法的标识符,也是合法的变量名:,,,,,,1_2_3,;下面是不合法的标识符和变量名:,$123,#33,3D64,a>,。在C语言中,要求对所有用到的变量作强制定义,也就是″先定义,后使用″。2.2整型数据一、整型常量C语言整型常数可用以下三种形式表示:1.十进制整数:数码直接开头的十进制数。2.八进制整数:以0开头的常量是八进制数。3.十六进制整数:以0x开头的数是16进制数。二、整型变量1.整型变量的分类整型变量可分为:基本型、短整型、长整型和无符号型四种,其定义的关键字如下:(1)基本型,以表示。范围为-32768~32767,即-215~(215-1)。(2)短整型,以或表示。范围与基本型相同。(3)长整型,以或表示。若一个整型常量后面加上一个字母l或L,则认为是型常量。范围为-2147483648~214783647即-231~(231-1)(4)无符号型,在实际应用中变量的值常常是正的,如年龄、工资、成绩等,因此可以将变量定义为″无符号″类型。无符号型又分为:①无符号整型,以或表示。范围:0~65535,即0~(216-1)。②无符号短整型,以表示。范围:0~65535即0~(216-1)。③无符号长整型,以表示。范围:0~4294967295即0~(232-1)。2.整型变量的定义变量的定义格式为:数据类型变量表列;其中若定义多个同类型的变量,则用逗号分开。例:;(指定变量为整型);(指定变量为无符号短整型);(指定变量为长整型)3.整型数据的输入整型变量键盘输入,是通过函数实现的,函数是数据输入函数,格式为:(格式控制,地址表列);例如:(″%d%d″);(1)格式控制是用双引号括起来的字符串,由″%″和格式字符组成,作用是将输入数据转换为指定的格式输入。(2)格式字符,对于不同的数据用不同的格式字符。d格式符是用来输入十进制整数的。因为本节问题中变量a,b是整型变量,所以输入时,用了d格式符。(3)中的″&″是″地址运算符″,是指a在内存中的地址。上面函数的作用是:将a、b的值放到a,b在内存的地址单元中去。所以,在该问题中,若输入:35↙则输出结果为a+b=84.整型数据的输出整型数据的输出用函数来实现。如(″a+b=%d″,c);函数的格式为:(格式控制,输出表列);(1)格式控制和输入函数的格式控制基本一致。(2)输出表列是需要输出的数据或表达式。(3)在输出整型数据时,格式字符如下:①%d,按整型数据的实际长度输出。②%,m为输出字段的宽度,如果输出数据的位数小于m则左端补以空格,若大于m,则按实际位数输出。例如:(″%44d″);若a=123,d=12345,则输出结果为:V123,12345(注:V表示空格字符,下同)③,输出长整型数据。如:a=135790;(″%8″);输出结果为:135790一个型数据可以用或格式输出。④,输出型数据,即无符号类型,如u;则u在输出的时候,应该用u格式控制符,则输出时应使用语句:(″″);例2.1从键盘输入任意一个整数,输出这个数的平方的值。(){a;s;(″″);s=a*a;(″s=%\n″);}2.3实型数据一、实型常量实数在C语言中,又称浮点数。实数有两种表示形式:1.十进制数形式。由数字和小数点组成(注意必须有小数点)。2.指数形式。但注意字母e(或E)之前必须有数字,且e后面指数必须为整数,如e3、2.1e3.5、3、e都不是合法的指数形式。二、实型变量在本节问题中,已知两个数是实数,则两数之和与积也必定为实数,所以需要设四个实型变量,分别为。定义语句为:;C实型变量分为:1.单精度型(型)一个型数据在内存中占4个字节(32位),在C中,单精度实数的范围约为-1038~1038之间并提供7位有效位;小于10-38的数被处理成零值。2.双精度型(型)一个型数据在内存中占8个字节,双精度实数的数值范围约为-10308~10308。并提供15~16位有效位,具体精确多少位与机器有关;小于10-308的数被处理成零值。三、实型数据的输入和输出1.实型数据的输入实型数据的输入也用函数实现的,格式符使用的是f字符,以小数的形式输入数据,也可以使用e字符,以指数的形式输入数据。如本节问题中的(″″);2.实型数据的输出实型数据的输出用函数实现,格式符使用f字符,以小数的形式输出数据。输出时应注意:(1):不指定字段宽度,整数部分会全部输出,并输出6位小数。(2):指定输出数据共占m列,其中有n位小数。如果数值长度小于m,则左端补空格。(3)%-:指定输出数据共占m列,其中有n位小数。如果数值长度小于m,则右端补空格。(4)若是双精度型变量输出时应用格式控制,如f;输出时应使用语句:(″″);2.4字符型数据一、字符常量1.字符常量C语言的字符常量是用一对单引号括起来的单个字符。如:´a´、´b´、´x´、´D´、´´、´$´等都是字符常量。2.转义字符除了这样的字符常量外,C语言还允许用一种特殊形式的字符常量,就是以一个´\´开头的字符序列.例如,前面已经用到,在函数中的´\n´,它表示一个″换行″符。例2.2字符常量的输出。(){(″c\n\″);}运行结果:c二、字符变量在本节问题中,设了两个字符型变量c1和c2。定义形式如下:c12;它表示c1和c2为字符型变量,各可以放一个字符。可以用下面语句对c12赋值:c1=´a´;;c2=´b´;因此在内存中一个字符变量只占一个字节。三、字符数据的存储形式字符在内存中存储的不是字符本身,而是它的码,例如字符´a´的码为97,´b´的码为98。则字符的存储形式与整数的存储形式是类似的。C语言使字符型数据和整型数据是通用的。例2.3(){a12;a1=97;a2=98;(″\n″12);(″\n″12);}程序运行时输出如下:ab9798字符型数据和整型数据是通用的,但应该注意字符数据只占一个字节,它只能存放0~255范围内的整数。例2.4大小写字母的转换(){a12;a1=´a´;a2=´b´;a1=a1-32;a2=a2-32;(″\n″12);}运行结果为:AB程序的作用是将两个小写字母a和b转换成大写字母A和B。´a´的码为97,而´A´为65,´b´为98,´B´为66。从码表中可以看到每一个小写字母比它相应的大写字母的码大32。四、字符型数据的输入和输出1.函数和函数例2.5″″(){c;c=();(c);}在运行时,如果从键盘输入字符´a´a↙(输入´a´后,按回车键)a(输出变量c的值´a´)注意:()只能接收一个字符。()也只能向终端输出一个字符。在使用函数和函数时,程序的首部需使用预编译命令″″″。2.函数和函数例2.6(){c12;(″″12);(″″12);}若输入为↙则输出为在使用函数和函数输入输出字符型数据时,使用″″格式控制,用来输入输出单个字符。注意,在用″″格式输入字符时,空格将以有效字符输入:(″″123);若输入↙则将字符´a´送给c1,字符空格´V´送给c2,因为空格也是一个有效字符,字符´b´送给c3。只需要读入一个字符,用了空格做间隔,所以会出现这样的问题。五、字符串常量字符串常量是用双引号括住的字符序列。如:″″,″″,″a″等都是字符串常量。可以输出一个字符串,如(″.″);注意:不要将字符常量与字符串常量混淆。´a´是字符常量,″a″是字符串常量,二者不同。C规定:在每个字符串的结尾加一个“字符串结束标志”以便系统据此判断字符串是否结束。以´\0´作为字符串结束标志。´\0´是码为0的字符,从码表中可以看到码为0的字符是“空操作字符”不引起任何操作。2.5变量的初始化变量的初始化,就是在定义变量的同时给变量赋予初值。可以采用说明变量的类型,然后再赋值的方法,也可以对变量类型说明的同时,给变量赋初值。1.先定义后赋值;a=2;b=5;c=10;2.定义和赋值同时进行a=5;b=10;c=´a´;d=7.8;3.对几个变量同时赋一个初值a1=10,a2=10,a3=10;不可以写成:a1=a2=a3=10;但是也可以写成:a1,a2,a3;a1=a2=a3=10;初始化不是在编译阶段完成的,而是在程序运行时执行本函数时赋以初值的。相当于一个赋值语句。例如:a=10;相当于:a;a=10;又如:=20;相当于:;c=20;2.6运算符和表达式一、算术运算符和表达式例2.7已知正方形的长和宽,求正方形的周长。[分析]正方形的周长公式为:l=2*(),已知正方形的长和宽可以计算周长。(){;a=3;b=4;l=2*();(″l=\n″);}1.基本的算术运算符+(加法运算符,或正值运算符)-(减法运算符,或负值运算符)*(乘法运算符)/(除法运算符)%(模运算符,或求余运算符)注意:(1)两个整数相除结果为整数。但是如果相除的两个数中,至少有一个为实数,则结果为带小数的商。(2)%模运算符,要求操作数均为整型数据,如7%4的值为3。2.算术表达式用算术运算符和括号将操作数连接起来的,符合C语法规则的式子,称C算术表达式。在表达式求值时,按运算符的优先级别高低次序执行。例如:10+´a´+1.5-8765.12*´b´在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。3.强制类型转换可以用强制类型转换运算符将一个表达式转换成所需类型。例如:()a(将a转换成类型)()()(将的值转换成整型)()(5%3)(将5%3的值转换成型)一般形式为:(类型名)(表达式)注意:(1)类型名应用括号括起来。如()()(2)已知x;对于()x,x仍然是类型,而整个表达式()x为整型。二、赋值运算符和赋值表达式1.赋值符号赋值符号″=″就是赋值运算符,将一个数据赋给一个变量。如″a=3″。2.类型转换如果赋值运算符两侧的类型不一致,要进行类型转换。(1)将实型数据赋给整型变量时,舍弃实数的小数部分。如i为整型变量,执行″i=3.56″的结果是使i的值为3。(2)将整型数据赋给实型变量时,数值不变,但以浮点数形式存储到变量中。3.复合的赋值运算符常用的赋值运算符有以下几种:+=,-=,*=,/=,%=例如:a+=3等价于a=a+3x*=y+8等价于x=x*(y+8)x%=3等价于x=34.赋值表达式由赋值运算符将一个变量和一个表达式连接起来的式子称为″赋值表达式″。例如:a=b=c=5(赋值表达式值为5,a、b、c值均为5)a=5+(c=6)(表达式值为11,a值为11,c的值为6)a=(b=4)+(c=6)(表达式值为10,a值为10,b等于4,c等于6)三、逗号运算符和逗号表达式逗号运算符将两个表达式连接起来。如:3+5,6+8称为逗号表达式。逗号表达式的格式为:表达式1,表达式2逗号表达式的求解过程是:先求解表达式1,再求解表达式2,整个逗号表达式的值是表达式2的值。例如逗号表达式a=3*5,a*4,先求解a=3*5,得a的值为15,然后求解a*4,得60。整个逗号表达式的值为60。课堂练习综合实例例1输入三角形的三条边长,求三角形面积。(为了简单起见,设输入的三边长能构成三角形)″″(){;(″″);s=1.0/2*();=(s*()*()*());(″a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n″);(″=%7.2f\n″);}运行情况如下:3,4,6a=3.00,b=4.00,c=6.00,s=6.50=5.33例2从键盘输入一个大写字母,要求改用小写字母输出。″″(){c12;c1=();(″\n″11);c2=c1+32;(″\n″22);}运行情况如下:A↙A,65a,97本章小结本章在讲解顺序结构程序设计方法的同时,介绍了三种数据类型。1.整型数据。主要了解整型数据的定义方法,根据使用整数的范围选用定义整数变量的类型。掌握整型数据的输入输出方法,主要使用d格式控制符。2.实型数据。主要掌握实型变量的不同定义方法,单精度数和双精度数的表示范围,实型数据的输入输出方法,主要使用f格式控制符。3.字符型数据。是由一对单引号括起来的单个字符,要注意,字符与字符串的区别。还讲解了各种运算符和表达式,主要掌握算术运算符,在混合运算中,要按照运算符的优先级,结合方向运算。作业:1.编程序,用函数读入两个字符给c1、c2,然后分别用函数和函数输出这两个字符。上机运行此程序,比较和函数输出字符的特点。2.试编写程序,从键盘输入一个大写字母,要求改用小写字母输出。授课日期:第7周周一5—8周三1—2第8周周一5—8周三1—2第9周周一5—8周三1—2授课类型:演示、讲解、练习、辅导课时:18教学内容:1、关系运算符和关系表达式2、逻辑运算符和逻辑表达式3、语句4、语句教学目标:1、掌握关系运算表达式2、掌握逻辑运算表达式3、熟练掌握语句的使用4、掌握语句教学重点:1、关系运算符和关系表达式2、逻辑运算符和逻辑表达式3、语句的使用教学难点:1、掌握语句的使用2、语句的嵌套使用教学过程:内容讲授学生实践作业布置新课内容预告教学手段:多媒体教学软件+个别辅导作业:给学生写评语,若学生成绩在60~69分,则打印“及格”,70~89分打印“良好”,90~100分打印“优秀”,60分以下打印“不及格”,请分别用语句和语句编程。第3章选择结构程序设计选择结构,或称分支结构,是指对所给定的条件进行判断,然后决定选择执行不同的操作。本章主要介绍如何用C语言实现选择结构。C语言的选择语句有两类,一类是语句,另一类是语句,本章将分别进行介绍。在介绍选择结构程序设计的同时,还要介绍关系运算符和关系表达式,逻辑运算符和逻辑表达式等内容。3.1关系运算符和关系表达式一、关系运算符及其优先次序1.关系运算符C语言提供6种关系运算符:<(小于)<=(小于或等于)>(大于)>=(大于或等于)==(等于)⑥(不等于)优先级相同(高)优先级相同(低)2.关于优先次序:(1)前4种关系运算符(´<´,´<=´,´>´,´>=´)的优先级别相同,后两种也相同。前4种高于后2种。例如,´>´优先于´==´。而´>´与´<´优先级相同。(2)关系运算符与算术运算符、赋值运算符的优先级关系如下:算术运算符(高)→关系运算符(中)→赋值运算符(低)例如:a>等效于a>()<c等效于=(b<c)>等效于(b>)(3)关系运算符的结合方向是“自左向右”。注意:“等于”关系的运算符“==”和“不等于”关系的运算符“”与数学中的表示方法不同。例如,欲判断x是否等于0,若写成:0则表示把0赋值给变量x,正确的写法为:=0。二、关系表达式1.关系表达式用关系运算符将两个表达式(算术表达式、关系表达式、逻辑表达式、赋值表达式、字符表达式等)连接起来的式子,称关系表达式。例:x>y,<18,´a´<´b´都为合法的关系表达式。2.关系表达式的值关系表达式的值是一个逻辑值,即“真”或“假”。在C语言中:常用1表示“真”,用0表示“假”。例如,5,2,则:关系表达式a>b的值为“真”,表达式的值为1。关系表达式的值为“假”,表达式的值为0。可以将关系表达式的运算结果(0或1)赋给一个整型变量或字符型变量,如41,下面的赋值语句是将1赋给变量c:>bc的值为1例3.1试求5>3>1的值。[分析]5>3>1相当于(5>3)>1=1>1=0[说明]根据关系运算符的优先级别高于赋值运算符。3.2逻辑运算符和逻辑表达式一、逻辑运算符及其优先次序1.逻辑运算符C语言提供了3种逻辑运算符:①!逻辑非②逻辑与③║逻辑或其中“”和“║”为“双目(元)运算符”,要求有两个操作数(即运算量),如(a<b)(x<),(a<b)║(x<)。“!”是“一目(元)运算符”,只需一个操作数,如或!(a<b)。2.关于逻辑运算符的优先次序:(1)逻辑运算符的优先次序如下:!(非)→(与)→║(或),即“!”为三者中最高的。(2)逻辑运算符中的“”和“║”低于关系运算符,“!”高于算术运算符。例如:(a>)(x>y)可写成:a>>y()║()可写成:║(3)逻辑运算的结合方向是“自左向右”。二、逻辑表达式1.逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。例如:*c,()║(c<0)均为逻辑表达式。2.逻辑表达式的值C语言编译系统在给出逻辑运算时,以数值1代表“真”,以0代表“假”,但在判断一个量是否为“真”时,以非0代表“真”,即将一个非0的数值认为是“真”,以0代表“假”。注意:(1)参与逻辑运算的量不但可以是0和1,或者是0和非0的整数,也可以是任何类型的数据,如字符型、实型或指针型。(2)如果在一个表达式中不同位置上出现数值,应区分哪些是作为数值运算或关系运算的对象,哪些作为逻辑运算的对象。(3)在逻辑表达式的求解中,并不是所有逻辑运算符都需要执行,有时只需执行一部分运算符就可以得到逻辑表达式的最后结果。例如:①只有x为真时,才需要判断y的值。只要x为假,就立即得出整个表达式为假。②x║y║z只要x为真(非0),就不必判断y和x;当x为假,才判断y;x和y都为假才判断z。3.3语句语句是选择结构的一种形式,又称为条件分支语句。它是通过对给定条件的判断,来决定所要执行的操作。C语言中提供了3种形式的语句:语句、语句和语句。一、问题的提出[问题]比较两个数的大小,将两个数中较大者赋给m。[分析]要比较两个数的大小就要用到关系表达式,定义两个变量a,b,如果a>b则将a的值赋给m,若a<b则将b的值赋给m,这里我们将用到语句来实现该项功能。(){;5;10;(a>b);;("\n");}程序运行结果:10[说明]在该问题中我们借用了语句,通过条件来判断应该执行哪条语句,充分体现出选择结构程序设计的思想。二、语句的三种形式1.语句语句是条件分支语句最基本的形式。格式:(表达式)语句功能:首先计算表达式的值,若表达式的值为“真”(非0),则执行语句,若表达式的值为“假”(0),不执行语句。其流程图3.1(a)所示。例如:(x>y)("");2.语句语句是条件分支语句的标准使用形式。格式:(表达式)语句1语句2功能:首先计算表达式的值,若表达式的值为“真”(非0),则执行语句1,若表达式的值为“假”(0),则执行语句2。例如:(x>y)("");("");3.语句前面两种语句一般都用于两个分支的选择结构。对于多个分支选择时,可采用语句。格式:(表达式1)语句1(表达式2)语句2(表达式3)语句3┇(表达式1)语句1语句n功能:首先计算表达式1的值,若为“真”(非0),执行语句1,否则进行下一步判断;若表达式2为真,执行语句2,否则进行下一步判断……最后所有表达式都为假时,执行语句n。例如:(>89)´A´;(>79)´B´;(>69)´C´;(>59)´D´;´E´;关于语句的说明:(1)后面圆括号中的表达式一般是关系表达式或逻辑表达式,用于描述选择结构的条件,但也可以是任意的数值类型表达式(包括整型、实型、字符型、指针型数据表达式)。例如:(2)("!");是合法的,因为表达式的值为2,非0,按“真”处理,执行结果输出“!”(2)第二种、第三种格式的语句中,在每个前面有一个分号,整个语句结束处也有一个分号。这是由于分号是C语句中不可缺少的部分,这个分号是语句中的内嵌语句所需要的。(3)在和后面可以只含有一个内嵌的操作语句,也可以含有多个操作语句,此时应用大括号“{}”将几个语句括起来,构成一个复合语句,注意:复合语句的“{”和“}”之后不能加分号。例3.2输入两个实数,按代数值由小到大输出这两个数。(){;("");(a>b){;;;}("5.2f5.2f");}程序运行结果:2.25.7↙-5.70,2.20二、语句的嵌套在语句中有包含一个或多个语句称为语句的嵌套。要处理多重分支选择结构问题,除了用语句外,还可以利用语句的嵌套来实现。说明:(1)和的配对规则为:总是与它上面的最近的未配对的配对。(2)与的个数最好相同,从内层到外层一一对应,以避免出错。(3)在嵌套内的语句既可以是语句形式,也可以是语句形式,但最好使内嵌语句也包含部分。如果与的个数不同,可以用花括号来确定配对关系。例如:(){()语句1}语句2这时“{}”限定了内嵌语句的使用范围,因此与第一个配对。例3.3有一函数:-1(x<0)0(0)1(x>0)编一程序,输入一个x值,输出y值。(){;("");(x<0)1;(=0)0;1;("\n");}三、条件运算符条件运算符由两个符号“?”和“:”组成,要求有3个操作对象,称三目(元)运算符,它是C语言中唯一的三目运算符。条件表达式的格式为:表达式1?表达式2:表达式3(a<b);说明:(1)通常情况下,表达式1是关系表达式或逻辑表达式,用于描述条件表达式中的条件,表达式2和表达式3可以是常量、变量或表达式。例如:()´T´:´F´(a>b)("")("")等均为合法的条件表达式。(2)条件表达式的执行顺序:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。(a<b);执行结果就是将a和b二者中较小的赋给。(3)条件表达式的优先级别仅高于赋值运算符,而低于前面介绍过的所有运算符。因此,(a<b);可直接写成:<;如果有a>1等效于a>:(1),而不等效于(a>)+1(4)条件运算符的结合方向为“自右至左”。例如:x>01<01:0等效于x>01:(x<01:0)(5)表达式1、表达式2和表达式3的类型可以不同,此时条件表达式的值的类型为它们中较高的类型。例3.4输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。(){;("a:\n");("");(>=´A´<=´Z´)(32);("");}程序运行结果:a:A↙a[说明]条件表达式中的(32),其中32是小写字母和大写字母Ⅱ码的差值。3.4语句一、问题的提出要求按照考试成绩的等级()输出百分制分数段:键入´A´,输出85~100;键入´B´,输出70~84;键入´C´,输出60~69;键入´D´,输出<60;键入其他任意字符,输出。(){;("");(){´A´:("85~100\n");´B´:("70~84\n");´C´:("60~69\n");´D´:("<60\n");:("\n");}}二、语句格式为:(表达式){常量表达式1:语句1常量表达式2:语句2┇常量表达式n:语句n:语句1}其中和语句1可以同时省略。说明:(1)的表达式通常是一个整型或字符型变量,也允许是枚举型变量,其结果为相应的整数、字符或枚举常量。后的常量表达式必须是与表达式对应一致的整数、字符或枚举常量。(2)语句中所有后面的常量表达式的值都必须互不相同。(3)语句中的和的出现次序是任意的。(4)由于语句中的“常量表达式”只是起语句标号的作用,而不起条件判断作用,即“只是开始执行处的入口标号”。可以用一个语句来终止。将上面的结构改写如下:(){´A´:("85~100\n");;´B´:("70~84\n");;´C´:("60~69\n");;´D´:("<60\n");;:("\n");}最后一个分支()可以不加语句。如果的值为´B´,则只输出"70~84"。(5)每个的后面既可以是一个语句,也可以是多个语句,当是多个语句的时候,也不需要用花括号括起来。(6)多个的后面可以共用一组执行语句,如:(n){1:2:10;;┇}它表示当1或2时,都执行下面两个语句:10;;本章小结本章介绍了结构化程序设计的基本结构之一选择结构,另外还介绍了逻辑运算等内容,现将本章中的知识要点作一概括性小结。1.关系运算。包括关系运算符及其优先性、关系表达式及其求值方法。2.逻辑运算。包括逻辑运算符及其优先性、逻辑表达式及其求值方法。3.用语句实现选择结构。包括的三种形式及其执行流程、语句的嵌套。4.用语句实现多分支选择结构。5.条件运算符的使用。作业:给学生写评语,若学生成绩在60~69分,则打印“及格”,70~89分打印“良好”,90~100分打印“优秀”,60分以下打印“不及格”,请分别用语句和语句编程。授课日期:第10周周一5—8周三1—2第11周周一5—8周三1—2第12周周一5—8周三1—2第13周周一5—8周三1—2授课类型:演示、讲解、练习、辅导课时:24教学内容:1、三种循环语句2、循环的嵌套3、语句和语句4、几种循环的比较教学目标:1、熟练掌握三种循环语句的使用2、学会使用循环的嵌套结构3、使用语句和语句4、了解几种循环的异同教学重点:1、三种循环语句的使用2、三种循环的比较教学难点:1、循环的嵌套使用2、使用循环结构设计程序教学过程:内容讲授学生实践作业布置新课内容预告教学手段:多媒体教学软件+个别辅导作业:1、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。2、有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?3、找出1~1000之间的所有水仙花数。所谓水仙花数是指一个3位数的立方和恰好等于该数本身。例如:153就是一个水仙花数,因为153=1*1*1+3*3*3+5*5*5。4、按下面的近似公式计算:1+1/11/21/3……+1……,使误差小于一个给定的值。第4章循环结构程序设计循环结构是结构化程序设计的基本结构之一,它与顺序结构、选择结构共同作为各种复杂程序的基本构造单元。C语言提供了3种循环语句:语句、语句和语句,本章将分别进行介绍。除此之外,还将介绍语句、语句的使用。4.1三种循环语句一、语句语句用来实现“当型”循环结构。格式为:(表达式){语句}功能:当表达式的值为非0时,执行语句中的循环语句。说明:(1)循环体如果包含一个以上的语句,应该用大括号括起来,以复合语句的形式出现,否则语句范围只到后面第一个分号处。(2)在循环中应有使循环趋向于结束的语句,即设置修改条件的语句。例如:1;如果无此语句,则i的值一直不变,循环永不结束,这就称为“死循环”。(3)语句的特点是先判断表达式的值,然后执行循环体中的语句,如果表达式的值一开始为假(即值为0),则退出循环,并转入下一个语句执行。例4.1求2+4+8+……+50的值。(){20;(i<=50){;2;}("");}程序运行结果:2+4+8+…+50=650二、语句循环语句,用来实现“直到型”循环结构。格式:{语句}(表达式);功能:先执行一次指定的循环体语句,然后判断表达式的值,当表达式的值为非0时,返回重新执行该语句,如此反复,直到表达式的值等于0为止,此时循环结束。说明:(1)语句的特点是:先执行语句,后判断表达式的值。(2)如果语句的循环体部分是多个语句组成,则必须用左右大括号括起来,使其形成复合语句。(3)圆括号后面有一个分号“;”,书写时不要忘记。例4.2用循环结构来计算1+3+5+…+99的值。(){10;{;2;}(i<=100);("1+3+5+…+99\n");}程序运行结果:2+3+5+…+99=2500例4.3求(1)+(2)+…+10(i<=10)的值,其中i由键盘输入。(2)用语句编程(){0;("");{;1;}(i<=10);("");}[程序](1)用语句编程(){0;("");(i<=10){;1;}("");}程序运行情况如下:1↙55再运行一次结果为:11↙11程序运行情况如下:1↙55再运行一次结果为:11↙0显然,当输入i的值小于或等于10,两个程序运行结果相同;当i大于10时,程序(1)一次也不执行循环语句,程序(2)仍然执行一次循环语句。语句和语句的区别:当后面的表达式第一次的值为“真”时,两种循环得到的结果相同。否则,二者不相同(指二者具有相同的循环体的情况)。三、语句1.语句格式:(表达式1;表达式2;表达式3){语句}执行过程:①先计算表达式1的值。②再计算表达式2的值,若其值为真,则执行循环体一次;否则跳转第⑤步。③然后计算表达式3的值。④回转上面第②步。⑤结束循环,执行语句下面一个语句。说明:(1)表达式1一般为赋值表达式,用于进入循环之前给循环变量赋初值。(2)表达式2一般为关系表达式或逻辑表达式,用于执行循环的条件判定,它与、循环中的表达式作用完全相同。(3)表达式3一般为赋值表达式或自增(1可表示成)、自减(1可表示成)表达式,用于修改循环变量的值。(4)如果循环体部分是多个语句组成的,则必须用大括号括起来,使其成为一个复合语句。例4.4用循环结构来计算1+2+3+…+10的值。[程序](){0;(1;i<=10;)1;("1+2+3+…+10\n");}程序运行结果:1+2+3+…+10=55可以看出,此例的结果与用语句完全相同的。显然,用语句简单、方便。对于以上语句的一般形式也可以改写为循环语句的形式:表达式1;(表达式2){循环语句;表达式3;}例如,以下语句程序段:(1;i<=5;){*i;("\n");}完全等价于下面的语句程序段:1;(i<=5){*i;("\n");;}2.语句表达式的进一步说明(1)语句的一般形式中的“表达式1”可以省略。但要注意省略表达式1时,其后的分号不能省略。此时,应在语句之前给循环变量赋初值。例如:1;(;i<=100;);相当于:(1;i<=100;);;(2)如果省略表达式2,即表示表达式2的值始终为真,循环将无终止地进行下去。例如:(1;;)("");相当于:1;(1){("");;}该循环无终止条件,将无限循环输出1、2、3、4、5……。(3)如果省略表达式3,也将产生一个无穷循环。因此,程序设计者应另外设法保证循环能正常结束,可以将循环变量的修改部分(即表达式3)放在循环语句中控制。例如:(1;i<=100;){;;}上述语句中没有表达式3,而是将表达式3(即)放在循环语句中,作用相同,都能使循环正常结束。(4)可以同时省略表达式1和表达式3,即省略了循环的初值和循环变量的修改部分,此时完全等价于语句。例如:(i<=10){("");;}相当于:(;i<=10;){("");;}(5)3个表达式都可省略,如:(;;)相当于:(1)即不设初值,不判断条件(认为表达式2为真值),循环变量不增值。无终止地执行循环体。(6)在语句中,表达式1和表达式3也可以使用逗号表达式,即包含一个以上的简单表达式,中间用逗号间隔。在逗号表达式内按从左至右求解,整个表达式的值为其中最右边的表达式的值。例如:(1;i<=100;,;)相当于:(1;i<=100;);(7)在语句中,表达式一般为关系表达式(如i<=10)或逻辑表达式(如x>0‖y<-4),但也可以是其他表达式(如字符表达式、数值表达式)。(8)语句的循环语句可以是空语句。空语句用来实现延时,即在程序执行中等待一定的时间。需要注意的是,延时程序会因为计算机速度的不同而使执行的时间不同。如下面语句为延时程序的例子:(1;i<=1000;);注意以上语句最后的逗号不能省略,它代表一个空语句。4.2循环的嵌套一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环。三种循环:循环、循环和循环可以互相嵌套。例如下面几种形式都是合法的。(;;){……(;;){……}}{……{……}();}();(){……(){……}}(){……{……}();}(;;){……(){……}}{……(;;){}……}();例4.5利用双重循环结构打印出9*9乘法表。(){i,j;(1;i<10;){(1;j<10;)("",i*j);("\n");}}4.3语句和语句一、语句格式:;功能:该语句可以使程序运行时中途跳出循环体,即强制结束循环,接着执行循环下面的语句。例4.6求圆的面积。[分析]计算1到10的圆面积,直到s>100为止,当s>100时,执行语句,提前终止循环,即不再继续执行其余的几次循环。3.1415926(){r;s;(1;r<=10;){*r*r;(s>100);}("");}[说明](1)语句不能用于循环语句和语句之外的任何语句。(2)在多重循环的情况下,语句只能跳出一层循环,即从当前循环中跳出。二、语句格式:;功能:结束本次循环,即跳出循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。语句和语句的区别是:语句只是结束本次循环,而不终止整个循环的执行;而语句则是强制终止整个循环过程。例4.7打印出数字0~10,但跳过(即不输出)数字7。(){i;(0;i<=10;){(=7);("%5d");}}程序运行结果为:01234568910[说明](1)当i等于7时执行语句,它的作用是终止本次循环,即跳过语句,故不输出7。(2)如果程序中不用语句,循环体也可以改用一个语句处理:(7)("%5d");(3)如果在本例中将第7行“;”语句,改为“;”语句,则输出结果为:0123456可以清楚地看出语句是终止整个循环过程,它与语句作用是截然不同的。4.4几种循环的比较1.三种循环都可以用来出来处理同一问题,一般情况下它们可以互相代替。2.和循环,只在后面指定循环条件,在循环体中应包含使循环趋于结束的语句(如,或1等)。循环可以在表达式3中包含使循环趋于结束的操作,甚至可以将循环体中的操作全部放到表达式3中。因此语句的功能更强,凡用循环能完成,用循环都能实现。3.对于循环变量赋初值,语句和语句一般是在进入循环结构之前完成,而语句一般是在循环语句表达式1中现实变量的赋值。4.语句和语句都是先测试循环控制表达式,后执行循环语句,语句则是先执行循环语句,后测试循环控制表达式。5.循环、循环和循环,可以用语句跳出循环,用语句结束本次循环。本章小结本章重点介绍了结构化程序设计的基本结构之一——循环结构,主要介绍了以下几个方面:1.循环结构的构成形式、运行流程与使用过程中的注意事项。2.循环结构的构成形式、运行流程与使用过程中的注意事项。3.循环结构的构成形式、运行流程与使用过程中的注意事项。4.3种循环结构的比较,以及在结构化程序设计中的灵活运用和循环结构的嵌套。5.其他流程控制语句的使用,包括语句、语句。作业:1.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。2.有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?3.找出1~1000之间的所有水仙花数。所谓水仙花数是指一个3位数的立方和恰好等于该数本身。例如:153就是一个水仙花数,因为153=1*1*1+3*3*3+5*5*5。4.按下面的近似公式计算:1+1/11/21/3……+1……,使误差小于一个给定的值。授课日期:第14周周一5—8周三1—2第15周周一5—8周三1—2授课类型:演示、讲解、练习、辅导课时:12教学内容:1、一维数组的定义和引用2、二维数组的定义和引用3、字符数组的定义和引用教学目标:1、掌握一维数组的定义和引用2、学会二维数组的定义和引用3、掌握字符数组的定义和引用教学重点:1、一维数组的定义和引用2、字符数组的定义和引用教学难点:二维数组的定义和引用教学过程:内容讲授学生实践作业布置新课内容预告教学手段:多媒体教学软件+个别辅导作业:1、将一个数组中的值按逆序重新存放,例如,原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。2、用数组来处理求数列问题。3、有一个3×4的矩阵,输入数据后,求其主对角线之和。4、编一程序,将两个字符串连接起来,不要用函数。第5章数组本书前几章介绍了C语言中几种简单数据类型。在本章中将介绍一种新的构造类型:数组。数组是一种最简单的构造类型,它包含着一组具有同一类型的变量,这些变量在内存中的存储位置是连续的。在解决实际问题时数组有着广泛的应用。本章介绍了C语言中一维数组、二维数组及字符数组的定义、初始化及使用方法等。5.1一维数组的定义和引用一、一维数组的定义C语言规定:数组必须先定义,后使用。一维数组的格式为:类型说明符数组名[常量表达式];例如:[10];它表示定义了一个名为的数组,该数组有10个元素,其存放的数据类型应为实型。说明:(1)类型说明符用来说明数组元素的类型:,,或。(2)数组名的命名应遵守标识符的命名规则。(3)数组名后是用方括号括起来的常量表达式。常量表达式表示的是组元素的个数,即数组的长度。在上例中定义了数组[10],该数组有10个元素,其下标从0开始。注意:不要使用[10],因为它不是该数组的元素。(4)常量表达式中可以包括常量和符号常量,不能包含变量,因为C语言规定数组不能动态定义。二、一维数组的初始化数组的初始化是指在定义数组时给数组元素赋初值。一维数组初始化的格式为:类型说明符数组名[常量表达式]={常量列表};例如a[5]={2,4,6,8,10};其作用是在定义数组的同时将常量2、4、6、8、10分别置于数组元素a[0]、a[1]、a[2]、a[3]、a[4]中。说明:(1)常量列表可以是数值型、字符常量或字符串。(2)数组元素的初值必须依次放在一对大括号内,各值之间用逗号隔开。(3)可以只给部分数组元素赋初值。例如:a[10]={1,2,3,4,5};(4)在进行数组的初始化时,{}中值的个数不能超过数组元素的个数。例如:a[5]={1,2,3,4,5,6,7,8};是一种错误的数组初始化方式。(5)在给数组所有元素赋初值时,可以不指定数组长度。例如:a[]={1,2,3,4,5};则系统会自动定义数组a的长度为5。(6)定义数组时不进行初始化,则该数组元素的值是不确定的。如果欲将数组所有元素的初值置为0,可以采用如下方式:a[10];三、一维数组元素的引用C语言规定数组不能以整体形式参与数据处理,只能逐个引用数组元素。一维数组的引用方式为:数组名[下标];其中下标可以是整型常量、整型变量或整型表达式。例如有定义:a[10],2;则以下是正确的表达式:a[0][1][i][3];例5.1找出10个整数中的最大值及其序号。[分析]将10个整数放于一维数组中,找出其中的最大值及其下标即可。(){i,,k,a[11];(1;i<=10;)("",[i]);[1];1;(2;i<=10;){(<a[i]){[i];;}}(",:\n",,k);}例5.2用数组处理数列问题(){i,f[20]={1,1};(2;i<20;)f[i][2][1];(0;i<20;){(5==0)("\n");("%10d",f[i]);}}程序的运行结果如下:11235813213455891442333776109871597258441816765例5.3有17个人围成一圈,从第1号的人开始从1到3循环报数,凡报到3的人离开圈子,直到最后只剩下一个人为止,打印出此过程。(){i,d,,a[18];(1;i<=17;)a[i]=i;0;17;(d>0)(1;i<=17;)(a[i]0){;(=3){("%4d",a[i]);a[i]=0;0;;}}}程序的运行结果是:3691215151014281671713411例5.4用冒泡法对10个整数由小到大进行排序(){i,j,t,a[11];("10:\n");(1;i<=10;)("",[i]);("\n");(1<=9;)/*控制比较的趟数*/(1;i<=10;)/*控制每趟比较的次数*/(a[i]>a[1])/*相邻元素相比较*/{[i];a[i][1];a[1];}/*交换数组元素的值*/(":\n");(1;i<=10;)("",a[i]);}程序运行情况如下:10:583210-4143-126742↙:-12-40358214267143此程序用a[0]至a[10]存储10个数据,排序时采用双层循环,外层循环控制比较的“趟”数(共9趟),内层循环控制每趟比较的“次”数。第一趟比较9次,将最大数置于a[10]中;第二趟比较8次,将次大数置于a[9]中;……;第九趟比较1次,将次小数置于a[2]中;余下的最小数置于a[1]中。5.2二维数组的定义和引用一、二维数组的定义与一维数组相同,二维数组也必须先定义,后使用。二维数组的格式为:类型说明符数组名[常量表达式1][常量表达式2];例如:a[3][4];定义a为3×4(3行4列)的整型数组。该数组有12个元素,分别为:a[0][0]a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]a[1][2]a[1][3]a[2][0]a[2][1]a[2][2]a[2][3]说明:(1)类型说明符、数组名、常量表达式的意义与一维数组相同。(2)二维数组中元素的排列顺序是按行存放,即在内存中先顺序存放第一行的元素,再存放第二行的元素。(3)可以把二维数组看成是特殊的一维数组,它的每个元素又是一个一维数组。二、二维数组的初始化二维数组也可以在定义时对指定元素赋初值,可以用以下方法对二维数组进行初始化:(1)按行分段赋值。例如:a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};(2)将所有的初值写在一个大括号内,按数组元素的排列顺序对各个元素赋初值。例如:a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};(3)可以对数组部分元素赋初值。例如:a[3][4]={{1},{5,6},{9}};又如:a[3][4]={{1,2},{},{0,10}};其作用是使a[0][0]=1,a[0][1]=2,a[2][1]=10,数组的其它元素都为0。(4)如果对数组的全部元素都赋初值,则定义数组时可以不指定数组的第一维长度,但第二维长度不能省略。例如:若有定义:a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};此定义也可以写成:a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};三、二维数组元素的引用二维数组的引用方式为:数组名[下标1][下标2]其中下标可以是整型常量、整型变量或整型表达式。例5.5将数组a(2×3矩阵)行列转置后保存到另一数组b中。123142545636(){a[2][3]={{1,2,3},{4,5,6}};i,j,b[3][2];("a:\n");(0;i<=1;){(0;j<=2;){("%5d"[i][j]);/*输出a数组*/b[j][i][i][j];/*数组转置*/}("\n");}("b:\n");(0;i<=2;){(0;j<=1;)("%5d"[i][j]);("\n");}}运行结果如下:a:123456b:142536例5.6有一个3×4的矩阵,求出其中最大值以及它所在位置。(){i,j,,0,0;a[3][4]={{2,146,8},{3,7,9,21},{-9,16,0,5}};[0][0];(0;i<=2;)(0;j<=3;)(a[i][j]>){[i][j];;;}(",,\n",,,);}程序的输出结果为:21,1,3例5.7某班有20名学生,每名学生有5门课的成绩,分别求出每门课的平均成绩和每个学生的平均成绩。(){i,j;[21][6]={0};(1;i<=20;)(1;j<=5;){("",[i][j]);[i][0][i][j];[0][j][i][j];}(":\n");(1;i<=20;)(":%6.2f\n",i,[i][0]/5);(":\n");(1;i<=5;)(":%6.2f\n",i,[0][i]/20);}5.3字符数组的定义和引用一、字符数组的定义1.一维字符数组的格式为:类型说明符数组名[常量表达式];例如:[10];定义为一维字符数组,该数组包含10个元素,最多可以存放10个字符型数据。2.二维字符数组的格式为:类型说明符数组名[常量表达式1][常量表达式2];例如:a[3][20];定义a为二维字符数组,该数组有3行,每行20列,该数组最多可以存放60个字符型数据。在C语言中,很多情况下字符型与整型是通用的,因此字符型数组也可以这样定义:[10];a[3][20];注意:字符型数据在内存中是以码方式存储的,在字符数组中也是如此。二、字符数组的初始化字符数组的初始化方式与其它类型数组的初始化方式类似。1.逐个元素赋初值s[5]={´C´,´h´,´i´,´n´,´a´};2.如果初值的个数多于数组元素的个数,则按语法错误处理。3.如果初值的个数少于数组元素的个数,则C编译系统自动将未赋初值的元素定为空字符(即码为0的字符:´\0´)。4.如果省略数组的长度,则系统会自动根据初值的个数来确定数组的长度。例如:c[]={´H´,´o´,´w´,´´,´a´,´r´,´e´,´´,´y´,´o´,´u´,´´};数组c的长度自动设定为12。5.二维数组也可以进行初始化。三、字符数组的引用例5.8输出一个字符串。(){c[10]={´I´,´´,´a´,´m´,´´,´h´,´a´,´p´,´p´,´y´};i;(0;i<10;)("",c[i]);("\n");}程序运行结果:I例5.9输出钻石图形(){c[5][5]={{´´,´´,´*´},{´´,´*´,´´,´*´},{´*´,´´,´´,´´,´*´},{´´,´*´,´´,´*´},{´´,´´,´*´}};i,j;(0;i<5;){(0;j<5;)("",c[i][j]);("\n");}}程序的运行结果为:********四、字符串1.字符串和字符串结束标志字符串常量是用双引号括起来的一串字符。C语言系统在处理字符串时,一般会在其末尾自动添加一个´\0´作为结束符。2.用字符串常量给数组赋初值可以用字符串常量来使字符数组初始化。例如:c[]={""};也可以省略大括号而直接写成c[]="";五、字符数组的输入与输出1.将数组元素逐个输入与输出,即用格式符""输入或输出一个字符。例5.10从键盘读入一串字符,将其中的大写字母转换成小写字母后输出该字符串。(){s[80];0;(0;i<80;){("",[i]);(s[i]==´\n´);(s[i]>=´A´[i]<=´Z´)s[i]32;}s[i]=´\0´;(0;s[i]´\0´;)("",s[i]);("\n");}运行该程序两次。第一次输入:↙程序运行结果为:第二次输入:↙程序运行结果为:2.将字符数组整体输入或输出,即用格式符""控制字符串的输入与输出。例5.11将上例改写成整体输入输出形式。(){s[80];i;("",s);(0;s[i]´\0´;)(s[i]>=´A´[i]<=´Z´)s[i]32;("",s);}注意:(1)用""格式符读入字符串时,函数中的地址项是数组名,不要在数组名前加取地址符号´&´,因为数组名本身就是地址(在后面的内容中将介绍到)。(2)用""格式符输出字符串时,函数中的输出项是字符数组名,而不是数组元素。如果写成下面的形式是错误的:("",s[0]);(3)以("",数组名);形式读入字符串时,遇空格或回车都表示字符串结束,系统只是将第一个空格或回车前的字符置于数组中,例如有如下语句:s[13];("",a);若输入为:↙六、字符串处理函数在C的库函数中提供了一些字符串处理函数,使用它们可以很方便地处理字符串,如输入、输出、拷贝、连接、比较、测试长度等。1.字符串输出函数:格式:(字符数组名)功能:将一个字符串输出到终端,字符串中可以包含转义字符。例如:s[]="\";(s);输出结果是:ChinaBeijing注意:函数会将字符串结束标志’\0’转换成’\n’,即在输出完字符串后换行。2.字符串读入函数:格式:(字符数组名)功能:从终端读入一个字符串到字符数组。该函数可以读入空格,遇回车结束输入。例如有下面程序段:s[20];(s);(s);运行时输入:↙输出结果为:3.字符串连接函数:格式:(字符数组1,字符数组2)功能:将字符数组2中的字符串连接到字符数组1中的字符串的后面,结果放在字符数组1中。例如有如下程序段:s1[14]="",s2[]="";(s1,s2);("",s1);输出结果为:ChinaBeijing说明:使用函数时,字符数组1应作够大,以便能容纳连接后的新字符串。4.字符串拷贝(复制)函数:格式:(字符数组1,字符数组2)功能:将字符数组2中的字符串拷贝到字符数组1中。例如有下面程序段:s1[8],s2[]="";(s1,s2);(s1);程序段的输出结果是:China说明:(1)字符数组1的长度应大于或等于字符数组2的长度,以便容纳被复制的字符串。(2)字符数组1必须写成数组名的形式(如上例中的s1),字符数组2也可以是一个字符串常量。例如:s1[8];(s1,"");其结果与上例相同。(3)执行函数后,字符数组1中原来的内容将被字符数组2的内容(或字符串)所代替。(4)不能用赋值语句将一个字符串常量或字符数组直接赋给另一个字符数组。下面的用法是错误的:s1[8],s2[]="";s12;在进行字符串的整体赋值时,必须使用函数。5.字符串比较函数:格式:(字符串1,字符串2)功能:比较两个字符串的大小,例如:(s1,s2);("","");(s1,"");比较的结果由函数值带回。(1)如果字符串1等于字符串2,函数值为0。(2)如果字符串1大于字符串2,函数值为一个正整数(第一个不相同字符的码值之差)。(3)如果字符串1小于字符串2,函数值为一个负整数。请注意:比较两个字符串是否相等时,不能采用以下形式:(s1=2)("");而只能用((s1,s2)==0)("");6.测试字符串长度函数:格式:(字符数组名)功能:测试字符数组的长度,函数值为字符数组中第一个

温馨提示

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

评论

0/150

提交评论