nbhkdz.com冰点文库

第7课:函数


第七章 函数 7-1 节、库函数
1.调用 C 语言标准库函数时要求的 include 命令行 Include 命令行必须以#开头,系统提供的头文件以.h 作为文件的后缀,文件名用一对 双引号或一对尖括号(需要注意 include 命令行不是 C 语句,因此不能在最后加分号) 2.标准库函数的调用 函数名(参数表) 如:putchar(ch) (1) 出现在表达式中的

------ch=getchar() (2) 做为单独的语句完成某种操作。-----printf(“********”); 7.2 函数的定义和返回值 由于 C 语言中的定义的函数不能完成用户所有的要求,所以用户可以为自己定义函数实 现相应的功能。 7.2.1 函数定义的语法 1:格式: 函数返回值的类型名 函数名(类型名 形式参数 1,类型名 形式参数 2……) { 说明部分 语句部分 } 2:函数名和形式参数都是用户命名的标识符。在同一个程序中,函数名必须唯一, 形式参数名只要在同一函数中唯一即可,可以与其他函数中的变量同名。 3:C 语言规定,不能在函数的内部定义函数。 4:若在函数的首部省略了函数返回值的类型名,则说明该函数的返回值是 int 类型 5:除了返回值类型为 int 类型的函数外,函数必须先定义后调用。 6:当没有函数返回值,则必须把函数定义成 void 类型。 例:编写求两个双精度数之和的函数。 double add(double a, double b ) { double s; s=a+b; return s; }

7-2 节、函数的返回值
函数的值通过 return 语句返回, return 表达式; 此表达式的值必须与函数首部所说明的类型一致, 若类型不一致, 则以函数值的类型 为准。需要注意的是,无论函数体中有多少个 return 语句,只能执行一次。 函数体内可以没有 return 语句,这时也必须定义函数为 viod 类型。

7-3 节、函数的调用
7.3.1 函数的两种调用方式 格式为: 函数名(实在参数表) 当实参的个数多于一个时, 各实参用逗号隔开。 实参的个数必须与调用函数中形参的 个数相周,类型一一对应匹配。 如没有形参,则形式为 函数名() 注意后面的小括号不能丢。 如题: #include<stdio.h> double add(double ,double);

main() { double m,n,z; scanf(“%lf %lf”,m,n); z=add(m,n); printf(“%lf”,z);\ } double add(double a, double b ) { double s; s=a+b; return s; } 7.3.2 函数调用时的语法要求 1.调用函数时,函数名必须与所调用的函数名字完全一致。 2.实参的个数必须与形参的个数一致。 3.C 语言中规定,函数必须先定义后使用。 4.C 语言中,函数可以直接或间接的自己调用自己。称为递归调用 fac(n)=fac(n-1)*n

7-4 节、函数的说明
在 C 语言中凡是未在调用前定义的函数,C 编译程序都默认函数的返回值为 int 型。对 于返回值是其它类型的,若把函数的定义放在调用之后,应该在调用之前对函数进行说明。 说明的格式: 类型名 函数名(参数类型 1,参数类型 2.。 。 。 。 ) 也可以用以下格式 类型名 函数名(参数类型 1 参数名 1,参数类型 2 参数名 2,……) 函数说明的位置: 一般为了让程序早点识别出程序中的定义好了的函数, 一般将其放在程序的开始部分

7-5 节、调用函数和被调用函数之间的数据传递
一:三种格式进行传递 1. 实在参数和形式参数之间进行数据传递 2. 通过 return 语句把函数值返回调用函数 3. 能过全局变量,但这不是一种好的方式,通常不提倡使用。 通过一个程序来看一下数据到底是怎样传递的。 #include <stdio.h> viod try(int ,int ,int ); main() { int x=2,y=3,z=0; printf(“(1)x=%d y=%d z=%d\n”,x,y,z); try(x,y,z); printf(“(4) x=%d y=%d z=%d\n”,x,y,z); } void try(int x,int y,int z) { printf(“(2) x=%d y=%d z=%d\n”,x,y,z); z=x+y; x=x*x; y=y*y; printf(“(3) x=%d y=%d z=%d\n”,x,y,z”);

} 屏幕上的结果是: (1) x=2 y=3 z=0 (2) x=2 y=3 z=0 (3) x=4 y=9 z=5 (4) x=2 y=3 z=0 再来一个程序 #include<stdio.h> viod swap(int ,int); main() { int x=10,y=20; printf(“(1)x=%d y=%d\n”,x,y); swap(x,y); printf(“(4)x=%d y=%d\n”,x,y); } void swap (int a,int b ) { int t; printf(“(2) a=%d b=%d\n”,a,b); t=a;a=b;b=t; printf(“(3)a=%d b=%d\n”,a,b); } 程序运行结果 (1) x=10 y=20 (2) a=10 b=20 (3) a=20 b=10 (4) x=10 y=20 7.6 程序应用举例 编写一个函数 isprime(int a),用来判断自变量 a 是否为素数。若是素数,函数返回整数 1, 否则返回 0. #include <stdio.h> int isprime(int) main() { int x; printf(“enter a integer number:”); scanf(“%d”,&x); if(isprime(x)) printf(“%dis prime \n”,x); else printf(“%dis not prime\n”,x); } int isprime(int a) { int i; for(i=2;i<=a/2;i++) if(a%i==0) return 0; return 1; } 编写函数 myupper(ch),把 ch 中的小写字母转换成大写字母作为函数值返回, 其他字符不 变。主函数中不断输入字符,用字符@结束输入,同时不断输出结果。 #include <stdio.h> #include<ctype.h>

char myupper(char ch) { if(ch>=’a’&&ch<=’z’) ch=ch-32; return ch; } main() { char c; while((c=getchar())!=’@’) { c=myupper(c); putchar(c); } } 编写函数统计输入字符的个数,用@字符结束输入,在主函数中调用此函数,输出统计结 果。 #include<stdio.h> long countch(); main() { long n; n=countch(); printf(“n=%ld\n”,n); } long countch() { long cn; for(cn=0;getchar()!=’@’;cn++) ; return cn; }

7-10----7-13 节、课后习题
[7.1] 以下说法中正确的是 C A)C 语言程序总是从第一个定义的函数开始执行 B)在 C 语言程序中,要调用的函数必须在 main 函数中定义 C)C 语言程序总是从 main 函数开始执行 D)C 语言程序中的 main 函数必须放在程序的开始部分 [7.2] 以下函数的类型是 C A)与参数 x 的类型相同 B)void 类型 C)int 类型 D)无法确定 fff(float x) { printf("%d\n",x*x);} [7.3] 以下函数调用语句中,含有的实参个数是 B A)1 B)2 C)4 D)5 func( (exp1,exp2),(exp3,exp4,exp5)); [7.4] 以下程序的输出结果是 C A)11 B)20 C)21 D)31

func(int a,int b) { int c c=a+b; return c; } main() { int x=6,y=7,z=8,r;

r=func((x--,y++,x+y),z--); printf("%d\n",r); } [7.5] 以下程序的输出结果是 A A)-1 B)0 main() { int i=2,p; C)1 D)2

p=f(i,i+1); printf("%d",p); } int { f(int a,int b) int c=a; if(a>b)c=1; else if(a==b)c=0; else return(c); } [7.6] 以下程序的输出结果是 D A)0 B)1 C)6 D)无定值 c=-1; c;

fun( int a, int b, int c) { c=a*b; }

main() { int c;

fun(2,3,c); printf("%d\n",c); } [7.7] 以下程序的输出结果是 A A)5.500000 B)3.000000 C)4.000000 D)8.25

double f(int n) { int i; s=1.0; for(i=1; i<=n; return s; } main() { int i,m=3; for(i=0; i<m; printf("%f\n",a)L; } float a=0.0; i++) s+=1.0/i; double s;

i++) a+=f(i);

二、填空题 [7.8] 以下程序的输出结果是____12____. unsigned fun6(unsigned num) { unsigned do { k*=num%10; num/=10; } k=1;

while(num); return k; } main() { unsigned n=26;

printf("%d\n",fun6(n); } [7.9] 以下程序的输出结果是___9.0_____. double sub(double x,double y,double z) { y-=1.0; z=z+x; return } main() { double a=2.5,b=9.0; z;

printf("%f\n",sub(b-a,a,a)); } [7.10] 以下程序的输出结果是___4_____. fun1(int a,int b) { int c; a+=a; b+=b; c=fun2(a,b); return c*c; } fun2(int a,int b) { int c; c=(a*b)%3; return c; } main() { int x=11,y=19; printf("%d\n",fun1(x,y)); } [7.11] 下面 pi 函数的功能是,根据以下公式返回满足精度要求的的值.请填空.

pi/2=1+1/3+1/3*2/5+1/3*2/5*3/7+1/3*2/5*3/7*4/9+... double pi(double eps) { double s=0.0,t=1.0; int n; for(__n=1__;t>eps;n++) { s+=t; t=n*t/(2*n+1); } return (2.0*__S___); } [7.12] 以下函数用以求 x 的 y 次方.请填空. double fun(double x,int y) { int i; double z=1; for(i=1; i___<=y__; i++) z=___z*x__; return z; } n

[7.13] 以下程序的功能是计算 S= S K!.请填空. long f(int n) { int i; long s; s=__1___; for(i=1; i<=n; i++) s=__s*i___; return } main() { long s; int k,n; s; K=1

scanf("%d",&n); s=__0___;

for(k=0; k<=n; k++)s=s+___f(k)__; printf("%ld\n",s); }

三、程序调试和编程题 [7.14] 以下 fun 函数用以判断 n 是否是素数,fun 函数中有逻辑错,请调试改正. fun(int n) { int k,yes; for(k=2; k<=n/2; k++) if(n%k==0) return yes= 0; yes=1; return yes; }


第7课:函数

第七函数 7-1 节、库函数 1.调用 C 语言标准库函数时要求的 include 命令行 Include 命令行必须以#开头,系统提供的头文件以.h 作为文件的后缀,文件名用...

VB第+7课函数过程练习答案

VB第+7课函数过程练习答案_理学_高等教育_教育专区。第 6 章 过程与函数 一、填空题 1.数组名作为过程或函数实参,相应的形 参传递方式为___ ___。 2.一维...

第7课函数的性质(1)

高考直通车·2014 届高考数学一轮复习备课手册 第 7 课 函数的性质(1)一、教学目标 1.理解函数的单调性、最大(小)值的概念及其几何特征, ; 2.会运用定义判...

第7课 指数函数

第7课 指数函数_数学_高中教育_教育专区。第 7 课 指数函数 (预习学案) 课型; 复习课 课时:2 课时 班级: 高考复读 讨论时间:___ 使用时间:___ 执笔老师...

第7课 函数的奇偶性

第7课一、课前测试 函数的奇偶性 x 4 -1 2 1.(必修1P43练习6改编)函数f(x)= x(x -1) 是偶”) 函数.(填“奇”、“偶”或“非奇非 2.(必修1P...

第7课时对 数 函 数

第7课时对 数函数_数学_高中教育_教育专区。高三(2012级)理科数学学案 制作人:李震 备课组长:李震 年级主任: 第 7 课时 考纲下载: 1.理解对数的概念及其运算性...

第7课时函数的图象

第7课时函数的图象_数学_高中教育_教育专区。第 7 课时函数的图像知识梳理 1.应掌握的基本函数的图象有:一次函数、二次函数、幂函数、指数函数、对 数函数等. ...

第7课时函数的表示方法1

第6课时函数的概念2 第7课时函数的表示法2 第8课时函数的单调性 第9课时函数的最值 第10课时函数的奇偶性 第11课时函数性质的应用 第12课时函数习题课1...

高考数学复习第7课 函数的奇偶性

高考数学复习第7课 函数的奇偶性_数学_高中教育_教育专区。江苏高考数学全方位复习 第7 课 函数的奇偶性 (本课时对应学生用书第 15~17 页) 自主学习 回归教材...