




已阅读5页,还剩104页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,1,第2章C程序的基本构成,.,2,2.1C语言源文件C语言是结构化的程序设计语言,一个C源程序可以由一个或多个文件组成,C源程序文件的扩展名一般为.c或.cpp,下面通过实例学习多文件系统中的函数调用。,说明:文件-是指存放在存储器上以文件名进行管理的一组信息.函数-指具有独立功能、按一定格式构成的代码段。,一个大型,典型的C语言源程序大致如下所示:,.,3,C语言源程序,源程序文件1,源程序文件n,源程序文件2,.,预处理命令,全局变量声明,函数1,.,函数n,函数首部,函数体,局部变量声明,执行语句,.,4,文件包含的概念:一个文件可以将另一个源文件的全部内容包含进来,这叫文件包含处理。,当然文件包含予处理也可在特定的盘,特定的目录(文件夹)中寻找包含文件.如:#include“c:myfoldermyfile.c”,文件包含的一般格式:#include或者#include“文件名”,使用尖括号:到存放C库函数头文件所在目录中寻找要包含的文件.一般为”include”文件夹.,使用“”双引号:表示在当前目录(文件夹)中未找所包含的文件后,再按尖括号方式寻找。,.,5,在编译时,将file2.c全部内容复制到#include“file2.c“的位置上,将file1.c作为一个源文件单位进行编译。,.,6,例2.1在VisualC+环境下新建两个文件,其文件名分别为2_1_1.c、2_1_2.c,其中2_1_1.c文件定义一个做乘法的函数f(),定义另一个主调函数main().,在主调函数中分别调用函数f()以及存放在2_1_2.c中的函数disp(),在main函数中输出f()的返回值。,.,7,分析:在文件2_1_1.c中由两个函数构成,文件2_1_2.c由一个函数构成.程序的执行从main()函数开始,main函数调用f()函数,然后再调用disp()函数。,.,8,操作过程:步骤1:在VC+环境下的”新建”对话框中,点击文件选项卡,然后选中”C+SourseFile”项,输入文件名2_1_2.c,过程如下图所示。,.,9,步骤2:输入文件名2_1_2.c源程序代码并保存:,这是一个将被2_1_1.c所包含的文件.内容是一自定义函数disp().,.,10,步骤2:在VC+环境下的再新建一文件:2_1_1.c.输入文件名2_1_1.c,过程如下图所示。,.,11,文件2_1_1.c的程序源代码:,说明:1.文件2_1_1.c中有f()与main()函数.,2.一个可执行的程序必须有一个main函数,并且只能有一个main函数。,.,12,3.由于在文件2_1_1.c中有文件包含#include“2_1_2.c”语句.在2_1_2.c有自定义函数disp().,只有这样才能在2_1_1.c文件中的main函数才可以调用disp函数。,.,13,步骤3:点击”编译”图标进行编译源程序2_1_1.c。(设:源程序2_1_2.c已存在同一文件夹内),.,14,调用函数disp()的结果.,调用函数f()的结果.,调用函数disp()的结果.,.,15,总结:1.C程序是由函数组成,必须要包含一个主函数main().函数之间可以相互调用.因此,函数是C程序的基本单位。,(1).C用各种各样的函数来完成某些特定功能。(2).C函数库十分丰富,标准C提供一百多个函数.,被调函数可以是系统提供的库函数,如:printf(),scanf();也可以是根据需要自己编写的函数,如:disp().,.,16,2.一个C程序总是从main()函数开始执行,不管这个main()在整个程序中处于什么位置。main()函数可放在整个程序的最上头,或最后,或一些函数的中间.,3.C程序书写格式自由:一行内可以写几条语句.一条语句可写在多行上,行尾使用续行符:“”.*书写程序时,一律使用英文标点符号.,.,17,*C语言程序中区分大小写。,C语言中大小写字母代表不同含义.也即C语言对大小写敏感.,*在程序中int、return、include叫保留字,在C语言中有特定的含义,一般不作它用。*而disp、f、a、b等为用户自定义标识符,通常为了定义函数、变量所取的名字,取名要有一定的规则。,.,18,4每条语句及变量定义的最后要有一个分号(;),分号(;)是语句的必要组成部分。如:intx,y=7;c=a+b;注:变量定义必须放在函数的开头部分,执行语句之前,不能插入在语句当中.C+可放程序任何位置.,5C语言本身并没有输入,输出语句.输入,输出的操作是由库函数,像printf(),scanf()函数来完成。C语言对输入、输出实行“函数化”管理。,.,19,上机练习11.上机调试程序例2.12.在例2.1中,修改函数disp为display,显示两排星号,函数f改为func,做两个数的加法运算,main函数调用这两个函数,请编写程序并编译调试。3在文件2_1_1.c中去掉#include这一行,观察编译程序时有什么提示。,.,20,2.2C函数函数是完成特定任务的独立模块,函数的使用最主要涉及到函数的定义与调用。,C程序是由一个或多个文件构成,而文件可由一个或多个函数组成.如在前述的文件2_1_1.c中,由两个函数main()、F()构成.文件2_1_2.c由一个函数disp()构成。,.,21,一.函数的调用形式为:函数名(参数);,注:函数的原型:函数返回值类型函数名(形式参数表);,函数的原型:指明了函数名是什么?函数的返回值类型是什么?它的形式参数个数及类型?,函数的调用:只要写上函数名和相关的实际参数就可以进行函数调用了.,参数:执行一个函数所必须提供的数据叫参数.,.,22,返回值类型函数名(形式参数声明)数据声明部分语句部分,二.C函数定义的结构示意图,大括号内为函数体.,.,23,例2.2函数结构的例子intadd(intx,inty)intz;/*数据定义部分,给变量分配内存空间*/z=x+y;/*执行语句*/returnz;,Add为函数名.其功能为:计算两数之和.,int为函数的返回值类型.,intx,inty为函数的形式参数定义,其中“”和“”分别表示函数执行的起点与终点.(或程序块的起点与终点.),.,24,intadd(intx,inty)intz;/*变量定义,给变量分配内存空间*/z=x+y;/*执行语句*/returnz;,函数调用时,实际参数传给这里的形式参数.与此同时为形参变量在内存中分配相应的存储空间。,执行函数add()后,函数返回一值z到主调函数,其类型为整型。,.,25,注:在C语言中,变量在使用前,一定要先定义:指定变量的名字及类型,在编译时给变量分配存储空间。例如:intz;,指定变量的名字为z,及类型为int.(在编译时给变量分配存储空间)。,.,26,变量的定义,变量定义的一般形式:类型名变量名表;,注:变量名按C语言的命名规则命名.变量名一般用小写字母,见名知义.,例如:intx3,n;定义整型变量floaty2;定义单精度浮点型变量doublearea,length;定义双精度浮点型变量,多个变量用逗号(,)分开,最后加一分号(;).,.,27,每一个变量有二个特性:有一个名字和相应的类型,并在编译时分配相应的内存单元。该存储单元的大小由变量的数据类型决定.,变量名,变量值,存储单元,.,28,C语言中的变量和代数中的变量含义不同.数学中的变量代表未知数.如在C语言中的式子:x=x+1在代数中没有意义.,但在C语言中,式子x=x+1表示把变量x中的值加1,然后再保存到x中.,这里的”=“是赋值运算符.构成了一赋值表达式.,x=x+1,.,29,2.3C语句C文件由函数构成,函数由语句构成,语句的结束符用“;”表示.在例2.1中的文件2_1_1.c中的main函数,由5条语句构成,每条语句用“;”表示语句的结束。,intx=3,y=4,z;-变量定义语句.表示定义了x、y、z三个变量,并给x、y分别赋予一个最初的值3与4.,intx=3,y=4,z;disp();z=f(x,y);printf(%d*%d=%dn,x,y,z);disp();,disp();-函数调用语句.表示调用函数disp().输出:*,.,30,intx=3,y=4,z;disp();z=f(x,y);printf(%d*%d=%dn,x,y,z);disp();,z=f(x,y);表示调用函数f(),在调用函数f()时把实参x、y的值分别传给形参a、b.返回值最后赋给变量z.,printf(“%d*%d=%dn”,x,y,z);表示调用系统函数printf输出,其输出形式为:3*4=12,在被调函数f()中把a、b的乘积赋给变量c,然后函数f()把返回值c赋给main函数中的z。,.,31,2.4保留字与标识符语句由保留字、标识符、运算符和表达式构成。2.4.1保留字保留字是指C语言中有特殊含义的名字,只能用于C语言中特定的场合。,例如:int:用于定义整型类型变量float:用于定义实型变量double:用于定义双精度变量char:用于定义字符变量或字符串变量,.,32,注意:保留字只能用于规定的场合,不能用作给变量取名或用户自定义标识符。,if:用于判断for:用于循环while:用于循环在C语言中其它的保留字见附录C,其含义在以后的章节中陆续学到。,.,33,2.4.2标识符标识符简单的理解就是给在程序中涉及的对象取的名字.标识符分为系统命名的标识符与用户自命名标识符,系统标识符通常用于系统函数的命名,如:printf、strlen、scanf、fabs、malloc等。,用户自命名标识符是用户为命名变量或定义函数等而取的名字,通常用户自定义标识符以字母、数字、下划线组成,并以字母或下划线开头。,.,34,注意:a_12、_12、ab12等都是正确命名的标识符。12a、a/b等都是不正确的标识符。,思考:是否可用:intif=5;定义一个整型变量?为什么?,.,35,2.5运算符在C程序中有极为丰富的运算符,例如:赋值运算符、算术运算符、关系运算符、逻辑运算符、位运算符等。,运算符及其优先级请参阅附录,.,36,2.5.1算术运算符算术运算符有:加、减、乘、除、取余数,它们的表达方式及含义如下表所示。,运算符含义例备注+加5+2结果7-减5-2结果3*乘5*2结果10/除5/2结果2%求余5%2结果1只适用于整型数,+自增-自减,.,37,算术运算符的优先级:,低,高,.,38,1.关于除法运算符:/两个整数相除结果为整数:5/2结果25/3结果1,2.关于求余运算符:%两边的操作数都应是整数.5%2结果17%4结果3,除法运算符”“/“的运算结果跟两个操作数的类型有关:(1).如果两边都是整形,结果必定为整形.(2).如果两边是其它类形,结果不是整形.,.,39,3.C语言也规定了算术运算符的优选级和结合性。在表达式求值时:*先按运算符的优先级别高低次序执行,如a-b*c,*如果在一个运算对象两侧的运算符级别一样,则按“结合方向”处理。,算术运算符的结合方向是“自左至右”,即先左后右.又称“左结合性”即运算对象先与左边的运算符相结合。,.,40,如:a-b+c,因此b先与减号结合,执行a-b的运算,再执行加+c的运算.,以后还将遇到“右结合性”的运算符,其结合方向为自右至左。即运算对象与右边运算符的相结合.结合性是在别的高级语言中没有的,是C特有的。请参阅附录:列出所有运算符的优先级和结合性。,.,41,3、算术表达式:,算术表达式:用算术运算符将运算对象连接起来的,符合C语言语法规则的式子.,什么是表达式?由常量,变量,各种运算符,函数和括号连接而成的,合符c语言语法规则的有意义的式子,称为表达式。如:a+23,t+sqrt(y),z=x+y,Pi*r*r,.,42,从广义上来讲,单个变量,单个常量也可看作表达式。c具有众多运算符,可以构成多种表达式:赋值表达式,算术表达式、字符串表达式、关系表达式,逻辑表达式.,.,43,算术表达式的书写规则:,在数学表达式中省略的内容要写上:如:2x要写成2*x2r要写成2*r,s(s-a)(s-b)(s-c)要写成s*(s-a)*(s-b)*(s-c)(59)(F-32)要写成(5/9)*(F-32)x1+x2要写成x1+x2,.,44,4.自增、自减运算符:在算术运算符中,C语言又增加了两个很有用的运算符:+加1运算符(自增)-减1运算符(自减),作用:使变量的值加1或减1。如;+x;相当于x=x+1;-x;相当于x=x-1;,.,45,增1,减1运算符可放在操作数之前,也可放在其后。如:+i,-i变量使用之前,先使i增1,减1.i+,i-变量使用之后,再使i加1,减1,设:i=3;j=+i;(j的值为4)j=i+;(j的值为3,i的值为4),注意!,.,46,例:main()inta=100;printf(“%dn”,+a);printf(“%dn”,a+);printf(“%dn”,a);,结果:101,101,102,.,47,(2).结合方向是“自右至左”,即“右结合”.如有:-i+负号和“+”同一优先级,结合方向同为“自右而左”,即相当于-(i+).,注:(1).+,-运算符只能用于变量,不能用于常量与表达式。如:5+,(a+b)+都不合法.,.,48,思考:表达式y=1+x+是否等同于x+,y=1+x还是等同于y=1+x,x+?,.,49,上机练习21:上机调试下列程序,总结余数的符号与什么相关。#includeintmain()printf(%d%dn,5%2,-5%2);return0;,.,50,2:上机调试下列程序,分析程序输出的结果。#includeintmain()intx,y,z;scanf(%d,scanf(%d,3:把前程序中的+都改为-,再次调试程序,观察程序运行的结果。,现设给x输入了一个5,问:y,z,x输出各为多少?,输出:y=5,z=3,x=3,.,52,5.赋值运算符:=,在C中,把赋值符“=”也列为运算符之列,“=”执行赋值操作。,如:y=23.3x=45.3+y*4,执行过程如下:变量表达式,注:左边必须是一个变量.,1.首先计算表达式的值.同时把其类型转为左边变量的类型.,.,53,说明:1.如果在赋值运算中,赋值符两侧类型不一致,在赋值时要进行类型转换。,规则:赋值符右边的值转变为赋值符左边变量所属的类型(系统自动转换)。,例如:a.将实型数据赋给整型变量时,小数部分自动丢失。inti;i=8.56;(i为整型变量,i的值就为8),.,54,b.将整型数据赋给实型变量时,数值不变,但以浮点形式存于内存。如:floatf2;f2=28;,f2将以28.0000存于内存。(单精度以6位有效数字存入,双精度有15位有效数字),.,55,例:若x是整型变量,表达式(x=10.0/4.0)的值是_A.2.5B、2.0C、3D、2,.,56,6、复合赋值运算符:(1).如果在赋值符=之前加上其它运算符,可构成复合赋值运算符,如:+=(相加赋值)*=(相乘赋值),例如:a+=3相当于a=a+3x*=y+8相当于x=x*(y+8)x%=3相当于x=x%3,C采用这种形式,一是为了简化程序,二是为了提高编译效率。,凡是二目(二元)运算符,都可与赋值符组成复合赋值符.,.,57,为了便于记忆,可以这样理解:设有:a+=b又设a为变量,b为表达式a+=b(“=”左边部分,插入“=”右边)a=a+b(“=”左边补上变量名),如果b表达式是包含若干项的表达式,它相当于有括号:x%=y+3x%=(y+3)x=x%(y+3),.,58,(2).赋值表达式:由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”.,如:“a=5*b”就是一个赋值表达式,赋值表达式的值就是被赋值的变量的值.,.,59,7、强制类型转换运算符如:(double)a2.(将a2变量强制转换成double型)(int)(x+y).(将(x+y)的类型强制转换int型)一般形式为:(类型名)(表达式),说明:进行强制类型转换时,得到一个所需的中间变量,原来的变量类型不变。例:floatx1;inti;x1=13.6;i=(int)x1;*i的值为13*,.,60,类型转换有二种方法:a.系统自动进行.b.强制进行.强制类型转换在函数调用时,当要求形参与实参的类型一致时使用。,.,61,2.5.2关系运算符一、关系运算符与关系表达式:关系运算符也就是一种比较大小的运算符。,.,62,算术运算符:*,/,%+,-高关系运算符:,=,=,!=赋值运算符:=低复合赋值运算符:+=,%=,*=,运算符的优先级请见附录B,.,63,2关系表达式:用关系运算符将两个表达式连起来的式子关系表达式。关系表达式由于是一种比较的操作,其结果是成立,不成立的关系。也即产生一个逻辑值,“真”或“假”。,C语言中没有设逻辑型数据.C中用1代表逻辑真,0代表逻辑假。,01,.,64,如:设:a=4,b=3,c=2;则:(1).ab的值为“真”,表达式的值为1.(2).d=bc/*d的值为1.*/,(3).e=abc/*e的值为0.*/*因“”运算符自左到右结合,先执行ab,值为1,再执行1c,值为0*/(4).f=(ab)+af的值为5,.,65,思考:表达式y=610=1它等同于y=(6%d=%dn,x,y,a);a=x/y;printf(%d/%d=%dn,x,y,a);a=x%y;printf(%d%d=%dn,x,y,a);.,ch2_2_3.c,输出符号%时,需写成:,.,76,.a=x=y;printf(%d=%d=%dn,x,y,a);a=x!=y;printf(%d!=%d=%dn,x,y,a);a=x,.,77,注:由于%通常用于格式控制符中,当在printf中输出符号%时,需写成:printf(“%d%d=%dn”,x,y,a);,而不是:printf(%d%d=%dn,x,y,a);,说明:在编译新程序前要关闭前一程序的工作空间。,注意!,.,78,思考:1.写出判断x大于0并且小于10的表达式。(x0)1|0为1;0|0为0.1100|1010结果1110,4.按位异或例:11为0;00为0;10为1.1100scanf(%d,请读者自行调试,如程序运行时分别输入7、8,输出是什么?为什么?,ch2_2_4.c,输入12,(12)1100(4)0100,.,84,例:执行下列程序段后,a值为_:inta,b;a=15;b=-1;a=a+bA)15B)0C)1D)16,例:写出下列程序段的输出结果:floatx1,x2;x1=3/2;x2=x1/2;printf(%d,%.1f,(int)x1,x2);,C).1,1,0.5,3/2的值为1,.,85,第2章C程序的基本构成结束,.,86,上机练习一、模仿例2.4从键盘输入一个整型数,从0开始计数判断此数转化为二进制数后第4位是否为1。思考:1intx=3,y=4,z;z=x在这4种情况下,z的值分别是多少?,.,87,二、实验指导书上内容1、预习实验指导书上整型变量、实型变量、字符型常量与变量等知识点2、完成实验指导书上P14实验内容与步骤的1、2、3、4、5、6、7、8、9题三、要求每题的代码和实验结果写成word文档的形式上传,文档名称写上学号和姓名。(如:1班-学号-姓名),.,88,2.6编辑C程序时应注意的问题1.C程序中区分大小写字母,书写格式自由,一行内可写几个语句。用“;”作为语句的结束标记。,3.函数定义如:main()、#include、#definePI3.14159不是语句,后面不能用“;”号。注释用符号“*”和“*”来界定,“”和“*”之间不可以有空格。一个好的程序应该有详细的注释。,.,89,课后作业:,课本P23页练习与实战中的一、二、三大题,.,90,练习与实践一、选择题1()是构成C语言程序的基本单位。(A)函数(B)过程(C)子程序(D)文件,.,91,2在下述程序段中,()是错误的程序注释方法(注:本例多个选择)。(A)#in/*包含*/cludevoidmain()printf(Howareyou?n);,(B)#includevoidmain()inti=3;/*整型数*/,.,92,(C)#includevoidmain()intx/*初始化*/=10;/*打印*/printf(%d,x);(D)#includevoidmain()intx=10;printf(%d,x);/*打印x/*x=10*/的值*/,.,93,3()是C语言提供的合法的数据类型关键字。(A)Float(B)signed(C)integer(D)Char4以下选项中不合法的用户标识符是()。(A)abc.c(B)file(C)Main(D)PRINTF5合法的语言字符常数是()。(A)084(B)A(C)ab(D)x43,.,94,6C语言中,要求运算数必须是整型的运算符是()。(A)%(B)/(C)(D)!7以下选项中不正确的实型常量是()。(A)2.607E1(B)0.8103e2.(C)77.77(D)456e28合法的C语言赋值语句为()。(A)a=b=58(B)i+;(C)a=50,b=50(D)k=int(a+b);,.,95,9不合法的C语言赋值语句为()。(A)+a;(B)n1=(n2=(n3=0);(C)a=b=c;(D)k=a+b=1;10正确的语句是()。(A)intx=y=z=0;(B)intz=(x+y)+;(C)x=+3=2;(D)x%=2.5;,.,96,11下述程序的输出是()。#includevoidmain()intx=023;printf(%d,-x);(A)17(B)18(C)23(D)24,.,97,12设a,b,c均定义为int型,且已赋于大于1的数,能正确表达1/(abc)的表达式是()。(A)1/a*b*c(B)1/(a*b*c)(C)1.0/a*b*c(D)1.0/a/b/c,.,98,二、写出表达式或程序的运行结果1以下程序输出结果是()。#includevoidmain()inta,d=241;a=d/100%9;printf(%dn,a);,.,99,2定义:inta=5,b=4;floatx=5.5,y=3.7;(float)(a+b)/2+(int)x/(int)y+(int)(x+y)%4/2值为()。3定义inta=2,b=3,c=4;执行完下列语句后:a*=10+(b+)(+c);a=(),b=(),c=()。,.,100,4定义:inty=0,x=3;y=+x*+x*+x;执行后x,y的值为:x=(),y=()5定义:inta=20,n=10;求各式的值。(A)a/=a+a;(a=)(B)a%=n%=7;(a=)(C)a+=a-=a*=a;(a=),.,101,6若x、y、z均为int型变量,则执行以下语句后的输出为(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年福建省医学科学研究院招聘笔试真题
- 校长个人在家长会的发言稿(8篇)
- 理解数据库共享与隔离特性试题及答案
- 门供货安装合同范本(10篇)
- 网络信息安全防护解决服务合同
- 采购年度工作总结个人简短(9篇)
- 软件测试人员在项目中的责任与角色定位分析试题及答案
- 行政组织的数字技术应用及试题答案
- 心理学压力管理策略知识要点
- 连人带车合同协议书
- 大数据专业英语教程 课件 Unit 1 B Applications of Big Data
- 五脏排毒课件
- 2024年系统分析师各章节重要考点及试题及答案
- 2025年航空知识竞赛必考题库及答案(共60题)
- 金融专业毕业论文范文
- 2020-2025年中国果蔬保鲜行业投资潜力分析及行业发展趋势报告
- TSG21-2025固定式压力容器安全技术(送审稿)
- DB2107-T 0011-2023 多旋翼无人机道路巡查疏导作业规范
- LY/T 3398-2024草原等级评定技术规程
- 广西河池市(2024年-2025年小学六年级语文)部编版期中考试(下学期)试卷及答案
- 2025年日历(日程安排-可直接打印)
评论
0/150
提交评论