C语言函数以及函数的调用
谈C语言函数的递归和调用

0
前言
pit “ l ! = ” y; r f \%d %dk , ) n (I n m,
要
, 、
递
:以 接简 递 )间 可 直 ( 归或 接 单
} ’
( 间接 递 归 ) 自己调 自 己 。主 要 包 括 : 地
() 1c语言 函数可 以递归调用。
( ) 以通 过 直 接 或 间 接 两 种 方 式 调 用 。 目前 只讨 论 直 接 递 归 调 2可
用。
3 递 归 说 明
当 函数 自己调 用 自己 时 , 系统 将 自动 把 函 数 中 当 前 的 变 量 和 形 参 暂 时保 留 起 来 , 新 一 轮 的 调 用 过 程 中 , 统 为 新 调 用 的 函 数 所 用 到 在 系 的变 量 和形 参 开 辟 另 外 的存 储 单 元 ( 内存 空 间 ) 每次 调 用 函数 所 使 用 。 的变 量 在不 同 的 内存 空 间 。
数的递归调用通常会降低程序的运行效率。
4 程 序 流 程
第 三 部 分 :* n 2(一 ) 3 2 1(一 ) 3! n 第 四 部 分 : n 3(一 ) 2 1(一 ) 4! n
第 五部 分 : n 5 1 5 5 0 得 到 值 1 结 束 递 归 。 1(一 ) - = , , 源 程序 : cit 1 f ( a nn
1 可 以应 用 这 个 转 化 过 程 使 问 题 得 到 解 决 。 . 2 1 必定要有一个明确的结束递归的条件。 . 3
内存 空 间 。程 序 的流 程 返 回到 上 一 层 的调 用 点 , 时取 得 当 初 进 入 该 同
2 递 归 实 例
例 : 用 递 归 的 方 法 求 n 使 ! 当nl , n > 时 求 !的 问 题 可 以转 化 为 n 【一 ) 新 问 题 。 n 1!的 比如 n 5 第 一 部 分 :* * * n ) =: 5 4 3 2 1n (一1! 第 二 部 分 :* " n 1 (一 ) 4 32 1(— ) n 2!
C语言函数的形参和实参运用调用以及举例程序

立即释放所分配的内存单元,因此,形参只在函数内部有效。 2.实参可以是常量、变量、表达式、函数等,无论实参是何种
类型的量,在进行函数调用时,它们都必须具有确定的值,一 便把这些值传送给形参。 3.实参和形参在数量上、类型上、顺序上应严格一致,否则会 发生“类型不匹配”的错误。 4函数调用中发生的数据传送是单向的,即只能把实参的值传 送给形参,而不能把形参的值反向的传送给实参。
n=n/10; } while(n!=0);
}
}
3、分析下列程序运行后的输出结果,重点分析静态局部 变量和全局变量的作用,关注自增运算符的作用。
int a=2;
int f(int n)
{ static int a=3; int t=0;
if(n%2){static int a=4;t+=a++;}
● 形参,即函数定义中的参数。
● 实参,则是函数调用时的参数。
● 函数的形参必须是变量,用于接受实参传递 过来的值,形参的使用方法和普通变量相同; 而实参可以是常量、变量或表达式,其作用是 把常量、变量或表达式的值传递给形参。
函数调用时,主调函数把实参的值传送给被调函数 的形参,从而实现主调函数向被调函数的数据传递。
case 10:days=273+day;break; case 11:days=304+day;break; case 12:days=334+day;break;
}
days=leap(year)+days; printf("%d",days); getch(); return 0; } int leap(int year) { int a; if((year%4==0&&year%100!=0)||year%400 ==0) a=1; else a=0; return a;}
C语言的函数定义与调用方法

C语言的函数定义与调用方法C语言是一种被广泛应用于系统编程和嵌入式开发的编程语言。
在C语言中,函数是一种非常重要的概念,它能够将一段代码封装成一个可重复使用的模块。
本文将介绍C语言中函数的定义与调用方法。
一、函数的定义在C语言中,函数的定义由函数头和函数体组成。
函数头包括函数的返回类型、函数名以及函数的参数列表。
函数体则是函数的具体实现。
函数的返回类型指明了函数的返回值类型,可以是整型、浮点型、字符型等。
函数名是函数的标识符,用于在程序中调用该函数。
函数的参数列表指明了函数所接受的参数类型和参数名。
下面是一个简单的函数定义的示例:```cint add(int a, int b) {int sum = a + b;return sum;}```在上述示例中,函数名为add,返回类型为int,参数列表包括两个整型参数a和b。
函数体中的代码实现了将两个整数相加并返回结果的功能。
二、函数的调用函数的调用是通过函数名和参数列表来实现的。
在调用函数时,需要提供与函数定义中参数列表相匹配的参数。
下面是一个调用add函数的示例:```cint main() {int result = add(3, 5);printf("The sum is %d\n", result);return 0;}```在上述示例中,通过调用add函数将参数3和5传递给函数。
函数执行完毕后,将返回值赋给result变量,并通过printf函数将结果输出到屏幕上。
三、函数的返回值函数的返回值可以通过return语句来指定。
在函数体中,可以使用return语句将一个值返回给函数的调用者。
下面是一个返回最大值的函数的示例:```cint max(int a, int b) {if (a > b) {return a;} else {return b;}}```在上述示例中,max函数接受两个整型参数a和b,并通过比较它们的大小来确定返回的最大值。
汇编语言分析C语言的函数调用过程

汇编语⾔分析C语⾔的函数调⽤过程1.要分析C语⾔的函数调⽤过程,理解汇编指令push,pop是关键,在汇编中,栈的增长⽅式是从⾼地址往低地址增长,栈底在⾼地址,栈顶在低地址。
push eax⼊栈指令相当于:ESP=ESP-4,[SS:ESP]<--eax内容; (32 bit)pop eax出栈指令相当于:eax<--[SS:ESP]内容,ESP=ESP+42.先看下在vs2013⼯程下的C语⾔⽰例源码,以__cdecl调⽤⽅式调⽤函数1 #include <stdio.h>23int add(int a, int b, int c)4 {5return (a+b+c);6 }78int main(int argc, char *argv[])9 {10int sum = 0;11int a = 1;12int b = 2;13int c = 3;14 sum = add(a,b,c);15return0;16 }反汇编后的源码1 __RTC_Initialize:201091145 jmp _RTC_Initialize (01092D40h)3 __controlfp_s:4 0109114A jmp __controlfp_s (0109376Ch)5 _GetSystemTimeAsFileTime@4:6 0109114F jmp _GetSystemTimeAsFileTime@4 (01093C22h)7 add:8 01091154h jmp add (010913C0h)9 _DecodePointer@4:1001091159 jmp _DecodePointer@4 (01093C28h)11 __invoke_watson:12 0109115E jmp __invoke_watson (01093766h)13 ___report_rangecheckfailure:1401091163 jmp __report_rangecheckfailure (01093940h)15 _RTC_GetSrcLine:1601091168 jmp _RTC_GetSrcLine (010933D0h)17 __wmakepath_s:18 0109116D jmp __wmakepath_s (0109377Eh)19 __CRT_RTC_INITW:2001091172 jmp __CRT_RTC_INITW (0109262Ch)2122 #include <stdio.h>2324//调⽤函数add的地址25int add(int a, int b, int c)26 {27 010913C0 push ebp ;ebp=0030FB10 esp=0030FA0028 010913C1 mov ebp,esp ;ebp=0030FA0029 010913C3 sub esp,0C0h ;esp=0030F94030 010913C9 push ebx ;保护现场,esp=0030F93C31 010913CA push esi ;esp=0030F93832 010913CB push edi ;edi=0030FB10, esp=0030F93433 010913CC lea edi,[ebp-0C0h] ;edi=0030F94034 010913D2 mov ecx,30h ;初始化35 010913D7 mov eax,0CCCCCCCCh36 010913DC rep stos dword ptr es:[edi]37return (a+b+c);38 010913DE mov eax,dword ptr [a] ;取参数值,并计算39 010913E1 add eax,dword ptr [b]40 010913E4 add eax,dword ptr [c]41 }42 010913E7 pop edi ;恢复现场 edi=0030FB10, esp=0030F93843 010913E8 pop esi ;esp=0030F93C44 010913E9 pop ebx ;esp=0030F94045 }46 010913EA mov esp,ebp ;esp=0030FA0047 010913EC pop ebp ;ebp=0030FB10, esp=0030FA0448 010913ED ret ;esp=0030FA08 【__cdecl】调⽤⽅式内部没有平衡栈,由调⽤者负责平栈(编译器⾃动处理),【__stdcall】调⽤⽅式指令“return 0Ch”内部平栈4950//主调函数51int main(int argc, char *argv[])52 {5301091400 push ebp ;将ebp内容压栈 ebp=0030FB60 esp=0030FB145401091401 mov ebp,esp ;esp传给ebp ebp=0030FB10 esp=0030FB105501091403 sub esp,0F0h ;改变栈顶值,腾出空间,esp=esp-0F0h esp=0030FA205601091409 push ebx ;压栈ebx,esi,edi,保护现场. ebp=0030FB10 esp=0030FA1C57 0109140A push esi ;esp=0030FA1858 0109140B push edi ;esp=0030FA1459 0109140C lea edi,[ebp-0F0h] ;将(ebp-0F0h)=0030FA20的值放⼊edi中,edi=0030FA206001091412 mov ecx,3Ch ;ecx=3Ch,rep指令循环次数6101091417 mov eax,0CCCCCCCCh ;eax=CCCCCCCC62 0109141C rep stos dword ptr es:[edi] ;重复填充CCCCCCCC,(3Ch)次63int sum = 0;64 0109141E mov dword ptr [sum],0 ;&sum=0030fb08, sum=065int a = 1;6601091425 mov dword ptr [a],1 ;&a=0030fafc, a=167int b = 2;68 0109142C mov dword ptr [b],2 ;&b=0030faf0, b=269int c = 3;7001091433 mov dword ptr [c],3 ;&c=0030fae4, c=371 sum = add(a,b,c);72 0109143A mov eax,dword ptr [c] ;参数按从右⾄左的顺序压栈, eax=373 0109143D push eax ;esp=0030FA1074 0109143E mov ecx,dword ptr [b] ;ecx=27501091441 push ecx ;esp=0030FA0C7601091442 mov edx,dword ptr [a] ;edx=17701091445 push edx ;esp=0030FA087801091446 call add (01091154h) ;调⽤函数add,此时会将返回函数的下⼀指令地址0109144B压栈,调⽤前esp=0030FA04,调⽤后esp=0030FA0879 0109144B add esp,0Ch ;esp=0030FA14 【__cdecl】调⽤⽅式调⽤返回后外部平栈,【__stdcall】调⽤⽅式没有这条指令80 0109144E mov dword ptr [sum],eax ;将值传给变量sum81return0;8201091451 xor eax,eax83 }8401091453 pop edi ;恢复现场8501091454 pop esi86 }8701091455 pop ebx ;esp=0030FA208801091456 add esp,0F0h ;esp=0030FB1089 0109145C cmp ebp,esp90 0109145E call __RTC_CheckEsp (01091136h)9101091463 mov esp,ebp9201091465 pop ebp ;ebp=0030FB60 esp=0030FB149301091466 ret ;esp=0030FB183.⼤概的过程是调⽤函数add前,参数先从右⾄左放⼊栈中,同时把返回地址也放⼊栈中。
C语言实验报告函数

实验名:函数的定义及调用一、实验目的1、掌握C语言函数定义及调用的规则。
2、理解参数传递的过程。
二、实验内容(一))题目11、题目内容描述1、上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。
main(){int,y;printf(“%d\n”,sum(x+y));int sum(a,b){int a,b;return(a+b);}}2、编写并调试一个求n!(n为整数)的递归函数,希望能在程序运行过程中动态地显示递归函数被调用的轨迹。
三、分析讨论1、针对以上实验内容写出相应的参数传递过程并分析结果。
2、讨论参数的传递的几种形式。
2、输入和输出信息描述及数据类型确定;、输入数据(1)序号输入数据描述数据类型1 x,y int2 a,b int(2)输出数据序号输出数据描述数据类型1 x+y int3、程序源代码(填写程序调试正确后的代码)#include <stdio.h>int main(){int sum(int a,int b); //对被调用函数sum 的声明int x,y,z;scanf("%d,%d",&x,&y);z=sum(x,y); //调用sum 函数,将其值赋给zprintf("%d\n",z); //输出函数结果zreturn 0;//返回值为0}int sum(int a,int b) //定义sum函数{return(a+b); //将a+b的值作为返回值返回到调用sum的位置}4、程序调试错误序号错误信息(列出出错语句以及出错提示)是否解决解决方法1 In function 'main':|int,y;是改为int x,y;2 error: stray '\241' in program|error: expected expressionbefore '%' token|error: stray '\' in program|printf(“%d\n”,sum(x+y));是将整段改为int sum(int a , int b);int x,y,z;z=sum(x,y);printf("%d\n",z);3 error: 'a' redeclared asdifferent kind of symbol|error: 'b' redeclared asdifferent kind of symbol|int a,b;是去掉整句话4 warning: 'x' is useduninitialized in this function[-Wuninitialized]|是加上scanf("%d,%d",&x,&y);5 error: static declaration of'sum' follows non-staticdeclaration|是将int及后面的语句块都移到main外面5、测试与结果分析(1)、测试数据与结果测试序号测试用例选取原因测试输入数据测试输出结果是否正确结果分析1 测试用例4,5 9 是可运算范围内2 测试用例55555,7933 63488 是可运算范围内3 测试用例-89,-79 -168 是可运算范围内(2)、相关问题回答2、编写并调试一个求n!(n为整数)的递归函数,希望能在程序运行过程中动态地显示递归函数被调用的轨迹。
c语言主函数调用子函数变量

c语言主函数调用子函数变量主函数是一个程序的入口函数,它负责启动程序并调用其他子函数来完成特定的任务。
在C语言中,主函数可以调用多个子函数,程序的逻辑就是通过主函数与子函数之间的调用关系来组织的。
对于主函数来说,它可以被看作是程序的指挥官,负责控制和协调程序的运行以及与用户的交互。
子函数则是主函数的下属,根据主函数的指令来执行相应的任务。
在这个整个调用过程中,主函数还可以向子函数传递参数,以便子函数能够获取相应的数据进行处理,并且主函数还可以接收子函数的返回值,从而控制程序的流程。
下面我们就来详细地解释主函数如何调用子函数来使用变量。
首先,我们需要定义一些全局变量。
全局变量是在函数之外定义的变量,其作用范围可以被整个程序使用。
这些全局变量可以在主函数和子函数之间进行数据共享。
接着,我们就可以在主函数中调用子函数并传递参数了。
在主函数中,我们可以通过函数调用语句来调用子函数,并将需要传递的参数传入函数中。
子函数接收到参数后,就可以进行相应的处理,并且可以根据需要返回一个值给主函数。
在子函数中,我们可以对参数进行一些操作,并且可以定义局部变量来保存中间结果或者其他需要的变量。
局部变量是在函数内部定义的变量,其作用范围仅限于该函数内部,在函数执行完毕后就会被销毁。
所以,子函数的局部变量不会对主函数产生影响。
还有一种情况是,主函数可以调用多个子函数,并且这些子函数之间也可以相互调用。
这样可以更加灵活地组织程序逻辑,使得程序更加模块化和可维护。
在调用子函数时,如果需要传递参数,可以通过函数调用语句的方式来传递。
同样地,子函数也可以根据需要将返回值传递给其他子函数或者主函数。
需要注意的是,主函数和子函数之间的变量操作要符合一定的规则,以确保程序的正确执行。
特别是对于全局变量的使用,要注意避免变量冲突和数据混乱的问题。
一般情况下,可以通过函数参数传递和返回值来减少对全局变量的使用,从而提高程序的可读性和可维护性。
c语言函数的定义与调用

c语言函数的定义与调用C语言是一种广泛使用的编程语言,函数是C语言中的一种重要的概念,可以将一组相关的语句封装在一起,起到代码复用和模块化的作用。
本文将讲解C语言中函数的定义与调用,以便初学者加深对C语言的理解。
一、函数的定义在C语言中定义一个函数,需要包括以下几个部分:1. 返回类型:函数执行完毕后返回的值的类型,可以是int、float、char、void 等类型。
2. 函数名:函数的名称,用于调用函数。
3. 形参列表:函数的参数列表,用于向函数传递参数。
4. 函数体:函数的具体实现,由一组相关的语句组成。
以下是一个简单的函数定义示例:```cint add(int a, int b) // 返回类型为int,函数名为add,形参列表为a和b {int sum = a + b; // 函数体,计算a和b的和return sum; // 返回sum的值}```二、函数的调用定义好函数后,就可以在程序中调用函数了。
在C语言中,函数调用需要使用函数名和实参列表来唤起函数的执行。
以下是一个简单的函数调用示例:```cint main(){int a = 3, b = 4;int result = add(a, b); // 调用add函数,并将结果保存在result中printf("The sum of %d and %d is %d", a, b, result); // 输出结果return 0;}```在上面的示例中,我们通过调用函数add来计算a和b的和,并将结果保存在result变量中。
最后,使用printf函数输出结果。
需要注意的是,在调用函数时,实参的类型和顺序必须与函数定义时的形参类型和顺序一致。
三、总结通过本文的介绍,我们了解了C语言函数的定义与调用的基础知识。
函数是C 语言中的重要概念,能够让我们将一组相关的语句封装在一起,提高代码的复用性和可读性。
在编程过程中,尽量合理地定义和使用函数,可以让代码更加清晰易懂,提高开发效率。
中职C语言教案:函数的调用

s=s+1.0/p;
printf(“s=%f\n”,s)
}
答案:
a. scanf(“%d”,n);改为scanf(“%d”,&n);
b. s=s+1.0/p;改为s=s+1.0/fun(i);
板
书
设
计函数的Biblioteka 用一、函数实参形参二、应用举例
教 后 札 记
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) ;}
void main( )
{int x = 2, y = 4;
printf("(1)x=%d, y=%d\n", x, y);
#include <stdio.h >
float fun(int n)
{
float p=1.0;
p=p*n;
return p;}
void main()
{int i,n;doublen s=0.0;
/***********FOUND***********/
scanf(“%d”,n);
for(i=1;i<=n;i++)
printf(“\n%ld的逆序数是:\n”,x);
fun(x);
}
void fun(long a)
{if (__________)
printf(“%ld”,a);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对被调用函数的声明和函数原型
❖对被调用函数要求:
必须是已存在的函数(库函数或用户自定义函数) 库函数: #include <*.h> 用户自定义函数:在同一文件中,并且主调在被调之前,一般在
主调函数中对被调用的函数原型声明。
函数原型声明一般形式: : 函数类型 函数名(参数类型 [参数名],….. );
形参与实参
❖形式参数:定义函数时函数名后面括号中的变量名 ❖实际参数:调用函数时函数名后面括号中的表达式
例 比较两个数并输出大者 main()
{ int a,b,c;
scanf("%d,%d",&a,&b);
c=max(a,b); (main 函数) c=max(a,b);
max(int x, int y) (max 函数) printf("Max is %d",c);
预编译命令
函数1
函数n
说明部分 执行部分
C程序结构 C是函数式语言 必须有且只能有一个名为main的主函数 C程序的执行总是从main函数开始,在main中结束 函数不能嵌套定义,可以嵌套调用
函数分类
❖从用户角度
标准函数(库函数):由系统提供 用户自定义函数
❖从函数形式
无参函数 有参函数
运行结果 a[0]=2,a[1]=4 a[0]=2,a[1]=4
例 两个数组大小比较
#include <stdio.h>
main()
{ int a[10],b[10],i,n=0,m=0,k=0;
int large(int x,int y)
int型函数可不作函数说明
{}reftluorant(zz;);
} z=x>y?x:y;
return(z);
}
§6.4 函数的嵌套与递归调用
嵌套调用
C规定:函数定义不可嵌套,但可以嵌套调用函数 在被调函数中又调用了其他函数
main( ) 调用函数a 结束
a函数
调用函数b
b函数
f( )
f1( )
f2( )
调f
调f2
调f1
例 求n的阶乘
n!
1 n
(n
1)!
(n 0,1) (n 1)
请问是否会进 入死循环?
#include <stdio.h> int fac(int n) { int f;
if(n<0) printf("n<0,data error!"); else if(n==0||n==1) f=1; else f=fac(n-1)*n; return(f); } main() { int n, y; printf("Input a integer number:"); scanf("%d",&n); y=fac(n); printf("%d! =%15d",n,y); }
printstar( )
{ printf("**********************\n"); } print_message( ) /*print_message函数*/ { printf(“This is a C function!\n”); }
C是模块化程序设计语言
C程序
源程序文件1 源程序文件i 源程序文件n
使用库函数应注意: 1、函数功能 2、函数参数的数目和顺序,及各参数意义和类型 3、函数返回值意义和类型 4、需要使用的包含文件
§6.2 函数的定义
一般格式
函数返回值类型 缺省int型
无返回值void
现代风格:
类型说明符 函数名(参数列表)
{ 说明语句部分; 可执行语句部分;
}
合法标识符 Void或形参 函数体
a=printstar(); printf("%d",a); }
输出:10
void printstar() { printf("**********"); } main() { int a;
a=printstar(); printf("%d",a); }
编译错误!
例 函数返回值类型转换
输入:1.5,2.5
例 求三个数中最大数和最小数的差值
#include <stdio.h>
int dif(int x,int y,int z)
int dif(int x,int y,int z);
{ return max(x,y,z)-min(x,y,z); }
int max(int x,int y,int z);
输出:Max is 2
main() { float a,b;
int c; scanf("%f,%f",&a,&b); c=max(a,b); printf("Max is %d\n",c); } max(float x, float y) { float z; z=x>y?x:y; return(z); }
int f(int x) { int y,z;
…… z=f(y); ……. return(2*z); }
int f1(int x) { int y,z;
…… z=f2(y); ……. return(2*z); }
int f2(int t) { int a,c;
…… c=f1(a); ……. return(3+c); }
例或例{p{pi{}rnri例intppnzr无i{}t有mrren=tisiisntttnnxua参zrta参t有amtte>xr=riff例zrnnt({(((y函x(ua;d函vi参t““(?n>xrz)uo**z}nx数t()y数mi**;函i;空(:dx?ny**zm,xt());**数函;y:xy**y)现,(**(;数in**)代t**现y**风)**代\\nn函格风””))数);;格体}})为空
float add( float x, float y);
被调函数出现在主调函数 之前,不必函数说明
floaptsrcainadntdff(("f"lM%oaaftx,%xi,sff"%l,o&adat\n,y&"),bc);
{} flco=aatdzd;(a,b); mza=xp(xrfi+lnoytaf;(t"xs,ufmloiast %y)f",c);
{ int z;
}
z=x>y?x:y; return(z); }
max(int x, int y) { int z;
z=x>y?x:y;
return(z);
}
实参 形参
❖说明:
实参可以是常量、变量或表达 式,它们都必须有确定的值
形参必须指定类型
形参与实参类型顺序一致,个 数相同
形参在函数被调用前不占内存; 函数调用时为形参分配内存;调 用结束,内存释放
int max(int x,int y,int z)
int min(int x,int y,int z);
{ int r;
void main()r=xy?x:y;{ int a,b,c,d;
return(r>z?r:z);
scanf("%d%d%d",&a,&b,&c); }
d=dif(a,b,c);
若无return语句,遇}时,自动返回调用函 数
若函数类型与return语句中表达式值的类 型不一致,按前者为准,自动转换------函 数调用转换
不返回函数值的函数,可明确定义为“空 类型”,即void型函数
例 函数带回不确定值
printstar() { printf("**********"); } main() { int a;
❖开发方法: 自上向下,逐步分解,分而治之
main( ) {…
sub1(); … sub2(); … }
sub1( ) {…
}
sub2( ) {…
}
【例6.1】简单的函数调用 main( ) {printstar( );
print_message( ); printstar( ); }
运行结果如下: ********************** This is a C function! **********************
§6.5 数组作为函数参数
数组元素作函数实参——值传递
例 #include <stdio.h> swap( int x, int y) { int t; t=x;x=y;y=t; } main() { int a[2]={2,4} printf("\na[0]=%d,a[1]=%d\n“,a[0],a[1]); swap(a[0],a[1]); printf("\na[0]=%d,a[1]=%d\n“,a[0],a[1]); }
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
调用方式
❖函数语句:把函数调用作为一个语句。 例 printstar();
第6章 函数
➢教学目标
§1.熟练掌握函数的定义和使用方法,灵活定 义与使用函数,掌握函数的嵌套调用和递归 调用;