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

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

1、国家二级( C语言)笔试模拟试卷 8及答案与解析 1 下列关于算法的时间复杂度陈述正确的是 ( A)算法的时间复杂度是指执行算法程序所需要的时间 ( B)算法的时间复杂度是指算法程序的长度 ( C)算法的时间复杂度是指算法执行过程中所需要的基本运算次数 ( D)算法的时间复杂度是指算法程序中的指令条数 2 下列关于队列的叙述中正确的是 ( A)在队列中只能插入数据 ( B)在队列中只能删除数据 ( C)队列是先进先出的线性表 ( D)队列是先进后出的线性表 3 设有下列二叉树: 对此二叉树先序遍历的结 果为 ( A) ABCDEF ( B) DBEAFC ( C) ABDECP ( D) DE

2、BFCA 4 下面描述中,不符合结构化程序设计风格的是 ( A)使用顺序、选择和重复 (循环 )三种基本控制结构表示程序的控制逻辑 ( B)注重提高程序的可读性 ( C)模块只有一个入口和一个出口 ( D)使用 goto语句 5 下列哪个是面向对象程序设计不同于其他语言的主要特点 ? ( A)继承性 ( B)消息传递 ( C)多态性 ( D)静态联编 6 在数据库的两级映射中,从概念模式到内模式的映射一般由 _实 现。 ( A)数据库系统 ( B)数据库管理系统 ( C)数据库管理员 ( D)数据库操作系统 7 软件需求分析阶段的工作可以分为 4个方面:需求获取、需求分析、编写需求分析说明书和

3、 ( A)阶段性报告 ( B)需求评审 ( C)总结 ( D)都不正确 8 在数据库管理系统提供的数据语言中,负责数据的查询及增、删、改等操作的是 ( A)数据定义语言 ( B)数据转换语言 ( C)数据操纵语言 ( D)数据控制语言 9 关系数据库的数据及更新操作必须遵循 _等完整性规则。 ( A)实体完整性 和参照完整性 ( B)参照完整性和用户定义的完整性 ( C)实体完整性和用户定义的完整性 ( D)实体完整性、参照完整性和用户定义的完整性 10 在关系数据库中,用来表示实体之间联系的是 ( A)树形结构 ( B)网状结构 ( C)线性表 ( D)二维表 11 以下符合 C语言语法的实

4、犁常量是 ( A) 1.2E0.5 ( B) 3.14159E ( C) 5E-3 ( D) E15 12 以下 4组用户定义标识符中,全部合法的一组是 ( A) main enclude sin ( B) If -max turbo ( C) txt REAL 3COM ( D) int 12 _001 13 以下选项中非法的表达式是 ( A) 0 =x 100 ( B) i=i=0 ( C) (char)(65+3) ( D) x+1=x+1 14 若有定义: inl a=8, b=5, c;,执行语句 c=a/b+0.4;后, c的值为 ( A) 1.4 ( B) 1 ( C) 2 (

5、D) 2 15 下列关于单目运算符 +、 -的叙述中正确的是 ( A)它们的运算对象可以是任何变量和常量 ( B)它们的运算对象可以是 char型变量和 int型变量,但不能是 float型变量 ( C)它们的运算对象可以是 int型变量,但不能是 double型变量和 float型变量 ( D)它们的运算对象可以足 char型变量、 int型变量和 float型变量 16 若有以下程序段 int m=0xabc,n=0xabc; m-=n; printf(“%Xn“.m); 执行后输 出结果是 ( A) 0X0 ( B) 0x0 ( C) 0 ( D) 0XABC 17 以下 4个选项中,不

6、能看作一条语句的是 ( A) ; ( B) a=0,b=0, c=0; ( C) if(a 0); ( D) if(b=0)m=1; n=2; 18 设有定义: inca, *pa; 并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是 ( A) double myadd(doublea,b); ( B) double myadd(double,double); ( C) double myadd(doubleb,double a); ( D) double myadd(doublex,double y); 23 C语占中,函数值类型的定义可以缺省,此时函数值的隐含

7、类型是 ( A) void ( B) int ( C) float ( D) double 24 设有定义: int n=0,*p=,则以下选项中,正确的赋值语句是 ( A) p=1; ( B) *q=2; ( C) q=p; ( D) *p=5; 25 有以下程序 main () int m,n,p; scanf ( “m=%dn=%dp=%d“ , printf(“%d %d %dn“, m, n, p); 若想从键盘上输入数据,使变量 m中的值为 123, n中的值为 456, p中的值为 789, ( A) m=123n=456p=789 ( B) m=123 n=456 p=789

8、( C) m=123,n=456,p=789 ( D) 123 456 789 26 以下程序的输出结果是 int f() static int i=0; int s=1; s+=i; i+; return s; main ( ) int i,a=0; for (i=0;i 5; i+) a+=f(); printf ( “%dn“ ,a); ( A) 20 ( B) 24 ( C) 25 ( D) 15 27 有以下程序 main ( ) char a = “abcdefg“, b 10 =“abcdefg“; printf (“%d %dn“ ,sizeof (a) ,sizeof (b)

9、; 执行后输出结果是 ( A) 7 7 ( B) 8 8 ( C) 8 10 ( D) 10 10 28 有以下程序 int f(int n) if (n=l) return 1; else return f(n-1)+1; main () int i,j=0; for(i=i;i 3;i+) j+=f(i); printf “%dn“, j ); 程序运行后的输出结果是 ( A) 4 ( B) 3 ( C) 2 ( D) 1 29 以下能正确定义的数组并正确赋初值的语句是 ( A) int N=5,bNN; ( B) int a12=1,3 ; ( C) int c2=1,2,3,4; (

10、D) int d32=1,2,3,4; 30 有以下程序 int f(int b 4) int i,j,s=0; for(j=0; j 4; j+) i=j; if (i 2) i=3-j; s+=bi j; return s; main ( ) int a4 4 =1,2,3,4, 0,2,4,6, 3,6,9,12), 3,2,1,0; print f ( “%dn“ , f(a); 执行后的输出结果是 ( A) 12 ( B) 11 ( C) 18 ( D) 16 31 下列选项中正确的语句是 ( A) char s8; s=“Beijing“; ( B) char*s; s =“Bei

11、jing“; ( C) char s8; s=“Beijing“; ( D) char *s; s =“Beijing“; 32 有以下程序段 int n, t=1,s=0; scanf ( “%d“ , do s=s+t; t=t-2; while (t ! =n); 为使此程序段不陷入死循环,从键盘输入的数据应该是 ( A)任意正奇数 ( B)任意负偶数 ( C)任意正偶数 ( D)任意负奇数 33 有以下程序 int a=2; int f(int *a) return (*a)+; main ( ) int s=0; int a=5; s+=f ( s+=f ( printf ( “%d

12、n“,s ); 执行后输出结果是 ( A) 10 ( B) 9 ( C) 7 ( D) 8 34 有以下程序: #define f(x) x*x main ( ) int i; i=f (4+4) /f (2+2); printf ( “%dn“, i ); 执行后输出结果是 ( A) 28 ( B) 22 ( C) 16 ( D) 4 35 有以下程序 : fun (int a, int b) if (a b) return (a); else return(b); main ( ) int x=3, y=8, z=6, r; r=fun(fun(x,y) , 2*z); printf( “

13、%dn“, r); 程序运行后的输出结果是 ( A) 3 ( B) 6 ( C) 8 ( D) 12 36 若有定义 “int*p3;“,则以下叙述中下确的是 ( A)定义了一个基类型为 int的指针变量 p,该变量具有三个指针 ( B)定义了 一个指针数组 p,该数组含有三个元素,每个元素都是基类犁为 int的指针 ( C)定义了一个名为 *p的整型数组,该数组含有三个 int类型元素 ( D)定义了一个可指向一维数组的指针变量 p,所指一维数组应具有三个 int类型元素 37 有以下程序 main ( ) unsigned char a,b; a=4 | 3; b=4 printf (“%

14、d %dn“ ,a,b); 执行后的输出结果是 ( A) 7 0 ( B) 0 7 ( C) 1 1 ( D) 43 0 38 有以下程序 main () char s = “Yesn/No“, *ps=s; puts (ps+4); * (ps+4)=0; puts (s); 程序运行后的输出结果是 (选项 D中的第一行是空行 ) ( A) n/No Yes /No ( B) /No Yes ( C) n/No Yes /No ( D) /No Yes 39 有以下程序 #define P 3 void F(int x) return(pxx); main() pritnf(“%dn“,F(

15、3+5); 程序运行后的输出结果是 ( A) 192 ( B) 29 ( C) 25 ( D)编译出错 40 有以下程序 main ( ) int k=5,n=0; while (k 0) switch (k) default : break; case 1 : n+=k; case 2 : case 3 : n+=k; k-; printf (“%dn“,n); 程序运行后的输出结果是 ( A) 0 ( B) 4 ( C) 6 ( D) 7 41 以下程序段中,不能正确赋字符串 (编译时系统会提示错误 )的是 ( A) char s10=“abcdefg“; ( B) char t=“abc

16、defg“,*s=t; ( C) char s10; s=“abcdefg“; ( D) char s10;strcpy(s,“abcdefg“); 42 有以下程序 void sum (int a) a0-a-1+a1; main ( ) int a10=1,2,3,4,5,6,7,8,9,10; sum( printf (“%dn“ ,a2 ); 程序运行后的输出结果是 ( A) 6 ( B) 7 ( C) 5 ( D) 8 43 设有如下说明 typedef struct ST long a; int b; char c2; NEW; 则下面叙述中正确的是 ( A)以上的说明形式非法 (

17、 B) ST是一个结构体类型 ( C) NEW是一个结构体类型 ( D) NEW是一个结构体变量 44 若要说明一个类型名 STP,使得定义语句 STP s;等 价于 char *s;,以下选项中正确的是 ( A) typedef STP char *s; ( B) typedef *char STP; ( C) typedef STP *char; ( D) typedef char* STP; 45 若有以下说明和定义 typede int *INTEGER; INTEGER p, *q; 以下叙述正确的是 ( A) p 是 int 型变量 ( B) p 是基类型为 int 的指针变量 (

18、 C) q 是基类型为 int 的指针变量 ( D)程序中可 用 INTEGER代替 int类型名 46 有以下程序 int a=2; int f(int n) static int a=3; int t=0; if(n%2) static int a=4; t+=a+; else static int a=5; t+=a+; return t+a+; main ( ) int s=a, i; for (i=0;i 3; i+) s+=f (i) print f (“%dn“ , s ); 程序运行后的输出结果是 ( A) 26 ( B) 28 ( C) 29 ( D) 24 47 有以下程序

19、 #include string.h struct STU int hum; float TotalScore; ; void f(struct STU p) struct STU s2=20044,550,20045,537; p.num=s 1.num; p.TotalScore-s1.TotalScore; main() struct STU s2-20041,703,20042,580; f(s0); printf(“%d %3.0fn“,s0.num,s0.TotalScore); 程序运行后的输出结果是 ( A) 20045 537 ( B) 20044550 ( C) 20042

20、580 ( D) 20041 703 48 有以下程序: #include stdio.h main() FILE *fp; int i, k=0, n=0; fp=fopen(“d1.dat“,“w“); for(i=l;i 4;i+) fprintf(fp,“%d“,i); fclose(fp); fp=fopen(“d1.dat“,“r“); fscanf(fp,%d%d“, printf(“%d %dn“, k, n); fclose(fp); 执行后输出结果是 ( A) 1 2 ( B) 123 0 ( C) 1 23 ( D) 0 0 49 设有以下说明语句 typedef str

21、uct int n; char ch8; PER; ( A) PER 是结构体变量名 ( B) PER 是结构体类型名 ( C) typedef struct 是结构体类型 ( D) struct 是结构本类型名 50 有以下程序 #include stdio.h main() FILE *fp; int i,k,n; fp=fopen(“data.dar“, “w+“); for(i=1;i 6;i+) fprintf(fp,“%d “,1); if(i%3=0) fprintf(fp, “n“); rewind(fp); fscanf(fp, “%d%d“, printf. (“%d %d

22、n“,k,n); fclose(fp); 程序运行后的输出结果是 ( A) 0 0 ( B) 123 45 ( C) 1 4 ( D) 1 2 51 软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要的是【 】。 52 在两种基本测试方法中,【 】测试的原则之一是保证所测 模块中每一个独立路径至少要执行一次。 53 Jackson方法是一种面向【 】的结构化方法。 54 程序测试分为静态分析和动态测试。其中【 】是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。 55 关系数据库管理系统能实现的专门关系运算包括选择、连接和【

23、】。 56 以下程序的运行结果是【 】。 int k=0; void fun (int m) m+=k; k+=m; printf(“m=%d k=%d“, m, k+) main() int i=4; fun(i+); printf(“i=%d k=%dn“, i, k); 57 有以下程序,若运行时从键盘输入: 18,11回车,则程序的输出结果是【 】。 main () int a, b; printf(“Enter a, b:“); scanf(“%d, %d“, while(a!=b) while(a b)a- b; while(b a)b- a; printf(“%3d%3dn“,a

24、,b); 58 以下程序运行后的输出结果是【 】。 main() char c1, c2; for(c1=0,c2=9; c1 c2; c1+,c2-) printf(“%c%c“,c1,c2); printf(“n“); 59 以下程序的输出结果是【 】。 main() int s, i; for(s=0,i=1; 1 3; i+, s+=i); printf(“%dn“, s); 60 若有以下程序: int f (int x,int y) return(y-x)*x; main() int a=3, b=4, c=5,d; d=f(3,4),f(3,5); printf(“%dn“,d)

25、; 执行后输出结果是【 】。 61 以下程序运行后的输出结果是【 】。 int f (int a,int n) if(n =1) return f(a,n-1)+an-1; else return 0; main() int aa5=1, 2, 3, 4, 5, s; s=f(aa, 5); printf(“%dn“, s); 62 以下程序用来统计文件中字符个数。请填空。 #include “stdio. h“ main() FILE *fp;long num=OL; if(fp=fopen(“fname.dat“,“r“)=NULL) Pirntf(“Open errorn“); exit

26、(0); while(【 】 ) fgetc(fp);num+; printf(“num=%1dn“,num-1); fclose(fp); 63 以下程序运行后的输出结果是【 】。 struct NODE int k; struct NODE *link; ; main() struct NODE m5, *p=m, *p=m,*q=m+4; int i=0; while(p!=q) p- k=+i; p+ q- k=i+; q-; q- k=i; for(i=0; i 5; i+) printf(“%d“, mi.k); ptintf(“n“); 64 下面程序由两个源程序文件: t4.h

27、和 t4.c组成,程序编译运行的结果是:【 】。 t4 h 的源程序为: #define N 10 #denne f2(x) (x*N) t4 c 的源程序为: #include stdio. h #define M 8 #define f(x) (x)*M) #include “t4.h“ #main() int i, j; i=f(1+1); j=f2(1+1); printf(%d%dn“, i, j); 65 以下程序的输出结果是【 】。 #include stdio.h #define M 5 #define N M+M main() int k; k; N*N*5; printf(

28、“%dn“k); 66 若 fp已下确定义为一个文件指针, d1.dat 为二进制文件,请填空,以便为 “读 ”而打开此文件: fp= fopen(【 】 );。 67 设有定义: int n, *k= n;以下语句将利用指针变量 k读写变量 n中的内容,请将语句补充家整。 seanf(“%d“,【 】 ); printf(“%dn“,【 】 ); 68 fun函数的功能是:首先对 a所指的 N行 N列的矩阵, 找出各行中的最大的数,再求这 N个最大值中的最小的那个数作为函数值返回。请填空。 #include stdio. h #define N 100 int fun(int(*a)N) i

29、nt row, col, max, min; for(row=0; row N; row+ for(max=arow0,col=1; col N; col+) if(【 】 )max=arowcol; if (row=0)min=max; else if (【 】 )min=max; return min; 国家二级( C语言)笔试模拟试卷 8答案与解析 1 【正确答案】 C 【试题解析】 算法的时间复杂度是指执行算法所需要的计算工作量,也就是算法在执行过程中所执行的基本运算的次数,而不是指程序运行需要的时间或是程序的长度。 2 【正确答案】 C 【试题解析】 对队列可以进行插入和删除数据的操

30、作,只是插入数据只能在队尾,删除数据只能在队头。所以队列是先进先出的线性表。 3 【正确答案】 C 【试题解析】 二叉树的遍历分为先序,中序、后序三种不同方式本题要求先序遍历,其遍历顺序应该为:访问根结点 -,先序遍历左子树 -先序遍历右子树。按照定义,先序遍历序列是 ABDECF,故答案为 C。 4 【正确答案】 D 【试题解析】 在结构化程序设计中,应严格控制使用 GOTO 语句,必要时才可以使用,故答案为 D。 5 【正确答案】 A 【试题解析】 继承是一个子类直接使用父类的所有属性和方法。它可以减少相似的类的重复说明,从而体现出一般性与特殊性的原则,这使得面向对象程序设计语言 有了良好

31、的重用性,也是其不同于其他语言的主要特点。 6 【正确答案】 B 【试题解析】 从概念模式到内模式的映射一般数据库管理系统 (DBMS)实现。 7 【正确答案】 B 【试题解析】 需求分析的四个方面是:需求获取。需求分析、编写需求分析说明书和需求评审。 8 【正确答案】 C 【试题解析】 在数据库管理系统提供的数据语言中,数据操纵语言负责数据的查询及增,删、改等操作。 9 【正确答案】 D 【试题解析】 关系模型中包括关系的数据结构、关系的操纵和关系中的数据约束 。关系完整性约束即数据完整性,包括实体完整性、参照完整性和用户自定义完整性。 10 【正确答案】 D 【试题解析】 数据库中的关系模

32、型是采用二维表来表示实体与实体之间的联系。 11 【正确答案】 C 【试题解析】 实型常量只能用十进制形式表示,不能用八进制或十六进制形式表示,实型常量可以用小数形式或指数形式表示,在 C语言中,可以用指数形式将实型常量表示为数值和指数两部分,数值部分不能为空,指数部分只能为整数表示。选项 A中 1.2和 0.5都不是整数,故选项 A不正确;选项 B 中 3.14159也不 是整数,故选项 B 不正确;选项 D中数值部分不能为空,故选项 D也不正确;所以, 4个选项中选项 C符合题意。 12 【正确答案】 A 【试题解析】 标识符是以字母或下划线开头, 由字母、数字或下划线组成的字符序列 例如

33、, -max含非法字符 -),并且用户标识符不能与 C语言中的 32个关键字同名 (例如, int是关键字,不是合法的用户标识符 )。选项 B中 -max不是字母、数字或下划线组成的字符序列,故选项 B不正确;选项 C中 3COM不是由字母或下划线开头,故选项 C不正确;选项 D中 int为 C语言中的关键字,故选项 D不正确;选项 A中全部为合法的标识符,所以, 4个选项中选项 A符合题意。 13 【正确答案】 D 【试题解析】 本题考核的知识点是表达式的赋值。选项 D中将表达式的值赋给表达式,在 c语言中是不允许给表达式赋值的,故选项 D是非法的表达式,所以, 4个选项中选项 D符合题意。

34、 14 【正确答案】 B 【试题解析】 在表达式中根据运算的结合性和运算符的优先级,首先计算的是a/b (8/5=1),再将 1+0.4赋值给 C,由于 C为整型变量所以要将 1.4转换为整型,即舍弃小数位 (c的值变为 1)。所以, 4个选 项中 B 符合题意。 15 【正确答案】 D 【试题解析】 本题考核的知识点是 c语言中的 +和 -运算符,这两种运算符是单目运算符,其运算对象可以是整型、字符型、 float型和 double型等基本数据类型。所以, D选项为所选。 16 【正确答案】 C 【试题解析】 本题考核的知识点是 C语言中的自反赋值运算符。 “m-=n”相当于“m=m-n”,

35、两个相等的数相减,其值为 0。所以, C选项为所选。 17 【正确答案】 D 【试题解析】 C语言是一种表达式语言,所有的操作运算都通过表达 式来实现,由表达式组成的语句称为表达式语句,它有一个表达式后接一个分号组成。本题中,选项 D中 if(b=0) m=1; n=2;是两个表达式语句所以, 4个选项中选项 D符合题意。 18 【正确答案】 A 【试题解析】 本题考核的知识点是 scanf()函数和指针类型变量的简单应用。scanf()函数的功能是进行输入数据,它是按格式参数的要求从终端上把数据传送到地址参数所指定的内存空间中, C语言允许程序员间接地使用内存地址,这个地址是通过对变量名 “

36、求地址 ”运算得到的,求地址的运算符是 &,得到的地址是一种符号地址本题中定义了整型变量 a和一个指向整型数据的指针变量 pa,并定义 pa是一个存放 a的地址的变量。选项 B 中应该将 a改为 &a,故选项 B不正确:选项 C应该将 &pa改为 pa,因为 pa已经表示存放 a的地址,故选 项 C不正确;选项 D中 *pa 表示的是指针 pa所指向存储空间的变量的值,而不是一个地址,故选项 D不正确,所以, 4个选项中选项 A符合题意。 19 【正确答案】 B 【试题解析】 一个算法应当具有以下 5个特性:有穷性;确定性;可行性;有零个或多个输入;由一个或多个输出简洁性不属于这 5个特性,所

37、以本题应该选择 B。 20 【正确答案】 C 【试题解析】 C语句必须以分号结束,选项 A是正确的。复合语句在语法上被看作一条语句,选项 B也是正确的。空语句也算是一条语句,因此如果空语句出现在条件或者循环语句 中,一样会被当作条件子句或者循环体来看待,所以选项 c是错误的。赋值表达式末尾加分号就构成赋值语句,选项 D正确。故本题应该选择 C。 21 【正确答案】 B 【试题解析】 本题考核的知识点是 printf()函数及 +, -运算符的应用。 +、 -运算符在变量之前是先使变量的值加 1或减 1,然后再使用变量的值;如果在变量之后则先使用变量之前的值,再把变量的值加 1或减 1。显然,程

38、序中表达式 “i-”的值为 10, “+j”的值为 2,所以最后输出的值为 10和 2,所以, B选项为所选。 22 【正确答案】 A 【试题解析】 本题考核的知识点是函数声明的应用。函数声明是对所用到的函数的特征进行必要的声明,编译系统以函数声明中给出的信息为依据,对调用表达式进行检测,以保证调用表达式与函数之间的参数正确传递。函数声明的一般格式为: 类型标识符 函数名 (类型标识符 形参 ) ; 这些信息就是函数定义中的第一行的内容。这里形参的名字是不重要的,重要的是类型标识符,函数声明中也可以不写形参名只写该形参的声明类型,但不能只写形参名而不写该形参的类型。本题中,选项 A中 doub

39、le myadd(double a, b),没写出形参 b的类型,故选项 A不正确。所以, 4个选项中选项 A符合题意。 23 【正确答案】 B 【试题解析】 本题考查的知识点是函数值类型的缺省定义。 C语言规定:在定义函数时,若其返回值类型为 int,则可以缺省。所以 4个选项中 B 正确。 24 【正确答案】 D 【试题解析】 本题考核的知识点是指针变量定义和赋值语句的基本应用。在使用一个指针变量之前,先要用声明语句对其进行定义,在定义了一个指针变量之后,系统就为这个指针变量分配了一个存储单元,用它来存放地址。在 C语言中有两个有关指针 的运算符: &运算符,为取地址运算符, *运算符是指

40、针运算符,*p 代表 p所指向的变量。本题中首先定义了整型变量 n,其初值为 0,接着定义一个指针变量 p并让它指向 n,然后定义了一个指向指针的指针变量 q并让它指向p,选项 A中将常量 1赋给指针 p不正确;选项 B 也是将常量 2赋给 *p,故选项 B不正确;选项 C中 P不是指向指针的指针变量,而将他赋值给一个指向指针的指针变量小显然不正确,所以, 4个选项中选项 D符合题意。 25 【正确答案】 A 【试题解析】 本题考查的是标准输入函数 scanf()的运用。 scanf函数的第 一个参数是格式控制串,若在格式控制串中插入了格式控制符以外的其他字符,则在输入数据时要在对应的位置原样

41、输入这些字符才能正确输入。所以本题若想使变量m的值为 123、 n 为 456、 p 为 789,则应该输入的字符串为:用这三个数据按m、 n、 p 出现在 scanf()函数中的位置顺序替换掉 scanf()函数格式控制串中的格式控制符后所得到的格式控制串,即 “m=123n=456p=789”。所以, 4个选项中选项 A符合题意。 26 【正确答案】 D 【试题解析】 本题考核的知识点是静态变量 static的应用。在 C语言 中声明为static型的变量,在整个程序运行期间,静态局部变量在内存的静态存储区中占据永久性的存储单元。即使退出函数后,下次再进入该函数时,静态局部变量仍使用原来的

42、存储单元。由于并不释放这些存储单元,因此这些存储单元中的值得以保留; 因而可以继续使用存储单元中原来的值。本题中函数 f()中定义了一个static型变量 i,故每调用一次函数 f(), i的值加 1,返回 s的值等于 i,在主函数中用了一个 for循环,该循环执行了 5次,每次都调用 f()函数,将其返回值累加到变量 a中,故悬后 a的值为 1+2+3+4+5=15。所以, 4个选项中 D为所选。 27 【正确答案】 C 【试题解析】 本题考核的知识点是字符数组的定义、赋初值以及函数 sizeof()的应用。本题中定义两个字符型数组,其中 a省略了长度,定义了 b 的长度为 10,并赋初值分

43、别为 “abcdefg”和 “abcdfg”。所以 a的长度为赋值给它的字符串的字符个数 7加上一个结束转义字符,即 a的长度为 7+1为 8定义时 b的长度定义为10,故 b的长度为 10,因此最后通过函数 sizeof()求得的数组 a和数组 b的长度分别为 8和 10,所以, 4个选项中选项 C符合题意。 28 【正确答案】 B 【试题解析】 本题考查的知识点是递归函数通过分析不难写出, f()函数的数学表达式为: f(n)=1 n=1; f(n)=f(n-1)+1 n 不等于 1; 在主函数中 for循环执行了两次函数调用 f(i)。第一次: i为 1,调用 f(1)得到返回值 1,并

44、把它加到 i中, i的值为 1。第二次 i为 2,调用 f(n),根据递归公式可知 “f(2)=f(1)+1”,得到返回值 2并把它加到 i中, j的值为 3。所以最后输出的 j的值为 3,所以 4个选项中 B 正确。 29 【正 确答案】 D 【试题解析】 本题考核的知识点是二维数组的定义以及数组元素初始化。选项 A中,数组的长度使用了变量 N,而在 c中是不能用变量来定义数组的的长度的,故选项 A错误。在 c语言中,给二维数组赋初值时,行数不能超过定义的行数,每行的初值个数不能超过定义时的列数,故选项 B 错误。选项 C数组的第二维下标缺省,而在 C中,数组的第二维下标不能缺省,故选项 C

45、错误。所以, D选项为所选。 30 【正确答案】 D 【试题解析】 本题考核的知识点是二维数组的定义、赋初值和对;维数组元素的引用。分析程序可知,函数 f()中的 for循环作用,是将数组前三行中的对角线上的元素,即 b00、 b11, b22和第一行的第四列元素即 b03累加到变量s中,然后将 s的值返回。在主函数中首先定义了一个 4行 4列的二维数组,接着通过输出语句输出函数 f(a)的返回值。 调用 f(a)的返回值为 a00+a11+a22+a03=1+2+9+4=16。所以, 4个选项中选项 D符合题意。 31 【正确答案】 D 【试题解析】 本题考核的知识点是字符欺组初始化及字符型

46、指针 的应用。字符数组初始化可以有两种方式:方式一,按单个字符的方式赋初值。方式二,把一个字符串作为初值赋给字符数组。比如: char ch5=rabc”),选项 A属于这种情况,但是选项 A定义的字符数组长度为 8,由于最后还要加一个 “0”做结束标志,所以赋给他的字符串长度应小于等于 7,所以选项 A不正确;在给字符数组赋初值的时候,应该用花括号 “”和 “”将字符串括起来,故选项 C不正确。将字符型指针变量指向字符串也有两种方法,一是在定义指针变量时就给其赋初值,比如: char *p=“student“;二是给 指针变量赋值,比如: p=“student“; (p 已经被定义为字符型指针变量; ),故选项 D正确,而选项 C中的花括号是多余的,应该去掉,所以, 4个选项中选项 D符

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

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

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