计算机二级考试复习资料答案.docx_第1页
计算机二级考试复习资料答案.docx_第2页
计算机二级考试复习资料答案.docx_第3页
计算机二级考试复习资料答案.docx_第4页
计算机二级考试复习资料答案.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

参考答案及解析一、选择题1.答案:B【解析】一个自定义函数中可以没有返回值。如果函数不返回值,则应定义为void型,程序执行结束后自动返回到调用处。故选项A)、C)、D)错误。一个自定义函数可以根据不同的情况设置多条return语句,但函数的返回值必须只有一个,故选项B)正确。2.答案:C【解析】return语句中的表达式的值就是所求的函数值,此表达式值的类型必须与函数首部所说明的类型一致。如果类型不一致,则以函数值的类型为准,由系统自动进行转换。一个return语句只能返回一个值。3.答案:B【解析】函数调用的一般形式为:函数名(形参表)若函数无形参,调用形式为:函数名(),当所调用的函数用于求出某个值时,函数的调用可作为表达式出现在允许表达式出现的任何地方,本题中调用语句的参数个数为2个。4.答案:C【解析】题中变量w的定义为double型,函数fun2()的定义为int型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。5.答案:B【解析】这也是一道涉及到函数递归调用的题目,在主函数中当执行fun(2*a,fun(b,c)时,根据变量a,b,c的初值,上式转化为fun(8,fun(5,6),而fun(5,6)根据函数fun()的定义可知,其值等于5,所以就执行fun(8,5),其函数值等于6。6.答案:D【解析】第一次调用的是最内层的f(n),即f(1)返回值2。第二次调用中间的f(f(n),即f(2)返回值4。最后调用最外层的f(f(f(n),即f(4)返回值8,最后打印输出。7.答案:B【解析】 将a、b、c的值分别带入f(a,b)和f(a,c)中计算得:f(a,b)3,f(a,c)6,再计算f(3,6),算出d9。8.答案:C【解析】函数调用的一般形式为:9.答案:D【解析】本程序是一个递归函数,第一次实参为7,第二次为3,此时不满足条件,因为3/2结果为1,等于1而不大于1,所以跳过fun(x/2)语句,执行printf语句,即打印出3。然后向上返回到第一次调用打印出7。10.答案:B【解析】函数的功能是求数组所有元素的和。递归表示为a3+a2+a1+a0+f(t,0)=10。11.答案:B【解析】该题目考查函数参数传递以及if条件语句。当变量b为0时,将a的值返回给主调函数,因此a进行两次自减1后,将其值返回并输出。12.答案:C【解析】函数int f(int x)是一个递归函数调用,当x的值等于0或1时,函数值等于3,其他情况下yx2f(x2)。所以在主函数中执行语句zf(3)时,y3*3-f(3-2)=9-f(1)=6。13.答案:A【解析】本程序考查的是函数的递归调用,在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用,执行结果为1+2+3+4+5+6+7+8+9+10=55。14.答案:B【解析】在main函数中,对f(1)和f(2)的值进行累加。15.答案:A【解析】该题考查的是递归函数的调用,题中读fun函数进行了递归调用,第1次调用:fun(3)n=3 s=3-fun(2);第二次调用:fun(2)n=2 s=2 返回第一次调用后,s=3-2=1。16.答案:C【解析】 程序运行后,首先输出的是p的值,然后输出a的值。pd,得到p的值为d的初始值2;a的值不变,仍为1。17.答案:D【解析】在内存中,实参单元与形参单元是不同的单元。在C语言中,仅在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。故本题答案为D)。18.答案:C【解析】函数形参和实参分别占用不同的内存单元,改变形参的值不会影响对应实参的值,选项A)正确。指针类型的函数可以返回地址值,选项B)正确。在头文件stdio.h中,NULL被定义为void 型的指针,选项D)也正确。指针变量的值只能是存储单元地址,而不能是一个整数,选项C)错误。故本题答案为C)。19.答案:C【解析】如果没有指明函数值类型,则默认函数返回值的类型为int型。20.答案:D【解析】这道题目主要考查局部静态变量,在这个题目的fun()函数中定义了局部静态整型变量x,其初值等于1。而函数fun()执行一次的功能使变量x的值乘以2。在主函数中第一次执行for循环语句,变量s的值等于2,变量x的值等于2,第二次执行for循环语句,变量s的值等于8,变量x的值等于4,第三次执行for循环语句,变量s的值等于64,变量x的值等于8。21.答案:B【解析】本题目fun()函数中定义的变量x为静态局部变量,第一循环后x的值为2,s的值为3;第二次循环后x的值为3,s的值为6;第三次循环后x的值为4,s的值为10;第四次循环后x的值为5,s的值为15;第五次循环后x的值为6,s的值为21。22.答案:C【解析】x被声明为静态变量,第一次调用fun()后,x值为2,第二次调用时直接执行x*=2,值为4。23.答案:C【解析】 sf(a)表达式第一次调用f(n)函数时,f(n)函数运行结果为n4,a2,即s等于4;ssf(a)表达式第二次调用f(n)函数时,f(n)函数运行结果为n5,所以得到s值为9。24.答案:A【解析】在C语言中只有自动变量和寄存器变量在使用时才占用内存单元。所以正确答案为A)。25.答案:A【解析】本题考查的是全局变量、局部变量,以及局部静态变量的作用域问题。程序中定义了多个变量a,它们的类型以及作用域都不同。k的初值为0,首先调用函数f(3),返回值为,k的值变为,for循环第二次调用函数f(3),由于第一次调用f函数时静态变量的值由加变为了,这次返回值为,k的值变为13。跳出循环,k再加上全局变量a,其最终的值为14。故本题答案为A)。26.答案:C【解析】本题主要考查的是用二维数组首地址和下标来引用二维数组元素的方法。通过分析可知,程序中的双重循环定义了一个如下的二维数组:由于数组的下标是从0 开始的, 所以二维数组元素a i j 表示的是二维数组a的第i+1 行、第j+1 列对应位置的元素。27.答案:B【解析】由于在main()函数中,变量 i=4,所以就调用fun(4),则输出m=4 k=4。然后变量k增1等于5,变量i增1等于5,所以main()函数的printf(i=%d k=%dn,i,k);语句输出i=5 k=5。28.答案:D【解析】在整个程序运行期间,静态局部变量在内存的静态存储区中占据着永久的存储单元,即使退出函数以后,下次再进入该函数时,静态局部变量仍使用原来的存储单元,静态局部变量的初值是在编译的时候赋予的,在程序执行期间不再赋予初值。本题由于连续三次调用函数fun(),三次对静态变量x进行操作,x的值应依次为6,7,8。29.答案:D【解析】函数的静态局部变量在编译时就赋初值,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋值,而只是保留上次函数调用结束时的值。30.答案:A【解析】auto变量:无static声明的局部变量。用auto作存储类别的声明时,可以不写auto,存储类别隐含确定为auto(自动存储类别),是动态存储方式。大多数变量是自动变量。用static声明的局部变量是静态局部变量。函数调用结束后静态局部变量占据的内存存储单元空间不释放,局部变量保留原值,下次调用时可以继续使用该值。用extern声明外部变量,外部变量即全局变量,可以用extern声明来改变全局变量的作用域,实际上,关键字auto 可以省略,auto不写则隐含确定为自动存储类别,属于动态存储方式。31.答案:C【解析】内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再次调用该函数时,以前调用时的数值仍然保留着。Fun(a,5)的值是15,再次调用后sum=15,所以Fun(b,4)=45,s=45+15=60。32.答案:C【解析】 static(静态局部变量):有时我们希望函数中局部变量的值在函数调用结束后不消失而保留原值,这时就将局部变量指定为静态局部变量,如果定义静态局部变量时不赋值,则编译时自动赋初值0(对数据型变量)或空字符(对字符变量)。33.答案:A【解析】主函数中给数组C元素赋值1,2,9,0。第一个for循环语句中调用fun函数,该函数功能是交换变量的数值,注意循环变量i的增量。第二个for循环语句将数组C中元素的值进行输出。34.答案:D【解析】fun函数的功能是将数组a中第一个元素和第五个元素数值对调,第二个和第四个元素数值对调。主函数的功能是将数组a中符合条件的元素输出,条件由循环语句中循环变量i决定。35.答案:A【解析】本题考查的是函数调用时的参数传递问题。程序在调用函数f时,传给函数f的参数只是结构变量c在栈中的一个复制,函数f所做的所有操作只是针对这个数据复制进行的修改,这些都不会影响变量c的值。36.答案:B【解析】该题目中fun函数的功能是将二维数组a中符合条件的值赋给一维数组的符合条件的元素。主函数的功能是将符合条件的一维数组的元素进行输出。二、填空题1.答案:func()| m+|【解析】 第一空为函数说明语句,其格式为:函数标志符#函数名。第二空中的m作为计数器,每读一个字符时加1。2.答案:1 3 6|【解析】 依次执行fun(6),fun(3),fun(1),当执行fun(6)时要调用fun(3),执行fun(3)时要调用fun(1),所以输出的结果为1 3 6。3.答案:k=5|【解析】本题主要考查了函数的递归调用方法。g=0, g=1或g=2是递归的终止条件,然后用回代的方法从一个已知值推出下一个值,直到计算出最终结果。4.答案:11|【解析】此题涉及函数的调用和if语句。程序先执行第二个if语句,然后再执行第一个if语句,最后用return返回数值。5.答案:i|【解析】通过函数中语句 return xk; 可知xk表示的是该一维数组中最小的值,所以当xi小于xk所代表的数值后应将i变量赋给k变量,使得xk表示当前值较小的那个数据。6.答案:!=|return j|【解析】本题程序的流程是:让i,j都从1开始,其中j用于控制删除后剩下的数中的下标,i用于搜索原数组中的元素。j始终是新数组已有元素中最后一个元素的下一个元素的下标,所以if()中的条件是aj-1!=ai,其中aj-1就是新数组中的最后一个元素,若条件成立则表示出现了不同的值,所以ai要留到新数组中。注本题中i、j的初值都要从1开始,该算法只能用于数组已排序的题目中。7.答案:x0|x0|【解析】函数f( )通过for循环逐个比较数组x中的元素,循环结束后,p0和p1分别表示最大值和最小值在数组中的下标位置,然后按照题意将最大值xp0和数组的最后一个元素xn-1交换位置,再将最小值xp1和第一个元素 (x0)进行交换,所以空白处应该填入x0。 8.答案:3025|【解析】 fun(c)调用函数fun(b),函数执行结果为aab102030;调用完函数后,主函数继续执行,输出结果aac52025。9.答案:15|【解析】static关键字用来声明静态局部变量,静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序运行期间不释放变量的值。10.答案:0,2,4,|【解析】本题主要考查for循环语句的使用以及静态局部变量的特点。11.答案:16|【解析】 主函数中,通过funl()函数将a值传递给x,但没有把形参x的值返回,此时变量a的值并没有发生变化,所以输出a.num的值为16。12.答案:getchar()|【解析】题中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论