实验6 函数与编译预处理

合集下载

函数与编译预处理

函数与编译预处理

函数与编译预处理一、函数的定义1、无参函数的定义形式类型标识符函数名()第一行:函数首部{声明部分语句 { }包含的:函数体}例1:void fun( ){printf(“Hello!\n”);}2、有参函数的定义形式类型标识符函数名(形式参数列表){声明部分语句}例2:int max(int x, int y){ int z;z = x > y ? x : y;return (z);}注:“类型标识符”是指函数值的类型。

若省略,默认为int。

二、函数的调用无参函数:函数名()有参函数:函数名(实际参数列表)例3:在main函数中调用fun和max函数void main( ){int m,n,t;scanf(“%d,%d”,&m,&n);t=max(m,n); /*调用max函数*/fun(); /*调用fun函数*/printf(“max number is %d\n”,t);}注:1、C语言程序由函数构成,其中有且仅有一个main函数,各函数书写的先后顺序任意。

2、函数的定义是相互独立的,不能在一个函数的内部定义另一个函数,即函数的定义不能嵌套。

3、程序从main函数开始执行,其他函数被调用时执行,调用完后回到主调函数,最后在main函数中结束整个程序。

三、函数的声明在主调函数中一般要对被调函数进行声明。

声明的作用是告知编译器被调函数的函数名、函数类型、参数个数和参数类型,方便进行语法检查。

声明的形式:类型标识符函数名(形式参数列表);即:函数首部加分号例如:void fun( );int max(int x, int y);其中参数名称可省略,如:int max(int , int );Turbo C在以下两种情况中,可省略函数声明:1、被调函数定义在主调函数前。

2、被调函数类型为int、char。

四、参数的传递1、形参是变量,但函数被调用时才被分配内存,调用完毕,所占内存将被释放。

第6章函数与编译预处理

第6章函数与编译预处理
形式参数:定义函数时函数名后面括号中的变量名 实际参数:调用函数时函数名后面括号中的表达式
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);
a=printstar(); printf("%d",a); }
输出:10
void printstar() { printf("**********"); } main() { int a;
a=printstar(); printf("%d",a); }
编译错误!
上一页
下一页
例 函数返回值类型转换
上一页
下一页
例 交换两个数
swap(int *p1,int *p2) { int p;
调前:
a 5
b 9
p=*p1; *p1=*p2;
p1
a
&a
5
*p2=p; }
调swap:
p2
b
main()
&b
9
{ int a,b;
p1
a
scanf("%d,%d",&a,&b);
&a
9
printf(“a=%d,b=%d\n”,a,b); 交换:

调用函数b


b函数


上一页
下一页
long fac(int k) {long f=1; int i; for(i=1;i<=n;i++)

C语言 函数与编译预处理

C语言 函数与编译预处理
return z; }
main() {
int i, m, s=0; for (i=1; i<6; i++)
{ m=mul( i ); s+=fact( m );
} printf(“%d\n”, s); }
函数的递归调用
函数的递归 函数自身
在调用函数的过程中,该函数又去调用 int f (int x)
补充:编写一个函数isprime(int a)用来判断自变 量a是否是素数,若是,返回数值1,否则返回数值0。
开始 输入a, flag=1 调用判断函数
算法思想: 只能被 1 和其本身整
除的数,称为素数
Y
N
是素数?
flag=1
返回
flag=0
查看源程序
补充:利用isprime函数,编程验证任意一个偶数可 以写成两个素数之和。
查看源程序
6.4 函数的嵌套与递归调用
函数的嵌套 在调用函数的过程中,又去调用另一个函数
main()
sub1()
sub2()

例6.6 计算 s = (1*1)!+(2*2)!+(3*3)!+...+(6*6)!
算法分析:n!可定义为一个函数fact( int n ) ( k*k)的运算也可以定义为一个函数mul( int k ) 计算s本身是一个循环程序
int n; scanf( “%d”, &n ); printf(“%d\n”,sum(n)); }
int sum ( int n ) {
int s=0; int k; for( k=1;k<=n; k++)
s= s + k; return s; }

函数与编译预处理实验报告

函数与编译预处理实验报告

函数与编译预处理实验报告一、实验目的本次实验旨在通过编写程序,掌握函数与编译预处理的相关知识,了解函数的调用和返回机制以及编译预处理的作用。

二、实验环境操作系统:Windows 10开发工具:Code::Blocks 17.12编程语言:C语言三、实验内容1. 函数的定义和调用函数是C语言中的一个重要概念,它可以将一段代码封装成一个功能单元,方便代码重用和维护。

在本次实验中,我们需要掌握如何定义函数,并且了解函数的调用过程。

在C语言中,函数通常由以下几部分组成:返回类型函数名(参数列表){函数体;return 返回值;}其中,返回类型指定了函数返回值的类型;函数名是唯一标识符,用于调用该函数;参数列表指定了该函数需要传入的参数;函数体是一段具体的代码逻辑;return语句则将结果返回给调用者。

在调用一个函数时,我们需要按照以下格式进行:返回值变量 = 函数名(参数列表);其中,返回值变量接收该函数返回的结果;参数列表则按照定义顺序传入相应参数。

如果该函数不需要传入任何参数,则可以省略参数列表。

2. 函数指针除了直接调用一个已经定义好的函数外,我们还可以使用函数指针来间接调用一个函数。

函数指针和普通指针类似,它指向的是一个函数的地址。

通过函数指针,我们可以在运行时动态地确定需要调用哪个函数。

在C语言中,声明一个函数指针的方法如下:返回类型 (*指针变量名)(参数列表);其中,括号中的*表示这是一个指针变量;指针变量名则是该变量的标识符;参数列表和返回类型与被指向的函数相同。

通过以下代码可以将一个已经定义好的函数赋值给一个函数指针:int max(int a, int b){return a > b ? a : b;}int (*p)(int, int) = max;在上述代码中,p就是一个用于存储max函数地址的函数指针。

3. 编译预处理编译预处理是C语言中一项重要的功能,在编译过程中会对源代码进行一些预处理操作。

函数与编译预处理06

函数与编译预处理06

以下程序的运行结果是:#define DEBUG void main(void){ int a=14, b=15, c; c=a/b;# ifdef DEBUGcout<<cout<<““a=a=““<<oct<<a<<<<oct<<a<<““ b= b=““<<b<<endl; # endifcout<< cout<<““c=c=““<<dec<<c<<endl;}输出:a=16,b=17c=0程序的多文件组织而在设计一个功能复杂的大程序时,为了便于程序的设计和调试,通常将程序分成若干个模块,把实现一个模块的程序或数据放在一个文件中。

当一个完整的程序被存放在多于一个文件中时,称为程序的多文件组织。

int q(int x){ int y=1;static int z=1;z+=z+y++;return x+z;}4 9 18 void main(void){ cout<<q(1)<<{ cout<<q(1)<<‘‘\t\t’’;cout<<q(2)<<cout<<q(2)<<‘‘\t\t’’;cout<<q(3)<<cout<<q(3)<<‘‘\t\t’’;}void f(int n){ if(n>=10)f(n/10);cout<<n<<endl; }void main(void) { f(12345);}112 123 1234 12345void main(void){ char s; cin.get(s); while(s!= while(s!=‘‘\n \n’’) { switch(s- { switch(s-’’2’) { case 0:case 1: cout<<s+4;case 2: cout<<s+4;break; case 3: cout<<s+3;default: cout<<s+2; break; }cin.get(s); }cout<<endl;}输入:2347<CR>545455555657。

c语言 第六章 函数与编译预处理2

c语言 第六章 函数与编译预处理2

#elif和#else可以 #elif和#else可以 没有
如果条件1为真就编译程序段1 如果条件1为真就编译程序段1, 否则如果条件2 否则如果条件2为真就编译程序段 2,…,如果各条件都不为真就编译 #endif必须存在 #endif必须存在,它 必须存在, 程序段n 程序段n。 #if命令的结尾 是#if命令的结尾 #if和#elif常常与 #if和#elif常常与defined命令配合 常常与defined命令配合 使用,defined命令的格式为 命令的格式为: 使用,defined命令的格式为:
预编 译处 理后
a = 3.14; * 2 * 2;
错误! 错误!
宏可以被重复定义 宏可以被重复定义。 重复定义。 #define N 10 /*第一次宏定义 第一次宏定义*/ 第一次宏定义 fun( ) 输出结果: 输出结果: { 2010 printf(“%d”,N ); /* 输出 */ 输出10 } #define N 20 /*第二次宏定义 第二次宏定义*/ 第二次宏定义 void main ( ) { printf ("%d", N ); /* 输出 */ 输出20 fun( ); }
例:下面的程序利用ACTIVE_COUNTRY定义货币的名称 下面的程序利用ACTIVE_COUNTRY定义货币的名称
#define #define #define #define USA 0 ENGLAND 1 FRANCE 2 ACTIVE_COUNTRY USA
#if ACTIVE_COUNTRY == USA char *currency = “dollar”; //有效 //有效 #elif ACTIVE_COUNTRY == ENGLAND char *currency = "pound" ; #else char *currency = "france" ; char *currency = “dollar”; #endif

实验6 函数与编译预处理

实验6 函数与编译预处理

实验六函数与编译预处理(4学时)实验前必须做的操作...............——..新建文件夹:1、先在对应的K:盘上建立一个父文件夹(用来存放本人整个学期的作业),格式为:“专业+班级+学号+姓名”,如:工业1091班、学号为05的匡珍春同学,其父文件夹名称为:工业109105匡珍春,然后在此父文件夹下建立子文件夹,名称为:实验6(用来存放实验6需要上交的文件)。

2、在E:盘上建立一个以本人姓名为名称的文件夹(本次实验的工作文件夹),例如:E:\匡珍春【实验目的】1、掌握自定义函数的一般结构及定义函数的方法;2、掌握函数的形式参数、实际参数、函数返回值等重要概念;3、掌握函数实参与形参间的“值传递”方式;4、掌握函数声明、函数调用的一般方法;5、掌握模块化程序设计思想,会采用C语言中函数进行模块化程序设计;6、掌握全局变量和局部变量作用域以及全局变量和局部变量的使用方法;7、掌握函数的嵌套调用的程序的执行过程,会使用嵌套调用设计程序;8、掌握使用函数递归调用的程序的执行过程,会使用递归程序解决实际问题;9、理解宏的概念,掌握宏定义。

了解文件包含的概念,掌握其用法;10、学习对多文件程序的编译和运行;11、熟练掌握VC程序调试方法,包括断点的设置和取消,以及单步执行跟踪进入函数和跳出函数的方法。

【实验内容】[实验任务一]:断点的设置和取消、单步执行跟踪进入函数和跳出函数方法练习程序跟踪调试实例6-1:调试示例(请仔细按以下各步骤进行操作):从键盘输入一个正整数n,计算n! 的值,要求定义和调用函数fact(n),计算n!。

Input n: 1010! = 3628800说明:实验五中我们使用了程序运行到光标位置调试程序,本次实验需要掌握设置断点,以及单步调试进入函数和跳出函数的方法。

【操作步骤】:(1)输入源程序,并以error6_1.c文件名最终保存在实验6文件夹里,编译程序,出现警告信息:双击该警告信息,箭头指向“f=fact(n);”这一行,警告信息指出函数“fact”没有定义,而函数“fact”实际上已经定义了,这是为什么呢?因为函数在调用之前,必须先声明。

实验六 函数与编译预处理

实验六  函数与编译预处理

实验六函数与编译预处理1.void main(){float a,b,c;scanf("%f%f",&a,&b);c=add(a,b);printf("sum is %f\n",c);}float add(float x,float y){float z;z=x+y;return(z);}//错误的地方,(1)没有包含头文件<stdio.h> (2)函数定义应该在函数调用的前面. 更正后的程序:#include<stdio.h>float add(float x,float y){float z;z=x+y;return(z);}void main(){float a,b,c;scanf("%f%f",&a,&b);c=add(a,b);printf("sum is %f\n",c);}2.void main(){int a=3,b=6;printf("a=%d,b=%d\n",a,b);exchange1(a,b);printf(:a=%d,b=%d\n",a,b);}void exchange1(int x,int y){int t;t=x;x=y;y=t;printf("x=%d,y=%d\n",x,y);}//错误的地方,(1)没有包含头文件<stdio.h> (2)函数定义应该在函数调用的前面.更正后的程序:#include<stdio.h>void exchange1(int x,int y){int t;t=x;x=y;y=t;printf("x=%d,y=%d\n",x,y);}void main(){int a=3,b=6;printf("a=%d,b=%d\n",a,b);exchange1(a,b);printf("a=%d,b=%d\n",a,b);}3.long int fac(int n){long int p;int i;p=1;for(i=1;i<=n;i++)p=p*i;return(p);}int cmn(int m,int n){int x;x=fac(m)/(fac(n)*fac(m-n));return(x);}void main(){int m,n,c;scanf("%d%d",&m,&n);c=cmn(m,n);printf("c=%d\n",c);}//应该加个#include<stdio.h> 头文件4.int a=7,b=9;void main(){int i,a=5,x=80,y=60;for(i=1;i<4;i++){printf("a=%d,b=5d,max=%d\n",a,b,max(a,b));b+=6;}printf("result_sum=%d\n",sum(x,y));}int sum(int x,int y){extern int m,n;int temp;temp=x+y+m+n+a+b;return(temp);}int m=12,n=25;int max(int 1,int b){return(a>b?a:b);}程序更正:#include<stdio.h>int a=7,b=9;void main(){int i,a=5,x=80,y=60;int max(int a,int b);int sum(int x,int y);for(i=1;i<4;i++){printf("a=%d,b=5d,max=%d\n",a,b,max(a,b));b+=6;}printf("result_sum=%d\n",sum(x,y));}int sum(int x,int y){extern int m,n;int temp;temp=x+y+m+n+a+b;return(temp);}int m=12,n=25;int max(int a,int b){return(a>b?a:b);}5.调试运行以下程序.#include<stdio.h>int fun(int a){int b=0;static int c=2;b+=c;c+=1;return(a+b-c);}void main(){int a=3,i;for(i=0;i<3;i++) printf("%4d",fun(a));}6.略7.略8.#include<stdio.h>#define DEBUGvoid main(){int a=14,b=15,temp;temp=a/b;#ifdef DEBUGprintf("a=%d,b=%d",a,b);#endifprintf("temp=%d\n",temp);}程序结果为:a=14,b=15,temp=0(1)第二行中,宏定义是可以没有具体的值的,在这里只是定义了一个宏名.DEBUG没有值.(2)第7~9行为:#ifdef DEBUGprintf("a=%d,b=%d",a,b);#endif会被编译,因为种种原因DEBUG已经被定义过.(3)如将第2行删除,程序运行结果为:temp=0 因为没有定义DEBUG,所以原来第7~9行的程序没有执行.(4)第9行不能删除,因为#ifdef 和#endif必须成对出现.9.编程题#include<stdio.h>long int fac(int n){long int p;int i;p=1;for(i=1;i<=n;i++)p=p*i;return(p);}void main(){int m,n,c;scanf("%d%d",&m,&n);c=fac(n)/(fac(n-m)*fac(m));printf("c=%d",c);}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六函数与编译预处理(4学时)实验前必须做的操作...............——..新建文件夹:首先在各自对应的计算机ncre(k:)盘上对应座位号文件夹内新建一个文件夹,文件夹的名字为“班级+学号的后两位+姓名”,如座位号为K02,航海1111班、学号后两位是02的、姓名为“张强”的同学,则其对应的文件夹名字是:航海111102张强。

然后在刚才建好的文件夹里面再建立一个文件夹,文件夹为“实验6”。

【实验目的】1、掌握自定义函数的一般结构及定义函数的方法;2、掌握函数的形式参数、实际参数、函数返回值等重要概念;3、掌握函数实参与形参间的“值传递”方式;4、掌握函数声明、函数调用的一般方法;5、掌握模块化程序设计思想,会采用C语言中函数进行模块化程序设计;6、掌握全局变量和局部变量作用域以及全局变量和局部变量的使用方法;7、掌握函数的嵌套调用的程序的执行过程,会使用嵌套调用设计程序;8、掌握使用函数递归调用的程序的执行过程,会使用递归程序解决实际问题;9、理解宏的概念,掌握宏定义。

了解文件包含的概念,掌握其用法;10、学习对多文件程序的编译和运行;11、熟练掌握VC程序调试方法,包括断点的设置和取消,以及单步执行跟踪进入函数和跳出函数的方法。

【实验内容】[实验任务一]:断点的设置和取消、单步执行跟踪进入函数和跳出函数方法练习程序跟踪调试实例6-1:调试示例(请仔细按以下各步骤进行操作):从键盘输入一个正整数n,计算n! 的值,要求定义和调用函数fact(n),计算n!。

Input n: 1010! = 3628800说明:实验五中我们使用了程序运行到光标位置调试程序,本次实验需要掌握设置断点,以及单步调试进入函数和跳出函数的方法。

【操作步骤】:(1)输入源程序,并以error6_1.c文件名最终保存在实验6文件夹里,编译程序,出现警告信息:双击该警告信息,箭头指向“f=fact(n);”这一行,警告信息指出函数“fact”没有定义,而函数“fact”实际上已经定义了,这是为什么呢?因为函数在调用之前,必须先声明。

在主调函数的变量定义前面加上函数声明“long fact(int m);”后,重新编译,连接,都正确。

注意:如果将error6_1.c文件改为error6_1.cpp (即改为C++源程序文件)可见VC++系统对.c文件和.cpp文件在进行编译时,对语法的要求不完全一样,这一点希望同学们注意。

此处错误修改的方法与上面相同。

(2)调试开始,设置2个断点(断点的作用:程序执行到断点处暂停,使用户可以观察当前的变量或其它表达式的值,然后继续运行),先把光标定位到要设置断点的位置,然后单击编译工具条上的(Inert / Remove Breakpoint (F9)),断点就设置好了(如图6.1所示)。

如果要取消断点,只要把光标放到要取消的断点处,单击,这个断点就取消了。

图6.1 设置断点(3)单击编译工具条(go (F5)),运行程序,用户输入n的值10后,程序运行到第一个断点位置暂停(如图6.2所示)。

图6.2 程序运行到断点位置(4))单击(Step Into (F11))进入函数fact()调试,箭头表示程序已经执行到函数fact()内(如图6.3所示)。

(5)使用,在函数fact()中设置程序的第3个断点(如图6.3所示)。

图6.3 进入函数fact( )调试,并在运行时设置断点(6)单击(go (F5)),程序直接运行到断点处,暂停(如图6.4所示),在变量窗口观察到product 的值是-2903040,不正确,因为变量product未赋初值,加上语句product=1后,按以上的步骤,重新编译、连接,运行到第3个断点处,变量窗口中product的值正确。

图6.4 程序从函数fact()开始直接运行到第3个断点的位置(return前面)(7)现在需要从被调函数返回到主调函数,单击调试工具条中的(Step Out (Shift+F11)),程序返回主调函数继续执行(如图6.5所示)。

图6.5 程序回到了主调函数(8)继续单击(go (F5)),程序执行到最后(如图6.6所示),在运行窗口输出10!=3628800,与题目要求的结果一致。

图6.6 程序执行到最后(9)单击终止调试图标(Stop Debugging(Shaft+F5)),程序调试结束。

程序跟踪调试实例6-2:模仿示例调试以下程序,直到输出正确结果,将修改好的程序以error6_2.c为文件名最终保存在实验6文件夹里。

(需要存盘)程序功能:利用函数调用求“1!+2!+3!+4!+...+10!”的值(参见实验教材73页程序填空题第(2)小题)提示:改变main()函数中for循环的循环次数,让程序只求“1!+2!+3!”的值,更容易找到程序的错误。

程序跟踪调试实例6-3:综合调试、改错练习:以下程序有多处错误,请综合运用前面所学过的所有知识和VC++的调试手段,改正程序的各种错误,使其运行出正确的结果。

程序的功能是:利用函数调用求任意两个整数的和。

将修改好的程序以error6_3.c 为文件名最终保存在实验6文件夹里。

(需要存盘)【提示】:①本题中涉及到两个函数,分别是main()函数和sum()函数,而C语言程序中各个函数之间的关系是相互独立的,所以应该将int sum(a, b)函数写在主函数main()函数的外面,即将上面程序中的最后一行的}放在 int sum(a,b) 的上一行;②按以上方式修改以后,编译时会出现如下错误信息提示:Declaration syntax error in function main. 主函数中声明语法错误如何修改请参照ppt课件的C6 函数与编译预处理的第21~23的内容;③经过以上几步修改后,编译时会出现如下错误信息提示,且光标停留在scanf( )处:Possible use of 'x' before definition in function main. 在定义主函数之前可能已经使用了x 原因就是scanf()语句错误。

④修改后重新编译会出现错误信息提示如下所示:Redeclaration of ‘a' in function sum 在sum函数中重复声明了a造成此错误的原因是定义sum( )函数错误,如何修改,请参照ppt课件的C6函数与编译预处理的第7~8的内容;⑤修改完成以后,编译成功,但连接时(即按compile菜单下的Make EXE file选项)时,会出现如下错误信息提示:Undefined symbol '_sam' in module example2.c 在example2.c模块中没有定义符号sam 造成此错误的原因就是:被调函数的函数名与主调函数中调用被调函数的函数名不一致。

修改方法可将主调函数中的sam改成sum以保持一致;⑥修改后重新编译,出现信息提示:Too few parameters in call to ‘sum’ in functionmain 主函数中调用sum函数时参数太少因为被调函数sum(int a, int b)中有两个参数,主调函数main()中的sum(x+y)只有一个参数。

而实参应该与形参保证三一致:即顺序一致,类型一致,数量一致。

⑦因为程序中scanf("%d,%d", &a, &b)中两个%d之间有逗号,所以运行程序时输入的两个整数之间必须用逗号隔开,而不是用空格隔开。

[实验任务二]:补充完整程序,灵活掌握C语言中使用函数调用解决问题的方法。

注意:这里提供了以填空的形式出现源程序参考清单,目的是给同学们一个思路。

最好不要将此源程序清单复制到VC++中,否则会出现多处语法错误。

同学们可以据此思路来填写有关语句,从而完成程序。

在调试程序时,一定要运用前面学过的方法。

程序填空实例6-1:下面函数是实现求[1,3000]能被17或23整除的整数的个数。

请将程序补充完整,并调试运行,直到输出正确结果。

将填空后完整的程序以文件名为blank6_1.c保存在实验6文件夹里。

(需要存盘)程序填空实例6-2:编写一函数接受主调函数实参n(这里n==5),并输出如下图形。

n的值通过键盘输入,并由主函数中的语句来由实现。

将填空后完整的程序以文件名为print1.c保存在实验6文件夹里。

(需要存盘)0***0*0*0***0***0*0*0***0【算法提示】:①定义函数printg(),一个形参n,类型为整型,函数无返回值;②找出主、次对角线上‘0’的规律,使用双层循环控制循环n*n次;③循环体内部主、次对角线上打印‘0’,否则打印‘*’;④在主函数中调用函数printg()。

【程序框架】:本程序中main()是主调函数,printg()函数上被调函数。

程序结构形式如下:#include <stdio.h>void printg(int); /* 因为被调函数printg()在主调函数main()之后,需对被调函数声明*/void main ( ){int a;printf("please input a number: \n");scanf("%d", &a);printg(a); /* 在主调函数main()中调用被调函数printg(a) ,其中a为实参*/}void printg(int n){这部分可按照算法提示的①、②、③步补充完整。

相关提示:如果用i控制行标,用j控制列标,则主对角线的规律是:i==j, 即行标等于列标;次对角线的规律是:i+j==n+1,即行标与列标的和值等于方阵的维数+1;}【知识总结】:一般来说,编程时一个问题可以只用一个主函数来处理,但考虑到模块化程序的优越性(主要是大的问题,很小的问题体现不出优越性),所以在实际设计程序时(特别是大的问题),需要设计多个函数(模块),甚至多个文件。

虽然我们碰到的一般是小问题,完全可以用一个主函数来处理,但是我们必须从小问题中学会模块化程序设计的思想和方法,为将来处理大问题打下基础。

程序填空实例6-3:将一个正整数n以相反的顺序输出的递归算法reverse(n)描述如下所示:输出n:当0<=n<=9时;输出n%10,继续输出reverse(n/10):当n>9时据此算法,设计的递归算法如下,请补充完整,并上机调试。

(需要存盘)将补充完整的程序以文件名reverse.c最终保存在实验6文件夹里。

[实验任务三]:掌握函数的嵌套调用和递归调用的程序的执行过程,会使用嵌套调用和递归调用编写程序;编程实例6-1:写一个判断素数的函数,在主函数输入一个整数,输出是否素数的信息。

相关文档
最新文档