首页 > 全部 > 二级C语言 > 国家二级C语言(函数和数组)机试模拟试卷15

国家二级C语言(函数和数组)机试模拟试卷15

本单篇文档共11443字,内容预览3600字,预览为有答案版,源文件无水印,下载后包含无答案空白卷版和有答案版,同时也有计算机类NCRE全国计算机二级整科真题模拟题,讲义课件,思维导图,易错高频题等下载。
二级C语言 章节练习 5336人下载
价格: 2.00 原价:¥9.00
收藏

国家二级C语言(函数和数组)机试模拟试卷15

选择题

1.有以下程序

#include <stdio.h>

int fun(int n) {

int a;

if( n==1 ) return 1;

a = n + fun( n-1);

return ( a ); }

main() {

printf( \\(C)

A. 14

B. 10

C. 15

D. 9

解析:函数fun为递归定义的函数,当调用fun(5)–>5+fun(4)–>5+4+fun(3)–>5+4+3+fun(2)–>5+4+3+2+fun(1),因此最后的结果为15。

2.有以下程序

#include <stdio.h>

int fun( int a, int b) {

return a+b; }

main() {

int x=6, y=7, z=8, r ;

r = fun ( fun(x,y), z– );

printf (\\(B)

A. 15

B. 21

C. 20

D. 31

解析:本题考查了函数的调用,函数fun功能为求两个数据的和。主函数中表达式r = fun ( fun(x,y), z– ),首先计算内层调用fun(x,y),计算结果为13,然后外层调用fun(13,8),结果为21。

3.以下选项中函数形参不是指针的是

A

解析:C语言中形参数组是指针变量,其数组中元素的个数由传递的实参数组决定,因此可以在定义的时候,不给出元素个数的说明,因此选项B和D形参均为指针变量,选项A的定义在C语言中不存在的。

4.设有如下函数定义

int fun(int k)

{

if(k<1) return 0;

else if(k==1) return 1;

else return fun(k-1)+1;

}

若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是(C)

A. 2

B. 4

C. 3

D. 5

解析:这道题目考查了函数的递归调用,当执行调用语句n=fun(3)时,返回n=fun(2)+1,再执行fun(2),返回n=fun(1)+1+1,而fun(1)等于1,所以最后n的值等于3。而函数fun总共被调用了3次。即fun(3),fun(2),fun(1)。

5.有以下程序(strcat函数用以连接两个字符串)

#include <stdio.h>

#include <string.h >

main()

{ char a[20]=\\(B)

A. ABCDE\\\\0FG\\\\0IJK

B. ABCDIJK

C. IJK

D. EFGIJK

解析:在字符串中字符’\\\\0’表示字符串的结束标志,所以字符串a和b相连接的结果为ABCDIJK。

6.有以下程序

int fun(int n)

{ if(n= =1)return 1;

else

return(n+fun(n-1));

}

main( )

{ int x;

scanf(\\(D)

A. 54

B. 65

C. 45

D. 55

解析:在C语言中函数可以递归调用,即直接或间接地自己调用自己。本题在函数int fun(int n)的定义中又出现了对函数fun的调用,所以函数fun是递归函数。因而在主函数中调用x=fun(x)时,当输入10赋给变量x时,递归调用的过程为:

fun(10)=10+fun(9)=10+9+fun(8)=10+9++8+fun(7)=10+9++8+7+fun(6)

=10+9++8+7+6+fun(6)=10+9++8+7+6+5+fun(4)=10+9++8+7+6+5+4+fun(3)

=10+9++8+7+6+5+4+3+fun(2)=10+9++8+7+6+5+4+3+2+fun(1)

=10+9++8+7+6+5+4+3+2+1=55

7.有以下程序

fun(int x)

{ int p;

if(x= =0‖x= =1) return(3);

p=x-fun(x-2);

return p;

}

main( )

{ printf(\\(D)

A. 3

B. 7

C. 0

D. 2

解析:因为在函数fun(int x)中,如果参数x等于0或1时,返回值3。否则p=x-fun(x-2)这是一个递归函数,所以在主函数调用fun(7)时,其过程为:

“fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1)))=7-(5-(3-3))=7-5=2”, 所以最后的输出结果为2。

8.若有以下程序

int f(int a[], int n)

{

if (n > 1)

{

int t; t=f(a, n-1);

return t > a[n-1] ? t : a[n-1]; }

else return a[0]; }

main()

{

int a[] = {8,2,9,1,3,6,4,7,5};

printf(\\(A)

A. 9

B. 1

C. 8

D. 5

解析:主函数中调用f(a,9),递归函数的调用过程如下:

f(a,9)?f(a,8)?f(a,7) ?f(a,6) ?f(a,5) ?f(a,4) ?f(a,3) ?f(a,2) ?f(a,1),f(a,1)得到返回值为a[0],值为8,递归过程开始回归,回归过程描述如下:

8>a[1],返回8?8>a[2]不成立,返回a[2]的值为9……因此函数f的主要功能为计算数组中的最大值。主函数中输出最大值为9。

9.以下叙述中正确的是(A)

A. 只有全局变量才有自己的作用域,函数中的局部变量没有作用域

B. 只要是用户定义的标识符,都有一个有效的作用域

C. 只有在函数内部定义的变量才是局部变量

D. 局部变量不能被说明为static

解析:在函数内定义的变量是局部变量,而在函数之外定义的变量称为外部变量,也是全局变量。全局变量可以为源文件中其他函数所共用,其作用域为从定义变量的位置开始到源文件结束。因此只要用户定义的标识符,全部都有作用域。局部变量可以说明为auto、register以及static。

10.以下叙述中正确的是(C)

A. 对于变量而言,“定义”和“说明”这两个词实际上是同一个意思

B. 在复合语句中不能定义变量

C. 全局变量的存储类别可以是静态类

D. 函数的形式参数不属于局部变量

解析:用static说明符说明全局变量时,此变量可称作

本文档预览:3600字符,共11443字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载

剩余未完,查看全文
收藏
国家二级C语言(函数和数组)机试模拟试卷15

推荐资源

客服

扫码添加客服微信

热线

官方客服

如遇问题,请联系客服为您解决

电话客服:

客服微信:pujinet

工作时间:9:00-18:00,节假日休息

公众号

扫码关注微信公众号