大学网课搜题引擎
首页
学堂在线
C语言程序设计精髓
第七章 《盗梦空间》的逻辑:探寻递归的奥秘
题目详情
简答题
数学归纳法是递归的数学基础。
查看答案与解析
简答题
写出下面程序的运行结果#includestdio.h voidBin(intx) { if(x/20)Bin(x/2); printf(%d ,x%2); } intmain() { Bin(12); return0; A、1100 B、0011 C、6310 D、6311
简答题
函数Sum(int n)是用递归方法计算下面的公式,请补充程序中缺少的内容。 int Sum(int n) { if (n if (n == 1)_________________; else return ____________________; } A、第4行:return 1 第5行: n+Sum(n-1) B、第4行:return 0 第5行: Sum(n-1) C、第4行:return 1 第5行: Sum(n-1) D、第4行:return 0 第5行: Sum(n)
简答题
下列说法错误的是()。 A、变量的作用域决定了变量可以被访问的范围,而变量的存储类型决定了变量的生存期。 B、静态变量和全局变量都是在静态存储区中分配内存的,而自动变量是在动态存储区中分配内存的。 C、用extern声明变量为外部变量的时候,编译器是对其分配内存的。 D、静态局部变量和静态全局变量的生存期是相同的,但二者的作用域是不同的,而静态局部变量和自动变量的作用域都是局部的,但二者的生存期是不同的。
简答题
以下程序运行后的输出结果是 #include float Fun(int x,int y) { return(x+y); } int main() { int a=2,b=5,c=8; printf("%3.0f ",Fun((int)Fun(a+c,b),a-c)); return 0; } A、9 B、21 C、0 D、编辑出错
简答题
当递归调用是整个函数体中最后执行的语句且它的返回值不属于任何表达式的一部分(即在回归阶段不需要任何计算)时,这种递归调用就是尾递归。
简答题
下列说法正确的是 A、递归算法的执行过程可分为递推和回归两个阶段。在递推阶段,必须要有终止递归的情况。当满足递归终止条件时,即获得最简单情况的解以后,开始进入回归阶段,即递归返回阶段。 B、函数既可以嵌套定义,也可以嵌套调用。 C、局部变量与全局变量同名时,全局变量隐藏局部变量,即全局变量起作用,局部变量不起作用。 D、用extern声明变量为外部变量的时候,编译器是对其分配内存的。
简答题
递归算法的执行过程可分为递推和回归两个阶段。在递推阶段,必须要有终止递归的情况。当满足递归终止条件时,即获得最简单情况的解以后,开始进入回归阶段,即递归返回阶段。
简答题
下列说法错误的是()。 A、变量的作用域是指变量的作用范围,即在程序中可以被读写访问的区域,它取决于变量被定义的位置。 B、局部变量与全局变量同名时,全局变量隐藏局部变量,即全局变量起作用,局部变量不起作用。 C、形参也是局部变量,形参变量和实参变量的作用域是不同的,因此形参变量和实参变量同名时,二者互不干扰。 D、只要同名的变量出现在不同的作用域内,二者互不干扰,编译器有能力区分不同作用域中的同名变量
简答题
写出下面程序的运行结果。 #include int Square(int i) { return i * i; } int main(void) { int i = 0; i = Square(i); for ( ; i { static int i = 1; i += Square(i); printf("%d,", i); } printf("%d ", i); return 0; } A、2,6,42,3 B、2,2,2,3 C、2,2,3,3 D、2,3,4,3
简答题
请给出程序的运行结果。 #include int Fun(int m) { static int n = 0; m /= 2; m = m * 2; if (m) { n *= m; return(Fun(m - 2)); } else return n; } int main() { int a, i; for (i = 0; i { a = Fun(4 + i); printf("%d ", a); } return 0; } A、0 0 B、8 8 C、4 4 D、64 64
简答题
子函数Fun(char x , char y)的功能是对任意两个字符x和y,如果x为真,则函数返回y的值,否则返回x的值。若使以下程序运行后的输出结果是7,请补充完整空白处缺少的代码。 #include char Fun(char x , char y) { if(__________) return y; else return x; } int main( ) { char a='9',b='8',c='7'; printf("____",Fun(_______________)); return 0; } A、第4行: x 第11行:%c Fun(a,b),Fun(b,c) B、第4行: x=0 第11行:%d Fun(b,c),Fun(a,b) C、第4行: x==0 第11行:%c Fun(b,a),Fun(c,b) D、第4行: x!=0 第11行:%d Fun(c,b),Fun(b,a)
简答题
下列说法错误的是() A、函数既可以嵌套定义,也可以嵌套调用。 B、函数直接或间接调用自己,称为递归调用。 C、一个递归算法必须包含一般条件和基本条件两个基本要素。 D、基本条件是一个能控制递归过程结束的条件,是递归的出口,它本身不再使用递归的方式来定义。一般条件定义了递归关系,控制递归调用向着基本条件的方向转化。
简答题
程序运行后的输出结果是 #include int Fun(int n) { if (n==1) return 1; else return Fun(n-1)+1; } int main() { int i,j=0; for(i=1;i printf("%d ",j); return 0; } A、3 B、1 C、2 D、318
简答题
子函数Incre()的功能是,利用静态变量,使子函数的输出值能够随调用次数的增加依次为: 第1次调用,输出: 第2次调用,输出: 第3次调用,输出: ..... 在下面的程序中,对子函数Incre()进行了两次调用,若使程序的输出结果是: 2 6 请补充完整空白处缺少的代码。 #include int x=3; void Incre(); int main() { int i; for (i=1;_______;i++) Incre(); return 0; } void Incre() { ___________; x*=x+1; printf("%d ",x); } A、第7行: i 第13行: static int x=1 B、第7行: i 第13行: static int x=0 C、第7行: i 第13行: int x=1 D、第7行: i 第13行: int x=0
简答题
以下程序的输出结果是 #include int Func(); int i=10; int main() { int j=1; j=Func(); printf("%d,",j); j=Func(); printf("%d",j); return 0; } int Func() { int k=0; k=k+i; i=i+10; return(k); } A、10,20 B、0,0 C、10,10 D、20,20
简答题
下面函数是求阶乘的递归函数,请将程序补充完整。 long Fact(int n) { if (n if (n==1 || n==0) __________________; else ____________________; } A、第4行: return 1 第5行: return n*Fact(n-1) B、第4行: return 0 第5行: return n*Fact(n-1) C、第4行:return -1 第5行: return (n-1)*Fact(n) D、第4行:return 1 第5行: return Fact(n-1)
简答题
Y()是实现n层嵌套平方根计算的函数,其公式如下,请将程序补充完整。 double Y(double x, int n) { if (n == 0) return 0; else return (square(x +___________________)); } A、Y(x,n-1) B、Y(x,n) C、Y(x,n+1) D、Y(x,1)
简答题
子函数Fun(int a, int b)的功能是,对任意两个整数a和b,返回两者中的最大值。以下程序是通过调用子函数Fun(int a, int b),找到三个整数中的最大值。若程序运行后的输出结果是8,请补充完整空白处缺少的代码。 #include int Fun(int a, int b) { if(a>b) return_________; else return________; } int main() { int x=3, y=8, z=6, r; r=_______________; // 找到三个整数x,y,z中的最大值 printf("%d", r); return 0; } A、第4行: a 第5行: b 第11行: Fun(Fun(x,y),z) B、第4行: b 第5行: a 第11行: Fun(x,y,z) C、第4行: 1 第5行: 0 第11行: Fun(x,y,z) D、第4行: 0 第5行: 1 第11行: Fun(Fun(x,y),z)
简答题
根据最大公约数的如下3条性质,采用递归法编写计算最大公约数的函数Gcd(),在主函数中调用该函数计算并输出从键盘任意输入的两正整数的最大公约数。性质1 如果a>b,则a和b与a-b和b的最大公约数相同,即Gcd(a, b) = Gcd(a-b, b)性质2 如果b>a,则a和b与a和b-a的最大公约数相同,即Gcd(a, b) = Gcd(a, b-a)性质3 如果a=b,则a和b的最大公约数与a值和b值相同,即Gcd(a, b) = a = b代码如下,请补充程序中缺少的内容。 #include int Gcd(int a, int b); int main() { int a, b, c; printf("Input a,b:"); scanf("%d,%d", &a, &b); c = Gcd(a, b); if (_________) printf("Greatest Common Divisor of %d and %d is %d ", a, b, c); else printf("Input number should be positive! "); return 0; } int Gcd(int a, int b) { if (_______________) return -1; if (a == b) return __________; else if (a > b) return __________; else return ___________; } A、第9行: c!= -1 第18行: a 第21行: a第23行: Gcd(a - b, b) 第25行: Gcd(a, b - a) B、第9行: c== -1 第18行: a 第21行: a第23行: Gcd(a - b, b) 第25行: Gcd(a, b - a) C、第9行: c!= -1 第18行: a 第21行: b第23行: Gcd(a, b - a) 第25行: Gcd(a - b, b) D、第9行: c== -1 第18行: a 第21行: a第23行: Gcd(a, b - a) 第25行: Gcd(a - b, b)
简答题
全局变量破坏了函数的封装性,不能实现信息隐藏,依赖全局变量的函数很难在其他程序中复用,对于使用全局变量的程序维护也比较困难,因此建议尽量不用全局变量。
C语言程序设计精髓
章节列表
第一章 初识C语言从认识变量和常量开始
21
第二章 数字间的那些事儿,做点计算哈
15
第三章 从键盘中来,到键盘中,开始输入和输出啦
22
第四章 无处不在的抉择
23
期末考试
13
第五章 周而复始的循环之道
20
第六章 函数:分工与合作的艺术
15
第七章 《盗梦空间》的逻辑:探寻递归的奥秘
21
第八章 一堆数据来了,你准备好了吗?
13
第九章 指针:C语言世界中所向披靡的“金箍棒”
8
第十章 字符串:C语言世界中的大力水手
12
第十一章 指针的孪生兄弟
12
第十二章 海陆空齐上阵:又来了一堆数据
14
第十三章 原来内存也可以这么玩,我是指针我怕谁
8
第十四章 结构设计的艺术
5
第十五章 学会保存你的数据
11