ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:20.32KB ,
资源ID:4872372      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4872372.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第三讲 函数理论题2.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第三讲 函数理论题2.docx

1、第三讲 函数理论题2第三讲 函数(理论题)1)P20连续输入一批学生的成绩,直到输入成绩的数量超过50个或者输入的成绩不是有效成绩(有效成绩为0100),将输入的有效成绩存入数组mark中,在数组中查找并输出最高分。函数getmax(array,n)在有n个元素的一维数组array中找出并返回最大值。运行示例:Enter marks: 90 80 77 65 -1Max = 90【程序】#include #define MAXNUM 50int getmax( (5) ) int k, max; (6) for(k = 1; k n; k+) if(max 0) printf(Max = %d

2、n, getmax( (8) ); else printf(No marks!n); 【供选择的答案】(5) A、int n; int array B、void C、int *array D、int array,int n(6) A、max = 0; B、; C、max = array0; D、max = arrayn; (7) A、k =0 & x = 100 B、k =0 & x MAXNUM & x =0 | x MAXNUM | x =0 | x = 100 (8) A、mark, k B、mark C、mark D、mark, n#include #define MAXNUM 50i

3、nt getmax( (5) ) int k, max; (6) for(k = 1; k n; k+) if(max 0) /*表示输入的数组元素不为空,就是有元素合格,否则可能全部输入元素都不合格*/printf(Max = %dn, getmax( (8) ); else printf(No marks!n); 【供选择的答案】(5) A、int n; int array B、void C、int *array D、int array,int n这个题中(5)和(8)要对比来看。根据题目中的“函数getmax(array,n)”推断此处的答案是D,注意函数调用的顺序。(6) A、max

4、= 0; B、; C、max = array0; D、max = arrayn;给max赋初值,为第一个元素,然后与后面的比较。(7) A、k =0 & x = 100 B、k =0 & x MAXNUM & x =0 | x MAXNUM | x =0 | x = 100注意:题目中给出的条件:输入成绩的数量超过50个或者输入的成绩不是有效成绩(有效成绩为0100)这是循环结束的条件,而要循环进行的条件是B这里注意:#define MAXNUM 50(8) A、mark, k B、mark C、mark D、mark, nMark是处理以后的数组,根据题目中的“函数getmax(array,

5、n)”推断此处的答案是A(n是形式参数,k是实际参数,所以选A)2)P29阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】#include main() int i, j, temp;int a33= 1,2,3,4,5,6,7,8,9;/*第3行*/ void f(int *x, int *y); for(i = 0; i 3; i+) for(j = 0; j 3; j+) if(i j) f(&aij, &aji); /* 第8行 */ for(i = 0; i 3; i+) for(j = 0; j 3; j+) printf(%2d, aij); vo

6、id f(int *x, int *y) int t; t = *x; *x = *y; *y = t; (17)程序的输出是 (17) 。 A、3 2 1 6 5 4 9 8 7 B、7 8 9 4 5 6 1 2 3 C、1 2 3 4 5 6 7 8 9 D、1 4 7 2 5 8 3 6 9 (18) 将第8行改为“f(&aij, &aji);”后,程序的输出是 (18) 。 A、3 2 1 6 5 4 9 8 7 B、7 8 9 4 5 6 1 2 3 C、1 2 3 4 5 6 7 8 9 D、1 4 7 2 5 8 3 6 9(19) 将第8行改为“if(i 2) f(&aij,

7、 &a2-ij);”后,程序的输出 是 (19) 。 A、3 2 1 6 5 4 9 8 7 B、7 8 9 4 5 6 1 2 3C、1 2 3 4 5 6 7 8 9 D、1 4 7 2 5 8 3 6 9(20) 将第8行改为“if(j 2) f(&aij, &ai2-j);”后,程序的输出 是(20) 。 A、3 2 1 6 5 4 9 8 7 B、7 8 9 4 5 6 1 2 3C、1 2 3 4 5 6 7 8 9 D、1 4 7 2 5 8 3 6 9阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】#include main() int i, j

8、, temp;int a33= 1,2,3,4,5,6,7,8,9;/*第3行*/ void f(int *x, int *y); for(i = 0; i 3; i+) for(j = 0; j 3; j+) if(i j) f(&aij, &aji); /* 第8行 */ for(i = 0; i 3; i+) for(j = 0; j 3; j+) printf(%2d, aij); void f(int *x, int *y) int t; t = *x; *x = *y; *y = t; 说明,函数f实现变量的交换。/*第3行*/定义的数组是1,2,34,5,67,8,9(17)程序

9、的输出是 (17) 。 A、3 2 1 6 5 4 9 8 7 B、7 8 9 4 5 6 1 2 3 C、1 2 3 4 5 6 7 8 9 D、1 4 7 2 5 8 3 6 9 /*第8行*/实现数组对角线左下与右上元素的交换。数组变为:1,4,72,5,83,6,9(18) 将第8行改为“f(&aij, &aji);”后,程序的输出是 (18) 。 A、3 2 1 6 5 4 9 8 7 B、7 8 9 4 5 6 1 2 3 C、1 2 3 4 5 6 7 8 9 D、1 4 7 2 5 8 3 6 9两次交换,又复原了!所以数组没有变化。(19) 将第8行改为“if(i 2) f(

10、&aij, &a2-ij);”后,程序的输出 是 (19) 。 A、3 2 1 6 5 4 9 8 7 B、7 8 9 4 5 6 1 2 3C、1 2 3 4 5 6 7 8 9 D、1 4 7 2 5 8 3 6 9数组变为:7,8,94,5,61,2,3(20) 将第8行改为“if(j 2) f(&aij, &ai2-j);”后,程序的输出 是 (20) 。 A、3 2 1 6 5 4 9 8 7 B、7 8 9 4 5 6 1 2 3C、1 2 3 4 5 6 7 8 9 D、1 4 7 2 5 8 3 6 93)P30#include main() int i, x1, x2; in

11、t a5=1,2,3,4,5; void f1(int x, int y), f2(int *x, int *y );x1 = x2 = 0;for(i = 1; i ax1) x1 = i; if(ai ax2) x2 = i; /*语句11*/f2(&ax1, &a0);for(i = 0; i 5; i+) printf(%2d, ai);printf(n);f1(ax2, a1);for(i = 0; i 5; i+) printf(%2d, ai);printf(n);f2(&ax2, &a4);for(i = 0; i 5; i+) printf(%2d, ai);printf(n

12、);f1(ax1, a3);for(i = 0; i 5; i+) printf(%2d, ai);printf(n);void f1(int x, int y) int t; t = x; x = y; y = t;void f2(int *x, int *y) int t; t = *x; *x = *y; *y = t;(21) 程序运行时,第1行输出 (21) 。A、1 2 3 4 5 B、2 1 3 4 5C、1 2 3 5 4 D、5 2 3 4 1 (22) 程序运行时,第2行输出 (22) 。A、2 1 3 4 5 B、5 2 3 4 1C、2 5 3 4 1 D、1 2 3

13、4 5 (23) 程序运行时,第3行输出 (23) 。A、1 2 3 5 4 B、2 5 3 1 4C、1 2 3 4 5 D、5 2 3 4 1 (24) 程序运行时,第4行输出 (24) 。A、5 2 3 1 4 B、1 2 3 4 5 C、1 2 3 5 4 D、5 2 3 4 1 #include main() int i, x1, x2; int a5=1,2,3,4,5; void f1(int x, int y), f2(int *x, int *y );x1 = x2 = 0;for(i = 1; i ax1) x1 = i; if(ai ax2) x2 = i; /*语句11

14、*/f2(&ax1, &a0);for(i = 0; i 5; i+) printf(%2d, ai);printf(n);f1(ax2, a1);for(i = 0; i 5; i+) printf(%2d, ai);printf(n);f2(&ax2, &a4);for(i = 0; i 5; i+) printf(%2d, ai);printf(n);f1(ax1, a3);for(i = 0; i 5; i+) printf(%2d, ai);printf(n);void f1(int x, int y) int t; t = x; x = y; y = t;void f2(int *

15、x, int *y) int t; t = *x; *x = *y; *y = t;数组a的原始数据为:a5=1,2,3,4,5也就是:a0=1, a1=2, a2=3, a3=4, a4=5语句7到语句11实现这样的功能:在a1=2, a2=3, a3=4, a4=5找出最大和最小的数,所以x1=4但是,没有比a0更小的数,所以x2一直没有变,x2=0注意:函数f1是传值方式调用,没有实现交换。详细看课本P138.注意:函数f2是传址方式调用,实现交换。详细看课本P139.(21) 程序运行时,第1行输出 (21) 。A、1 2 3 4 5 B、2 1 3 4 5C、1 2 3 5 4 D、

16、5 2 3 4 1 函数f2是传址方式调用,交换a4和a0这时:a5=5,2,3,4,1(22) 程序运行时,第2行输出 (22) 。A、2 1 3 4 5 B、5 2 3 4 1C、2 5 3 4 1 D、1 2 3 4 5 函数f1是传值方式调用,没有交换这时:a5=5,2,3,4,1(23) 程序运行时,第3行输出 (23) 。A、1 2 3 5 4 B、2 5 3 1 4C、1 2 3 4 5 D、5 2 3 4 1 函数f2是传址方式调用,交换a0和a4这时:a5=1,2,3,4,5(24) 程序运行时,第4行输出 (24) 。A、5 2 3 1 4 B、1 2 3 4 5 C、1

17、2 3 5 4 D、5 2 3 4 1 函数f1是传值方式调用,没有交换这时:a5=1,2,3,4,55)P23阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】#include int k = 1; /* 第2行 */void Fun();void main() int j; for(j = 0; j 2; j+) Fun(); /* 第8行 */ printf(k=%d, k); /* 第9行 */void Fun() int k = 1; /* 第11行 */ printf(k=%d, k); /* 第12行 */ k+; (17)程序的输出是 (17) 。

18、 A、k=1,k=2,k=3 B、k=1,k=2,k=1 C、k=1,k=1,k=2 D、k=1,k=1,k=1 (18)将第11行改为“static int k=1;”后,程序的输出是 (18) 。 A、k=1,k=1,k=1 B、k=1,k=1,k=2 C、k=1,k=2,k=1 D、k=1,k=2,k=3 (19) 将第11行改为“k=1;”后,程序的输出是 (19) 。 A、k=1,k=2,k=1 B、k=1,k=1,k=1 C、k=1,k=1,k=2 D、k=1,k=2,k=3 (20) 将第11行改为“;”后,程序的输出是 (20) 。 A、k=1,k=1,k=2 B、k=1,k=

19、2,k=3 C、k=1,k=1,k=1 D、k=1,k=2,k=1 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】#include int k = 1; /* 第2行 */void Fun();void main() int j; for(j = 0; j 2; j+) Fun(); /* 第8行 */ printf(k=%d, k); /* 第9行 */void Fun() int k = 1; /* 第11行 */ printf(k=%d, k); /* 第12行 */ k+; (17)程序的输出是 (17) 。 A、k=1,k=2,k=3 B、k=1,k

20、=2,k=1 C、k=1,k=1,k=2 D、k=1,k=1,k=1 函数fun()被主程序在第8行调用了2次。每次结果一样。第12行2次输出k=1。然后第9行1次输出k=1。(18)将第11行改为“static int k=1;”后,程序的输出是 (18) 。 A、k=1,k=1,k=1 B、k=1,k=1,k=2 C、k=1,k=2,k=1 D、k=1,k=2,k=3Static int k=1说明k是一个静态变量,其作用在函数fun()一直有效。当j=0第一次调用fun()时,第12行输出k=1;然后,K+,k=2,注意,此时K的值被保留。当j=1第2次调用fun()时,k=2保留,因此

21、第12行输出k=2;然后,函数fun()关闭,释放。因此在主函数中,k的值没有变化,第9行1次输出k=1。注意,在函数fun(),静态变量的值具有保留、继承的特点,但并不会影响主函数。关于静态变量的详细情况,可查看课本p145到p153。 (19) 将第11行改为“k=1;”后,程序的输出是 (19) 。 A、k=1,k=2,k=1 B、k=1,k=1,k=1 C、k=1,k=1,k=2 D、k=1,k=2,k=3当j=0第一次调用fun()时,第12行输出k=1;当j=1第2次调用fun()时,再次赋值k=1,因此第12行再次输出k=1;然后,执行,K+,k=2,函数fun()关闭。但是,因

22、为k是在第2行定义的全局变量,因此,k的值在全局有效,所以此时k=2,第8行1次输出k=2。本题的关键在于:原来第11行的int k = 1重新定义了变量k,因此在函数fun()中的K不再是第2行定义的全局变量,换句话说,这里的K可以当作一个其他变量,比如n。但是,当把int k = 1换成k = 1,则把一个变量定义语句换成了赋值语句,就不是新定义的变量(不能再当作一个其他变量,比如n),只是给了一个新值。关于全局变量的详细情况,可查看课本p145到p153。 (20) 将第11行改为“;”后,程序的输出是 (20) 。 A、k=1,k=1,k=2 B、k=1,k=2,k=3 C、k=1,k

23、=1,k=1 D、k=1,k=2,k=1 道理与上题相同,不过把一个变量定义语句换成了空语句。当j=0第一次调用fun()时,第12行输出k=1; 然后,执行,K+,k=2。当j=1第2次调用fun()时,因此第12行再次输出k=2; 然后,执行,K+,k=3。然后第9行1次输出k=3。4)P58int f1(int n) if(n = 1) return 1; else return f1(n-1) + n;int f2(int n) switch(n) case 1: case 2: return 1; default: return f2(n-1) + f2(n-2); void f3(

24、int n) printf(%d, n%10); if(n/10 !=0) f3(n/10);void f4(int n) if(n/10 != 0) f4(n/10); printf(%d, n%10); #include main() printf(%dn, f1(4); printf(%dn, f2(4); f3(123); printf(n); f4(123); printf(n);(17) 程序运行时,第1行输出 (17) 。 A. 10 B. 24 C. 6 D. 1 (18) 程序运行时,第2行输出 (18) 。 A. 1 B. 3 C. 2 D. 4(19) 程序运行时,第3行

25、输出 (19) 。 A. 123 B. 3 C. 321 D. 1(20) 程序运行时,第4行输出 (20) 。 A. 1 B. 123 C. 3 D. 321【程序】int f1(int n) if(n = 1) return 1; else return f1(n-1) + n;int f2(int n) switch(n) case 1: case 2: return 1; default: return f2(n-1) + f2(n-2); void f3(int n) printf(%d, n%10); if(n/10 !=0) f3(n/10);void f4(int n) if(

26、n/10 != 0) f4(n/10); printf(%d, n%10); #include main() printf(%dn, f1(4); printf(%dn, f2(4); f3(123); printf(n); f4(123); printf(n);(17) 程序运行时,第1行输出 (17) 。 A. 10 B. 24 C. 6 D. 1 f1(4)=4+f1(3)=4+(3+f1(2)= 4+(3+(2+f1(1)=4+3+2+1=10递归调用(18) 程序运行时,第2行输出 (18) 。 A. 1 B. 3 C. 2 D. 4f2(4)=f2(2)+f2(3)=1+(f2(1)+f2(2)=1+1+1=3(19) 程序运行时,第3行输出 (19) 。 A. 123

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1