当前位置:文档之家› 函数与编译预处理

函数与编译预处理

教学重点:
函数的定义及调用、递归调用、 变量的作用域。
上一页
下一页
4.1模块化程序设计与函数
在设计较复杂的程序时,我们一般采用的方法是: 把问题分成几个部分,每部分又可分成更细的若干小 部分,逐步细化,直至分解成很容易求解的小问题。 这样的话,原来问题的解就可以用这些小问题来表示。
把复杂任务细分成多个问题的过程,就叫程序的 模块化。模块化程序设计是靠设计函数和调用函数实 现的。
嵌套和递归 变量的作用域
上一页
下一页
函数举例
• #include <conio.h>
main()
{ int a,b,m;
/*说明变量*/
int max(int a,int b); ",&a,&b); /*调用库函数scanf*/
m=max(a,b);
/*调用字定义函数max*/
第四章 函数与编译预处理
4.1 模块化程序设计与函数 4.2 函数的定义与调用 4.3 函数的递归调用 4.4 变量作用域与存储方式 4.5 编译预处理 4.6 函数设计举例
教学目的和基本要求:
要求学生了解模块化程序设计的思 想,掌握函数的定义及调用,理解 变量的作用域与存储方式的概念, 理解编译预处理的概念。
上一页
下一页
模块与函数
C语言程序由基本语句和函数组成,每个函数可完成相对独立的 任务,依一定的规则调用这些函数,就组成了解决某个特定问题的 程序。
任务、模块与函数的关系:
任务
模块
模块
模块
函数 函数 函数 函数
上一页
下一页
函数
函数
看这样一个问题:求[200,1000]的双胞胎数的对数。双胞胎数:两素 数差为2称为双胞胎数。
t = t * x; return t; }
}
求1!+2!+3!+…+10!
算法 i =1; s=0; 当 i <= 10 s=s+ i! 定义求 i! 的函数
上一页
下一页
求1!+2!+3!+…+10! 程序
void main() { long mm( int ); /*自定义求阶乘函数应先声明 */
调用printf函数时, 必须include<stdio.h>
上一页
下一页
自定义函数
可以把完成一个任务的过程写成函数。
int A_to_a(int capital) {int small; if (capital>=‘A’ && capital<=‘Z’)
small= capital – (‘A’-’a’); return small; }
下一页
C语言程序处理过程全部都是以函数形式出 现,最简单的程序至少也有一个main函 数。函数必须先定义和声明后才能调用。
上一页
下一页
标准库函数
C语言有丰富的库函数,这些函数的说明在 不同的头文件(*.h)中。
想要调用标准的库函数,就必须include。
#include<stdio.h> main() {printf(“%d”,1024*768); }
上一下页面我们详细介绍函数调用下的一格页式和语法规定。
4.2 函数的定义与调用
在C语言中,函数(Function)是一个处理过程,可以进 行数值运算、信息处理、控制决策,即一段程序的 工作放在函数中进行,函数结束时可以携带或不带 处理结果。
库函数(标准函数):系统提供 自定义函数:用户自己写
上一页
这是我们上一章结束的一道练习题,下面的左边是我们当时编的程序。
main( )
我们注意到,程序中用 筐住的部分
{ int a,b,n=0,I; for(a=200;a<=998;a++) { for(I=2;I<a;I++) if(a%I==0) break;
是完成了相同的功能,即判断一个数(a 或b)是否是素数。我们可以考虑用一个 独立的函数来完成判断素数的功能,在
if(a>b) y=a; else y=b;
上一页
下一页
自定义函数的声明
自定义函数在调用前应先声明。使系统知道将要用到某个 函数及它的类型,以便处理。函数声明应与该函数定义时 给出的函数类型与名字、形参的个数、类型、次序相一致。
#include “stdio.h”
void main()
{float x,y;
for(a=200;a<=998;a++) {if(f(a)==1) { b=a+2;
for(I=2;I<x;I++) if(x%I==0) break;
}
if(f(b)==1) n++;
if(x==I) return 1;
} } printf(“\n%d”,n);
else return 0; }
}
int i; long s=0; for (i =1; i <=10; i ++)
s+= mm(i ); /*调用求阶乘函数,求I的阶乘 */ printf(“\n%ld”,s);
int n;
float power (float x, int n);
scanf("%f,%d", &x, &n);
y = power(x, n);
上一pr页intf(“%8.2f”,y );
下一页
float power( float x, int n) { int i;
float t=1; for(i=1; i<=n; i++)
if(a==i)
主函数中调用此函数即可。如下:
{ b=a+2;
for(I=2;I<b;I++) if(b%I==0) break;
main( ) { int a,b,n=0;
int f(int x)
if(b==i) n++;
int f(int x);
{ int I;
} } printf(“\n%d”,n);
返回值类型名 函数名
参数说明和参数列表 定义局部变量
返回值
另的最注如外调好意果请用只不不注函使要需意数用与返这时局已回样输部有则的入变库可判参量函r断数e,数tu,的这r重n如格样0名;写式将成要方‘与便之A调’<相试ca同。pital<‘Z’是不行
上一页
下一页
“函数”的主要知识点
函数的定义 函数的参数和返回值 函数的调用
printf("max=%d\n",m)); /*调用库函数printf*/
getch();
/*调用库函数getch*/
}
上一页
下一页
函数举例
int max(int a,int b) /*定义函数max*/ { int y; y=(a>b)? a:b; /*条件表达式 */ return y; }
相关主题