c语言教材第一章.ppt_第1页
c语言教材第一章.ppt_第2页
c语言教材第一章.ppt_第3页
c语言教材第一章.ppt_第4页
c语言教材第一章.ppt_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

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

文档简介

1,开篇,本课程讲述如何使用C语言进行真正的编程为什么学习c语言?C语言是目前实际程序设计工作中使用最广泛的语言之一它包含了程序设计需要理解和使用的基本程序机理和主要机制掌握这些机制就可以理解程序与程序设计的主要问题。目前有许多软件系统是用C编写的,或基本上是用C编写的学习程序设计的同时也能掌握一种实用的程序设计工具C语言是一种很灵活的语言既可以在较高层次上做,也可以在较低级的层次上做很多新型的语言都是衍生自C语言有些本身就是C语言的扩充和发展程序设计是计算机领域的基础课程C语言适合作为计算机领域许多后续课程的教学语言,2,开篇,本课程讲述如何使用C语言进行真正的编程授课重点侧重学习一个具体问题的算法化的过程学习应该掌握的基本编程技巧以及C编程的风格和艺术讨论怎样编写出一个好的程序?简单、实用的原则,3,开篇,本课程的组织,算法概念、编程原理、编程风格、基本数据类型定义、算术运算符及表达式,顺序结构、选择结构、循环结构、数组的定义及应用、程序设计过程,函数、变量的存储类别、指针、结构体与共用体、文件,4,1.程序与程序设计语言,什么是程序?什么是计算机?计算机是一种具有内部存储能力的自动、高效的电子设备,计算机怎样完成工作?执行存放在计算机的内部存储器中的指令程序是计算机指令的序列可以被连续执行的一条条指令的集合称为计算机的程序,5,1.程序与程序设计语言,什么是计算机语言?是与计算机交流的工具人和人交流用的是双方都能听懂和读懂的自然语言人和计算机交流也要用人和计算机都容易接受和理解的语言计算机语言是根据计算机的特点而编制的有限规则的集合什么是程序设计语言?计算机语言又称为“程序语言“一个计算机程序总是用某种程序语言来编写,6,1.程序与程序设计语言,程序设计语言的发展问题?怎样从功能和使用方式上来划分程序设计语言?他们各有什么特点?举例。,7,2.程序设计,什么是程序设计?使用某种程序语言编写程序的过程是用计算机语言对所要解决的问题中的数据以及处理问题的方法和步骤所做的完整而准确的描述的过程怎样进行程序设计?分析问题确定算法编制程序调试程序,8,2.程序设计,一个完整的程序数据结构、算法、编程语言和程序设计方法对数据的描述(数据流)指定数据的类型和数据的结构对操作的描述(控制流)指定操作的步骤,既算法,程序=数据结构+算法,9,3.算法,输入三个数,然后输出最大的数算法的两个要素基本功能操作数据运算和传输控制结构顺序、选择和循环三种基本控制流程,算法可以写成:(1)输入A,B,C;(2)若AB,则A-MAX;若AMAX。(3)若CMAX,则C-MAX。(4)输出MAX,MAX既是最大数。,10,3.算法,算法的特性有穷性应含有有限的操作步骤,不能是无限的。有穷性指在“合理的限度之内”唯一性每一个步骤都是确定的,只有一个涵义,不可以为二义性有零个或多个输入在执行算法时需要从外界获取必要的信息有一个或多个输出算法执行的目的就是为了求解,“解”就是输出的信息没有输出的算法是没有意义的正确性每一个步骤应当被有效的执行,并得到确定的结果,11,3.算法,算法的表示流程图,12,3.算法,算法的表示流程图,13,3.算法,算法的表示N-S图是适合结构化程序设计方法的图形工具N-S流程图无法表示非结构化的程序,14,3.算法(练习),算法的表示其它典型算法,15,4.结构化的程序设计方法,程序的三种基本结构问题的提出结构化程序设计必须采用的结构顺序结构、选择结构和循环结构被称为程序设计的三种基本结构算法的实现过程是由一系列操作组成的,这些操作之间的执行次序就是程序的控制结构总体结构流程都是自上而下顺序执行的。,16,4.结构化的程序设计方法,程序的三种基本结构顺序结构顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的选择结构表示程序的处理出现了分支,它需要根据某一特定的条件选择其中的一个分支执行循环结构程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环,17,4.结构化的程序设计方法,结构化程序设计方法公认的面向过程编程应遵循的基本方法和原则结构化程序设计特征采用模块化结构自顶而下的设计方法便于对问题的分解和模块的划分程序由三种基本控制结构组成有限制地使用转移语句采用结构化程序设计语言书写程序结构化程序设计语言书写程序注意书写风格,18,5.什么是C语言?,1973年由美国贝尔实验室设计发布的目前是计算机程序设计语言的主流语种是世界上最为广泛使用的语言之一C语言的流行归功于两个主要因素使用正确的C语言指令几乎可以完成任何任务是可移植的C编译系统的广泛采用C语言是一种能够让软件工程师与计算机进行有效对话的介于汇编语言和高级语言之间的编程语言C语言标准1978年,正式出版的TheCProgrammingLanguage书中介绍的C语言,称为标准C语言1983年,美国国家标准化协会(ANSI)根据各种C语言版本对C的扩充和发展,颁布了C语言的新标准ANSICANSIC比标准C有了很大的扩充和发展1987年,美国国家标准化协会又颁布新标准,称为87ANSIC1990年,国际标准化组织ISO接受了87ANSIC作为ISOC的标准目前功能最完善、性能最优良的C新版本目前流行的C编译系统都是以它为基础的,19,5.什么是C语言?,C语言的特点适合开发系统软件结构化的程序设计语言丰富的数据类型和数据结构运算符多样化可移植性好语句简洁紧凑编程风格灵活,语法限制少,使用灵活具有预处理功能面向对象程序设计的基础,20,编写一个加法运算程序,#includestdio.hmain()inta,b;/*定义两个整形变量*/a=1;b=5;/*给两个变量赋值*/printf(“%d+%d=%dn”,a,b,a+b);/*打印a和b之和*/,C语言严格区分大、小写英文字母。,C语言程序习惯上使用小写英文字母,而大写英文字母通常作为常量的宏定义和其他特殊的用途。,5.什么是C语言?,21,#includestdio.hmain()inta,b;/*定义两个整形变量*/a=1;b=5;/*给两个变量赋值*/printf(“%d+%d=%dn”,a,b,a+b);/*打印a和b之和*/,C语言严格区分大、小写英文字母。,例:编写一个加法运算程序如下:,5.什么是C语言?,C语言程序是由一个个的语句组成。,每个语句都具有规定的语法格式和特定的功能。,编写一个加法运算程序,22,#includestdio.hmain()inta,b;/*定义两个整形变量*/a=1;b=5;/*给两个变量赋值*/printf(“%d+%d=%dn”,a,b,a+b);/*打印a和b之和*/,C语言严格区分大、小写英文字母。,例:编写一个加法运算程序如下:,5.什么是C语言?,C语言程序是由一个个的语句组成。,C语言程序使用“;”作为语句的终止符和分隔符。,可以任意书写,即一行中可以书写多个语句,一个语句也可以占用任意多行,语句之间必须用“;”分隔。初学时建议在一行内书写一条语句。,编写一个加法运算程序,23,#includestdio.hmain()inta,b;/*定义两个整形变量*/a=1;b=5;/*给两个变量赋值*/printf(“%d+%d=%dn”,a,b,a+b);/*打印a和b之和*/,C语言严格区分大、小写英文字母。,例:编写一个加法运算程序如下:,5.什么是C语言?,C语言程序是由一个个的语句组成。,C语言程序使用“;”作为语句的终止符和分隔符。,C语言程序中用大括号对“”表示程序的结构层次范围。,一个完整的程序模块要用一对花括号括起来,用以表示模块的范围。为了清晰地表现出程序的结构,建议使用右缩进锯齿型程序书写格式。,编写一个加法运算程序,24,#includestdio.hmain()inta,b;/*定义两个整形变量*/a=1;b=5;/*给两个变量赋值*/printf(“%d+%d=%dn”,a,b,a+b);/*打印a和b之和*/,C语言严格区分大、小写英文字母。,例:编写一个加法运算程序如下:,5.什么是C语言?,C语言程序是由一个个的语句组成。,C语言程序使用“;”作为语句的终止符和分隔符。,C语言程序中用大括号对“”表示程序的结构层次范围。,语言程序可以使用注释。,注释部分的格式是:注释内容注释部分不参与程序的执行,对程序的运行结果没有影响,只是用来提示或助记。,编写一个加法运算程序,25,5.什么是C语言?,C程序结构组成C程序为函数模块结构,整个程序都是由一个或多个函数组成函数是由函数说明和函数体两部分组成一个C程序总是从main()函数开始执行被调用的函数可以是系统提供的库函数,也可以是用户根据需要自己编制设计的函数(用户自定义函数)一个C程序可以由一个文件组成,也可以由若干个文件组成,分析下面程序:#includemain()inta=1,b=5,c;c=add(a,b);printf(“c=%dn”,c);intadd(intx,inty)return(x+y);,26,C程序结构组成,5.什么是C语言?,注意一个函数名后面必须跟一对(),函数参数可以没有,但这一对()不能省略,如main()在函数定义中第一行的函数名后没有分号“;”,27,5.什么是C语言?,标识符每种程序语言都规定了在程序里描述名字的规则这些名字包括:变量名、常数名、数组名、函数名、文件名、类型名等,被统称为标识符C语言标识符C语言的标识符是满足如下条件的字符序列只能由英文字母、数字和下划线组成必须以英文字母或下划线开头注意标识符的使用很多,使用时要注意语言规则C语言对大、小写字母严格区分根据ANSI标准,只有前31个字符是有意义,但一般系统使用的标识符,其有效长度不超过8个字符标识符不要与关键字同名,28,5.什么是C语言?,关键字具有特定含义的,用作专用的标识符语言中关键字绝大多数是由小写字母构成的字符序列注意:这些特定的关键字不允许用户作为自定义的标识符使用,例:指出合法的标识符与关键字“ABA”S05file.c10pageprintfyellow_reda/*执行结果65+32=97,是a的ASCII码值*/,45,10.常量,字符常量包括可以全部在计算机上显示的符号ASCII码表上的全部字符一个字符的存储占用一个字节表示方法用单引号括起来的一个字符A,1用单引号括起来的以字符开始的字符n,t,46,10.常量,字符串常量是用一对双引号括起来的字符序列双引号仅做定界符使用,本身不算入字符串常量例如“ABC”,“”(有空格),“a”,“HappynewYear”,“abcn”,“”(无空格)等C语言规定字符串的最后必须以空字符0结尾编译程序总是自动地在字符串的结尾加上一个转义字符0ASCII码是0,所对应的字符是空空字符并不计算在字符串的长度里,但是存储时,空字符将会额外的占用一个字节空间,47,10.常量,字符串常量字符串常量与字符常量的区别形式字符常量是用单引号括起的单个字符字符串常量是用双引号括起的一串字符存储方式字符常量在内存中占一个字节字符串常量除了每个字符各占一个字节外,其字符串结束符0也要占一个字节例如字符常量a占一个字节字符串常量a占2个字节,a,“a”,(97)10,(97)10,(0)10,48,10.常量,符号常量在C语言中允许程序中的常量定义为一个标识符,这个标识符称为符号常量带有名字的常量定义格式#define例如:#defineAGE35#defineM1.9734067e9提示简化书写格式、减少出错率定义符号常量可以提高程序的可读性,便于程序的调试和修改符号常量不同于变量,在其作用域内不能被改变和重新赋值习惯上人们把符号常量名用大写字母表示,10.常量练习,定义常量并输出,50,11.变量,变量在程序运行过程中其值发生改变(可以被改变)的量值C语言规定所有用到的变量都必须在程序中指定其数据类型,必须“先定义后使用”一个变量应该有一个名字(标识符)定义变量时要给其命名一个变量应该有一种数据类型编译系统根据定义变量的数据类型为其分配存储单元并在该存储单元中存放变量的值,51,11.变量,每个变量都由一个变量名来标识在C语言中,变量名作为变量的标识,其命名规则符合标识符的所有规定语言规定标识符只能由字母、数字和下划线组成且第一个字符必须是字母或下划线提示大、小写字母被认为是不同的变量名例:Sun、sun、SUN是三个不同的变量为了避免混淆,变量命名应取不同的名字而不是用大小写区分尽量取与变量含义接近的名称,变量的命名,52,11.变量,变量的定义变量定义的目的定义变量名定义变量的数据类型变量的类型决定变量的存贮结构,使C语言的编译程序为所定义的变量分配存储空间变量的定义说明了变量叫什么以及用来做什么定义一个变量的过程,实际上就是向内存申请一个变量的数据类型大小的空间的过程变量实质上就是内存某一单元的标识符号,对这个符号的引用就是对相应的内存单元的存取操作,53,11.变量,变量的定义用类型说明语句对变量进行定义定义格式typenamelist;类型说明符Type是语言中的一个有效的数据类型变量表namelist的形式是:变量名1,变量名2,变量名n,用逗号分隔的变量名的集合例inta,b23,C_123;floatsum;charmax_ch;变量的基本数据类型整型、实型、字符型,54,11.变量,整型变量不同类型的差别在于占用不同的存储空间采用不同位数的二进制编码方式计算机内部总是采用二进制补码形式表示一个数值型数据例如:整型的最高位为符号位:“1”表示负数,“0”表示正数,其余15位表示数值无符号整型数全部16位表示数值,55,11.变量,整型变量一个整型变量可以保存一个整数整型类型的基本标志是int基本型(int)短整型(shortint、short)长整型(longint、long)无符号整型(unsignedint、unsignedlong、unsignedshort)例inta;longb;unsignedintc;提示使用某种类型的变量时,一定要注意该类型变量的取值范围,56,11.变量,实型变量存储实型数据ANSIC允许的定义三种实型变量float单精度型Double双精度型longdouble长双精度型例floata,b;doublex;longdoubley;提示运用实数运算时要合理使用不同的类型,尽可能减少误差一个实型常量可以赋给float或double型变量,根据变量的类型截取实型常量的相应有效位数,57,11.变量,字符变量用来存放一个字符常量即一个字节存放一个字符标示:char例:charc1,a2;提示不能将一个字符串常量赋给一个字符变量例:charc1,c2;c1=a;c2=b;合法c1=“a”;c2=“b”;非法,58,11.变量,变量赋值初始化赋值方式(声明语句)C语言允许在定义一个变量的同时对变量进行初始化例:inti=0;/*表示定义一个整型变量i的同时将i赋值为0*/inti,j,k=10;/*表示i,j,k为整型,只有k被赋值为10*/提示如果对几个变量同时赋一个初始值,则可以写成floata=3.0,b=3.0,c=3.0;表示a、b、c的初始值均为3.0,但并不表示整个程序中三个变量值一直不变或一直相等先说明后赋值方式(赋值语句)在程序运行过程中用赋值语句给变量赋一个值例如a=10;,59,11.变量,变量在使用中应注意的问题变量要先定义后使用常量与变量的类型要匹配,例题:编写求两数和的C程序并上机运行。main()inta,b;a=32767;b=10;c=a+b;printf(c=%dn,c);/*输出变量c的值*/会出现什么问题?如何解决?,60,12.运算符与表达式,运算符C语言用于描述对数据进行运算的特殊符号语言具有丰富而繁多的运算符由运算符构成了各种表达式分类语言的运算符按其在表达式中与运算对象的关系单目运算一个运算符连接一个运算对象双目运算一个运算符连接两个运算对象三目运算一个运算符连接三个运算对象,61,12.运算符与表达式,运算符分类语言的运算符按其在表达式中的作用算术(自增/自减)运算符:(+,*,/,%、+、-)关系运算符:(,=,、|、floatb=4.5;表达式2*a+b的结果为8.5优先给与结合性,68,提示两个整数相除其结果仍为整数(即舍去小数部分)例如:13/10的结果为1“%”为求余运算符,参与运算的两个数均为整数例如:10%31-10%3-1除以0在计算机系统中是没有意义的双目运算符两侧运算对象的类型必须一致,所得结果的类型将与运算对象的类型一致用括号可以改变表达式的运算顺序,69,12.运算符与表达式,算术表达式例1:设intb=7;floata=2.5,c=4.7;表达式a+(int)(b/3*(int)(a+c)/2)%4的值?例2:,70,12.运算符与表达式,自增/自减“+”与“-”的作用是使变量的值增1或减1C语言提供两种形式的+/-运算符+a,-a(前缀运算:先进行增量运算后使用)a+,a-(后缀运算:先使用后进行增量运算)提示:增和自减只能作用于变量,不允许对常量、表达式或其它进行操作当自增/自减变量值本身就单独构成一条语句时,前缀和后缀的效果是一样的对于“+”和“-”的使用要避免二义性,71,12.运算符与表达式,自增/自减计算过程例1:设x=5y=+x;/*先计算x=x+1,再执行y=x,结果x=5,y=6*/y=x+;/*先执行y=x,再计算x=x+1,结果y=5,x=6*/问题:如何理解A+B?C规定:自左向右取尽可能多的符号组成运算符例2:设x=5y=x+*x+;/*先取x的值进行“*”运算,再进行两次x+。y=25,x=7*/y=+x*+x;/*先进行两次x自增,使x的值为7,再进行相乘运算。y=49,x=7*/,72,12.运算符与表达式,赋值表达式由赋值运算符“=”连接表达式(右侧)和变量(左侧)形式:变量名表达式赋值运算符完成两类操作计算赋值例inta=2,floatb=5.2,c;c=a*b;赋值运算符具有右结合性例如:a=b=3*5;/*先计算3*5,后将15赋给b,再将b的值15赋给a*/,73,12.运算符与表达式,赋值表达式组合赋值表达式组合赋值运算符将一个变量和一个表达式连接起来的式子称为组合赋值表达式形式:变量名表达式例:x%=y/3;/*x=x%(y/3)*/a*=b+c/*a=a*(b+c)*/注意:“a*=b+c”与“a=a*b+c”是不等价的提示“=”不是数学中的“等号”,它表示一个动作右侧的值送与左侧的变量中(左侧只允许是变量,不能是表达式或其他)赋值运算符两侧的类型要求一致,否则要进行类型转换赋值运算符=,相等运算符=,和一般习惯有所不同,74,12.运算符与表达式,关系表达式关系运算符中的“关系”二字的含义是指一个值与另一个值之间的关系关系由关系运算符(,=,OP表达式可以是常量、变量和表达式结果为整型值0:逻辑假1:逻辑真优先级:(,=,b、a+bb,abb的结果分别是多少?(0、1、0)提示进行关系运算时,先计算表达式的值,然后再进行关系比较运算例如:inta=1,b=2,c=3;(1)a+b3*c的结果为0/*39关系不成立*/(2)(a+=b)(b*=11%c)结果值为1/*34关系成立*/在表达式中连续使用关系运算符时,要注意正确表达含义例如:设的取值范围为“-1010”时,不能写成“-10=x=10”,应写成“-10=xinta,b,c;a=(-x=y+)?x:-y;b=x+;c=y;执行上述程序段后a,b,c的结果是?,分别为8,8,10,82,12.运算符与表达式,逗号表达式由逗号连接符(,)与表达式构成形式:,可以是任何类型逗号表达式的结果为最后一个表达式的结果值执行过程先求解表达式1的值,再求解表达式2的值,最后求解表达式n的值,并将表达式n的值作为整个表达式的结果值优先级级别最低(最后进行逗号运算)结合方向自左向右,83,12.运算符与表达式,逗号表达式提示不是出现逗号的地方都是逗号表达式,逗号在C语言中用于语句之中的参数分隔符在多数情况下,使用逗号表达式的目的是要分别求出每个表达式的结果值在循环结构中经常使用例题设intx,a;表达式x=(a=4,6*2)的x值?表达式x=a=4,6*2的x值?,x为12,x为4,84,12.运算符与表达式,混合运算指在一个表达式中参与运算的对象不是相同的数据类型例如:设:inta=3;floatb=3.0;charc=3;则表达式(a*c+b)/4+(int)b%2的结果?进行混合运算的首要的问题是对参与运算的数据进行类型转换类型转换由一种数据类型到另一种数据类型的转换被称为类型转换,85,12.运算符与表达式,类型转换“隐式的”自动类型转换如果同一个表达式中含有不同类型的常量和变量,C语言则在计算该表达式时会自动转换为同一种数据类型以便进行运算,86,转换原则运算中将所有char型数据转换成int型,float型转换成double型“类型提升”:低类型向高类型转换例如:1.5+2*a-1.2345678/*运算次序为:2*a:先将a转换成整型数97,得乘积1941.5+194:1.5和194都转换成double型,和为95.5195.5-1.2345678:1.2345678本身应是double型的,所以最后结果也为double型*/,87,int,char,short,unsigned,long,doub

温馨提示

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

评论

0/150

提交评论