[计算机类试卷]国家二级(C语言)笔试模拟试卷20及答案与解析.doc

上传人:boatfragile160 文档编号:503374 上传时间:2018-11-29 格式:DOC 页数:32 大小:100.50KB
下载 相关 举报
[计算机类试卷]国家二级(C语言)笔试模拟试卷20及答案与解析.doc_第1页
第1页 / 共32页
[计算机类试卷]国家二级(C语言)笔试模拟试卷20及答案与解析.doc_第2页
第2页 / 共32页
[计算机类试卷]国家二级(C语言)笔试模拟试卷20及答案与解析.doc_第3页
第3页 / 共32页
[计算机类试卷]国家二级(C语言)笔试模拟试卷20及答案与解析.doc_第4页
第4页 / 共32页
[计算机类试卷]国家二级(C语言)笔试模拟试卷20及答案与解析.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、国家二级( C语言)笔试模拟试卷 20及答案与解析 1 下列选项中不属于算法的特性的是 ( A)确定性 ( B)可行性 ( C)有输出 ( D)无穷性 2 下列叙述中正确的是 ( A)线性表是线性结构 ( B)栈与队列是非线性结构 ( C)线性链表是非线性结构 ( D)二叉树是线性结构 3 设有下列二叉树: 对此二叉树中序遍历的结果为 ( A) ABCDEF ( B) DAECF ( C) BDAECF ( D) DBEFCA 4 结构化程序设计主要强调的是 ( A)程序的规模 ( B)程序的易读性 ( C)程序的执行效率 ( D)程序的可移植性 5 在面向对象设计中,对象有很多基本特点,其中

2、 “从外面看只能看到对象的外部特性,而对象的内部对外是不可见的 ”这一性质指的是对象的 ( A)分类性 ( B)标识惟一性 ( C)多态性 ( D)封装性 6 用黑盒技术测试用例的方法之一为 ( A)因果图 ( B)逻辑覆盖 ( C)循环覆盖 ( D)基本路径测试 7 在进行单元测试时,常用的方法是 ( A)采用白盒测试,辅之以黑盒测试 ( B)采用黑盒测试,辅之以白盒测试 ( C)只使用白盒测试 ( D)只 使用黑盒测试 8 下面四个选项中,不属于数据库管理系统提供的数据语言的是 ( A)数据定义语言 ( B)数据查询语言 ( C)数据操纵语言 ( D)数据控制语言 9 在关系数据库模型中,

3、通常可以把 ( )称为属性,其值称为属性值。 ( A)记录 ( B)基本表 ( C)模式 ( D)字段 10 实体联系模型中实体与实体之间的联系不可能是 ( A)一对一 ( B)多对多 ( C)一对多 ( D)对零 11 下列叙述中正确的是 ( A) C语言中既有逻辑类型也有集合类型 ( B) C语言中没有逻辑类 型但有集合类型 ( C) C语言中有逻辑类型但没有集合类别 ( D) C语言中既没有逻辑类型也没有集合类型 12 若以下选项中的变量已正确定义,则正确的赋值语句足 ( A) x1=26.8%3; ( B) 1+2=x2 ( C) x3=0x12; ( D) x4=1+2=3; 13

4、有以下程序 main() int m=3 n=4, X; X=-m+; x=x+8/+n; printf(“%dn“,x); 程序运行后的输出结果是 ( A) 3 ( B) 5 ( C) -1 ( D) -2 14 设有如下关系表: 则下列操作中正确的是 ( A) T=RS ( B) T=R S ( C) T=RS ( D) T=R/S 15 设有定义: longx -123456L;,则以下能够正确输出变量 x值的语句是 ( A) printf(“x=%dn“,x); ( B) printf(“x=%1dn“,x); ( C) printf(“x=%8dLn“, x); ( D) print

5、f(“x=%LDn“,x); 16 有以下程序 main() int i; for(i=0;i 3;i+) switch(i) case 0: prinft(“%d“,i); case 2: prinft(“%d“,i); default:prinft(“%d“,i); 程序运行后的输出结果是 ( A) 22111 ( B) 21021 ( C) 122 ( D) 12 17 有以下程序 main() int i=1, j=l,k=2; if( (j+|k+) 执行后输出的结果是 ( A) 1,1,2 ( B) 2,2,1 ( C) 2,2,2 ( D) 2,2,3 18 有一函数 以下程序段

6、中不能根据 x值正确计算出 y值的是 ( A) if(x 0) y=1; else if(x=0) y=0; else y=-1; ( B) y=0; if(x 0) y=1; else if(x 0) y=-l; ( C) y=0; if(x =0); if(x 0) y=1; else y=-1; ( D) if(x =0) if(x 0) y=1; else y=0; else y=-l; 19 以下叙述中正确的是 ( A)调用 printf函数时,必须要有输出项 ( B)使用 putchar函数时,必须在之前包含头文件 stdio.h ( C)在 C语言中,整数可以以十二进制、八进制或

7、十六进制的形式输出 ( D)调用 getchar函数读入字符时,可以从键盘上输入字符所对应的 ASCII码 20 以下关于函数的叙述中正确的是 ( A)每个函数都可以被其他函数调用 (包括 main函数 ) ( B)每个函数都可以被单独编译 ( C)每个函数都可以单独运行 ( D)在一个函数内部可以定义另一个函数 21 以下程序段中与语句 k=a b?(b c?1:0):0;功能等价的是 ( )。 ( A) if(a B) else k=0; ( B) if(a B) (b C) k=1; else k=0; ( C) if(a =B) k=0; else if(b =e) k=1; ( D)

8、 if(a B) k=1; else if(b C) k=1; else k=0; 22 有以下程序: #include stdio.h main() int y=9; for( ; y 0; y-) if(y%3=0) printf(“%d“, -y); 程序的运行结果是 ( )。 ( A) 741 ( B) 963 ( C) 852 ( D) 875421 23 已定义以下函数; int fun(int *p) return*p; fun函数返回值是 ( )。 ( A)不确定的值 ( B)一个整数 ( C)形参 p中存放的值 ( D)形参 p的地址值 24 以下程序的输出结果是 ( )。

9、main() int a=5,b=4,c=6,d; printf(“%dn“,d=a b?(a c?a:C) :(B) ); ( A) 5 ( B) 4 ( C) 6 ( D)不确定 25 有以下程序: mam() int i=10,j=1; printf(“%d,%dn“,i-,+j); 执行后输出的结果是 ( )。 ( A) 9,2 ( B) 10,2 ( C) 9,1 ( D) 10,1 26 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是 ( )。 ( A)函数调用可以作为独立的语句存在 ( B)函数调用可以作为一个函数的实参 ( C)函数调用可以出现在表达式中 ( D)

10、函数调用可以作为一个函数的形参 27 有以下函数定义: void fun(int n, doub x) 若以下选项中的变量都已正确定义并赋值,则对函数 fun的正确调用语句是 ( )。 ( A) fun(int y,double m); ( B) k=fun(10,12.5); ( C) fun(x,n); ( D) void fum(n,x); 28 有以下程序: fun(int x) int p; if(x=0x 1)return(3); p=x-fun(x-2); return p; main() printf(“%dn“,fun(7); 执行后的输出结果是 ( )。 ( A) 7 (

11、B) 3 ( C) 2 ( D) 0 29 有以下程序: main() int a33,*p.i; p=i9;i+)pi=i; for(i=0;i 3;i+)printf(“%d“,a1i); 程序运行后的输出结果是 ( )。 ( A) 0 1 2 ( B) 1 2 3 ( C) 2 3 4 ( D) 3 4 5 30 设函数 fun的定义形式为 void fun(char ch, float x) 则以下对函数 fun的调用语句中,正确的是 ( )。 ( A) fun(“abc“,3.0); ( B) t=fun(D,16.5); ( C) fun(65,2.8); ( D) fun(32,

12、32); 31 若有定义; int w35;,则以下不能正确表示该数组元素的表达式是 ( )。 ( A) *(*w+3) ( B) *(w+1)4 ( C) *(*(w+1) ( D) *(i 6;i+) bi*=2; main() int a10=1,2,3,4,5,6,7,8,9,10,i; f(A) ; for(i=0;i 10;i+) printf(“%d,“,ai); 程序运行后的输出结果是 ( )。 ( A) 1,2,3,4,5,6,7,8,9,10, ( B) 1,2,6,8,10,12,7,8,9,10, ( C) 1,2,3,4,10,12,14,16,9,10, ( D)

13、1,2,6,8,10,12,14,16,9,10, 33 有以下程序: int fun1(double A) return a*=a; int fun2(double x,double y) double a=0,b=0; a=fun1(x);b=funl(y); return(int)(a+B) ; main() double w; w=fun2(1.1,2.0); 程序执行后变量 w中的值是 ( )。 ( A) 5.21 ( B) 5 ( C) 5 ( D) 0 34 以下能正确定义一维数组的选项是 ( )。 ( A) int num; ( B) #define N 100 int num

14、N; ( C) int num0100; ( D) int N=100; int numN; 35 有以下程序: #defme P 3 void P(int x)return(p*x*x); main() pritnf(“%dn“,F(3+5); 程序运行后的输出结果是 ( )。 ( A) 192 ( B) 29 ( C) 25 ( D)编译出错 36 有以下程序: mam() char s=“ABCD“,*p; for( p=s+1;ps+4;p+)printf(“%sn“,p); 程序运行后的输出结果是 ( )。 ( A) ABCD BCD D ( B) A B C D ( C) B C

15、D ( D) BCD CD D 37 有以下程序: void fun1(char*p) char *q; q=p; while(*q!=0) (*q)+; q+; main() char a=“Program“),*p; p= fun1(p) printf(“%sn“,A) ; 程序执行后的输出结果是 ( )。 ( A) Prohsbn ( B) Prphsbn ( C) Progsbn ( D) Program 38 有以下程序: #include studio.h #defme F(X,Y) (X)*(Y) main() int a=3, b=4; printf(“%dn“,F(a+,b+

16、); 程 序运行后的输出结果是( )。 ( A) 12 ( B) 15 ( C) 16 ( D) 20 39 以下语句或语句组中,能正确进行字符串赋值的是 ( )。 ( A) char *sp; *sp=“right!“; ( B) char s10; s=“right!“; ( C) char s10; *s=“right!“; ( D) char *sp=“right!“; 40 若有定义 “int*p3;“,则以下叙述中正确的是 ( )。 ( A)定义了一个基类型为 int的指针变量 p,该变量具 有 3个指针 ( B)定义了一个指针数组 p,该数组含有 3个元素,每个元素都是基类型为

17、int的指针 ( C)定义了 个名为 *p的整型数组,该数组含有 3个 int类型元素 ( D)定义了一个可指向一维数组的指针变量 p,所指一维数组应具有 3个 int类型元素 41 有以下程序: int fa(int x) return x*x; int fb(int x) return x*x*x; int f(int(*f1)(),int(*f2)(),int x) return f2(x)-f1(x); main() int i; i=f(fa,fb,2);printf(“%dn“,i); 程序运行后的输出结果是 ( )。 ( A) 1 2 6 8 ( B) 8 6 2 1 ( C)

18、8 1 6 2 ( D) 8 6 1 2 42 有以下程序: main() int a3=1,2,3,4,5,0,(*pa)3,i; pa=a; for(i=0;i 3;i+) if(i 2) pa1i=pa1i-1; else pa1i=1; printf(“%dn“,a01+a11+a12); 执行后输出结果是 ( )。 ( A) 7 ( B) 6 ( C) 8 ( D)无确定值 43 有以下函数: fun(char *a, char *b) while(*a!=0) b+; return(*a-*b); 该函数的功能是 ( )。 ( A)计算 a和 b所指字符串的长度之差 ( B)将 b

19、所指字符串复制到 a所指字符串中 ( C)将 b所指字符串连接到 a所指字符串后面 ( D)比较 a和 b所指字符串的大小 44 有以下程序: void fun(int *a,int i,int j) int t; if(i j) t=ai;ai=aj;aj=t; i+; j-; fun(a,ij); main() int x=2,6,1,8,i; fun(x,0,3); for(i=0;i 4;i+) printf(“%2d“,xi); printf(“n); 程序运行后的输出结果是 ( )。 ( A) 1 2 6 8 ( B) 8 6 2 1 ( C) 8 1 6 2 ( D) 8 6 1

20、 2 45 以下程序的输出结果是 ( )。 #include stdio.h #include string.h mam() char b18=“abcdefg“,b28,*pb=b1+3; while(-pb =b1) strcpy(b2,pB) ; printf(“%dn“,strlen(b2); ( A) 8 ( B) 3 ( C) 1 ( D) 7 46 有以下程序: main() int x=3,y=2,z=1; printf(“%dn“,x/y ( B) scanf(“%st“, ( C) scanf(“%c“, ( D) scanf(“%c“, 48 有以下程序: main()

21、unsigned char a,b,c; a=0x3;b=a0x8;c=b1; printf(“%d%dn“,b,C) ; 程序运行后的输出结果是 ( )。 ( A) -11 12 ( B) -19 ( C) 12 24 ( D) 11 22 49 以下与函数 fseek(fp,0L,SEEK_SE乃有相同作用的是 ( )。 ( A) feof(fp) ( B) ftell(fp) ( C) fgetc(fp) ( D) rewind(fp) 50 设有以下说明语句: typedef struet int n; char ch8; PER; 则下面叙述中正确的是 ( )。 ( A) PER是结

22、构体变量名 ( B) PER是结构体类型名 ( C) typedef struct是结构体类型 ( D) struct是结构体类型名 51 实现算法所需的存储单元多少和算法的工作量大小分别为算法的【 】。 52 数据结构包括数据的逻辑结构、数据的【 】以及对数据的操作运算。 53 一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【 】。 54 面向对象的模型中,最基本的概念是对象和【 】。 55 软件维护活动包括以下几类:改正性维护、适应性维护、【 】维护和预防性维护 o 56 下面程序的输出是【 】。 main() int arr10,i,k=0; for(i=0;

23、i 10;i+) arri=i; for(i=1;i 4;i+) k+=arri+i; printf(“%dn“k); 57 若 a=10, b=20,则表达式 !(a b)的值是【 】。 58 有以下程序 int fa(int x)return x*x; int fb(int x) return x*x*x; int f(ing(*f1)(),int (*f2)(),int x) return f2(x)-f1(x); main() int i;i=f(fa,fb,2),printf(“%dn“,i); 程序运行后,输出结果是【 】。 59 下面程序的输出是【 】。 main() enum

24、emem1=3,em2=1,em3; char*aa=“AA“m, “BB“,“CC:,“DD“; printf(“%s%s%sn,aaem1,aaem2,aaem3); 60 下列程序的输出结果是【 】。 int t(int x,int y,int cp,int dp) cp=x*x+y*y; dp=x*x-y*y; main() int a=4,b=3,c=5,d=6; t(a,b,c,d); printf(“%d%dn“,c,d); 61 有以下定义语句,则 sizeof(a)的值是【 】,而 sizeof(a.share)的值是【 】。 struct date int day; int

25、 mouth; int year, union int share1; float share2; share; a; 62 下述函数用于统计一行字符中的单词个数,单词之间用空格分隔。 word_num(str char str; int i,num=0,word=0; for(i=0; stri!=【 】 ;i+) if(【 】 =“)word=0 else if(word=0) word=1; 【 】 ; return(num); 国家二级( C语言)笔试模拟试卷 20答案与解析 1 【正确答案】 D 【试题解析】 一个算法必须具有五个特性,即有穷性、确定性、可行性,有输入、有输出其中有穷

26、性是指算法必须总是在执行完有穷步之后结束,而且每步都在有穷时间内完成。 D选项不是算法的特性。 2 【正确答案】 A 【试题解析】 所谓的线性结构是指:如果一个非空的数据结构满足下列两个条件,即 1)有且只有一个 根结点; 2)每一个结点最多有一个前件,也最多有一个后件所以同时满足两个条件的有队列,线性表、栈,而二叉树的结点可能存在两个后件,不是线性结构。正确答案为 A。 3 【正确答案】 C 【试题解析】 叉树的遍历分为先序、中序、后序三种不同方式。本题要求中序遍历,其遍历顺序应该为:中序遍历左子树 -,访问根结点 -中序遍历右子树按照定义, 中序遍历序列是 BDAECF,故答案为 B。 4

27、 【正确答案】 B 【试题解析】 按结构化程序设计方法设计出的程序具有明显的优点,即程序易于理解、使用和维护 ,便于控制、降低程序的复杂性,便于验证程序的正确性,程序清晰易读,可理解性好。所以答案为 B。 5 【正确答案】 D 【试题解析】 从外面看只能看到对象的外部特性,而对象的内部,即处理能力的实行和内部状态,指的是对象的封装性。 6 【正确答案】 A 【试题解析】 黑盒测试主要方法有等价值划分法、边界值分析法,错误推测法、因果图法等白盒测试的主要方法有逻辑覆盖、基本路径测试循环覆盖等。只有A属于黑盒测试。 7 【正确答案】 A 【试题解析】 白盒测试是测试程序内部逻辑结构,黑盒测 试只依

28、据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。从程序内部的逻辑结构对系统进行测试才是测试的根本,更容易发现和解决程序中的问题,因此单元测试时应该以白盒测试为主,而黑盒测试为辅。 8 【正确答案】 B 【试题解析】 通常数据库管理系统提供的数据语言有数据定义语言、数据操纵语言和数据控制语言。其中数据操纵语言负责数据的操纵,包括查询及增、删,改等操作。所以查询语言属于数据操纵语言的一部分。 9 【正确答案】 D 【试题解析】 数据库表中字段转化为属性,把记录的类型转化为关 系模式。 10 【正确答案】 D 【试题解析】 实体联系模型中实体与实体之间的联系有一对一 (1:1),一对多戌

29、多对一 (1:m或 m:1),多对多 (m:n)其中一对一是最常用的关系。 11 【正确答案】 D 【试题解析】 本题考核的知识点是 c语言数据类型在 C语言中没有逻辑类型,逻辑类型用整型来表示,故选项 A和选项 C不正确; C语言中没有集合类型,故选项 B不正确。所以, D选项为所选。 12 【正确答案】 C 【试题解析】 本题考核的知识点是 C语言中对变量赋值的应用。赋值操作由赋值运算符 “=”来完成,一般形式为变量:表达式,赋值的方向为由右向左,即将“; ”右侧表达式的值赋给 “=”左侧的变量,执行步骤是先计算再赋值。选项 A中运算符 “%”的运算对象必须为整数,而选项 A中 26.8不

30、为整数,故选项 A不正确;选项 B将一个变量赋值给一个表达式,这在 C语言中是不允许的,故选项 B不正确;选项 D中也是将一个常量 3赋值给一个表达式,故选项 D不正确;所以, 4个选项中选项 C符合题意。 13 【正确答案】 D 【试题解析】 本题考核的知识点是运算符的优先级。主函数中首先定义了整型变量 m、 n和 x,并给 m和 n赋初值为 3和 4,接着执行两条赋值语句,第一条 x=-m+等价于 x=-(m+),其值即为 -3,第二条 x=x+8/+n等价于 X=X+8/(+n),即为 x=-3+8/5=-2,因此最后输出 x的值为 -2。所以, 4个选项中选项 D符合题意。 14 【正

31、确答案】 B 【试题解析】 选项 A、 B、 C分别进行交运算、并运算,笛卡尔积运算,选项 D不是关系运算。 T由属于关系 R以及关系 S的元组组成,简单来说,就是 s和 R的元组之和, 是并运算,选项 B正确。 15 【正确答案】 B 【试题解析】 本题考查的知识点是输出语句 printf()的基本用法。 x为一个长整型的变量,而且是一个十进制的数,它的输出控制符是 “%1d”,所以排除选项 A和选项 C;由于 C语言中是区分大小写的, “1d”中的 “d”不能为大写,故排除选项 D。 4个选项中 B正确。 16 【正确答案】 C 【试题解析】 本题考核的知识点是 for循环和 switch

32、语句的混合应用。程序中for循环了三次,第一次 i=0,执行 switch语句中 case0:分支,直到遇到 default语句,退出 switch,这里共执行 ?三个输出语句分别输出 0, 0, 0,第二次循环i=l, switch语句中没有匹配的分支,故只执行 default语句输出 1,退出 switch语句;第三此循环 i=2,从 switch语句中的 case 2:开始执行,共执行了两个输出语句输出 2、 2。最后输出的结果为 000122所以, 4个选项中选项 C符合题意。 17 【正确答案】 C 【试题解析】 本题考核的知识点是 if语句的应用。首先计算 if语句后面的表达式值,

33、先计算运算符 &前面括号里的 “”运算在 “”运算中先计算 j+,值为 1(j的值为 2),为真,后面的 k+将不再计算, k的值依旧为 2。计算 &后面的表达式 i+,值为 1(i的值变为 2)。整个表达式的值为真,所以执行后面的输出语句,最后输出的 i, j和 k的值为 2, 2和 2所以, C选项为所选。 18 【正确答案】 C 【试题解析】 本题考查的知识点是 if语句的嵌套使用首先检查订与 else的配对,然后再分析各分支实现的功能选项 A描述的意思是:在 x =O情况下,则y为 1,否则;在 x=O时, y为 0,剩下的 x 0时, y为 -1,满足本题中函数的要求;选 项 B描述

34、的意思时:初始化 y的值为 0,在 x 0时,给 y重新赋值为 1,否则,在 x 0时,给 y重新赋值为 -1,满足本题中函数的要求;选项 C描述的意思是:在 x 0情况下,如果 x 0,则 y为 1,否则即 “c=0”时, y为 -1:剩下的 x 0时, y为 0可见答案 C实现的结果不是给定的表达式。选项 D中描述的意思是:在 x =0的情况下,如果 x =0,就给 y赋值为 1,否则就给 y赋值为 0,在不是 x =0的其他情况下,就给 y赋值为 -1,满足本题中函数的要求所以 4个选项中 C为所选。 19 【正确答案】 B 【试题解析】 本题考查了 C语言的一些基本概念 printf(

35、)函数可以只有控制项而没有输出项,例如: printf(“Hello!“);,所以选项 A不正确。 C语言中不支持整数以十二进制输出,因此选项 C不正确。 getchar()函数从键盘读入一个字符,而不管该字符为数字还是字母,因此输入 ASCII码的话,只能读到第 1个数字字符,所以选项 D不正确。故应该选择 B, putchar是 C语宫中的库函数,使用时必须包含 sMio.h。 20 【正确答案】 B 【试题解析】 本题考查函数的一些概念 main()函数是一个程序的主 函数,它由系统调用,所以选项 A不正确。一个 C语言源程序文件可以只包含一个函数,每个源文件都可以被单独编译成。 obj

36、文件,最后链接成可执行文件。因此每个函数都可以被单独编译,选项 B正确。一个 C程序必须从主函数 main()开始运行,其他函数只能是直接或间接被 main()函数调用才能得以运行,因此选项 C错误。 C语言不支持函数的嵌套定义,所有函数只能是全局函数,所以选项 D错误。故应该选择 B。 21 【正确答案】 A 【试题解析】 分析题目中给出的表达式可知,如果 a b和 b c同时成立,k=1,否则 k=0。 所以, 4个选项中选项 A符合题意。 22 【正确答案】 C 【试题解析】 本题首先令 y为 9,然后通过一个 for循环,当 y还大于 0则循环,每次循环让 y递减 1。循环体中是一条

37、if语句,通过 %运算符计算每当 y能被3整除的时候,输出 -y的值,即先将 y减 1,然后输出 y的值。故当 y等于 9、6、 3时会输出,输出值分别为 8、 5、 20所以应该选择 C。 23 【正确答案】 B 【试题解析】 题目中 fun()函数的返回表达式是 *p,所以选项 C、 D不为所选,而应该是形参 p所指内容的值,因为 p为 int型指针,所 以该值是一个整数。故应该选择 B。 24 【正确答案】 C 【试题解析】 本题中的 printf()函数中的输出表达式,首先计算括号内的条件表达式,它的值为 6 (a c?a:c中 a e即 5 6为假故该表达式的值为 c的值即为6),然

38、后再计算外面表达式 (等价于 a b?6:B) 的值,同理可得该表达式的值为 6,将值 6赋值给 d,因此最后输出该表达式的值为 6,所以, 4个选项中 C为所选。 25 【正确答案】 B 【试题解析】 +、 -运算符在变量之前是先使变量的值加 1或减 1,然后再使用变量的值:如果在 变量之后则先使用变量之前的值,再把变量的值加 1或减 1。显然,程序中表达式 “i-”的值为 10, “+j”的值为 2,所以最后输出的值为 10和 2,所以, B选项为所选。 26 【正确答案】 D 【试题解析】 在 C语言中规定:有返回值的函数调用,可以作为表达式或表达式的一部分,也可以作为一条语句,故选项

39、A和选项 C正确;而有返回值的函数调用只能作为一个函数的实参 (即将其返回值传给相应的形参 ),而不能作为形参(因为行参是在函数定义时说明的 ),故选项 B正确选项 D不正确。所以, 4个选项中选项 D符合愿意。 27 【正确答案】 C 【试题解析】 选项 A中应将 y和 m前面的函数的类型说明符去掉,故选项 A不正确;选项 B中函数传了 2个参数,其中一个为整型 个为浮点型,而 fun()函数在定义时声明的 2个参数,一个为整型一个为双精度型,其参数类型不一致,故选项 B不正确;选项 D在调用函数时,不应该再声明其返回类型,故选项 D不正确。所以, 4个选项中选项 C符合题意 28 【正确答

40、案】 C 【试题解析】 本题的 fun()函数在 x等于 0或 1时返回 3,而在其余情况下返回 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-0)=7-5=2。故本题应该选择 C。 29 【正确答案】 D 【试题解析】 本题中定义的二维数组 a33中 9个元素在内存中的排列顺序是:a00, a01, a02, a10, a11, a12, a20, a21, a22。在主函数中,首先定义了二维数组 a33,然后定义了

41、个指针 p指向数组 a的第 1个元素 a00在第一个 for循环中,依数组 a在内存中的排列顺序为其元素赋从0 8九个值,然后用第二个 for循环依次输出 a10, a11, a12三个元素的值。所以, 4个选项中选项 D符合题意。 30 【正确答案】 D 【试题解析】 题目中定义的函数 fun()有两个参数,一个是字符型变量 ch,另一个是浮点型变景 x,函数类型是 void即无返回值。选项 A调用 fun的第 1个参数是字符串常量与字符变量不匹配,所以不正确。选项 B是有返回值函数的调用 形式,不正确。选项 C的第 1个参数是错误的字符常量,字符常量是用单引号括起来的 个字符 (是转义字符

42、可能有多个字符 ),故也不正确。选项 D使用两个整型常量调用 fun这在 C语言中是允许的。因为整型到字符型可以自动转换,整型到浮点型也可以自动转换。故应该选择 D。 31 【正确答案】 B 【试题解析】 通过 维数组名或指向维数组元素的指针来引用数组元素有两种写法: ai和 *(a+i),它们是等价的。这是一种运算符之间的等价转换,就好像 a-(b-C) 等价于 a-b+c一样。知道了这种转换,我们可以将之扩展到二 维数组甚至任意维数组上来。因为 运算符的结合性是从左至右的,所以 wij等价于 (wij,此时可以先将任意一个 运算符转换为指针形式为: (*(w+i)j或 *(wi+j),或者

43、同时转换: *(*(w+i)+j)。上述几种形式都完全等价于 wij。选项 A中, *(*w+3)可以看成 *(*(w+0)+3),即 w03,是正确的。选项 B小,因为 运算符的优先级高于 *运算符,所以 *(w+1)4等价于 *(w+1)4等价于 *(*(w+1)+4),即 *(*(w+5)+0), 它等价于 w50,很明显它超过数组的范围了,故不正确。选项 C等价于 w10,是下确的。选项 D中, &w00是数组 w第 1个元素的地址,它等价于&*(*(w+0)+0),外面的 &和 *可以抵消,就好像先乘以个数,然后再除以这个数一样。所以, &w00等价于 *(w+0)+0。即 *w。所

44、以原式就变为 *(*w+1)等价于w01,这个也是合法的。综上所述,本题应该选择 B。 32 【正确答案】 B 【试题解析】 本题中, f()函数通过一个 for循环语句,将传入数组的元素从下标2到下 标 5每个自乘以 2。因此,调用结束时,数组 a中的内容为1,2,6,8,10,12,7,8,9,10,故本题应该选择 B。 33 【正确答案】 C 【试题解析】 在 fun1()函数中只有一条 return语句,返回的是表达式 a*=a的值,该值等于 a*a。但是,由于 fun1()函数的返回值类型被定义为 int,所以返回值被取整,即 fun1()函数实现的是求一个双精度数平方的整数部分。在

45、 fun2()函数中,分别对两个参数调用 fun1()函数,然后将两个返回值相加、取整后返回。所以,程序执行后, w中的值是 1.12+2.02=1+4=5(中括号代表截尾取整 )。又因为 w被定义为 double型,所以变量 w中的值应该为一个双精度值 5.0。故应该选择C。 34 【正确答案】 B 【试题解析】 选项 A定义数组时省略了长度,而 C语言中规定,只有在定义并同时进行初始化时,数组的长度才可以省略,数组的长度为初始化时候的成员个数,故选项 A错误;在 C语言中规定,数组的长度必须是一个整数或整型常量表达式,故选项 C不正确:定义时数组的长度不能使用变量表示,故选项 D不正确,所

46、以, 4个选项中选项 B符合题意。 35 【 正确答案】 D 【试题解析】 本题是一道陷阱题,考生如果没注意到 F()函数被定义为 void类型的话,很容易错选为选项 A,其实应该选择选项 D,编译出错。 36 【正确答案】 D 【试题解析】 本题中首先定义一个字符数组 s,井将字符串 “ABCD”存到数组 s中,定义了一个字符指针变量 p,在接下来 for循环中,循环体共执行了三次,第一次 p指向 s1,所以此时输出的 p所指的字符串的值为 BCD,第二次循坏 p指向 s2,所以此时输出的 p所指的字符串的值为 CD,第三次循环 p指向 s3,因此此时输出的 p所指的字符串的值为 D。所以, 4个选项中选项 D符合题意。 37 【正确答案】 A 【试题解析】 在函数 fun1()中,首先将形参 p的内容存入临时指针 q中,然后使用 个 while循环,当 q所指内容不是字符串结束标志 “0时,让 q所指内容增1,然后将指针 q增 1指向下一个位置。所以函数 fun1()实现的功能是:将传入字符串的所有字符自增 1。主函数,指针 p在被传入 fun1()函数之前,初始化指向的是宁符数组 a的第 4个元素 g,所

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1