当前位置:首页 >> 数学 >>

第一章函数定义


第 1章
本章目标:

函数与宏定义

1.掌握函数的定义方法和调用规则 2.掌据在C语言程序中主调函数和被调用函数之 间进行数据传递的规则

3.正确的使用函数

C程序由一个主函数main()和任意个函数组成。 由主函数调用其他函数,其他函数也可以互相调 用,且同一函数可以被一个或多个

函数调用任意 次。以此完成下面两个功能: (1) 使程序具有“ 积木”功能。(模块化) (2) 使程序具有“重构”功能

main( ) { … a( ) …

a( ) { … a1( ) … } b( ) { … b1( ) … b2( ) …

a1( ) { … }

b1( ) { … }
b2( ) { … } c1( ) { … }

b( ) …
c( ) … }

}

c( ) { … c1( ) … }

在C语言中,函数的含义不是数学中的函数关 系,而是一个处理。它可以进行数值运算、信息处 理、控制决策,即把一段程序的工作放在函数中进 行。 C程序由一个main和任意个函数组成。 1) 除main外, 其它为标准库函数、用户自定义函数,

标准库函数:由系统提供,用户可调用。
用户自定义函数:由用户按语法规则编写。

2) 除main函数外,其它函数可相互调用 main ( ) a( ) d( ) b( ) ? x( ) c( ) z( )

3)函数不可嵌套定义,具有全局性、平行性, 4)函数分为有参与无参函数 5)程序从main开始执行,最后又回到main函 数结束。

库函数简介
系统自带的标准库函数根据不同的功能作用放在 不同的头文件中。
stdio.h ?? math.h ?? ctype.h ?? string.h ?? time.h ?? dir.h ?? graphics.h ?? conio.h bios.h dos.h 用于标准输入/输出 用于数学计算 用于字符处理 用于字串处理 用于时间/日期的处理 用于控制目录和路径 用于图形操作 用于控制台输入输出

??

?? 用于接口处理

?

库函数的作用
(1) 使程序更具有“ 独立性”和“ 可移植”性。
(2) 使用时只需在程序的开头加上一条语句: #include <???.h>
根据使用的函数来确定

(3) 使程序具有“ 模块化”。

1.1 函数概念
1.1.1 函数定义 1、现代形式:

[存储类型符] [类型标识符] 函数名([形参说明表])
{

说明部分
执行部分
函数体

}

2、古典形式: [存储类型符] [类型标识符] 函数名([形参列表]) 形参说明; { 说明部分 执行部分 }
函数体

例 : 求二数之最大值。
int max (int x,int y) {int z; z=x>y? x:y; return (z); int max (x, y)

int x, y;
{int z;

z=x>y? x:y;
return (z); }

}

本函数中出现了return, 语句,其返回值一般与 函数类型一致.

1.1.2 函数声明和调用 一、 函数的声明
调用函数时应对被调用函数进行声明(说明),使系统 知道本函数将要用到某个函数及它的类型,以便主调函 数值作处理。(函数名相当于一变量,但应有所区别) 函数声明的一般形式:

[存储类型符]
如:

[返回值类型符] 函数名( [形参说明表]);

int min(int x,int y);

函数声明 例: 求二实数之和。 main ( ) { float add( ); float a, b, c; scanf("%f, %f",&a, &b); c=add(a, b); printf ("sum= %f";c); } float add( float x, float y) { float z; z=x+y; return z; }

以下几种情况可省略对被调函数的声明: (1) 当返回值为整型、字符型。 (2) 在调用之前定义函数。 (3) 在整个文件的开头定义函数。

二、 调用方式 (1)无返回值的情况 函数名([实参表列]); (2)有返回值的情况 变量名=函数名([实参表列]);

例:

int max (int x, int y) {int z; z=x>y? x:y; return (z); } main( ) {int a, b, c; scanf("%d, %d,", &a, &b); c=max(a, b); printf("max=%d\n", c); }

上例函数调用中参数传递过程为: c=max(a, b); 在main主函数中

max(x, y) int x, y; { int z; z=x>y? x:y; return(z); }

a 10 b 15 c 15

x y z

10 15 15

例 阅读下列程序,写出运行结果 swap(x, y) int x, y; {int t; t=x; x=y; y=t; printf("x=%d, y=%d\n", x, y);} main( ) { int a, b; scanf("%d, %d", &a, &b); if (a<b) swap(a, b); printf("a=%d, b=%d\n", a, b); }

a 15 b 19

x 15 19 y 15 19 t 15

1.1.3 函数传值方式

一、 函数参数
实参: 出现在调用函数中的参数。 形参: 出现被调用函数中的参数。
单向 调用时: 实参值 传递

形参。

函数被调用时,临时分配单元给形参,调用完 毕, 这些单元被释放。

注:

? 实参传递为值传递。 ? 实参可为常 量、变量或表达式,实参 与形参类型必须一致。 ? 在被定义的函数中,必须指定形参的 类型,可在形参说明部分说明,也可 在形参表列中说明。如 如:int max(int x, int y) {?}

二、函数返回值语句
通过函数调用使用函数能得到一个确定的 值,这就是函数的返回值。
1、函数无返回值的情况

return;
2、函数有返回值的情况

return (表达式); 或 return 表达式;

说明:
(1) 函数的返回值由return获得;一个函数中可

以有一个以上的return语句,执行到哪一个
return语句,则哪一个语句起作用。

如:#include "stdio.h" main( ) { int n=4, x=2, s; s=fun(x, n); printf("s=%d\n", s); } fun(int x, int n) { if (n==1) return(x); else return(x?fun(x, n?1)); }

(2) 函数返回值的类型,就是定义函数时指定函
数值的类型。

如:int max(x, y)
char letter(c1, c2) double f(a, b)

函数值为整型
函数值为字符型 函数值为双精度型

不加类型说明的函数,一律按int型处理。

(3) 当函数值的类型与return语句中表达式类型不 一致时,以函数类型为准。对数值型数据,可 以自动进行类型转换。即函数类型决定返回值 的类型。(这种方法初学者最好不用)
(4) 若被调函数中没有return语句,将不带一个确 定的、用户希望的函数值。但实际上,并非不 带返回值,而只是不带回有用的值,带回的是 一个不确定的值。

printstar( ) 如: {printf("************\n"); } print_message( ) {printf(" How do you do!\n");} main ( ) {int a, b, c; a=printstar( ); b=print_message( ); c=printstar( ); printf("a=%d, b=%d, c=%d\n", a, b, c); } }

则运行结果为:

************ How do you do! ************
a=16, b=15, c=16

(5) 关于main函数的参数

一般情况下,main函数均无参数,但这并
不表示 main 函数必须为无参函数,在必要时,

main函数也可以带有参数。

(6) 实参传递给形参时,实参的计算有的系统 自左至右,有的自右至左。
例 main() { int i=2,p; p=f(i,++i); printf("%d",p); }
int f(int a,int b) { int c; if(a>b) c=1; else if(a==b) c=0; else c=?1; return(c); }

说明: (1) 若实参表的求值顺序为自左至右,则函数调 用相当于f(2,3);

这时,运行结果为 :?1
(2) 若实参表的求值顺序为自右至左,则函数调 用相当于f(3,3); 这时,运行结果为 :0 Dev C++是按自右至左的顺序求实参表的值, 所以上机运运行结果为0。

三、 函数调用
主函数调用其他函数,其他函数也可以互相调用。 (page 6 例1-1,1-2,1-3) 函数不能嵌套定义,但可嵌套调用 main a( ) b( )

{ ?
调用a

{?
调用b

{

?
}

?
} }

例 编写求组合数的函数。

组合数的计算公式为:

C

n m

m! ? n!( m ? n)!

/*求阶和乘*/ unsigned long fac(unsigned int k) {unsigned long f=1; unsigned int i; for (i=1; i<=k; i++) f=f*i; return f; }

/*求组合数*/ unsigned long comb(unsigned int n, unsigned int m) { unsigned long c; c=fac(m)/(fac(n)*fac(m-n)); return c;} #include <stdio.h> main() {unsigned int n,m; unsigned long c; scanf(“%u,%u”,&n,&m); if (m>=n) {c=comb(n,m); printf(“%ld”,c);} else printf(“Error!”); }

从程序中可以看到: (1)在定义函数时,函数fac、comb是互相独立 的;
(2)二个函数的定义均在主函数之前,所以在主 函数中不必再对它们进行声明(说明);

(3)程序从主函数 main()开始执行,首先执行的 scanf( ), 输入数,然后调用 comb(n,m), 调用 comb的过程中,要调用fac( )。fac( )的调用 是嵌套在函数comb( )的调用中进行的 ,其 嵌套调用过程如下:
main函数 comb函数 fac函数

调用comb函数

调用fac函数

输出根x

1.2 变量作用域及存储类型
一、变量作用域
根据变量的有效作用范围,变量可分为 局部变量和全局变量。

1、局部变量 凡在函数(含main 函数)内部定义的变量称为 局部变量。
局部性: 局部变量仅在函数内部有效,它包括:

1. 函数中定义的变量;
不同的函数可具有同名的变量, 它们占不同的 内存单元, 互不影响。 2. 形式参数; 3. 在复合语句中可定义仅复合语句中有效的临时 变量。

2、全局变量
一个源文件中,在所有函数之外定义的变量为 全局变量。

有效性: 自定义位置开始至文件结尾 全部有效。

例: int p=1, q=5; float f1(int a) {int b, c; ? } char c1, c2;
char f2(int x,int y) { int i, j; ? } main ( ) } ? }

p,q的作用范围

c1, c2的作用范围

1. 全局变量所作用到的函数,相当于这些函数的公 共变量。于是,当一个函数对其值进行改变后,另 一个函数使用该变量的值亦相应改变。好处: 函 数之间值传递。 2. 不要随意使用全局变量。一是始终占据内存单 元;二是由于函数依赖于外部定义的变量,减 少了通用性。
3. 不在全局变量作用域内的函数。若要使用全局( 外)变量,需在函数体内加上extern保留字于以说 明。 4. 全局和局部变量同名时,局部变量有效。

例:分析m作为全局变量和局部变量在程序中各 个部分时的值。
int m=13; int fun(int x, int y) { int m=3; printf("m1=%d\n",m); return(x*y-m); } main() {int a=6,b=7; printf("m2=%d\n",m); a, b

m

x, y
全局变量m 的作用范围

printf("%d\n",fun(a,b)/m); }

其运行结果为: m2=13 /*全局变量的m的值*/ m1=3 /*局部变量m的值*/ 3 /*函数调用的结果*/

例: float f1 (int x) {extern int a, b; ? }

int a=0; b= –1
main ( )

{
? }

a, b作用域

二、 变量的存储类型 1、变量的存储类别 C语言特有的方式。表达了一个变量存在的时间。

程序区
内存分配 静态存储区 动态存储区 数据,变量存放

静态存储变量: 存放于静态存储区,在程序整个运行 过程中,始终占据固定的内存单元。

动态存储变量: 存放于动态存储区,根据程序的运 行状态(如:函数调用)而临时分配 的单元,且单元并不固定。

以上为两大类,又分为四种具体形式 1. 自动型(auto)变量 2. 静态(static)变量
3. 寄存器型(register)变量

4. 外部(extern)变量 前面学习的局部、全局变量均以上述方式中 的一种形式存储。

2、局部变量存储形式
局部变量既可以静态方式 , 又可以动态方式存储。 动态方式: auto int a, b; 则: a, b为自动型,存入动态区。在该函数被 调用时才分配单元,函数调用结束时释放。

auto一般省略。以前用到的变量均为auto型, (
除加static说明的之外)。

静态方式: static int a, b;

则: a, b存入静态区。 函数中的a, b始终占据固定 存储单元。

(1) 若定义时赋初值,则程序运行中仅在第一次调
用时赋初值,第二次调用不再赋初值,而是使用

上一次调用的值。

例:求n! int fac (int n) { static int f=1; f=f?n; return(f); } main ( ) { int i; for (i=1; i<=5; i++) printf ("%d!=%d\n", i, fac(i)); }

运行结果为: 1!=1 2!=2

3!=6
4!=24

5!=120
每一次调用fac(i),打印一个i!,同时保留 这个i!的值以便下次再乘(i+1)。

(2) 若不赋初值,则系统置初值0,而动态变量不赋初 值则值不确定。 当动态局部变量在一个函数中反复被用达到数 百次以上时,为了提高效率,可将其存入寄存器中 (有限个),不存入内存的动态区中。

说明方式

register int i, j=1;

? 不可多, 一般1––3个 ? 必要时使用。

2、全局变量存储形式 在函数外部中定义,它们一定存放在静态存 贮区中。

全局变量即可被本文件中各函数用,亦可被其 它源文件中的函数引用。 (1) 只被本文件中的函数引用
全局变量本身一定是存放在静态区的。但若加 上 static. 即:

static int a, b; float f1(int x) {? }

则表明a,b只被本文件 中各函数引用,即使 与其它文件中的全局 变量同名,也互不影

响。

(2) 可被其它文件中的函数引用
extern int a; int a; main( ) fac(int x) {? 文件f1.c ? } } z=a??

{

?

文件f2.c 用到f1.c 中的a

f2.c中的extern在函数外说明,在函数 内说明已叙述过。

总结 存储类别 auto 函数内 作用域 存在性 ? ?

函数外 作用域 存在性
? ?

register static 局部 static 外部
不加 static 全局(外部) Page 9 例 1-4

? ? ? ?

? ? ? ? ?

? ?
(只限本 文件)

? ? ? ?

?

1.3 内部函数与外部函数
函数本身在一个文件中为全局的。即一个文件 中定义的函数可被该文件的所有其它函数调用。 但函数能否被其它文件中的函数所调用呢?

为此分为: 内部函数、外部函数

一、内部函数–––只能在本文件中调用
static 类型标识符 函数名(形参表)

例:

static int max (int a, int b)

{
?

}

则该函数max只能被本文件中的其它函数引用, 而不能被其它文件中的函数引用。即如果在不同 的文件中有同名的内部函数,将互不干扰。

二、外部函数
既可被本文件中的函数调用,也可被其它文件 中的函数调用。 extern 类型标识符 函数名(形参表)

extern 可省略
一般系统在调用外部函数的函数中用extern说 明外部函数。

例(page12 ) :1_6 /*file.c*/ #include<stdio.h> extern int mod(int a, int b); extern int add(int m, int n); main() { int x,y,result1,result2,result; scanf(“%d%d”,&x,&y); result1=add(x,y); if (result>0) result2=mod(x,y); result=result1-result2; printf(“result=%d\n”,result); }

/*file1.c*/ extern int add(int m, int n) { return (m+n); } /*file2.c*/

extern int mod(int a,int b)
{

return (a%b);
}

首先要生成 3 个源文件 (example6_6.cfile1.c 和 file2.c)。再构造project文件,在编辑状态下,编辑一 个后缀为 prj 的文件(文件名可由用户选择,如: ff.prj)此文件内容如下: example6.c file1 file2 后缀.c可有可无,example6_6.c,file1,file2顺序无 关,如果example6_6.c、file1.c和file2.c不在一个目录 中时,可在project文件ff.prj中给出各自的路径。 选择project功能项,在project name输入ff.prj。 然后按F9,产生相应的执行文件ff.exe 。

VC环境下,工程文件的创建:

DEV环境下,工程文件的创建:

1.4 递归函数设计和调用

递归调用:
在函数内调用函数本身,称为函数的递归 调用。函数直接调用本身,称为直接递归。函 数调用其他函数 ,其他函数又调用了本函数, 称为间接递归。

直接调用

间接调用

int f(int x)
{ int y, z;

int f1 (int x)
{ int y, z;

int f2 (int t)

{ int a, b;
? a=f1 (y); ? }

? z=f (y);
?

? z=f2 (y);
?

}

}

以上仅给出了递归的概念.

显然: 上述例子会无限递归 (无限执行)。所以, 在递 归调用时都有条件限制。

即: 条件成立,调用递归,否则结束。
一个最常用的例子 (page 15 ,例1-7) 求n! 1. 从数学上定义 n!= 1 (n=0, 1)

n?(n–1)!

(n>1)

2. 程序

float fac(int n)
{ float f;

if (n<0) printf("input error!\n");
else if (n= = 0 ? ? n= =1) f =1; else f =n?fac(n –1); return (f); }

main ( )

{ int n;
float y;

printf("input a integer! ");
scanf ("%d", &n); y=fac(n); printf("%d!=%15.0f", n, y); }

3. 执行过程: 设输入n?5
main ( ) fac(4) { fac(3) { fac(2) { ? f=3?fac(2); ? return f; }?– ? f=2?fac(1); ? return f; } fac(1) { ? f=f (1); ? return f; }

{
? f=5?fac(4); ? }

?
f=4?fac(3); ? return f;

}

可简化表示为

当变成机器代码时,将其拉成直线(线性程 序代码)。

例1-8: (page 16)

1.5 预处理

目的: 为了简化程序的编写,提高程序的可移植性、 可读性、模块化。 C语言设计了若干命令––– 编译预处理命令,并可出现于程序当中。

有三种类型的预处理命令: 1. 宏定义命令; 2. 文件包含命令; 3. 条件编译命令。

为了与C语句区别,这些命令均以“ #”开头。
处理流程: 第一次编译扫描时,将预编译命令处理完, 然后再进行正式编译,生成目标代码。

1.5.1 宏定义
简化程序的书写,提高可读性、可移植性。

宏定义分为: 无参数和有参数二种形式。
一、不带参数的宏

# define 标识符 字符串表达式

实际处理时: 用“ 字符串表达式”替换程序中的标识符(宏名) 例: #define PAI 3.14159 #define Array_size 500 ? int m[Array_size]; 相当于:int m[500];

1. 宏定义的作用域: 从开始定义的位置至文件结尾,但允许提前终 止。用命令(#undef标识符) #define M 10.5 ? main ( ) {? # undef M 作用域范围

?
}

# include <stdio.h> # define PAI 3.14159 main( ) { float r, s; r=2.0; s=PAI?r?r; printf("s=%5.3f\n", s); #undef PAI r=3.0; s=PAI?r?r; printf("s=%5.3f\n", s); }

运行结果: s=12.566 s=28.274

如果在程序中提前终止宏定义,则编译时会提示: undefined symbol 'PAI' in function main

2. 可以嵌套定义, 即可引用已定义的宏名。 #define PI 3.14159 #define R 3.0 #define L 2?R ?PI #define S PI ?R ?R main { ? prinf("L=%f\n S=%f\n ", L, S); ? }

结果: L=18.84954 S=28.27131 注意: 双引号“

/*L=2?3.0 ? 3.14159*/ /*S=3.14159?3.0 ? 3.0*/

”中的L不被替换。

结论: (1)凡程序中常用到的字符序列,如:常数, 公式,

均可用宏定义。
(2) 经常会改变的数据可用宏定义。

二、带参数的宏

合适于字符串表达式序列中有变化的字符, 将这部分字符可定义为参数。
例1: ?r2?3.1415?r ?r

为字符序列, 但r是可变的。
形式: #define 宏名(参数表) 字符串

#define S(r ) 3.14159 ?r ?r ? S(3.0) /*相当于: 3.14159 ?3.0 ?3.0*/ S(4.0) /*相当于: 3.14159 ?4.0 ?4.0*/ ?

例2: #define f(a) a*b main( ) {int x, y, b, z; x=3; y=4; b=x+y; z=f(x+y); } 编译后: z=f(x+y) 变成: x+y*b 结果为: z=31
(这个结果有可能与初始设想不一致)

初始想法有可能是: 若有:f(x+y) 则应有:(x+y)?b 若有:f(x+y+z) 则应有:(x+y+z)?b

宏定义时必须注意以下几个方面: 1. 宏展开实质为严格的字符替换,把参数看一种 “ 字符串”,所以定义宏时要考虑实参(替换) 的各种可能, 防止出现二义性。 如程序例1中:若有#define s( r) 3.14159?r?r ?
则S(a+b)的结果为: 3.24159?a+b?a+b 为避免出现错误的结果,可将宏定义修改为: #define S( r) 3.1415926?( r)?( r)

2. 宏定义与函数是完全不同的概念 (1)目的 :宏调用是为了减少书写量和提高运行 速度;函数调用为了实现模块化程序设计。

(2)代码:宏调用展开后的代码是嵌入源程序中, 代码是增加的 ;函数调用没用展开的问题,函数 体的代码都不增加。 (3)参数:宏定义不需说其类型 ;函数定义必须说 明其类型 。
(4)工作 时间:宏调用在编译预处理时完成宏展 开工作 ;而函数调用在程序 序运行过程中执行。 (5)存储空间:宏调用不存在内存分配问题;函数 可能需分配临时空间以存放函数调用之结果。

3. 灵活运用宏定义, 可使程序书写简化. 例: printf中经常有" \n ", " %d "或程序中经常有 printf(" please input a number ")等。则可用宏 定义代替,如: 例: # include<stdio.h> #define INPUT_ PROMPT printf("…") # define EN printf("please input number:\n")

#define NL printf(" \n") #define PRINT(F, V) printf (“F=%d\t",V)

1.5.2 文件包含
C语言允许在一个文件预编译时,将另一个文件 原封不动地包含进来。
目的:

(1) 当函数不在一个文件中,既可用link连接编 译后的obj文件,也可用“ 文件包含”方式。
(2) 当一组符号常量的定义为公用时,可作为一

个独立的文件被其它文件包含。

格式: # include "文件名"

例:
# include "f2.c "

f2.c



?
main ( ) f1.c

: :

{
}

?

预编译后: f1.c
: :

为f2.c中的内容

main ( )

{
? } ? 再进行正式编译

1. 一个include只能写一个文件,包含多个文件需多 个include

2. 当f1.c包含f2.c,而f2.c又包含f3.c时,有两种包含形式:
(1) 只在f1.c中用#include. #include "f2.c" #include "f3.c" (2) 分别在f1.c, f2.c中用#include 在f1.c中: #include "f2.c"

在f2.c中: #include "f3.c"

3. 一般用.h扩展名命名被包含文件。 h为head之意 以与一般.c文件区别。如系统stdio.h.系统.h文件 在子目录INCLUDE下。 4. #include后的文件名既可用" ", 也可用< >,两者 区别: “ ”首先在当前目录中找,然后再去标准目录中找。

< > 只在标准目录(include目录)中找。
5. 被包含文件和包含文件最后形成一个文件。因此, 全局变量作用域为整个文件。不必用extern说明。

1.5.3 条件编译
有时, C程序的一部分语句是否起作用要根据 一定的条件,即由条件而决定是否起作用。 例如: (1) 调试程序时,需加多条printf,但调试完则要 一一删除。 (2) 有的语句也视条件而决定其具体形式。

条件编译命令的三种形式:

形式1 # ifdef 标识符
程序段1 # else 程序段2 # endif 功能 当标识符在此之前被定义过 (即用#define定 义过),则编译程序段1,否则编译程序段2。 其中: 程序段即可为语句组,也可为命令行。

另: #else 后面部分可没有,但#endif保留。 例: 为了调试程序,加上以下条件 编译

#ifdef DEBUG
printf("x=%d, y=%d, z=%d",x, y, z );

#endif
只要在此之前有: # define DEBUG <任意字符>

则编译 printf( x=%d, y=%d, z=%d", x, y, z);

例: #include<stdio.h> #define EN printf("Please input number:\n") main( ) { int a=123, b=456; #ifdef EN prinft("This is test :a=%d\n", a); #else prinft("This is test :b=%d\n", b); #endif } 编译时会有警告: 'b' is assigned a value that is never used 运行结果:This is test :a=123

形式2

#ifndef 标识符 程序段1

#else
程序段2

#endif
功能: 与形式1的条件正好相反, 即: 当标识符未 被定义,则编译程序段1, 否则编译程序 段2 。

例: #include<stdio.h> #define EN printf("Please input number:\n") main( ) { int a=123, b=456; #ifndef EN prinft("This is test :a=%d\n", a); #else prinft("This is test :b=%d\n", b); #endif } 编译时会有警告: 'a' is assigned a value that is never used 运行结果:This is test :b=456

形式3

#if 表达式
程序段1

#else
程序段2 #endif 功能: 当表达式?0, 则编译程序段1, 否则编译 程序段2。

形式4:#if 常量表达式1 程序段 1 #elif 常量表达式2 程序段 2 …… #elif 常量表达式n 程序段n #else 程序段n+1 #endif

例: 输入一任意字符串,需将其全部转化为大
写字母,或者将其转化为小写字母。

只编一个程序, 程序中用条件编译,决 定是全部转为大写字母还是小写字母。

#define LETTER 1 main( ) { char c; int i=0; scanf("%c", &c); while ( c !=' # ') { # if LETTER if (c>= 'a' && c<=' z') c=c–32; /*把所有的小写字符转成大写字符*/ #else if (c>='A' && c<=' Z') c=c+32; #endif printf("c=%"c, c); scanf("%c", &c); } }

练习

1、 习题
2、上机练习: 第1章函数与宏定义实验


相关文章:
必修1第一章 集合与函数概念经典试题
必修1第一章 集合与函数概念经典试题_高一数学_数学_高中教育_教育专区。第一章 集合与函数概念一、选择题 1.设全集 U={(x,y)| x∈R,y∈R},集合 M= ...
第一章 函数
第一章 函数_理学_高等教育_教育专区。高等数学B1 第一章一. 单项选择题 1....偶函数 (D) 既是奇函数又是偶函数 ) 1.3 如果函数 f ( x) 的定义域为...
必修1 第一章 集合与函数的概念讲义
x 1.2.2 函数的表示方法解析法、图象法、列表法 分段函数:有些函数在它的定义域中,对于自变量 x 的不同取值范围,对应法则不同, 4 数学必修一 第一章 集合...
第一章 函数
第一章 函数 数学是研究和描述自然现象和社会现象客观规律的重要工具。 人们早就...基本运算:函数的定义域;函数的四则运算及其复合运算;函数的图形变换等。 基本...
高中数学必修1 第一章 集合与函数概念 知识点
高中数学必修1 第一章 集合与函数概念 知识点_高一数学_数学_高中教育_教育专区。高一数学必修一 集合与函数,知识点总结,练习题带答案 ...
第一章函数的性质
第一章函数的性质_数学_高中教育_教育专区。2009 届高三一轮复习数学(理) 函数 函数的定义与映射(1 课时)教学目标: 1.体会对应关系在刻画函数概念中的作用 2....
第一章 集合与函数的概念
第一章 集合与函数概念 第三节 函数的单调性教学目的: (1)通过已学过的函数特别是二次函数,理解函数的单调性及其几 何意义; (2)学会运用函数图象理解和...
第一章_函数
第一章_函数_理学_高等教育_教育专区。经济数学第一章复习题第一章一、填空题 1. y ? log2 ?log3 x? 的定义域 2. y ? 3. 。 函数 3 ? x ? arcs...
第一章函数
第一章函数_理学_高等教育_教育专区。微积分简介: 始创微积分: 17 世纪下半...经各国科学家的努力与历史的积累,建立在函数 与极限概念基础上的微积分理论应运...
第一章 集合与函数概念
第一章 集合与函数概念_数学_高中教育_教育专区 暂无评价|0人阅读|0次下载|举报文档第一章 集合与函数概念_数学_高中教育_教育专区。_1.1 集__合 1.1.1...
更多相关标签:
必修四第一章三角函数 | 复变函数第一章 | 第一章三角函数 | 第一章集合与函数概念 | 必修4第一章三角函数 | 高等数学第一章函数 | 第一章三角函数的总结 | 实变函数第一章 |