3.3无返回值函数的定义与调用 2、无返回值的有参函数的定义形式 void函数名(类型名形式参数1,类型名形式参数2,… 函数体;} 有参函数的调用形式: 函数名(实际参数1,实际参数2,); 例3-1的程序代码:「形式参数 #include <stdio.h> void main( void func( int m int in i int i; float fact-l for(i=1;i<=10;i++) for(i=l; i<=m; i++) { scanf(“%d”,&n) fact-fact*i: func(n) printf(“%d!=%.0rmn”,m,fact);} 实际参数
3.3 无返回值函数的定义与调用 2、无返回值的有参函数的定义形式 例3-1的程序代码 : #include <stdio.h> void func( int m ) { int i ; float fact=1 ; for( i=1; i<=m; i++ ) fact=fact*i; printf(“%d!=%.0f\n”, m, fact); } void 函数名( 类型名 形式参数1, 类型名 形式参数2, …) { 函数体; } ➢有参函数的调用形式: 函数名(实际参数1, 实际参数2, … ) ; 形式参数 void main ( ) { int i , n; for(i=1; i<=10; i++) { scanf(“%d”, &n); func(n); } } 实际参数
3.3无返回值函数的定义与调用 例3-3用函数实现两个数的交换 #include <stdio. h> #include <stdio.h> void swap(int a, int b) void main( fint t; t=a: a=b: b=t 形式参数{inta,b, printf( input a,b:”); printf(“%d,%dn”,a,b); scanf(“%d%d”,&a,&b); t=a: a=b: b=t void maino i int x, y; printf(%d,%dⅦn”,a,b); printf( input x,y:”) scanf“%d%d”,&x&y);思考:将wap中prin语句去掉, 把它写在 main swap(x, y); 函数的最后,行吗? 这样写的输出结果是什么? 实际参数
#include <stdio.h> void main( ) { int a, b, t; printf(“ input a, b: ”); scanf(“%d %d”,&a,&b); t=a; a=b; b=t; printf(“%d,%d\n”, a, b); } 例3-3 用函数实现两个数的交换 3.3 无返回值函数的定义与调用 void swap(int a, int b) { int t; t=a; a=b; b=t; printf(“%d,%d\n”, a, b); } void main( ) { int x, y; printf(“ input x, y: ”); scanf(“%d %d”,&x,&y); swap(x, y); } #include <stdio.h> 思考:将swap中printf语句去掉, 把它写在main函数的最后, 行吗? 这样写的输出结果是什么? 形式参数 实际参数
3.3无返回值函数的定义与调用 例3-3的执行过程 main include <stdio.h> 5 void swap(int a, int b) i int t; 9 ta; a=b; b=t; 说明: printf(“%d,%dⅦn”,a,b);(1)当函数被调用时,形式参数 才被分配存储空间,在调用 void maino 结束后,形参所占的空间将 i int x, y; 被释放 printf(“ input x,y:”); (2)实际参数可以是常量,变量 或表达式 scanf(“%d%d”,&x,y);(3)实际参数和形式参数的类型 swap(x, y); 应相同或赋值相容 (4)实参对形参的数据传递是 “值传递”即单向传递
x y a b 5 t 9 main swap 95 5 5 9 例3-3 的执行过程 #include <stdio.h> void swap(int a, int b) { int t; t=a; a=b; b=t; printf(“%d,%d\n”, a, b); } void main( ) { int x, y; printf(“ input x, y: ”); scanf(“%d %d”,&x,&y); swap(x, y); } 3.3 无返回值函数的定义与调用 说明: (1) 当函数被调用时, 形式参数 才被分配存储空间, 在调用 结束后, 形参所占的空间将 被释放 (2) 实际参数可以是常量, 变量 或表达式 (3) 实际参数和形式参数的类型 应相同或赋值相容 (4) 实参对形参的数据传递是 “值传递”即单向传递
34有返回值函数的定义与调用 1、有返回值的函数的定义形式 函数类型函数名(形式参数表) 函数体;} 2、函数的返回值 函数的返回值通过函数中 return语句获得 return的作用:①使流程返回主调函数 ②将函数值送回到调用表达式中 函数类型决定函数返回值的类型 loat fun(intx) 般函数值的类型和 return语句中{inty; 表达式的类型应一致,如果二者不 一致,则以函数值的类型为准 return(y )
3.4 有返回值函数的定义与调用 1、有返回值的函数的定义形式 函数类型 函数名( 形式参数表) { 函数体; } 2、 函数的返回值 ▪ 函数的返回值通过函数中return语句获得 return的作用: ① 使流程返回主调函数 ② 将函数值送回到调用表达式中 ▪ 函数类型决定函数返回值的类型 一般函数值的类型和return语句中 表达式的类型应一致, 如果二者不 一致, 则以函数值的类型为准 float fun( int x) { int y; … return( y ); }
34有返回值函数的定义与调用 一个函数允许有一个或多个 return语句 每个 return后的表达式类型要相同;当执行到其中 任何一个 return语句时会立即返回主调函数 int fun( int n if(n>10) return(n); else if(n==10) return(2n )i return(n+10);
▪ 一个函数允许有一个或多个return语句 每个return后的表达式类型要相同; 当执行到其中 任何一个return语句时会立即返回主调函数 int fun( int n ) { if ( n >10 ) return( n ) ; else if ( n==10 ) return( 2*n ) ; return( n+10 ) ; } 3.4 有返回值函数的定义与调用