(高职)C语言程序设计模块五模块化程序设计训练ppt课件.pptx

上传人:春哥&#****71; 文档编号:15330026 上传时间:2022-05-12 格式:PPTX 页数:56 大小:1.13MB
返回 下载 相关 举报
(高职)C语言程序设计模块五模块化程序设计训练ppt课件.pptx_第1页
第1页 / 共56页
(高职)C语言程序设计模块五模块化程序设计训练ppt课件.pptx_第2页
第2页 / 共56页
点击查看更多>>
资源描述

《(高职)C语言程序设计模块五模块化程序设计训练ppt课件.pptx》由会员分享,可在线阅读,更多相关《(高职)C语言程序设计模块五模块化程序设计训练ppt课件.pptx(56页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

2、n); for(i=0;iN;i+) scanf(%d,&ai); ave=aver(a,N); printf(n平均值为:%4.2fn,ave);float aver(int b,int n) int i; float s=0; for(i=0;ib?a:b; return m; /*该语句将m的值作为函数的返回值返回*/程序清单程序清单5.1 函数的定义及调用当用户需要利用函数来完成某项特定功能,又没有相应的库函数可以使用时,就必须自己定义函数来完成相应功能。知识点 有参函数定义的一般形式: extern/static类型说明符 函数名 (类型 形参1,类型 形参2,) 说明部分 语句 v

3、 说明l extern/static只能取其中之一,如无说明,为externl 类型说明符是函数返回值的类型。返回值为int类型时,类型说明符可以省略。l 函数名是由用户定义的标识符。l 形参说明部分用以说明形式参数的类型。l 中的内容称为函数体,在函数体中也有类型说明。 无参函数定义的一般形式: extern/static类型说明符 函数名( ) 说明部分 语句 v 无参函数通常用来完成一项指定的功能,函数没有参数。 如,void wellcome() printf(“nWellcom to China!n”); 空函数v C语言允许定义一个空函数,即函数什么也不做。如:void empty

4、() v 一般在程序设计初期阶段只设计基本框架,可将一些函数定义为空函数,细节和功能等程序设计后期再完善。v 在C语言程序中,函数要先声明后调用。函数的定义不能放在main函数之内。 函数的值v 函数调用结束后向调用函数返回一个执行结果,该结果称为函数的返回值。一般形式为 return 表达式;或者 return (表达式);该语句的功能是计算表达式的值,并返回给调用函数。v 说明l 在函数中允许有多个return语句,只能有一个return语句被执行,只能返回一个函数值。l 如果函数有返回值,就必须指定函数的返回值的类型。如果定义函数时没有指定函数的类型,将自动定义为int型。l 如果函数不

5、需返回任何值,函数类型可定义为void类型。l 一般地,定义函数的类型与return语句后表达式的类型保持一致。如果两者不一致,则以函数类型为准,系统自动进行类型转换。即函数的类型将决定函数返回值的类型。l 不能在函数体内定义其他函数,即函数不能嵌套定义。做中学做中学5-2 5-2 使用函数求三个数的平均值。使用函数求三个数的平均值。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

6、(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; 知识点 函数调用的形式 函数名(实参列表); v 在C语言中,把函数调用也作为一个表达式。因此凡是表达式可以出现的地方都可以出现函数调用。v 说明l 调用有参函数,就必须给出实参列表;l 实参列表的在类型、顺序、个数上应该与形参严格一致;l 如果是无参函数,就没有实参列表。但调用无参函数时函数名后的圆括号不能省略。 函数声明v 被调用函数必须是已经存在的函数(库函数或自定义函数

7、);v 调用库函数时必须在文件开头使用#include命令将其相应的头文件包含进来;v 如调用用户自定义函数,在调用之前必须对其进行显式声明;v 函数的声明位置: 可以声明在调用函数之内,也可声明在程序开始。如果程序中一个函数被多个函数调用,可在程序开始处进行函数声明。v 函数的声明格式为: 类型说明符 被调用函数名(类型1 形参1,类型2 形参2,类型n 形参n);或者为: 类型说明符 被调用函数名(类型1,类型2,类型);v 以下几种情况可以省略对被调用函数的函数声明:l 当被调用函数的函数定义出现在本调用函数之前时,可以不对被调用函数再声明而直接调用;l 调用库函数时不需要再声明,只把该

8、函数的头文件用include命令包含在源文件前面即可。 函数的调用方式v 和库函数一样,自定义函数通常也有以下三种调用方式:l 函数语句:直接使用函数名,调用格式为:函数名( );例如:wellcom();l 函数调用出现在表达式中。调用格式为:变量名=函数名(实参列表);例如m=average(a,b,c);l 函数调用还可作为函数参数。例如:printf(“average=%f”,average(a,b,c);做中学做中学5-3 5-3 定义一个函数,该函数的功能是求定义一个函数,该函数的功能是求 的值。的值。5.1.3 函数的参数传递程程序序清清单单#include int sum(in

9、t); /*函数声明*/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后的值:%dn,n); return s;101ii形参与实参形参与实参输出结果输出结果形参n加10后的值:201+2+10=55形参n改变后实参n的值:10 本例的

10、形参变量和实参变量的标示符都为n,但这是两个不同的变量,各自的作用域不同,只在各自的函数内有效,占用不同的内存单元。v 说明:l 本例的形参变量和实参变量的标识符都为n,但这是两个不同的变量,各自的作用域不同,只在各自的函数内有效,占用不同的内存单元。l 实参的值不随形参的变化而变化。知识点 函数的形参和实参具有以下特点:v 形参变量只有在函数调用时才分配存储单元,在调用结束后,即刻释放所分配的存储单元。因此,形参只有在函数内部有效;v 无论实参是何种类型的变量,在进行函数调用时,它必须具有确定的值,以便把这些值传送给形参;v 实参和形参在数量、类型、顺序上应严格一致,否则会发生“类型不匹配”

11、的错误。v函数调用中发生的数据传送是单向的。做中学做中学5-4 5-4 数组数组a a中存放了一个学生中存放了一个学生5 5门课程的成绩,求平门课程的成绩,求平 均成绩。均成绩。程程序序清清单单#define N 5#include float aver(float a,int n) /*n表示形参数组要处理的元素个数*/ int i; float 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);fo

12、r (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(%4.1f ,scorei); ave= aver(score,N); printf(n实参-输出函数调用之后某学生%d门成绩:n,N); for(i=0;iN;i+) printf(%4.1f ,scorei); print

13、f(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形参形参-输出修改之后某学生输出修改之后某学生5 5门成绩:门成绩:44.5 77.8 98.0 103.0 88.044.5 77.8 98.0 103.0 88.0实参实参-输出函数调用之后某学生输出函数调用之后某学生5 5门成绩:门成绩:

14、44.5 77.8 98.0 103.0 88.044.5 77.8 98.0 103.0 88.0平均成绩为:平均成绩为:72.2672.26v 说明:l 函数aver()的形参为数组a,包含的元素个数为n,主函数中实参为数组score,长度为5;l 在调用时将实参score,N的值传递给形参a,n;l 函数aver的主要功能是求平均值;l 实参数组和形参数组为同一数组。改变形参数组a的各元素的值也就是改变实参数组score的各元素的值。注 意 形参数组和实参数组的类型必须一致,否则将引起错误; 形参数组和实参数组的长度可以不相同; 在函数形参表中,可以不给出形参数组的长度,用另一个形参变量

15、来表示数组元素的个数。知识点 数组可以作为函数的参数使用,进行数据传送。数组用作函数参数有两种形式:v 数组元素作为参数使用 数组元素与普通变量并无区别。在发生函数调用时,把实参数组元素的值传送给形参,实现单向的值传送。v 数组名作为函数的形参和实参使用 数组名作函数参数时,把实参数组的首地址传递给形参数组。形参数组取得该首地址之后,它和实参数组为同数组,共用一段内存空间。在发生参数传递时,如果形参的值改变了,返回到调用函数时,实参数组的值也发生了改变。 做中学做中学5-5 5-5 编程计算编程计算1-1/2+2/3-3/4+4/5-1-1/2+2/3-3/4+4/5-。算法设计算法设计 第一

16、项为加1,从第二项开始存在偶数项加-1.0*(p-1)/p,奇数项加1.0*(p-1)/p的情况。为了方便,定义两个函数来实现,一个函数add1(int k)用来计算前k项之和,在add1()中又调用一个函数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=

17、get_num(i+1); sum+=x;return sum;float get_num(int p)if (p=1)return 1.0f; if (p%2) return 1.0f*(p-1)/p;else return -1.0f*(p-1)/p;输出结果输出结果 计算结果如下: 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 函数的递归调用 一个函数直接

18、地或间接地调用它自身称为函数的递归调用,这种函数称为递归函数。1)!1(1101!nnnnnn程程序序清清单单#include 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:8 求8!-求7!-求6!-求5!-求4!-求3!-求2!-求1!- 计算结果如下:40320通过

19、本例可知:一个递归过程分为“递推”和“回推”两个过程。为了防止递归调用无终止的进行,在函数内必须有终止递归调用的方法。常用的办法是加条件判断,满足某种条件后就不再作递归调用,然后逐层返回。本例中的“1!=1”就是递归结束条件。 局部变量也称为内部变量,它是在函数内部定义的。其作用域仅限于函数内。v 说明:l main函数中定义的变量只能在main函数中使用,也不能使用其它函数中定义的变量。l 形参变量是局部变量,只能在定义该变量的函数内有效l 允许在不同的函数中使用相同的变量名。l 在复合语句中定义的变量,其作用域只在复合语句范围内有效。5.4 局部变量和全局变量 函数中的变量按照作用域(即指

20、变量在程序中的有效范围),可以分为局部变量和全局变量。 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作用域*/ void main() int a,b; /*局部变量a,b作用域*/ 函数f1和函数main中均有局部变量a,b,但它们的作用域不同,只在定义自己的函数内部有意义,编译时分配不同的存储单元,所以不会相互干扰。如:5.4.2 全局变量是在函数外部定义的变量。v 它不属于某一个函数,而属于一个源程序文件。

21、其作用域是从定义变量的位置开始到源文件结束。例如: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,i,j的作用域*/ void main() int m,n; /*局部变量m,n的作用域*/ 全局变量a,b的作用域全局变量x,y的作用域v 说明:l 同一文件中如果全局变量和局部变量同名时,函数内局部变量有效,此时全局变量被屏蔽。函数之外,全局变量有效。l 若全局变量定义在文件开头

22、,则全程有效;如果不在文件开头定义,又想在定义点之前使用该全局变量,只要在函数中用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作用域 局部变量的定义和声明是同一概念,不加区分。全局变量只能定义一次,但可多次声明。声明可出现在函数之外,也可出现在函数之内。定义时可赋初值,但声明时不能赋初值,只是表明在该范围内要使用全局变量。 声明的一般格式: extern 类型说明符 变量名表;做中学做中学5-7 5-7 编写程序

23、,输入两个数,调用函数找出较大值。编写程序,输入两个数,调用函数找出较大值。程程序序清清单单#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; /*定义全局变量定义*/ 输出输出结果结果 max=4做中学做中学5-8 5-8 分别求长方体的体积及三个面的面积。分别求长方体的体积及三个面的面积。 变量的声明和定义的区别:变量的定义即给变量分配存储单元,变量的声明只是说

24、明变量的性质,并不分配存储空间。l 全局变量可以实现函数之间的数据通信。一般情况下,函数的返回值只有一个,通过全局变量,函数可返回多个值。程程序序清清单单#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,w,h); printf(“体积:%d 三个面的面积:%d %d %dn“,v,s1,s2,s3);输出输出结果结果 体积:体积:504 504 三个面的面积:三个面的面积:5

25、67 2 63567 2 63程序解析:程序中定义了三个全局变量s1,s2,s3,用来存放三个面的面积,其作用域为整个程序。函数vs()用来求长方体体积和三个面的面积,函数的返回值为体积。由主函数调用vs()函数输出结果。如果没有全局变量。函数vs()返回值只有一个v。本例中因为s1,s2,s3是全局变量,所以在函数vs()这哦哦那个求得的s1,s2,s3的值,在函数main()中仍然有效。这样,使用全局变量在调用函数后可获得多个值。从上例中可以看出,全局变量可加强函数模块之间的数据联系,是函数之间实现数据通信的有效手段。但外部变量又会带来一定的副作用,程序中函数要依赖这些变量,增加了函数的依

26、赖性,降低了函数的独立性,给程序设计、调试、排错、维护带来了一定困难;并且全局变量在程序的运行期间都占用固定的存储空间,而不是在需要时才分配存储空间,因此尽量不要使用全局变量。 变量说明的完整形式如下: 存储类型说明符 数据类型说明符 变量名表在C语言中,变量的存储类型说明有4种:自动变量(auto)、寄存器变量(register)、外部变量(extern)和静态变量(static)5.5.1 自动变量(是局部变量,说明符为auto,未加存储类型说明的变量都是自动变量)v 自动变量的作用域仅限于定义该变量的区域内。v 自动变量属于动态存储方式,只有在定义它的函数被调用时,才分配存储单元,开始它

27、的生存期,函数调用结束,释放存储单元,结束生存期。v 不同的区域中允许使用同名的变量。v 函数的形参属于自动变量5.5 动态存储变量和静态存储变量 根据变量的作用域不同,可以将变量分为全局变量和局部变量。从变量的存在时间来区分,可以分为静态存储方式和动态存储方式。在C语言中,每一个变量和函数都有两个属性:数据类型和存储类别。 5.5.2 外部变量(是全局变量) 外部变量用说明符extern来加以说明。外部变量是全局变量,可以直接用变量名来访问。编译时将外部变量分配在静态存储区。 外部变量有以下几个特点:v 外部变量和全局变量是对同一类变量的两种不同角度的提法。全局变量是从它的作用域提出的,外部

28、变量从它的存储方式提出的,表示了它的生存期。v 当一个源程序由若干个源文件组成时,在一个源文件中定义的外部变量在其它的源文件中也有效。 5.5.3 静态变量v 静态变量属于静态存储方式,说明符为static。静态变量的存储空间在程序的整个运行期间是固定的。v 属于静态存储方式的变量不一定就是静态变量。v 静态局部变量l 静态局部变量在程序的执行过程中始终存在,也就是说它的生存期为整个源程序。l 静态局部变量的生存期虽然为整个源程序,但其作用域仍与自动变量相同。l 对基本类型的静态局部变量若在说明时未赋初值,则系统自动赋予0值。而自动变量若不赋初值,其值是不确定的。l 对基本类型的静态局部变量只

29、在第一次调用时初始化,以后调用不再初始化。做中学做中学5-9 5-9 编写程序,通过调用函数分析动态局部变量与静态编写程序,通过调用函数分析动态局部变量与静态局部变量的不同。局部变量的不同。 程程序序清清单单#include int fun(int a) auto int b=3; /*定义动态局部变量*/ static int c=3; /*定义静态局部变量*/ b=b+1; c=c+1; printf(动态局部变量b的值:%dt,b); printf(静态局部变量c的值:%dt,c); return(a+b+c);void main() int a=2,i; for(i=0;i3;i+)

30、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 静态局部变量静态局部变量c c的值:的值:6 6 第第3 3次调用的值:次调用的值:1212v 静态全局变量l 定义全局变量时,前面加了static说明符,定义的变量就是静态全局变量,是

31、静态存储方式。l 两者的区别在于:全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,全局变量在各个源文件中都是有效的,只要在该文件中对它用extern进行声明即可使用。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。5.5.4 寄存器变量(register)上述各类变量都存放在内存中,当对一个变量频繁使用时,要花费大量的存取时间。C语言提供了另一种变量,它存放在cpu的寄存器中,即寄存器变量,它的说明符是register。它与自动变量具有完全相同的性质。当一个变量使用频率较高时可定义为寄存器变量,这样可提高效率。对于循环次数较多

32、的循环控制变量及循环体内反复使用的变量均可定义为寄存器变量。程程序序清清单单#include void main() register int i,s=0;for (i=1;i=200;i+) s=s+i;printf(“s=%dn”,s);2001ii做中学做中学5-10 5-10 求求输出输出结果结果 s=20100s=20100本例循环200次,i和s都将频繁使用,因此可以定义为寄存器变量。5.6.1 内部函数 如果在一个源文件中定义的函数只能被本文件中的函数调用,而不能被同一源程序的其它文件中的函数调用,这种函数称为内部函数。 定义内部函数的一般形式为: static类型说明符 函数名

33、(形参表) 如, 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”extern input_string (char str) printf(“请输入一个字符

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

35、ern或static则隐含为extern。l 在一个源文件的函数调用其它源文件中定义的外部函数时,要用extern说明被调用函数为外部函数。 如:extern input_string(char ),print_string(char );程序运行程序运行 请输入一个字符串:abcdKefg 你输入的字符串是:abcdKefg5.7 编译预处理 ANSI C规定C语言程序中可以加入一些“预处理命令”,以提高编程效率。如#include、#define等就是预处理命令,它们均以符号“#”开头,末尾不加分号,以区别于C语句。 C编译系统在编译一个程序前,如果源程序中有预处理命令,则首先进行编译预处

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

37、ine 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(“半径=%5.2f体积=%5.2fn”,r0,v);输出结果输出结果 半径=34.00体积=164636.21 终止宏定义的一般形式为: #undef 宏名 它的作用是终止用#define定义的宏的作用域。例如:#define PI 3.14159void main( ) #undef PI#define LENGTH(a,b) (

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

39、并在其它将求圆球体体积的函数定义为头文件,并在其它 程序中使用该函数原型。程序中使用该函数原型。将以下程序源代码保存到文件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

40、; v=V(r0); printf(“半径=%5.2f体积=%5.2fn”,r0,v);输出结果输出结果 半径=34.00体积=164636.21边学边练边学边练 10个小孩围成一圈分糖果,老师分给第一个小孩1块,第二个小孩2块,第三个小孩3块,第四个小孩4块,第五个小孩5块,第六个小孩6块,第七个小孩7块,第八个小孩8块,第九个小孩9块,第十个小孩10块。然后所有的小孩同时将自己手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块。问经过这样几次调整后大家手中的糖的块数都一样?每人各有多少块糖? 从用户终端读取一个整数,计算并打印出它的平方值和立方值。 求出在100和10000之间有多少个整数,它们的各位数字之和等于5?总结归纳总结归纳 函数的定义 函数的调用 函数的嵌套调用 函数的递归调用 变量的作用域 动态/静态存储变量 外部函数和内部函数

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁