1 / 14

第 7 章 函数

第 7 章 函数. 7.1 函数概述. 1 、函数的概念. 函数其实就是一段可以重复调用的、功能相对独立完整的程序段。. C 是 函数式 语言 必须有且只能有一个名为 main 的主函数 C 程序的执行总是 从 main 函数开始,在 main 中结束 函数 不能嵌套定义,可以 嵌套 调用. 使用库函数应注意: 1 、函数功能 2 、函数参数的数目和顺序,及各参数意义和类型 3 、函数返回值意义和类型 4 、需要使用的包含文件. 2 、函数的分类. 从用户角度. 标准函数(库函数):由系统提供 用户自定义函数. 从函数形式. 无参数无返回值

allene
Télécharger la présentation

第 7 章 函数

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第7章 函数

  2. 7.1 函数概述 1、函数的概念 函数其实就是一段可以重复调用的、功能相对独立完整的程序段。 • C是函数式语言 • 必须有且只能有一个名为main的主函数 • C程序的执行总是从main函数开始,在main中结束 • 函数不能嵌套定义,可以嵌套调用 使用库函数应注意: 1、函数功能 2、函数参数的数目和顺序,及各参数意义和类型 3、函数返回值意义和类型 4、需要使用的包含文件 2、函数的分类 • 从用户角度 • 标准函数(库函数):由系统提供 • 用户自定义函数 • 从函数形式 • 无参数无返回值 • 无参数有返回值 • 有参数无返回值 • 有参数有返回值

  3. 7.2 函数的定义和调用 函数体 必须为合法的标识符 1、无参数无返回值的函数 • 定义格式 void 函数名 (void) { 变量声明部分 执行部分 } 空类型,表明函数无返回值,不可省! 表明无参数,可缺省! • 函数用途 此类函数用于完成某项固定的处理任务,执行完成后不向调用者返回函数值。它类似于其它语言的过程。 • 函数的原型声明 void 函数名( void ); 或 void 函数名( ); C语言规定,对函数调用之前必须对其原型加以声明,否则会出现编译错!

  4. 调用showerror 函数 返回 1、无参数无返回值的函数 • #include <stdio.h> • #include <math.h> • void showerror ( );//声明showerror函数的原型 • void main ( ) • { • int a; • scanf ("%d", &a); • while (a < 0) • { • showerror( ); • scanf ("%d", &a); • } • printf ("sqrt(a) = %.2f\n", sqrt(a)); • } • void showerror( )//函数的定义,无参数无返回值 • { • printf("input error!\n"); //函数体,没有声明变量 • } • 函数的调用 函数名( ); 注意:不能将这种函数调用赋值给任何变量,因为它没有返回值。调用时,( )中间不能有void。 • 实例 注意:对函数调用之前,必须要先声明或先定义,否则编译错!

  5. 例如: void showyes ( ) { char key; key = getch ( ); if (toupper(key) != 'Y') return; printf ("YES! "); } 函数showyes的功能是: 如果输入的字符不是'Y'或'y',则什么都不输出,直接返回,否则,输出"YES! " • 函数的返回 • 形式 ①rerurn (表达式); //有返回值 ②rerutn 表达式; //有返回值 ③return; //无返回值 标准库函数,其功能是将小写字符转换成大写字符 • 功能 使程序控制从被调用函数返回到调用函数中,如果有返回值,同时把返值带给调用函数。 • 说明 函数中可以有多个return语句。在无返回值的函数中,return语句的形式只能是第③种形式。

  6. 函数体 2、无参数有返回值的函数 必须为合法的标识符 • 定义格式 返回值类型符 函数名 (void) { 变量声明部分 执行部分 } 可以为除数组类型外的任何类型,缺省时,默认为int型 表明无参数,可缺省! • 函数用途 此类函数用于完成某项固定的处理任务,执行完成后向调用者返回函数值。 • 函数的原型声明 返回值类型符 函数名( void ); 或 返回值类型符 函数名( );

  7. 2、无参数有返回值的函数 int sum ( ) { int i, tot = 0; char key; key = getche ( ); if (key != '0' && key != '1') return (-1); for (i = (key == '0') ? 2 : 1; i <= 100; i += 2) tot += i; return ( tot ); } • 函数的调用 变量声明部分 函数名( void ); 或 变量 = 函数名( ); • 实例 #include <stdio.h> #include <conio.h> #include <ctype.h> int sum ( ); void main ( ) { int tot; tot = sum ( ); if (tot == -1) printf ("\nnot select!\n"); else printf ("\nthe result is : %d\n", tot); } 声明sum函数的原型 函数的定义,无参数有返回值 调用sum 函数 函数sum的功能是: 输入‘0’:计算1~100之间所 有偶数之和 输入‘1’:计算1~100之间所 有奇数之和

  8. #include <stdio.h> int sum ( ); void main ( ) { int x; x = sum ( ); printf (“x = %d\n", x); } int sum ( ) { int i, tot = 0; for (i = 1; i <= 100; i ++) tot += i; } 因sum函数无return语句, x的值将是无法预知的! 应加上 return tot;语句 2、无参数有返回值的函数 • 函数的返回 • 格式 rerurn (表达式); 或rerutn 表达式; • 说明 注意:如果不将函数调用赋值给任何变量,它的返回值将被丢弃! • 表达式的值即是函数的返回值; • 函数体中一般都包含return(表达式)语句, 如果没有, 函数也会返回一个值。这个值是不可预知的, 将会使程序可能犯有逻辑错; • 一般情况下,表达式值的类型应与函数返回值类型一致;

  9. 形参列表 函数体 3、有参数无返回值的函数 至少要有一项,形参之间要用逗号“,”分开 • 定义格式 void 函数名 (类型符1 形参名1, 类型符2 形参名2, … , 类型符n 形参名n) { 变量声明部分 执行部分 } 不允许对 形参赋初值 指明形参类型 • 函数用途 此类型的函数主要是根据形参的值来进行某种事务的处理。灵活性上要比无形参的函数强,它更能体现调用函数与被调函数之间的数据联系。 • 函数的原型声明 void 函数名(类型符1 形参名1, 类型符2 形参名2, … , 类型符n 形参名n ); 或 void 函数名(类型符1 , 类型符2 , … , 类型符n );

  10. 实参可以是常量、变量、表达式、函数等 3、有参数无返回值的函数 • 函数调用 函数名( 实参1,实参2,……,实参n ); 注意事项: (1) 实参列表中的实参必须与函数定义时的形参数量相同、类型相符。 (2) 赋值对应关系: 实参1 -> 形参1 实参2 -> 形参2 …… 实参n -> 形参n

  11. 运行结果(在VC下) 运行结果(在TC或BC下) a = 2 b = 2 a = b i = 3 a = 3 b = 2 a > b i = 3 实参 实参 i i 2 2 i++ i++ 2 2 ③ i+1 ② i+1 ③ ① ② ① b b a a 形参 形参 3、有参数无返回值的函数 #include <stdio.h> void compare (int a, int b); void main ( ) { int i = 2; compare ( i, i++ ); printf ("i = %d\n", i); } void compare ( int a, int b ) { printf ("a = %d b = %d\n", a, b); if ( a > b) printf ("a > b\n"); else if (a == b) printf ("a = b\n"); else printf ("a < b\n"); } 原型声明 i为实参 3 a、b为形参 2 3 3 2 2

  12. 形参列表 函数体 4、有参数有返回值的函数 • 定义格式 返回值类型符 函数名 (类型符1 形参名1, … … , 类型符n 形参名n) { 变量声明部分 执行部分 } • 函数用途 此类型的函数主要是根据形参的值来进行某种事务的处理,同时可将处理后的结果值返回给调用函数。它最能体现调用函数与被调函数之间的数据联系。 • 函数的原型声明 返回值类型符 函数名(类型符1 形参名1, …… , 类型符n 形参名n ); 或 返回值类型符 函数名(类型符1 , 类型符2 , …… , 类型符n );

  13. 4、有参数有返回值的函数 • 函数调用 函数名( 实参1,实参2,……,实参n ); 或 变量名 = 函数名( 实参1,实参2,……,实参n ); #include <stdio.h> int max (in t a, int b); //函数的原型声明 void main ( ) { int a, b, c; scanf ("%d%d", &a, &b); c = max (a, b);//函数调用(a、b为实参) printf ("the biggest number is : %d\n", c); } int max (int a, int b) //函数定义(a、b为形参) { return (a > b ? a : b); } 运行结果: 5 9↙ the biggest number is 9

  14. 练习 编写一判断素数的函数,在主函数中随机生成一个数n,调用自定义函数输出1到n的素数,且每行输出5个数。

More Related