C语言程序设计模块五模块化程序设计训练

上传人:沈*** 文档编号:190471616 上传时间:2023-02-27 格式:PPT 页数:57 大小:1.80MB
收藏 版权申诉 举报 下载
C语言程序设计模块五模块化程序设计训练_第1页
第1页 / 共57页
C语言程序设计模块五模块化程序设计训练_第2页
第2页 / 共57页
C语言程序设计模块五模块化程序设计训练_第3页
第3页 / 共57页
资源描述:

《C语言程序设计模块五模块化程序设计训练》由会员分享,可在线阅读,更多相关《C语言程序设计模块五模块化程序设计训练(57页珍藏版)》请在装配图网上搜索。

1、模块五模块五 模块化程序设计训练模块化程序设计训练能力目标掌握函数的定义及各种函数的调用方法;掌握函数的形参,实参,以及函数调用时函数参数间的值传递和地址传递;了解嵌套调用,递归调用,函数的存储属性;理解局部变量和全局变量,函数与局部变量和全局变量之间的关系。知识准备知识准备 任务引例-使用函数求多个数的平均值。include#define N 5float aver(int b,int n);void main()int i,a5;float ave;printf(请输入5个整型数据:n);for(i=0;iN;i+)scanf(%d,&ai);ave=aver(a,N);printf(n平

2、均值为:%4.2fn,ave);float aver(int b,int n)int i;float s=0;for(i=0;ib?a:b;return m;/*该语句将m的值作为函数的返回值返回*/程序清单程序清单知识点有参函数定义的一般形式:extern/static类型说明符 函数名(类型 形参1,类型 形参2,)说明部分 语句 说明extern/static只能取其中之一,如无说明,为extern类型说明符是函数返回值的类型。返回值为int类型时,类型说明符可以省略。函数名是由用户定义的标识符。形参说明部分用以说明形式参数的类型。中的内容称为函数体,在函数体中也有类型说明。无参函数定义

3、的一般形式:extern/static类型说明符 函数名()说明部分 语句 无参函数通常用来完成一项指定的功能,函数没有参数。如,void wellcome()printf(“nWellcom to China!n”);空函数C语言允许定义一个空函数,即函数什么也不做。如:void empty()一般在程序设计初期阶段只设计基本框架,可将一些函数定义为空函数,细节和功能等程序设计后期再完善。在C语言程序中,函数要先声明后调用。函数的定义不能放在main函数之内。函数的值函数调用结束后向调用函数返回一个执行结果,该结果称为函数的返回值。一般形式为 return 表达式;或者 return (表达

4、式);该语句的功能是计算表达式的值,并返回给调用函数。v 说明v 在函数中允许有多个return语句,只能有一个return语句被执行,只能返回一个函数值。v 如果函数有返回值,就必须指定函数的返回值的类型。如果定义函数时没有指定函数的类型,将自动定义为int型。v 如果函数不需返回任何值,函数类型可定义为void类型。v 一般地,定义函数的类型与return语句后表达式的类型保持一致。如果两者不一致,则以函数类型为准,系统自动进行类型转换。即函数的类型将决定函数返回值的类型。v 不能在函数体内定义其他函数,即函数不能嵌套定义。做中学做中学5-2 5-2 使用函数求三个数平均值。使用函数求三个

5、数平均值。5.1.2 函数的调用程程序序清清单单#include“stdio.h”float average(float,float,float);/*函数声明*/void main()float a=1.0f,b=2.0f,c=3.0f,m;m=average(a,b,c);printf(“average=%f”,m);float average(float x,float y,float z)float ave;ave=(x+y+z)/3.0f;return ave;知识点函数调用的形式 函数名(实参列表);在C语言中,把函数调用也作为一个表达式。因此凡是表达式可以出现的地方都可以出现函数

6、调用。说明调用有参函数,就必须给出实参列表;实参列表的在类型、顺序、个数上应该与形参严格一致;如果是无参函数,就没有实参列表。但调用无参函数时函数名后的圆括号不能省略。函数声明被调用函数必须是已经存在的函数(库函数或自定义函数);调用库函数时必须在文件开头使用#include命令将其相应的头文件包含进来;如调用用户自定义函数,在调用之前必须对其进行显式声明;函数的声明位置:可以声明在调用函数之内,也可声明在程序开始。如果程序中一个函数被多个函数调用,可在程序开始处进行函数声明。v 函数的声明格式为:v 类型说明符 被调用函数名(类型1 形参1,类型2 形参2,类型n 形参n);v 或者为:v

7、类型说明符 被调用函数名(类型1,类型2,类型);v 以下几种情况可以省略对被调用函数的函数声明:v 当被调用函数的函数定义出现在本调用函数之前时,可以不对被调用函数再声明而直接调用;v 调用库函数时不需要再声明,只把该函数的头文件用include命令包含在源文件前面即可。函数的调用方式和库函数一样,自定义函数通常也有以下三种调用方式:函数语句:直接使用函数名,调用格式为:函数名();例如:wellcom();函数调用出现在表达式中。调用格式为:变量名=函数名(实参列表);例如m=average(a,b,c);函数调用还可作为函数参数。例如:printf(“average=%f”,averag

8、e(a,b,c);做中学做中学5-3 5-3 定义函数,该函数的功能是求定义函数,该函数的功能是求 的值。的值。5.1.3 函数的参数传递程程序序清清单单#include int sum(int);/*函数声明*/void main()int n=10,retun;retun=sum(n);/*调用函数sum(),把实参n的值传递形参n*/printf(1+2+%d=%dn,n,retun);printf(形参n改变后实参n的值:%dn,n);int sum(int n)/*定义函数sum()*/int i,s=0;for(i=1;i=n;i+)s+=i;n+=10;printf(形参n加10

9、后的值:%dn,n);return s;101ii形参与实参形参与实参输出结果输出结果形参形参n n加加1010后的值:后的值:20201+2+10=551+2+10=55形参形参n n改变后实参改变后实参n n的值:的值:1010说明:说明:本例的形参变量和实参变量的标识符都为本例的形参变量和实参变量的标识符都为n n,但这是两个,但这是两个不同的变量,各自的作用域不同,只在各自的函数内有效不同的变量,各自的作用域不同,只在各自的函数内有效,占用不同的内存单元。,占用不同的内存单元。实参的值不随形参的变化而变化。实参的值不随形参的变化而变化。知识点函数的形参和实参具有以下特点:形参变量只有在

10、函数调用时才分配存储单元,在调用结束后,即刻释放所分配的存储单元。因而,形参只有在函数内部有效;无论实参是何种类型的变量,在进行函数调用时,它必须具有确定的值,以便把这些值传送给形参;实参和形参在数量、类型、顺序上应严格一致,否则会发生“类型不匹配的错误。函数调用中发生的数据传送是单向的。做中学做中学5-4 5-4 定义数组定义数组a a中存放了一个学生中存放了一个学生5 5门课程的成绩,求平门课程的成绩,求平 均成绩。均成绩。程程序序清清单单#define N 5#include float aver(float a,int n)/*n表示形参数组要处理的元素个数*/int i;float

11、s=0;printf(n形参-输出某学生%d门成绩:n,N);for(i=0;in;i+)printf(“%4.1f”,ai);for(i=0;in;i+)s+=ai;printf(n形参-输出修改之后某学生%d门成绩:n,N);for(i=0;in;i+)ai+=10;printf(“%4.1f”,ai);数组作为函数参数数组作为函数参数程程序序清清单单return s/n;void main()int i;float scoreN=34.5f,67.8f,88.0f,93.0f,78.0f,ave;printf(实参-输出某学生%d门成绩:n,N);for(i=0;iN;i+)printf

12、(%4.1f,scorei);ave=aver(score,N);printf(n实参-输出函数调用之后某学生%d门成绩:n,N);for(i=0;iN;i+)printf(%4.1f,scorei);printf(n平均成绩为:%4.2fn,ave);输出结果输出结果 实参实参-输出某学生输出某学生5 5门成绩:门成绩:34.5 67.8 88.0 93.0 78.034.5 67.8 88.0 93.0 78.0形参形参-输出某学生输出某学生5 5门成绩:门成绩:34.5 67.8 88.0 93.0 78.034.5 67.8 88.0 93.0 78.0形参形参-输出修改之后某学生输出

13、修改之后某学生5 5门成绩:门成绩:44.5 77.8 98.0 103.0 88.044.5 77.8 98.0 103.0 88.0实参实参-输出函数调用之后某学生输出函数调用之后某学生5 5门成绩:门成绩:44.5 77.8 98.0 103.0 88.044.5 77.8 98.0 103.0 88.0平均成绩为:平均成绩为:72.2672.26v 说明:v 函数aver的形参为数组a,包含的元素个数为n,主函数中实参为数组score,长度为5;v 在调用时将实参score,N的值传递给形参a,n;v 函数aver的主要功能是求平均值;v 实参数组和形参数组为同一数组。改变形参数组a的

14、各元素的值也就是改变实参数组score的各元素的值。注 意 形参数组和实参数组的类型必须一致,否则将引起错误;形参数组和实参数组的长度可以不相同;在函数形参表中,可以不给出形参数组的长度,用另一个形参变量来表示数组元素的个数。知识点数组可以作为函数的参数使用,进行数据传送。数组用作函数参数有两种形式:数组元素作为参数使用 数组元素与普通变量并无区别。在发生函数调用时,把实参数组元素的值传送给形参,实现单向的值传送。数组名作为函数的形参和实参使用 数组名作函数参数时,把实参数组的首地址传递给形参数组。形参数组取得该首地址之后,它和实参数组为同数组,共用一段内存空间。在发生参数传递时,如果形参的值

15、改变了,返回到调用函数时,实参数组的值也发生了改变。做中学做中学5-5 5-5 编程计算编程计算1-1/2+2/3-3/4+4/5-1-1/2+2/3-3/4+4/5-。算法设计算法设计 第一项为加第一项为加1 1,从第二项开始存在偶数项加,从第二项开始存在偶数项加-1.01.0*(p-1)/p(p-1)/p,奇数项加,奇数项加1.01.0*(p-1)/p(p-1)/p的情况。为了方便,定的情况。为了方便,定义两个函数来实现,一个函数义两个函数来实现,一个函数add1(int k)add1(int k)用来计算前用来计算前k k项之项之和,在和,在add1()add1()中又调用一个函数中又调

16、用一个函数get_num(int p)get_num(int p),此函数用,此函数用来计算每次所加项的值。来计算每次所加项的值。5.2 函数的嵌套调用程程序序清清单单#include float add1(int);float get_num(int);void main()int n=7;printf(计算结果如下:%5.2fn,add1(n);float add1(int k)float x,sum=0;int i;for(i=0;ik;i+)x=get_num(i+1);sum+=x;return sum;float get_num(int p)if(p=1)return 1.0f;i

17、f(p%2)return 1.0f*(p-1)/p;else return-1.0f*(p-1)/p;输出结果输出结果 计算结果如下:计算结果如下:1.24 1.24知识点函数的嵌套调用:在被调用的函数中又调用另外一个函数。做中学做中学5-6 5-6 用递归函数来实现求用递归函数来实现求n n!=n=n(n-1)(n-1)(n-2)(n-2)(n-3)(n-3)2 21 1。算法设计算法设计 分析式子规律可理解为,分析式子规律可理解为,5.3 函数的递归调用 一个函数直接地或间接地调用它自身称为函数的递归调用,这种函数称为递归函数。1)!1(1101!nnnnnn程程序序清清单单#includ

18、e long fac(int k)long f;printf(求%d!-,k);if(k=0|k=1)/递归结束条件return 1;else return k*fac(k-1);void main()int n;printf(请输一个正整数n:);scanf(%d,&n);printf(n计算结果如下:%ldn,fac(n);程序运行程序运行 请输一个正整数请输一个正整数n n:8 8 求求8!-8!-求求7!-7!-求求6!-6!-求求5!-5!-求求4!-4!-求求3!-3!-求求2!-2!-求求1!-1!-计算结果如下:计算结果如下:4032040320局部变量也称为内部变量,它是在函

19、数内部定义的。其作用域仅限于函数内。说明:main函数中定义的变量只能在main函数中使用,也不能使用其它函数中定义的变量。形参变量是局部变量,只能在定义该变量的函数内有效允许在不同的函数中使用相同的变量名。在复合语句中定义的变量,其作用域只在复合语句范围内有效。5.4 局部变量和全局变量 函数中的变量按照作用域(即指变量在程序中的有效范围),可以分为局部变量和全局变量。5.4.1 局部变量float f1(int a)int b=3,c=9;/*形参变量a,局部变量b,c的作用域*/char f2(int x1,float x2)int i,j;/*形参变量x1,x2,局部变量i,j作用域*

20、/void main()int a,b;/*局部变量a,b作用域*/函数f1和函数main中均有局部变量a,b,但它们的作用域不同,只在定义自己的函数内部有意义,编译时分配不同的存储单元,所以不会相互干扰。如:5.4.2 全局变量 是在函数外部定义的变量。它不属于某一个函数,而属于一个源程序文件。其作用域是从定义变量的位置开始到源文件结束。例如:int a,b;/*定义全局变量a,b*/float f1(int a)int b,c;/*局部变量a,b,c的作用域*/int x,y;/*定义全局变量x,y*/char f2(int x1,float x2)int i,j;/*局部变量x1,x2,

21、i,j的作用域*/void main()int m,n;/*局部变量m,n的作用域*/说明:同一文件中如果全局变量和局部变量同名时,函数内局部变量有效,此时全局变量被屏蔽。函数之外,全局变量有效。若全局变量定义在文件开头,则全程有效;如果不在文件开头定义,又想在定义点之前使用该全局变量,只要在函数中用extern进行声明,即可对该变量的作用域进行扩充。例如extern int x,y;float f1(int a)int b=3,c=9;新x,y作用域int x,y;void main()int a,b;原x,y作用域 局部变量的定义和声明是同一概念,不加区分。全局变量只能定义一次,但可多次声

22、明。声明可出现在函数之外,也可出现在函数之内。定义时可赋初值,但声明时不能赋初值,只是表明在该范围内要使用全局变量。声明的一般格式:extern 类型说明符 变量名表;做中学做中学5-7 5-7 编写程序,输入两个数,调用函数找出较大值。编写程序,输入两个数,调用函数找出较大值。程程序序清清单单#include int max(int x,int y)int z;if(xy)z=x;else z=y;return z;void main()extern a,b;/*全局变量声明*/printf(“max=%dn”,max(a,b);int a=2,b=4;/*定义全局变量定义*/输出结果输出结

23、果 max=4 max=4做中学做中学5-8 5-8 分别求长方体的体积及分别求长方体的体积及3 3个面的面积。个面的面积。变量的声明和定义的区别:变量的定义即给变量分配存储单元,变量的声明只是说明变量的性质,并不分配存储空间。全局变量可以实现函数之间的数据通信。一般情况下,函数的返回值只有一个,通过全局变量,函数可返回多个值。程程序序清清单单#include int s1,s2,s3;int vs(int a,int b,int c)int v;v=a*b*c;s1=a*b;s2=b*c;s3=c*a;return v;void main()int v,l=7,w=8,h=9;v=vs(l,

24、w,h);printf(“体积:%d 三个面的面积:%d%d%dn“,v,s1,s2,s3);输出结果输出结果 体积:体积:504 504 三个面的面积:三个面的面积:567 2 63567 2 63变量说明的完整形式如下:存储类型说明符 数据类型说明符 变量名表 5.5.1 自动变量自动变量的作用域仅限于定义该变量的区域内。自动变量属于动态存储方式,只有在定义它的函数被调用时,才分配存储单元,开始它的生存期,函数调用结束,释放存储单元,结束生存期。不同的区域中允许使用同名的变量。函数的形参属于自动变量5.5 动态存储变量和静态存储变量 从变量的存在时间来区分,可以分为静态存储方式和动态存储方

25、式。5.5.2 外部变量 外部变量用说明符extern来加以说明。外部变量是全局变量,可以直接用变量名来访问。编译时将外部变量分配在静态存储区。外部变量有以下几个特点:外部变量和全局变量是对同一类变量的两种不同角度的提法。全局变量是从它的作用域提出的,外部变量从它的存储方式提出的,表示了它的生存期。当一个源程序由若干个源文件组成时,在一个源文件中定义的外部变量在其它的源文件中也有效。5.5.3 静态变量静态变量属于静态存储方式,说明符为static。静态变量的存储空间在程序的整个运行期间是固定的。属于静态存储方式的变量不一定就是静态变量。静态局部变量静态局部变量在程序的执行过程中始终存在,也就

26、是说它的生存期为整个源程序。静态局部变量的生存期虽然为整个源程序,但其作用域仍与自动变量相同。对基本类型的静态局部变量若在说明时未赋初值,则系统自动赋予0值。而自动变量若不赋初值,其值是不确定的。对基本类型的静态局部变量只在第一次调用时初始化,以后调用不再初始化。做中学做中学5-9 5-9 编写程序,调用函数分析动态局部变量与静态局部编写程序,调用函数分析动态局部变量与静态局部 变量的不同。变量的不同。程程序序清清单单#include int fun(int a)auto int b=3;/*定义动态局部变量*/static int c=3;/*定义静态局部变量*/b=b+1;c=c+1;pr

27、intf(动态局部变量b的值:%dt,b);printf(静态局部变量c的值:%dt,c);return(a+b+c);void main()int a=2,i;for(i=0;i3;i+)printf(第%d次调用的值:%dn,i+1,fun(a);输出结果输出结果动态局部变量动态局部变量b b的值:的值:4 4 静态局部变量静态局部变量c c的值:的值:4 4 第第1 1次调用的值次调用的值:1010动态局部变量动态局部变量b b的值:的值:4 4 静态局部变量静态局部变量c c的值:的值:5 5 第第2 2次调用的值次调用的值:1111动态局部变量动态局部变量b b的值:的值:4 4 静

28、态局部变量静态局部变量c c的值:的值:6 6 第第3 3次调用的值次调用的值:1212静态全局变量静态全局变量定义全局变量时,前面加了定义全局变量时,前面加了staticstatic说明符,定义的变量就是静说明符,定义的变量就是静态全局变量,是静态存储方式。态全局变量,是静态存储方式。两者的区别在于:全局变量的作用域是整个源程序,当一个源两者的区别在于:全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,全局变量在各个源文件中都是有效的程序由多个源文件组成时,全局变量在各个源文件中都是有效的,只要在该文件中对它用,只要在该文件中对它用externextern进行声明即可使用。而静态

29、全局进行声明即可使用。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。同一源程序的其它源文件中不能使用它。程程序序清清单单#include void main()register int i,s=0;for(i=1;i=200;i+)s=s+i;printf(“s=%dn”,s);5.5.4 寄存器变量2001ii做中学做中学5-10 5-10 求求输出结果输出结果 s=20190 s=20190 5.6.1 内部函数 如果在一个源文件中定义的函数只能被本文件中的函数调用,而不能被同一

30、源程序的其它文件中的函数调用,这种函数称为内部函数。定义内部函数的一般形式为:static类型说明符 函数名(形参表)如,static int fun(char y);5.6 外部函数和内部函数 根据在一个源文件内的函数能否被其它源文件调用,将函数分为内部函数和外部函数。程程序序清清单单/*file1.c*/extern input_string(char),print_string(char);/声明调用外部函数void main()char stri10;input_string(stri);print_string(stri);/*file2.c*/#include“stdio.h”ex

31、tern input_string(char str)printf(“请输入一个字符串:”);gets(str);/*file3.c*/#include“stdio.h”extern print_string(char str)printf(“你输入的字符串是:%sn”,str);做中学做中学5-11 5-11 一个源程序包含一个源程序包含3 3个文件,分别为个文件,分别为file1.cfile1.c、file2.cfile2.c 和和file3.cfile3.c。5.6.2 外部函数说明:定义外部函数的一般形式为:extern 类型说明符 函数名(形参表)如:extern float f1(

32、int a,long b);如在函数定义中没有说明extern或static则隐含为extern。在一个源文件的函数调用其它源文件中定义的外部函数时,要用extern说明被调用函数为外部函数。如:extern input_string(char),print_string(char);程序运行程序运行 请输入一个字符串:请输入一个字符串:abcdKefgabcdKefg 你输入的字符串是:你输入的字符串是:abcdKefgabcdKefg边学边练边学边练 十个小孩围成一圈分糖果,老师分给第一个小孩1块,第二个小孩2块,第三个小孩3块,第四个小孩4块,第五个小孩5块,第六个小孩6块,第七个小孩7

33、块,第八个小孩8块,第九个小孩9块,第十个小孩10块。然后所有的小孩同时将自己手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块。问经过这样几次调整后大家手中的糖的块数都一样?每人各有多少块糖?从用户终端读取一个整数,计算并打印出它的平方值和立方值。求出在100和10000之间有多少个整数,它们的各位数字之和等于5?拓展提升拓展提升5.7 编译预处理 ANSI C规定C语言程序中可以加入一些“预处理命令”,以提高编程效率。如#include、#define等就是预处理命令,它们均以符号“#”开头,末尾不加分号,以区别于C语句。C编译系统在编译一个程序前,如果源程序中有预处理命令,则首先

34、进行编译预处理。预处理命令的位置一般在整个源程序文件的最前面。预处理功能一般包括:宏定义、文件包含和条件编译。预处理语句的作用范围是从被定义语句开始到被解除定义或包含它的文件结束为止。5.7.1 宏定义宏定义只是在编译预处理时作简单的字符串替换,并不需要系统分配内存空间;宏定义有两种形式:不带参数的宏定义和带参数的宏定义。不带参数的宏定义不带参数的宏定义的一般形式为:#define宏名 字符串带参数的宏定义带参数的宏定义的一般形式为:#define 宏名(形参表列)字符串程程序序清清单单做中学做中学5-12 5-12 计算圆球体的体积。计算圆球体的体积。#include#define PI 3

35、.1415926#define V(r)4.0/3.0*PI*(r)*(r)*(r)/*定义带参数的宏v(r),其值为“4.0/3.0*PI*r*r*r”*/void main()float r0=34,v;v=V(r0);printf(“半径=%5.2f体积=%5.2fn”,r0,v);输出结果输出结果 半径半径=34.00=34.00体积体积=164636.21=164636.21终止宏定义的一般形式为:#undef 宏名它的作用是终止用#define定义的宏的作用域。例如:#define PI 3.14159void main()#undef PI#define LENGTH(a,b)(

36、a)*(b)-5)void area()#undef LENGTH 5.7.2 文件包含处理把另一个源文件的全部内容都包含到当前源文件中,就是文件包含处理。文件包含的语句一般为:#include “文件名”或者#include 说明被包含文件不一定必须是以“.c和“.h为文件扩展名的文件。一个#include语句只能指定包含一个头文件。文件包含也可以嵌套使用。如果修改了某个头文件中的代码,那么所有包含该头文件的文件都需要重新编译。在#include命令中,文件名可以用双引号也可以用尖括号括起来。做中学做中学5-13 5-13 计算将求圆球体体积的函数定义为头文件,并在计算将求圆球体体积的函数定

37、义为头文件,并在 其它程序中使用该函数原型。其它程序中使用该函数原型。将以下程序源代码保存到文件sphere.yyy中,功能 为求圆球体体积。#define PI 3.1415926float Volume(float r)float v;v=4.0/3.0*PI*r*r*r;return(v);程程序序清清单单#include#define PI 3.1415926#define V(r)4.0/3.0*PI*(r)*(r)*(r)/*定义带参数的宏v(r),其值为“4.0/3.0*PI*r*r*r”*/void main()float r0=34,v;v=V(r0);printf(“半径=

38、%5.2f体积=%5.2fn”,r0,v);输出结果输出结果 半径半径=34.00=34.00体积体积=164636.21=164636.215.7.2 条件编译#ifdef 标识符 程序段1#else 程序段2#endif如果标识符已经用宏语句#define定义过,就编译程序段1,否则编译程序段2。#else部分如果没有,就可以写成如下的形式:#ifdef 标识符 程序段1#endif如果指定的标识符已经被定义过,就编译程序段l,否则跳过程序段1编译下面的程序段。#ifndef 标识符 程序段1#else 程序段2#endif如果指定的标识符没有被定义过,就编译程序段1,否则编译程序段2。#

39、if 表达式 程序段1#else 程序段2#endif这种形式的条件编译语句首先求解表达式,如果指定的表达式的值为“真”,就编译程序段1,否则编译程序段2。程程序序清清单单#define REAL float /*定义宏REAL代表 float*/#include void main()#ifdef REAL /*如果程序预定义了宏名REAL,则执行下面的程序段*/REAL b;printf(输入一个实数:);scanf(%f,&b);printf(你输入的实数是:%fn,b);#else /*如果程序没有预定义宏名REAL,则执行下面的程序段*/float a;printf(输入一个实数:)

40、;scanf(%f,&a);printf(你输入的实数是:%fn,a);#endif /*条件编译语句结束*/做中学做中学5-14 5-14 条件编译语句的应用。条件编译语句的应用。程序运行程序运行 输入一个实数:输入一个实数:23.723.7 你输入的实数是:你输入的实数是:23.70000123.700001经过编译预处理后经过编译预处理后,上述源程序变成如下形式:上述源程序变成如下形式:#include#include void main()void main()float b;float b;printf(printf(输入一个实数:输入一个实数:););scanf(%f,&b);scanf(%f,&b);printf(printf(你输入的实数是:你输入的实数是:%fn,b);%fn,b);总结归纳总结归纳 函数的定义 函数的调用 函数的嵌套调用 函数的递归调用 变量的作用域 动态/静态存储变量 外部函数和内部函数

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!