C语言第六章《函数》
C语言程序设计 第六章 函数 试题及答案
B)形参可以是常量、变量或表达式
C)实参可以是任意类型
D)实参应与其对应的形参类型一致
参考答案:B
6.8以下正确的说法是。
A)定义函数时,形参的类型说明可以放在函数体内
B)return后面的值不能为表达式
C)如果函数的类型与返回值类型不一致,以函数类型为准
D)如果形参与实参的类型不一致,以实参类型为准
A)float型B)int型C)long型D)double型
参考答案:B
6.12 C语言规定,函数返回值的类型是由所决定。
A)return语句中的表达式类型
B)调用该函数时的主调函数类型
C)调用该函数是系统临时指定
D)在定义该函数时所指定的函数类型
参考答案:D
*6.13下面函数调用语句含有实参的个数为。
if(m!=-1) n=m;
}
printf("\nn=%d",n);
}
【1】A)k*10 B)k%10 C)k/10 D)k*10%10
【2】A)a2*10 B)a2 C)a2/10 D)a2%10
参考答案:【1】C【2】A
6.18以下是有关汉诺塔问题的程序段,若在main函数中有调用语句hanoi(3,'A','B','C');则符合程序段运行结果的选项是。
A-->C A-->C B-->C B-->C
A-->B A-->B A-->C A-->C
参考答案:C
6.19若用数组名作为函数调用的实参,传递给形参的是。
A)数组的首地址B)数组第一个元素的值
C)数组中全部元素的值D)数组元素的个数
大学C语言程序设计 第六章
2.函数表达式: 2.函数表达式: 函数表达式
功能:将函数作为表达式的一部分。 功能:将函数作为表达式的一部分。 如: c=2*max(a,b); 要点:要求函数带回一个确定的值,以参加表达式的运算。 要点:要求函数带回一个确定的值,以参加表达式的运算。
3.一个函数作为另一个函数的参数: 3.一个函数作为另一个函数的参数: 一个函数作为另一个函数的参数
若不需要函数带回任何值,可使用: 若不需要函数带回任何值,可使用:
void printstar(){ …} } void print_message(){…} print_message(){ }
例exp6_5:函数返回值的类型与其定义的 exp6_5:函数返回值的类型与其定义的 类型不符的情况。 类型不符的情况。
一函数的定义重点二函数的调用重点1函数的一般调用2函数的嵌套调用3函数的递归调用三数组作为函数的参数难点四局部变量与全局变量难点五变量的存储类别难点六内部函数与外部函数1概述2函数定义的方法重点3函数的参数难点4函数的返回值难点1c程序的基本结构回顾2什么是函数
第六章
[教学要求] 教学要求]
函
数
1.理解函数的功能。 理解函数的功能。 2.掌握函数定义的一般形式(重点)。 掌握函数定义的一般形式(重点)。 掌握函数的形参与实参的对应关系、 3.掌握函数的形参与实参的对应关系、参数传递方法及函数返回值 的概念(难点) 的概念(难点) 。 掌握函数调用的基本方法(重点) 4.掌握函数调用的基本方法(重点) 。 掌握函数嵌套调用的一般过程(重点) 5.掌握函数嵌套调用的一般过程(重点) 。 了解函数递归调用的几种形式。 6.了解函数递归调用的几种形式。 掌握数组名作为函数的参数的一些特点(难点) 7.掌握数组名作为函数的参数的一些特点(难点) 。 8.掌握局部变量与全局变量的概念及它们的使用特点(难点) 。 掌握局部变量与全局变量的概念及它们的使用特点(难点) 掌握动态存储变量与静态存储变量的含义,会正确识别和使用。 9.掌握动态存储变量与静态存储变量的含义,会正确识别和使用。 10.了解内部函数与外部函数的含义。 10.了解内部函数与外部函数的含义。
计算机C语言教程第6章函数.ppt
说明: 1)以前的C版本函数声明方式不是采用函数原型,而只
声明函数名和函数类型。例如在例8.5中,也可写成: float add( );
第六章 函数
§6.1 概述
一个函数是根据进去的信息(输入)和产生的东西(输出结 果)所定义的一个黑盒。
在 C 语言函数中: 我们用参数把值传送进函数: 我们用 RETURN 把一个值返回调用函数。
C程序由一个main和任意个函数组成。
1) 除main外, 其它为系统函数、自编函数,系统函 数:由系统提供,用户可调用。自编函数:由用户 按语法规则编写。
例:c=2*max(a,b); 函数max是表达式的一部分,它的值乘以2再赋给c。
3、函数参数
函数调用作为一个函数的实参。 例:m=max(a,max(b,c));
其中max(b,c)是一次函数调用,它的值作为max另一次调用 的实参。
m的值是a、b、c三者最大的。
又如:
printf(“%d”,max(a,b));
类型标识符: 表示返回值类型。
例6.1 利用函数实现信息打印 #include<stdio.h> Void print_space() { printf(“\n”); } Void print_message() { printf(“\n Welcome you to use Clanguage !”);
(函数名相当于一变量,但应有所区别)
类型符 函数名( ); 它不同于函数的定义(功能定义)
例8.5 : 求二实数之和 main ( ) { float add( float x,float y); float a, b, c; scanf("%f, %f",&a, &b); c=add(a, b); printf ("sum= %f";c); } float add( float x, float y);
《C语言与程序设计》实验06---函数
实验六函数一、实验目的1. 熟练掌握函数的定义、函数的类型和返回值。
2. 熟练掌握形式参数与实际参数、参数值的传递。
3. 掌握函数的嵌套调用与递归调用。
4.学会使用指向函数的指针变量。
5.了解指向指针的指针的概念及带参数的main函数。
6. 掌握局部变量和全局变量。
7. 掌握变量的存储类型。
8. 了解内部函数和外部函数。
二、实验学时:8课时三、预习知识1.标准库函数标准库函数是C系统提供的,这些库函数定义了一些基本的、常用的功能,用户可以使用这些库函数,但是在使用库函数之前需要用预编译命令# include将该库函数所在的头文件包含进来。
2.自定义函数定义函数一般有两种形式形式1:存储类型类型符函数名(类型符形参1,类型符形参2 ,… ) { 说明语句执行语句}形式2:存储类型类型符函数名(形参1,形参2 ,……)形参类型说明{ 说明语句执行语句}说明:①形参表中即使没有参数,函数名后的一对圆括号也不能省略。
②函数名前的类型符是用来说明函数返回值的数据类型(也作为函数的数据类型) 。
当函数值为整型时,类型符可以省略。
③当函数只完成某一特定操作不需要返回值时,可用类型标识符 void 说明,将函数定义成空类型。
④C 规定:不允许在一个函数内部再定义另外一个函数,即函数不允许嵌套定义。
⑤函数的存储类型:函数的存储类型有 extern 和 static 两种。
extern 型的函数除了可以被本程序中其它函数调用外,还可以被其它文件中的函数调用,这种函数称为外部函数,如果定义函数时省略 extern ,则隐含为外部函数。
static 型的函数只能被本源程序文件中的函数调用,称为内部函数(静态函数)。
3.函数的参数(1)在定义函数时函数名后面括号中的变量称为形参(形式参数),如果有两个以上形参,形参之间以逗号分隔。
形参是函数的内部变量,只在函数内部才有意义。
在未出现函数调用时,形参不占内存。
对每个形参必须指明其名字和数据类型。
C语言函数篇讲解ppt课件
b函数结束
精选版课件ppt
20
main( ) { int x,y,sum;
x=5; y=6; sum=add(x,y); printf(“%d”,sum); }
add(int a ,int b) { int z;
z=a+fun(b); return z; } 运行结果:
41
精选版课件ppt
汉诺塔问题 ( Hanoi)
数调用任意多次。 4. 从用户角度看,函数分为两种:
① 标准函数:即库函数,由系统提供。
② 用户自定义函数:用户自己定义的。 5. 从函数形式看,函数分为两种:
①无参函数。
②有参函数。
精选版课件ppt
3
6.2 函数定义的一般形式
一 函数定义的一般形式
列表
类型标识符 函数名(类型1 形参1,类型2 形参2,…) { 声明部分 语句 }
二 说明:
1.所有函数在定义时都是互相独立的,即不能嵌套定义; 2.类型标识符:说明了函数返回值的类型,当返回值为
int时,可省略不写; 3.函数名:遵循标识符的命名规则;同一个函数中函数名
必须唯一;
精选版课件ppt
4
4.形参:只能是变量,每个形参前要有类型名;当定义的 函数没有形参时叫作“无参函数” ;
a 10 20 b
alter(a, b);
printf(“a=%d,b=%d\n”,a,b); x 1200 }
210 y
alter(int x, int y) { int t;
t=x; x=y; y=t; }
总结:形参的值发生 改变,并不能 影响实参。
精选版课件ppt
9
三 函数的返回值
C语言函数篇讲解解析
6.4 函数的调用
一 函数调用的一般形式 函数名(实参表列); 函数名(); 无参函数的
调用形式 有参函数的 调用形式
或
说明:1.各实参间用逗号格开。 2.实参与形参的个数应相同,类型应一致。 3.被调用函数必须是已经存在的函数。
二 函数调用的方式 main() { int a=10,b=20,c=30,d,e; 按出现的位置分,有如下三种函数调用方式: ); 1. fun( 函数语句。 d=max(a,b); 函数不带回值,只完成一定的操作。 “max=%d\n”, d); 2. printf( 函数表达式。 e=max(a,b)+c; 要求函数带回确定值,参加表达式运算。 “max=%d\n”, e); 3. printf( 函数参数。 printf( “max=%d\n”,max(a,c)); 要求函数带回确定值,作为一个参数。 } int max(int x, int y) { return (x>y?x;y); } fun() { printf(“***********”);}
s[0] s[1] s[2] s[3] s[4] s[5] s[6] s[7] s[8] s[9]
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
二. 数组名作函数实参
———传递的是数组的首地址 (此时形参和实参指的是同一内存单元)
fun(int b[ ] ) 1.int 用数组名作函数参数,应该在主调函数和被调函数分 { 别定义数组。 形参还可以写 2. 实参——数组名 形参——数组名或指针变量 ∶
成int b[10]或 3.} 实参数组与形参数组类型应一致。 int b[20]
main() 4.{ 系统将实参数组的首地址传给形参数组 int a[10]; fun(a); 5. 用数组名作函数参数时,形参数组的改变也可以使实 ∶ 参数组随之改变。 }
计算机-C语言《函数》教案
难点:函数的定义方法和值的返回方法格式应用。
教学方法及师生互动设计:
教学方法:课堂讲授教学法,通过案例程序的扩展,实行对比教学。
师生互动设计:
1.利用课件教学,演示教学相关知识点,采用设问、引导教学。
2.利用阶段性课堂练习、点评和提问,即时掌握教学反馈信息。
课堂练习、作业:Βιβλιοθήκη 第三部分:采用实例教学法,配合案例分析,时间为20分钟。
(注:根据需要可多页)第4页
教学内容(讲稿)
备注
(包括:教学手段、时间分配、临时更改等)
第四部分:(归纳总结)
[师]本节课,我们一起了了解结构化程序的设计思想、理解了函数的定义方法和掌握了函数的值的返回方法。函数的学习让我们进入了一个新的领域,随着以后的学习,我们将更加深入函数在C语言中的重要地位。
{}
[师]利用课件,给出各种形式的自定义函数。请同学们找出这些函数的结构和各个函数的区别。
[生](思考、讨论)
[师]看屏幕,分析总结演示的各个函数的结构及其区别:
(注:根据需要可多页)第3页
教学内容(讲稿)
备注
(包括:教学手段、时间分配、临时更改等)
[师]课堂练习:课件演示,请写出s=1+2+3+…+n的自定义函数,函数名为mysum。
[生](思考、讨论、写程序)
[师]点评分析学生的程序设计,课件演示,给出标准答案,进行分析归纳。
[师]那么函数体的最终运算的结果如何返回给其他函数。
第三部分:(理论提高)
[师]函数值的返回格式:
格式1:return;
格式2:return表达式;或return(表达式);
功能:使程序控制从被调用函数返回调用函数,并把表达式的值返回给调用函数。
高中信息技术 信息学奥赛C语言第六章 函数课件
※重点提示:主调函数在调用函数时,需要 把相应的实际参数传给相应的形式参数,实 际参数的个数和类型要和形式参数的个数和 类型必须一致。
•1、书籍是朋友,虽然没有热情,但是非常忠实。2022年3月4日星期五2022/3/42022/3/42022/3/4 •2、科学的灵感,决不是坐等可以等来的。如果说,科学上的发现有什么偶然的机遇的话,那么这种‘偶然的机遇’只能给那些学有素养的人,给那些善于独 立思考的人,给那些具有锲而不舍的人。2022年3月2022/3/42022/3/42022/3/43/4/2022 •3、书籍—通过心灵观察世界的窗口.住宅里没有书,犹如房间里没有窗户。2022/3/42022/3/4March 4, 2022 •4、享受阅读快乐,提高生活质量。2022/3/42022/3/42022/3/42022/3/4
printf(“***&&&\n”); 就是调用了printf函数,且调用之后加了分号, 构成了一条独立的语句,完成该输出操作。
(3)各个库函数的功能、参数的个数和类型、 函数值的类型都有其规定,用户在调用时 根据需要选择合适的库函数,并严格按照 该库函数的规则,正确的进行调用。
※重点提示:库函数的调用需要注意的是: 函数的功能,函数的参数个数、类型,函 数的返回值,对参数的一些特殊要求。
(2)在程序执行到return语句时,流程就 返回到调用该函数处,并带回函数值。在 同一个函数内,可以在多处出现return语句。
(3)return语句也可以不含表达式。此 时,它只是使流程返回到调用函数,并没 有确定的函数值。
第六章 函数
第六章 函数
算法实现部份
} 函数定义包含函数说明部分和函数体。
Page 9
6.2 函数的定义
函数定义的一般形式
第六章 函数
函数说明部分“类型说明符 函数名(带类型说明的形式参数表列)”称 为函数头,又称为函数原型,是函数进行交互的接口。函数名是用户 标识符,用来唯一标识一个函数。带类型说明的形式参数表列说明了 函数形参的类型及形参变量名,用逗号分开。类型说明符定义函数的 类型,函数类型是函数返回值的类型,可以是基本数据类型,也可以
Page 27
6.5 变量的作用域与生存期
变量的属性 变量的属性包括操作属性和存储属性。
第六章 函数
变量类型决定了变量的取值范围、占用存储单元数量等操作属性。变 量的存储属性决定了变量的作用域和变量的生存期。变量的作用域指 变量的作用范围,按照变量的作用域可把变量分为全局变量和局部变
Page 5
6.1 概述
函数分类 1.从用户角度分类 从用户角度,函数可分为库函数和用户自定义函数。
第六章 函数
库函数是由C编译系统提供,用户可直接使用而无须定义的函数。C 语言把一些常用功能预先编写为函数,放在函数库中。
用户自定义函数是由用户根据自己的需要编写的具有独立功能的函数
。
Page 6
表示;函数类型是函数实现功能后结果的类型。
函数体是函数功能的实现,实现函数功能的程度段书应写在“{ }”内 。
Page 3
6.1 概述
函数概述 2.函数声明
第六章 函数
函数声明的作用是通知编译系统被调函数的有关信息(函数类型、名 称、参数类型及数量),以便函数调用时,编译系统能够正确识别该 函数,确保函数调用正确进行。
C语言教案:第6章 函数
1、在主调函数中说明被调函数的类型。 2、几种情况除外: (1)被调函数的返回值是int或char型时 (2)被调函数的定义出现在主调函数之前时
2013-8-6 20
如:
如:
long f()
{ …… }
float a();
main() {………… a(); ………....} float a() {…………}
§6.4函数调用 一、函数调用形式
函数名(实际参数表)
二、函数调用方式 1、作为语句调用 max(a,b); 调用无返回值函数
2、作为表达式调用 c=2*max(a,b);
调用有返回值函数 3、函数参数 m=max(a,max(b,c));
2013-8-6 18
三、对被调函数的说明
例:调用函数求n!。
2、数组元素作函数参数
例: 用数组元素作实参,输出1 ~ 5的平方。
2013-8-6
main() {int a[5],i; for(i=0;i<5,i++) { a[i]=i+1; sq(a[i]);} } sq(int n) {printf("%d\n",n*n); }
10
3、数组名作参数 注意:实参和形参的类型都必须是数组
15
例3: 将一组学生成绩从高分到低分排序。
#difine STUDENT_NUM 10 main() { int score[11],i; void sort(); 主函数: printf("输入学生的成绩:\n"); for(i=1;i<=STUDENT_NUM;i++) scnaf("%d",&score[i]); sort(score,STUDENT_NUM); printf(“从高到低的排列顺序为:\n"); for(i=1;i<=STUDENT_NUM;i++) printf("%d",score[i]); 2013-8-6 16 }
C语言函数课件
C语言程序设计
第 6 章 模块化程序设计--函数
函数的调用
一、函数调用一般形式
一般形式: 函数名(实参列表) 说明: ①如果调用无参函数,实参表列可以忽略, 但括号不能省. ②实参个数和形参个数相同. ③实参和形参类型一一对应,必要时会进 行类型转换. 注意:不同系统中,实参的计算顺序不同. 一般认为从右到左计算和赋值. 一般在调用函数前计算出实参的值
14
C语言程序设计
第 6 章 模块化程序设计--函数
三、函数调用的执行过程
例2 读程序,写出结果 ①从右到左的顺序,计算实参中各 表达式值. ②按照位置,将实参的值一一 传递给形参. ③执行被调用函数. ④当遇到return(表达式)语句时, 计算表达式的值并返回主调函数.
#include <stdio.h>
sum of 1,3 is 4
9
C语言程序设计
第 6 章 模块化程序设计--函数
二、函数返回值
1.返回函数值的方法 函数值也就是函数的返回值,是一个 具体确定的值. ①函数使用return语句返回值。 ②一个函数内可以有多个return语句, 执行到任何return语句,函数都将立即 返回到调用函数 ③return后面的()可以省略,可以返回 一个表达式,先求解表达式的值,再返回. #include <stdio.h> int max(int x, int y) { if(x>y) int z; return(x); z=(x>y) ? x : y; else return(z); return(y); } void main() { int a,b,c; int max(int x, int y) scanf(“%d%d”,&a, &b); { c=max( a , b ); return x>y?x:y; printf(“max is %d\n”,c); } } 10
C语言课件第六章函数
printf(“Max=%d”,a);
}
合 iTemp的作用域。 iTemp 肥 ⒉register存储类型
工 作用域和生存期和auto相同,
差别在于,如果CPU内部的寄存
业 器空闲,则使用寄存器作为变量 大 的存储单元,以提高速度。主要
用于循环变量。
学
⒊static(静态)存储类型
作用域:在定义的复合语句内引用,出了复合语句不可见。
定义!
学
⒉函数的定义
格式: type 函数名(参数说明表) int max(int x ,int y)
{ 内部说明语句 ;
如果函数有{ 返回值,应含
功能语句 ; 有return语句。int z ;
Xuan shanli
}
z=x>=y? x : y ;
说明:
合 ⑴函数不能嵌套定义,但可以嵌套引r用et,ur包n (括z引) ;用自己。
关于返回值的几点说明:
⑴函数可以通过一个return语句返回一个值,也可以不返回值,
此时应在定义函数时用void类型加以说明。
⑵函数中可以出现多个return语句,遇到一个return 语句,则
返回值,且返回调用函数,继续执行。
⑶返回值的类型应与函数的类型一致,如不一致,以函数类型
Xuan shanli
fun( );
a
printf(“a=%d,b=%d\n”,a,b);
}
合
void fun(void) {
b
肥
int c;
工
c=a; a=b; b=c; }
业
大
学
外部变量的副作用
Xuan shanli
#include <stdio.h>
C语言程序设计第6章函数
C语言程序设计第6章函数C语言程序设计第6章介绍了函数的概念、定义和使用。
函数是一个独立的代码块,可以执行特定的任务并返回一个结果。
通过使用函数,我们可以将程序分解为更小的部分,每个部分负责完成特定的功能,提高代码的可读性和重用性。
一个函数通常由函数声明和函数定义两部分组成。
函数声明包括函数的返回类型、函数名和参数列表,用于告诉编译器有一个函数存在以及函数的返回类型和参数类型。
函数定义则包括函数体,即函数具体要执行的代码。
函数的定义格式如下:```返回类型函数名(参数列表)函数体return 返回值;```返回类型是指函数返回的结果类型,可以是基本类型(如int、float等)或自定义类型。
函数名是函数的唯一标识符,可以根据函数的功能来命名。
参数列表包括零个或多个参数,每个参数由参数类型和参数名组成,参数类型用于指定参数值的类型,参数名用于在函数体内引用参数值。
函数调用是指在主函数中使用函数名和实际参数调用函数,函数调用的格式为:```返回变量=函数名(参数);```其中返回变量是用于存储函数返回结果的变量,参数是函数调用时传递的实际参数。
函数可以分为无返回值函数和有返回值函数。
无返回值函数用于执行一些操作,没有返回值;有返回值函数用于计算并返回一个结果。
函数可以嵌套调用,即一个函数可以在另一个函数中调用。
在一个函数内部调用另一个函数时,首先执行被调用的函数,然后再返回到调用函数继续执行。
函数可以有默认参数,即在函数定义时为参数指定默认值。
调用函数时省略对应参数的值时,会使用默认值。
函数还可以通过指针参数来修改主函数中的变量的值。
通过传递变量的地址给函数,并在函数内部通过指针访问地址中的值,可以实现对主函数中变量的修改。
在函数定义和函数调用之间,还可以使用函数原型。
函数原型用于向编译器说明有一个函数存在以及函数的返回类型和参数类型,可以将函数原型放在函数定义之前,也可以放在函数调用之前。
总结来说,函数是C语言程序设计中一个非常重要的概念。
《C语言程序设计》第六章函数
《C语言程序设计》第六章函数函数是C语言中的一个重要概念,可以将一段程序逻辑封装成一个独立的代码块,供其他地方调用。
在本章中,我们将讨论函数的定义、声明、调用、形参和实参等相关内容。
1.函数定义和声明函数定义是指给函数取一个名字,并在花括号{}内编写函数的代码实现。
一个函数的定义一般包括函数的返回类型、函数名、形参列表和函数体。
例:int add(int a, int b)return a + b;}函数声明是指告诉编译器函数的存在,但不实现函数的具体代码。
函数声明一般包括函数的返回类型、函数名和形参列表。
例:int add(int a, int b);2.函数调用函数调用是指在程序中使用函数,让函数执行具体的逻辑。
函数调用的一般形式为:函数名(实参列表);实参列表是指函数调用时实际传递给形参的参数值。
例:int sum = add(1, 2);3.形参和实参形参是函数定义中用于接收调用函数时传递过来的参数值的变量。
函数调用时,传递给函数的参数值称为实参。
形参和实参在数量、类型、顺序上必须保持一致。
例:int add(int a, int b)return a + b;}int sum = add(1, 2); // 形参a接收到实参1,形参b接收到实参24.函数的返回值类型函数的返回值类型定义了函数的返回结果的类型。
函数可以有不同的返回值类型,如整型、浮点型、字符型、指针等。
返回值类型通过函数的声明或定义来指定。
例:int add(int a, int b) // 返回类型为int(整型)return a + b;}5.无返回值函数和有返回值函数无返回值函数指在函数定义或声明时,返回值类型为void。
这种函数通常用于执行一些操作,没有返回结果。
有返回值函数指在函数定义或声明时,返回值类型为非void类型。
这种函数通常用于计算并返回一个结果。
例:void printHello( // 无返回值函数printf("Hello!");}int add(int a, int b) // 有返回值函数return a + b;}6.函数的嵌套调用在一个函数中调用另一个函数,称为函数的嵌套调用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3、返回语句 形式: return(表达式); 或 return 表达式; 或 return; 功能:使程序控制从被调用函数返回到调用函数中, 同时把返值带给调用函数 说明: 1)函数中可有多个return语句,但只执行一个 2)若无return语句,遇到函数结束的“}”时, 自动返回主调函数 3)若函数类型与return语句中表达式值的类型不 一致,按前者为准,自动转换------函数调用转换
函数调用和返回的过程:
主函数 自定义函数 保存:返回地 址、当前现场 ③ ⑥ 恢复:主调程序 现场、返回地址 ④ 处理过程 ⑤
①
输入数据 ② 调用函数 ⑦ 输出 ⑧ 结束
函数结束或 函数值返回
注意:数据的输入、输出一般放在主函数中
函数调用的过程:
2012-12-1
26
void pic(int n){ int k,j; for(int i=0;i<n;i++) { for( k=0;k<10-i;k++) printf(" ") ; for(j=0;j<2*i+1;j++) printf("*"); printf("\n"); }}
六、函数
1.库函数的正确调用。
2.函数的定义方法。
3.函数的类型和返回值。 4.形式参数与实在参数,参数值的传递。 5.函数的正确调用,嵌套调用,递归调用。 6.局部变量和全局变量。
7.变量的存储类别(自动,静态,寄存器,外 部),变量的作用域和生存期。
2012-12-1
8.内部函数与外部函数。
1
分析:这部分主要讨论函数的相关知识,一般会 出4~5个选择题和3~4个填空题,同时也是编程的 重点。 注:1) 区分 函数之间参数传递的两种方式:传值 和值地址方式。2) 局部变量和全局变量的区别。 3)变量的生存期与作用域。
2012-12-1
30
【例】函数说明示例
#include “stdio.h" void main() { 省略参数名 int a,b,c; int max(int x,int y); //函数说明,也可int max(int,int); scanf(“%d%d”,&a,&b); c=max(a,b); printf(“%d”,c); } int max(int x,int y) 2012-12-1 { return x>y?x:y ; }
9
(三)类型转换函数
类型转换函数包括在不同的头文件中。 1. 将大写字母转换成小写字母函数 int tolower(int x) 2.将小写字母转换成大写字母函数 int toupper(int x) 以上二个函数均包括在头文件“ctype.h”文件中,因 为它们的x可以是“字符型”。
2012-12-1 10
31
#include “stdio.h“ int max(int x,int y); void main() { int a,b,c; scanf(“%d%d”,&a,&b); c=max(a,b); printf(“%d”,c); } int max(int x,int y) { return x>y?x:y ; } 2012-12-1
2012-12-1
2
概述
模块化程序设计 基本思想:将一个大的程序按功能分割成一些小模块 特点: 各模块相对独立、功能单一、结构清晰、接口简单 控制了程序设计的复杂性 提高元件的可靠性 缩短开发周期 避免程序开发的重复劳动 易于维护和功能扩充 开发方法: 自上向下,逐步分解,分而治之 2012-12-1 3
例例有参函数 有参函数 int max(int x, x,int y) int max(int y) 例 空函数 例 {无参函数) { dummy( int z; z; int printstar( ) z=x>y?x:y; { z=x>y?x:y; 函数体为空 } { printf(“**********\n”); } return(z); return(z); } }
21
三、函数调用
形式: 函数名(实际参数表)
(1) 没有返回值的函数调用格式: 函数名(实际参数表);
(2) 有返回值的函数调用格式:
函数名(实际参数表)
2012-12-1
22
调用方式
函数语句:函数调用可单独成为一个语句 例 output(); printf(“Hello,World!\n”); 函数表达式: 调用函数后的返回值可参加表达式的 计算,这时要求被调函数带返回值。 例 sum=add(a,b); c=fac(n)/(fac(k)*fac(n-k)) ; 函数参数:带返回值的函数调用亦可作为其它函数 的参数(实际参数) 例 printf(“%d”,max(a,b)); 2012-12-1 23 m=max(a,max(b,c));
11. 求正切函数(tg x)
double tan(double x) 注:以上三个函数的x都必须是弧度,如果是角 度,可以用“x*3.14159/180”转换成弧度
2012-12-1 8
(二)字符处理函数 字符处理函数均包括在头文件“ctype.h”中
2012-12-1
1. 判断是否是英文字母函数 int isalpha(int x) 2. 判断是否是英文小写字母函数 int islower(int x) 3.判断是否是英文大写字母函数 int isupper(int x) 4. 判断是否是数字字符函数 int isdigit(int x)
7. 求指数函数(ex)
double exp(double x)
8. 求x的y次方函数(xy)
double pow (double x, double y)
2012-12-1 7
9. 求正弦函数(sin x)
double sin(double x)
10. 求余弦函数(cos x)
double cos(double x)
使用库函数应注意: 1、函数功能 2、函数参数的数目和顺序,及各参数意义和类型 3、函数返回值意义和类型 2012-12-1 4、需要使用的包含文件
5
三、系统函数 (一)、数学函数 数学函数均包括在头文件“math.h”中 1. 求整型绝对值函数 2. 求实型绝对值函数 int abs(int x) double fabs(double x)
void *malloc(int siபைடு நூலகம்e)
2. 内存释放函数
void free(void *clock)
2012-12-1
12
一、函数的概念
函数是一个可以反复使用的程序段,从其它的程序 段中均可以通过调用语句来执行这段程序,完成既定 的工作。 说明: (1) 建立函数称为“函数定义”,使用函数称为“函 数调用” 。 (2) 调用其它函数的函数称为“主调函数”,而被调 用的函数称为“被调函数”。
2012-12-1
20
【例5.2】编一程序,输出如右图形。
将n行构成的三角形独立出来编一函数:
void pic(int n){ int k,j; for(int i=0;i<n;i++) { for( k=0;k<10-i;k++)printf(" ") ; //控制每行输出的起始位 for(j=0;j<2*i+1;j++)printf("*"); printf("\n"); }} void main() 2012-12-1 { pic(4); pic(6); }
#include “stdio.h" void main() { pic(4); //以语句形式调用 pic(6); }
函数调用说明:
调用系统函数时,要求在程序的开始用包含命令
# include <头文件名.h>
函数调用时,实参列表中的实参不能带数据类型。 实参与形参的个数、位置与类型必须一致。它可
C语言是模块化程序设计语言
C程 序
源程序文件1
源程序文件i
源程序文件n
预编译命令
函数1
函数n
说明部分
执行部分
C是函数式语言 必须有且只能有一个名为main的主函数 2012-12-1 4 C程序的执行总是从main函数开始,在main中结束 函数不能嵌套定义,可以嵌套调用
C程序结构
函数分类 从用户角度 标准函数(库函数):由系统提供 用户自定义函数 从函数形式 无参函数 有参函数
2012-12-1 13
二、函数的定义 1. 定义格式 合法标识符
函数类型 函数名(形参类型说明表) { 说明部分 函数体 语句部分 } 函数返回值类型 缺省int型 2012-12-1 无返回值void
14
2. 说明
(1) 函数有“函数头”和“函数体”两部分组成;函数 体由语句和其它分程序组成。 (2)函数类型规定了函数返回值的数据类型,若无返回值 则数据类型为void;如果函数有返回值,则在函数体中 应有一条返回语句“return (表达式);”,无返回值, 则返回语句应为“return;”,也可以省略。 (3)形式参数表是用逗号分隔的若干个形式参数,每个形 参可以是一个变量名、数组名、指针变量名和指针数组名; 形参列表中每个参数的数据类型必须给出。 (4)形式参数可以为空,但圆括号不能省略。 (5)形参若是数组,只需给出数组名,[]中数组长度不需 2012-12-1 15 给出; (6)函数体中不允许再嵌套定义函数
调用函数的过程: ① 为函数的所有形参分配内存单元。 ②计算各个实参表达式的值,一一对应的赋值给相 应形参(若是无参函数,上述过程不执行)。 ③ 进入函数体,执行函数中的语句,实现函数的 功能。 ④执行到return语句时,计算return语句中表达式 的值(若是无返回值函数,本项不做),返回到主 调函数。 ⑤ 释放形参及本函数内的局部变量所占内存, 继续 2012-12-1 24 执行主调函数中的后继语句。