函数的嵌套调用和递归调用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目:下面程序的功能是用函数递归方法计算菲波那契数列,
请填空完善之。
-------------------------------------------------------*/
main()
{ int n,m;
scanf(″%d″,&n);
/***********SPACE***********/
m=【?】;
printf(″%d″,m);
}
int fib(int n)
{
/***********SPACE***********/
if(n==1)【?】;
else if(n==2) return(1);
/***********SPACE***********/
else return (【?】);
}
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:求k!(k〈13),所求阶乘的值作为函数值返回。
(要求使用递归)
------------------------------------------------*/
【程序填空】
---------------------------------------------------------
题目:下面程序的功能是用递归法求n!。
-------------------------------------------------------*/
#include
void main()
}
long fac(int n)
{
long f;
if(n<0)
printf("n<0,data error!");
else if(n==0,n==1)
f=1;
else
/***********SPACE***********/
f=【?】;
return(f);
}
答案:
======(答案1)======
long fac(int n)
{ if(n==1) return 1;
else
return(n+fun(n-1));
}
main()
{ int x;
scanf("%d",&x);
x=fun(x);
printf("%d\n",x);
}
执行程序时,给变量X输入10,程序的输出结果是().
A) 55
B) 54
C) 65
D) 45
答案:A
/********** End **********/
}
main()
{
long int sum;
printf("Sum of %d powers of integers from 1 to %d = ",K,N);
sum=fun(N,K);
printf("%ld\n",sum);
}
答案:----------------------
【程序填空】
---------------------------------------------------------
功能:通过函数的递归调用计算阶乘。
-------------------------------------------------------*/
#include
long power(int n)
scanf("%d",【?】);
y=power(n);
/***********SPACE***********/
printf("%d!=%ld\n",n,【?】);
}
答案:
======(答案1)======
power(n-1)*n
======(答案2)======
&n
======(答案3)======
str[i]=str[i]-32;
----------------------
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:编写函数fun求s=1^k+2^k +3^k + ......+N^k的值,
long power,sum=0;
int i,j;
for(i=1;i<=n;i++)
{ power=i;
for(j=1;j<k;j++)
power *= i;</k;j++)
sum += power;
}
return sum;
----------------------
/*-------------------------------------------------------
------------------------------------------------*/
#include "string.h"
#include
void change(char str[])
{
/**********Program**********/
/********** End **********/
B) C语言程序中,main函数是没有参数的
C)一个函数通过其他函数间接的调用了自身,这种情况也是一种递归调用
D)若要通过函数参数带回一个或多个返回值,则应使用按地址传送的参数结合方式
答案:B
有以下程序:
#include
fun(int n)
{ if(n==1|| n==2)return 2;
return n-fun(n-2);}
(1的K次方到N的K次方的累加和)。
要求:用for循环实现
------------------------------------------------*/
#define K 4
#define N 5
#include
long fun(int n,int k)
{
/**********Program**********/
/***********SPACE***********/
printf("1到%d累加和是:%d\n", n,【?】);
return 0;
}
int sum(int n)
{
/***********SPACE***********/
if(【?】)
return 1;
else
/***********SPACE***********/
题目:下面程序是用递归函数求1到n的累加和,请完善程序。
-------------------------------------------------------*/
#include
main()
{ int sum(int n);
int n;
printf("请输入一个整数n:");
scanf("%d", &n);
以下对C语言函数的有关描述中,正确的是().
A)在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B) C函数既可以嵌套定义又可以递归调用
C)函数必须有返回值,否则不能使用函数
D) C程序中有调用关系的所有函数必须放在同一个源程序文件中
答案:A
以下叙述中不正确的是().
A)一个C语言程序有且仅有一个main函数
main()
{printf("%d\n",fun(7));}
该程序运行后的输出结果是().
A) 1
B) 2
C) 3
D) 4
答案:C
A)既允许直接递归调用也允许间接递归调用
B)不允许直接递归调用也不允许间接递归调用
C)允许直接递归调用不允许间接递归调用
D)不允许直接递归调用允许间接递归调用
答案:A
若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是().
A)函数调用可以嵌套和递归
B)函数调用可以作为一个函数的实参
C)函数调用可以出现在表达式中
D)函数调用可以作为一个函数的形参
答案:D
在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则().
A)称为函数的直接递归调用
B)称为函数的间接递归调用
C)称为函数的循环调用
D) C语言中不允许这样的递归调用
答案:B
有以下程序
#include
int fun(int n)
}
答案:----------------------
if (k>0)
return(k*fun(k-1));
else if(k==0)
return 1L;
----------------------
/*-------------------------------------------------------
return【?】;
}
答案:
======(答案1)======
sum(n)
======(答案2)======
n==1
======(答案3)======
n+sum(n-1)
函数的【1】调用是一个函数直接或间接地调用它自身.
答案:
======(答案1)======
递归
函数的定义不可以嵌套,但函数的调用【1】嵌套.
答案:
======(答案1)======
可以
若有以下函数:
int fun(int x)
{ return (1+x*Байду номын сангаас); }
则语句printf(" %d\n",fun(fun(fun(fun( 1 )))) );的输出结果是【1】.
答案:
======(答案1)======
677
C语言中不可以嵌套的是().
A)函数调用
B)函数定义
C)循环语句
D)选择语句
答案:B
以下正确的描述是:在C语言程序中().
A)函数的定义可以嵌套,但函数的调用不可以嵌套
B)函数的定义不可以嵌套,但函数的调用可以嵌套
C)函数的定义和函数的调用均不可以嵌套
D)函数的定义和函数的调用均可以嵌套
答案:B
C语言规定,程序中各函数之间().
}
main()
{
void change();
char str[40];
gets(str);
change(str);
puts(str);
}
答案:----------------------
int i;
for(i=0;str[i]!='\0';i++)
if(str[i]>='a' && str[i]<='z')
答案:
======(答案1)======
fib(n)
======(答案2)======
return(1)
======(答案3)======
fib(n-1)+fib(n-2)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
======(答案2)======
fac(n)
======(答案3)======
fac(n-1)*n
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
{
/***********SPACE***********/
【?】;
int n;
long y;
printf("input an integer number:");
scanf("%d",&n);
/***********SPACE***********/
y=【?】;
printf("%d!=%ld\n",n,y);
{
long f;
if(n>1)
/***********SPACE***********/
f=【?】;
else
f=1;
return(f);
}
main()
{
int n;
long y;
printf("input a inteager number:\n");
/***********SPACE***********/
power(n)
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:将字符串中的小写字母转换为对应的大写字母,
其它字符不变。
要求:用for循环实现
#include
#include"conio.h"
long fun(int k)
{
/**********Program**********/
/********** End **********/
}
main()
{
int m;
printf("Enter m: ");
scanf("%d", &m);
printf("\nThe result is %ld\n", fun(m));
请填空完善之。
-------------------------------------------------------*/
main()
{ int n,m;
scanf(″%d″,&n);
/***********SPACE***********/
m=【?】;
printf(″%d″,m);
}
int fib(int n)
{
/***********SPACE***********/
if(n==1)【?】;
else if(n==2) return(1);
/***********SPACE***********/
else return (【?】);
}
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:求k!(k〈13),所求阶乘的值作为函数值返回。
(要求使用递归)
------------------------------------------------*/
【程序填空】
---------------------------------------------------------
题目:下面程序的功能是用递归法求n!。
-------------------------------------------------------*/
#include
void main()
}
long fac(int n)
{
long f;
if(n<0)
printf("n<0,data error!");
else if(n==0,n==1)
f=1;
else
/***********SPACE***********/
f=【?】;
return(f);
}
答案:
======(答案1)======
long fac(int n)
{ if(n==1) return 1;
else
return(n+fun(n-1));
}
main()
{ int x;
scanf("%d",&x);
x=fun(x);
printf("%d\n",x);
}
执行程序时,给变量X输入10,程序的输出结果是().
A) 55
B) 54
C) 65
D) 45
答案:A
/********** End **********/
}
main()
{
long int sum;
printf("Sum of %d powers of integers from 1 to %d = ",K,N);
sum=fun(N,K);
printf("%ld\n",sum);
}
答案:----------------------
【程序填空】
---------------------------------------------------------
功能:通过函数的递归调用计算阶乘。
-------------------------------------------------------*/
#include
long power(int n)
scanf("%d",【?】);
y=power(n);
/***********SPACE***********/
printf("%d!=%ld\n",n,【?】);
}
答案:
======(答案1)======
power(n-1)*n
======(答案2)======
&n
======(答案3)======
str[i]=str[i]-32;
----------------------
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:编写函数fun求s=1^k+2^k +3^k + ......+N^k的值,
long power,sum=0;
int i,j;
for(i=1;i<=n;i++)
{ power=i;
for(j=1;j<k;j++)
power *= i;</k;j++)
sum += power;
}
return sum;
----------------------
/*-------------------------------------------------------
------------------------------------------------*/
#include "string.h"
#include
void change(char str[])
{
/**********Program**********/
/********** End **********/
B) C语言程序中,main函数是没有参数的
C)一个函数通过其他函数间接的调用了自身,这种情况也是一种递归调用
D)若要通过函数参数带回一个或多个返回值,则应使用按地址传送的参数结合方式
答案:B
有以下程序:
#include
fun(int n)
{ if(n==1|| n==2)return 2;
return n-fun(n-2);}
(1的K次方到N的K次方的累加和)。
要求:用for循环实现
------------------------------------------------*/
#define K 4
#define N 5
#include
long fun(int n,int k)
{
/**********Program**********/
/***********SPACE***********/
printf("1到%d累加和是:%d\n", n,【?】);
return 0;
}
int sum(int n)
{
/***********SPACE***********/
if(【?】)
return 1;
else
/***********SPACE***********/
题目:下面程序是用递归函数求1到n的累加和,请完善程序。
-------------------------------------------------------*/
#include
main()
{ int sum(int n);
int n;
printf("请输入一个整数n:");
scanf("%d", &n);
以下对C语言函数的有关描述中,正确的是().
A)在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B) C函数既可以嵌套定义又可以递归调用
C)函数必须有返回值,否则不能使用函数
D) C程序中有调用关系的所有函数必须放在同一个源程序文件中
答案:A
以下叙述中不正确的是().
A)一个C语言程序有且仅有一个main函数
main()
{printf("%d\n",fun(7));}
该程序运行后的输出结果是().
A) 1
B) 2
C) 3
D) 4
答案:C
A)既允许直接递归调用也允许间接递归调用
B)不允许直接递归调用也不允许间接递归调用
C)允许直接递归调用不允许间接递归调用
D)不允许直接递归调用允许间接递归调用
答案:A
若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是().
A)函数调用可以嵌套和递归
B)函数调用可以作为一个函数的实参
C)函数调用可以出现在表达式中
D)函数调用可以作为一个函数的形参
答案:D
在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则().
A)称为函数的直接递归调用
B)称为函数的间接递归调用
C)称为函数的循环调用
D) C语言中不允许这样的递归调用
答案:B
有以下程序
#include
int fun(int n)
}
答案:----------------------
if (k>0)
return(k*fun(k-1));
else if(k==0)
return 1L;
----------------------
/*-------------------------------------------------------
return【?】;
}
答案:
======(答案1)======
sum(n)
======(答案2)======
n==1
======(答案3)======
n+sum(n-1)
函数的【1】调用是一个函数直接或间接地调用它自身.
答案:
======(答案1)======
递归
函数的定义不可以嵌套,但函数的调用【1】嵌套.
答案:
======(答案1)======
可以
若有以下函数:
int fun(int x)
{ return (1+x*Байду номын сангаас); }
则语句printf(" %d\n",fun(fun(fun(fun( 1 )))) );的输出结果是【1】.
答案:
======(答案1)======
677
C语言中不可以嵌套的是().
A)函数调用
B)函数定义
C)循环语句
D)选择语句
答案:B
以下正确的描述是:在C语言程序中().
A)函数的定义可以嵌套,但函数的调用不可以嵌套
B)函数的定义不可以嵌套,但函数的调用可以嵌套
C)函数的定义和函数的调用均不可以嵌套
D)函数的定义和函数的调用均可以嵌套
答案:B
C语言规定,程序中各函数之间().
}
main()
{
void change();
char str[40];
gets(str);
change(str);
puts(str);
}
答案:----------------------
int i;
for(i=0;str[i]!='\0';i++)
if(str[i]>='a' && str[i]<='z')
答案:
======(答案1)======
fib(n)
======(答案2)======
return(1)
======(答案3)======
fib(n-1)+fib(n-2)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
======(答案2)======
fac(n)
======(答案3)======
fac(n-1)*n
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
{
/***********SPACE***********/
【?】;
int n;
long y;
printf("input an integer number:");
scanf("%d",&n);
/***********SPACE***********/
y=【?】;
printf("%d!=%ld\n",n,y);
{
long f;
if(n>1)
/***********SPACE***********/
f=【?】;
else
f=1;
return(f);
}
main()
{
int n;
long y;
printf("input a inteager number:\n");
/***********SPACE***********/
power(n)
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:将字符串中的小写字母转换为对应的大写字母,
其它字符不变。
要求:用for循环实现
#include
#include"conio.h"
long fun(int k)
{
/**********Program**********/
/********** End **********/
}
main()
{
int m;
printf("Enter m: ");
scanf("%d", &m);
printf("\nThe result is %ld\n", fun(m));