书签 分享 收藏 举报 版权申诉 / 88
上传文档赚钱

类型函数与编译预处理解读课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4395672
  • 上传时间:2022-12-05
  • 格式:PPT
  • 页数:88
  • 大小:280.32KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《函数与编译预处理解读课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    函数 编译 预处理 解读 课件
    资源描述:

    1、n6.1 模块化程序设计与函数模块化程序设计与函数n6.2 函数的定义与调用函数的定义与调用n6.3 函数的递归调用函数的递归调用n6.4 变量的作用域与存取方式变量的作用域与存取方式n6.5 编译预处理编译预处理16.1模块化程序设计与函数模块化程序设计与函数 在设计较复杂的程序时,我们一般采用的方法是:把问题分成几个部分,每部分又可分成更细的若干小部分,逐步细化,直至分解成很容易求解的小问题。这样的话,原来问题的解就可以用这些小问题来表示。2基本概念基本模块模块模块模块模块模块模块模块模块模块2022-12-53模块与函数C语言程序由基本语句和函数组成,每个函数可完成相对独立的任务,依一定

    2、的规则调用这些函数,就组成了解决某个特定问题的程序。把大任务分解成若干功能模块,用多个函数来实现这些功能模块。通过函数的调用来实现完成大任务的全部功能。任务、模块与函数的关系:一个大任务分成多个功能模块,功能模块则由一个或多函数实现。模块化的程序设计是靠设计函数和调用函数实现的。4例:分数排序任务:输入三个数,从大到小的顺序的输出。如果大于等于85,在该数后面输出A,小于85且大于等于70,则输出B,小于70且大于等于60,输出C,如果小于60,则输出D。思路:scanf()输入分数另建一个排序函数判断并输出等级函数打印分数及等级的函数 虽然也可以由一个主函数来完成,但这虽然也可以由一个主函数

    3、来完成,但这样做可读性及操作性会更好。样做可读性及操作性会更好。5模块设计的原则模块独立规模适当层次分明功能专一66.2 函数的定义与调用n在C语言中,把逻辑上独立,能完成规定任务的模块称为函数或函数组。一个源程序文件由一个或多个函数组成。一个源程序文件是一个编译单位,即以源程序为单位进行编译,而不是以函数为单位进行编译。一个C程序由一个或多个源程序文件组成。一个源文件可以为多个C程序公用。C程序的执行从main函数开始,调用其他函数后流程回到main函数,在main函数中结束整个程序的运行。main函数是系统定义的。所有函数都是平行的,即在定义函数时是互相独立的,一个函数并不从属于另一函数,

    4、对于编制好的函数,需要时可随时加以调用,但不能调用main函数。7一、函数分类一、函数分类函数按主次分为:主函数和非主函数两种。主函数是名为main的函数,是一个源程序不可缺少部分;函数按编程技术分为:有返回值的函数和无返回值的函数;函数按编制者分为:库函数(标准函数)和自定义函数:前者由系统提供,只要在#include命令中写上相应的头文件,就允许用户直接调用;后者是用户自己定义的函数,解决用户的专门需要。函数按参数分为:无参函数和有参函数两种。有参函数指在调用函数时,在主调函数和被调用函数之间有数据传递。也就是说,主调函数可以将数据传给被调用函数使用,被调用函数中的数据也可以带回来供主调函

    5、数使用。8二、标准库函数与自定义函数C语言有丰富的库函数,这些函数的说明在不同的头文件(*.h)中。想要调用标准的库函数,就必须include。#includemain()printf(“%d”,1024*768);调用printf函数时,必须include9自定义函数可以把完成一个任务的过程写成函数。int A_to_a(int capital)int small;if(capital=A&capital=Z)small=capital (A-a);return small;返回值类型名函数名注意不要与已有库函数重名参数说明和参数列表调用函数时输入参数的格式要与之相同定义局部变量最好只使用局

    6、部变量,这样将方便调试。返回值如果不需返回则可return 0;另外请注意这样的判断另外请注意这样的判断,如写成如写成Acapitaly?x:y;return(z);3、可以有、可以有“空函数空函数”它的形式为:类型说明符类型说明符 函数名()函数名()例如:dumy()124、对形参的声明的传统方式、对形参的声明的传统方式 在老版本C语言中,对形参类型的声明是放在函数定义的第2行,也就是不在第l行的括号内指定形参的类型,而在括号外单独指定,例如:int max(x,y)int x,y;int z;z=xy?x:y;return(z);一般把这种方法称为传统的对形参的声明方式,而把前面介绍过的

    7、方法称为现代的方式。Turbo C和目前使用的多数C版本对这两种方法都允许使用,两种用法等价。131、形式参数和实际参数、形式参数和实际参数 在定义函数时函数名后面括弧中的变量名称为“形形式参数式参数”,在主调函数中调用一个函数时,函数名后面括弧中的参数(可以是一个表达式)称为“实际参实际参数数”。三、函数参数和函数的值三、函数参数和函数的值14int max(int a,int b)int y;y=(ab)?a:b;return y;同样的,在调用m=max(a,b)时,其形参的值是a和b而m将会得到y的值调用时:m=max(3,6);m=max(a,b);括号里是形式参数返回值括号里是实参

    8、在这一句调用时,形参的值是3和6其返回值y将被赋给调用语句中的m函数的参数15调用函数时的数据传递main()int a,b,c;scanf(“%d,%d”,&a,&b);c=max(a,b);printf(“Max is%d”,c);max(int x,int y)int z;z=xy?x:y;return(z);运行情况:运行情况:7,8 Max is 8例:16关于形参与实参的说明:关于形参与实参的说明:(1)在定义函数中指定的形参,在未出现函数调用时,它们并 不占内存中的存储单元。只有在发生函数调用时,函数 max中的形参才被分配内存单元。在调用结束后,形参所 占的内存单元也被释放。(

    9、2)实参可以是常量、变量或表达式,如:max(3,a+b);但要求它们有确定的值。在调用时将实参的值赋给形参 (如果形参是数组名,则传递的是数组首地址而不是数组 的值)。17(3)在被定义的函数中,必须指定形参的类型。(4)实参与形参必须个数相同,实参与形参的类型应相同或赋值兼容。(5)C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给 实参,在调用函数时,给形参分配存储单元,并将实参对 应的值传递给形参,调用结束后,形参单元被释放,实参 单元仍保留并维持原值。函数的返回值函数的返回值(1)函数的返回值是通过函数中的return语句获得的。

    10、return 语句将被调用函数中的一个确定值带回主调函数中去。18return 语句后面的括弧也可以不要,如:return z;return后面的值可以是一个表达式。max(int x,int y)return(xy?x:y);(2)函数值的类型。在定义函数时指定函数值的类型。例如:int max(float x,float y)函数值为整型char letter(char c1,char c2)函数值为字符型double min(int x,int y)函数值为双精度型19 C语言规定,凡不加类型说明的函数,一律自动按整型处理。在定义函数时对函数值说明的类型一般应该和return语句中的表达

    11、式类型一致。例 返回值类型与函数类型不同。main()float a,b;int c;scanf(“%f,%f,”,&a,&b);c=max(a,b);printf(“”Max is%dn”,c);max(float x,float y);float z;/z为实型变量/z=xy?x:y;return(z);运行情况如下:1.5,2.5Max is 220(3)如果函数值的类型和return语句中表达式的值不一致,则 以函数类型为准。对数值型数据,可以自动进行类型转 换。即函数类型决定返回值的类型。(4)如果被调用函数中没有return语句,并不带回一个确定的、用户所希望得到的函数值,但实际上

    12、,函数并不是不带回 值,而只是不带回有用的值。带回的是一个不确定的值。(5)为了明确表示“不带回值”,可以用“void”定义“无类型”(或称“空类型”)21四、函数调用1、函数调用的一般形式 函数名(实参表列);函数名(实参表列);如果是调用无参函数,则“实参表列”可以没有,但括弧不能省略,如果实参表列包含多个实参,则各参数间用逗号隔开。实参与形参的个数应相等,类型应一致。实参与形参按顺序对应,一一传递数据。如果实参表列包括多个实参,对实参求值的顺序并不是确定的,有的系统按自左至右顺序求实参的值,有的系统则按自右至左顺序。许多 C版本(例如 Turbo C和 MS C)是按自右而左的顺序求值。

    13、222、函数调用的过程(1)计算实在参数表中各表达式;(2)将表达式的值(此值可以是一般意义量的值,也可以是指针的值(地址)依次赋给同类型的各形式参数;(3)控制转移到函数体,执行函数体;(4)当遇到return语句中包含表达式时,则将表达式的值送回调用函数;没执行到return语句或虽执行到return语句但不包含表达式时,均没有确定值送回调用函数.对void型函数,return语句不能带表达式.在考察函数调用时在考察函数调用时,要注意要注意:是以表达式形式调是以表达式形式调用函数还是以语句形式调用函数;用函数还是以语句形式调用函数;参数传递,是参数传递,是传值还是传地址;传值还是传地址;有

    14、无返回值与函数类型的关系。有无返回值与函数类型的关系。233、函数调用的方式 按函数在程序中出现的位置来分,可以有以下三种函数调用方式:(1)函数语句:把函数调用作为一个语句。如:printstar();(2)函数表达式 函数出现在一个表达式中,这种表达式称为函数表达式。这时要求函数带回一个确定的值以参加表达式的运算。例如:c=2*max(a,b);(3)函数参数函数调用作为一个函数的实参。例如:m=max(a,max(b,c);244、对被调用函数的声明和函数原型 在一个函数中调用另一函数(即被调用函数)需要具备的条件(1)首先被调用的函数必须是已经存在的函数(是库函数或用 户自己定义的函数

    15、)。(2)如果使用库函数,一般还应该在本文件开头用include命 令将调用有关库函数时所需用到的信息“包含”到本文件中 来。例如,前几章中已经用过的 include(3)如果使用用户自己定义的函数,而且该函数与调用它的函 数(即主调函数)在同一个文件中,一般还应该在主调函 数中对被调用的函数作声明声明,即对编译系统声明将要调用 此函数,并将有关信息通知编译系统。25例 对被调用的函数作声明main()float add(float x,float y);/对被调用函数的声明/float a,b,c;scanf(“%f,%f”,&a,&b);c=add(a,b);printf(“sum is%

    16、f”,c);float add(float x,float y);/函数首部/float z;/函数体/z=x+y;return(z);运行情况如下:3.6,6.5sum is 10.00000026在函数声明中也可以不写形参名,而只写形参的类型。如:float add(float,float););在C语言中,以上的函数声明称为函数原型(function prototype)。它的作用主要是利用它在程序的编译阶段对调用函数的合 法性进行全面检查。函数原型的一般形式为 函数类型函数类型 函数名(参数类型函数名(参数类型1,参数类型,参数类型2)函数类型函数类型 函数名(参数类型函数名(参数类型

    17、1,参数名,参数名1,参数类型,参数类型2,参数名参数名2)第种形式是基本的形式。为了便于阅读程序,也允许在函数原型中加上参数名,就成了第种形式。但编译系统不检查参数名。因此参数名是什么都无所谓。27说明:如果在函数调用之前,没有对函数作声明,则编译系统会把第一次遇到的该函数形式(函数定义或函数调用)作为函数的声明,并将函数类型默认为int型。如果函数类型为整型,可以在函数调用前不必作函数声明。但是使用这种方法时,系统无法对参数的类型做检查。若调用函数时参数使用不当,在编译时也不会报错。因此,为了程序清晰和安全,建议都加以声明为好。如果被调用函数的定义出现在主调函数之前,可以不必加以 声明。2

    18、8 如果已在所有函数定义之前,在函数的外部已做了函数声明,则在各个主调函数中不必对所调用的函数再作声明。例如:char letter(char,char);/以下3行在所有函数之前,且在函数外部/float f(float,float);int i(float,float);main()/不必声明它所调用的函数/char letter(char c1,char c2)/定义letter函数/float f(float x,float y)/定义f函数/int i(float j,float k)/定义i函数/296.3函数嵌套与递归调用n一、函数的嵌套调一、函数的嵌套调用用 C语言的函数定义都

    19、是互相平行、独立的,也就是说在定义函数时,一个函数内不能包含另一个函数。C语言不能嵌套定义函数,但可以嵌套调用函数,也就是说,在调用一个函数的过程中,又调用另一个函数。main函数函数a函数函数b函数函数调用调用a函数函数调用调用b函数函数结束结束30例:编一个程序计算下列函数值;编一个程序计算下列函数值;要求为函数p(i)、s(n)、f(x,y)均编写一个用户函数,x、y由主函数输入。f(x,y)=s(x)s(y)其中s(n)=p(i)=p(1)+p(2)+p(n),p(i)=i!ni=131float p(long i)long k,j;for(k=j=1;j=i;j+)k=k*j;ret

    20、urn(float)(k);float s(long n)float sum=0.0;long k;for(k=1;k1)的递归调用函数。float p(long n)if(n1 1 n=0,135 我们把向下的递归调用过程称为“递归过程”,把向上的携带返回值计算返回表达式的过程称为“回溯过程”。其中递归过程的关键在于每次递归时,参数的值都要逐步趋向某个特定值(例子中这个特定值是1)。当递归到参数值等于特定值时,递归过程结束,此时一定要有返回值。递归的规则和递归的出口36例1.有有5 5个人坐在一起,问第个人坐在一起,问第5 5个人年龄?他说比第个人年龄?他说比第4 4个个人大人大2 2岁;问

    21、第岁;问第4 4个人年龄?他说比第个人年龄?他说比第3 3个人大个人大2 2岁;问第岁;问第3 3个人年龄?他说比第个人年龄?他说比第2 2个人大个人大2 2岁;问第岁;问第2 2个人年龄?他个人年龄?他说比第说比第1 1个人大个人大2 2岁;最后问第岁;最后问第1 1个人年龄,他说是个人年龄,他说是1010岁,岁,请问第请问第5 5个人的年龄?个人的年龄?则:递归规则:age(n)=age(n-1)+2递归出口:age(1)=102、例例HanoiHanoi塔问题塔问题 37例3.用递归方法求n阶勒让德多项式的值.)1(/)()1()()12()1()0(1)(21nnxpnxPxnnxnx

    22、pnnn分 析:递归规则就是Pn(x)与Pn-1(x)及Pn-2(x)的关系 递归出口:n=1或n=0的情况.T tn=0?F返回1 T tn=1?F 返回tx 递归 调 用P()N-S 图:38例3程序main()int x,n;float p();printf(nPlease Input n and x:);scanf(%d,%d,&n,&x);printf(N=%d,X=%d.n,n,x);printf(P%d(%d)=%10.2f,n,x,p(n,x);float p(tn,tx)int tn,tx;if(tn=0)return(1);else if(tn=1)return(tx);e

    23、lse return(2*tn-1)*tx*p(tn-1),tx)-(tn-1)*p(tn-2),tx)/tn);运行结果:Please Input n and x:0,7N=0,X=7.P0(7)=1.00Please Input n and x:1,7N=1,X=7.P1(7)=7.00Please Input n and x:3,4N=3,X=4.P0(7)=154.0039例4.递归法将一个整数n转换成字符串,例如输入483,应输出字符串“4 8 3”.n的位数不确定,可以是任意位数的整数.分析分析:1.由于位数不确定,所以不可能先直接计算高位的字符,只能采用递归的形式,从个位开始“进

    24、入递归”,到最高位则可以达到递归出口,然后再“回溯”。2.要考虑输入负整数的情况.number为负TF输出负号使number变为正数递归调用convert函数输出字符输入整数numberN-S图图:40例4程序#include stdio.hvoid convert(int n)int i;if(i=n/10)!=0)convert(i);putchar(n%10+0);putchar();main()int number;printf(nPlease Input:);scanf(%d,&number);printf(nOutput is:);if(numberb?a:b;return(c);

    25、main()int a=8;/a为局部变量/printf(“%d”,max(a,b);形参a、b作用范围a、b作用范围局部变量a作用范围全局变量b的作用范围运行结果为:848例题分析#include include.hintint a,b;/a,b;/*a a,b b为全局变量为全局变量*/void f1(void f1(intint x)x)intint t1,t2,a;t1,t2,a;a=t1=x a=t1=x*4;4;t2=b t2=b*3;3;b=10 b=10;printfprintf(“f1:t1=%d,t2=%d,a=%d,b=%dn”,t1,t2,a,b);(“f1:t1=%d

    26、,t2=%d,a=%d,b=%dn”,t1,t2,a,b);main()main()a=2;b=4;/a=2;b=4;/*此此a,ba,b是全局变量,赋值是全局变量,赋值 */f1(a);/f1(a);/*调用函数调用函数f1()f1()*/printfprintf(“main:a=%d,b=%d”,a,b);(“main:a=%d,b=%d”,a,b);f1:t1=8,t2=12,a=8,b=10main:a=2,b=10输出结果:输出结果:49若将程序改为若将程序改为:#include include.hintint a=2,b=4;/a=2,b=4;/*a a,b b为全局变量为全局变量

    27、*/void f1()void f1()intint t1,t2;t1,t2;t1=a t1=a*2;2;t2=b t2=b*3;3;b=100 b=100;printfprintf(“f1:t1=%d,t2=%d(“f1:t1=%d,t2=%d,b=%dn”,t1,t2,b);b=%dn”,t1,t2,b);main()main()intint b=4;/b=4;/*此此b b是局部变量,赋值是局部变量,赋值 */f1();/f1();/*调用函数调用函数f1()f1()*/printfprintf(“main:a=%d,b=%d”,a,b);(“main:a=%d,b=%d”,a,b);f

    28、1:t1=4,t2=12,b=100main:a=2,b=4输出结果:输出结果:注意与课本注意与课本P80的例题比较!的例题比较!结论:全局变量与局部全局变量与局部变量同名时变量同名时,局部变量局部变量起作用,全局变量被起作用,全局变量被屏蔽(不影响)屏蔽(不影响),应小应小心使用心使用50n二.变量的存储特性n1.变量按存在时间分变量按存在时间分 静态变量 n 动态变量静态存储类型的变量的生存期为程序执行的整个过程,在该过程中占有固定的存储空间,通常称它们为永久存储。动态存储类型变量只生存在某一段时间内。例如,函数的形参和函数体或分程序中定义的变量,只是在程序进入该函数或分程序时才分配存储空

    29、间,当该函数或分程序执行完后,变量对应的存储空间又被撤销了。2.c语言中每一个变量有两个属性语言中每一个变量有两个属性:数据类型数据类型,存储特性存储特性完整的变量定义:存储特性 数据类型 变量名;51n3.变量的存储特性变量的存储特性n 自动型 auton 静态型 staticn 寄存器型 registern 外部型 externn(1)auto型n每次进入程序是自动分配内存,不长期占用内存例如:形式参数,自动型局部变量n(2)static 型 n局部静态变量 全局静态变量n长期占用内存52n例例1 1:分析执行结果nf(int a)nint b=0;static int c=3;nb+;c

    30、+;nprintf(“%5d%5d%5d”,a,b,c);nreturn(a+b+c);nnmain()nint a=2,k;nfor(k=0;k3;k+)nprintf(“%5dn”,f(a);n静态变量只初始化一次结果:2 1 4 (a,b,c)7 (f(a)2 1 5 82 1 6 953例2打印打印1到到5的阶乘值。的阶乘值。int fac(int n)static int f=1;f=f*n;return(f);main()int i;for(i=1;i(y)?(x):(y)main()int a,b,c,d,t;t=MAX(a+b,c+d);#define squ(n)n*nvoi

    31、d main()printf(%fn,27.0/squ(3.0);程序输出结果为:27.000000注意,展开为27.0/3.0*3.0 不是 27.0/(3.0*3.0)72赋值语句展开后为 t(ab)(cd)?(ab):(cd);注意:注意:MAX不是函数,这里只有一个宏,在main函数中就能 求出t的值。这个问题也可用函数来求:int max(int x,int y)return(xy?x:y);main()int a,b,c,d,t;t=max(a+b,c+d);max是函数,在main函数中调用max函数才能求出t的值。73例:比较下列两个程序例:比较下列两个程序:理解宏替换与函数调

    32、用的不同。理解宏替换与函数调用的不同。程序程序1:main()int a,b;scanf(%d%d,&a,&b);printf(a=%d,b=%dn,a,b);swap(a,b);printf(a=%d,b=%dn,a,b);swap(int x,int y)int t;t=x;x=y;y=t;程序程序2:#define SWAP(x,y)t=x;x=y;y=tmain()int a,b,t;scanf(%d%d ,&a,&b);printf(a=%d,b=%dn,a,b);SWAP(a,b);/*注意大写注意大写*/printf(a=%d,b=%dn,a,b);74#define PR pr

    33、intf#define NL n”#define D”%d#define E%d#define D1 D NL#define D2 D E NL#define D3 D E E NL#define D4 D E E E NL#define S“%s”main()int a,b,c,d;char string=“CHINA”;a=1,b=2,c=3,d=4;PR(D1,a);PR(D2,a,b);PR(D3,a,b,c);PR(D4,a,b,c,d);PR(S,string);运行时输出以下结果:1121231234CHINA例:例:75二、文件包含文件包含处理是指一个源文件将另一个指定文件的全

    34、部内容嵌入在文件包含命令处,成为自己的一部分。761、一般形式:、一般形式:include“文件名文件名”或 include 2、例:可以将上面的例程改为:、例:可以将上面的例程改为:(1)文件 format.h#define PR printf#define NL n”#define D “%d#define E%d#define D1 D NL#define D2 D E NL#define D3 D E E NL#define D4 D E E E NL#define S“%s”(2)文件file1.c#include“format.h”main()int a,b,c,d;char st

    35、ring=“CHINA”;a=1,b=2,c=3,d=4;PR(D1,a);PR(D2,a,b);PR(D3,a,b,c);PR(D4,a,b,c,d);PR(S,string);773、说明说明(1)一个include命令只能指定一个被包含文件,如果要包含 n个文件,要用n个include命令。(2)如果文件1包含文件2,而文件2中要用到文件3的内容,则 可在文件1中用两个include命令分别包含文件 2和文件3,而且文件3应出现在文件2之前,即在 filel.c中定义:include“file3.h”include“file2.h”(3)在一个被包含文件中又可以包含另一个被包含文件,即文

    36、 件包含是可以嵌套的。78(4)在include命令中,文件名可以用双引号或尖括号括起 来。二者的区别是用尖括号(即=a&c=A&c=Z)c=c+32;#endif printf(“%c”,c);条件编译例83#define inttag 1Main()int ch;scanf(“%d”,ch);#if inttag printf(“%d”,ch);#else printf(“%c”,ch);#endif编译成:main()int ch;scanf(“%d”,ch);printf(“%d”,ch);84四、如何运行一个多文件的程序例例 有一个字符串,内有若干个字符,今输入一个字符,要求 程序将

    37、字符串中该字符删去。用外部函数实现。file1.c(文件文件1)main()extern enter_string(char str80);extern delete_string(char str,char ch);extern print_string(char str);char c;char str80;enter_string(str);scanf(“%c”,&c);delete_string(str,c);print_sting(str);85file2.c(文件文件2)include enter_string(char str80)gets(str);file3.c(文件文件3)

    38、delete_string(char str,char ch)int i,j;for(i=j=0;stri!=0;i+)if(stri!=ch)strj+=stri;strj=0;file4.c(文件文件4)Print_string(char str)printf(“%s”,str);运行情况如下:abcdefgc (输入str)c (输入要删去的字符)abdefg (输出已删去指定字符 的字符串)返回86运行步骤:运行步骤:(1)先后输入并编辑4个文件,并分别以文件名file1.c、file2.c、file3.c、file4.c存储在磁盘上。(2)在编辑状态下,建立一个“项目文件”,它不包括任何程序语句,而只包括组成程序的所有的文件名。即file1.c file2.cfile3.c file4.c注意注意:如果这些源文件不在当前目录下,应指出路径。87(4)按功能健F9,进行编译连接,系统先后将4个文件翻译成目标文件,并把它们连接成一个可执行文件a.exe。(5)按CtrlF9键,即可运行可执行文件a.exe。(3)将以上内容存盘,文件名自定,但扩展名必须为.prj。今设文件名为 a.prj。88

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:函数与编译预处理解读课件.ppt
    链接地址:https://www.163wenku.com/p-4395672.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库