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

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

1、国家二级( C语言)笔试模拟试卷 45及答案与解析 1 算法一般都可以用 _控制结构组合而成。 ( A)循环、分支、递归 ( B)顺序、循环、嵌套 ( C)循环、递归、选择 ( D)顺序、选择、循环 2 数据的存储结构是指 _。 ( A)数据所占的存储空间量 ( B)数据的逻辑结构在计算机中的表示 ( C)数据在计算机中的顺序存储方式 ( D)存储在外存中的数据 3 设有下列二叉树: 对此二叉树中序遍历的结果为 _。 ( A) ABCDEF ( B) DBEAFC ( C) ABDECF ( D) DEBFCA 4 在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送 _。 ( A)

2、调用语句 ( B)命令 ( C)口令 ( D)消息 5 检查软件产品是否符合需求定义的过程称为 _。 ( A)确认测试 ( B)集成测试 ( C)验证测试 ( D)验收测试 6 下列工具中为需求分析常用工具的是 _。 ( A) PAD ( B) PFD ( C) N-S ( D) DFD 7 下面不属于软件设计原则的是 _。 ( A)抽象 ( B)模块化 ( C)自底向上 ( D)信息隐蔽 8 索引属于 _。 ( A)模式 ( B)内模式 ( C)外模式 ( D)概念模式 9 在关系数据库中,用来表示实体之间联系的是 _。 ( A)树结构 ( B)网结构 ( C)线性表 ( D)二维表 10

3、将 E-R图转换到关系模式时,实体与联系都可以表示成 _。 ( A)属性 ( B)关系 ( C)键 ( D)域 11 下列形式的常数中,不符合 c语言语法规范的是 _。 ( A) 0.45 ( B) 123 ( C) 25.6e-2 ( D) 4e3 12 执行以下语句的结果为 _。 y=10;x=y+; ( A) x-10, y=10 ( B) x=11, y=11 ( C) x=10, y=11 ( D) x=11, y=10 13 设 x=2.5、 a=7、 y=4.7,算术表达式 x+a%3*(int)(x+y)%2/4的值为 _。 ( A) 2.5 ( B) 7 ( C) 4.7 (

4、 D) 2.75 14 若有以下定义,则表达式 a*b+d-c值的类型为 _。 char a;int b;float c;double d; ( A) float ( B) int ( C) char ( D) double 15 设有 “int x=11;”则表达式 (x+*1/3)的值是 _。 ( A) 3 ( B) 4 ( C) 11 ( D) 12 16 以下程序的输出结果是 _。 #include stdio.h main() printf(“%dn“,NULL); ( A)不确定的值 ( B) 0 ( C) -1 ( D) 1 17 在 C语言中,要求运算数必须是整型的运算符是 _

5、。 ( A) / ( B) + ( C) != ( D) % 18 能正确表示 C语言的字符常量的是 _。 ( A) 0x41 ( B) A ( C) 0 ( D) 0 19 设有语句 char a=72;则变量 a_。 ( A)包含 1个字符 ( B)包含 2个字符 ( C)包含 3个字符 ( D)说明不合法 20 在 C语言中 _。 ( A)函数定义可以嵌套,但函数调用不能嵌套 ( B)函数定义不可以嵌套,但函数调用可以嵌套 ( C)函数定义和调用均不能嵌套 ( D)函数定 义和调用均可以嵌套 21 下列程序执行后的输出结果是 _。 main() int m3=1,4,7,2,5,8,3,

6、6,9; int i,k=2; for(i=0;i 3;i+) printf(“%d“,mki); ( A) 456 ( B) 258 ( C) 369 ( D) 789 22 设已定义 i和 k为 int类型变量,则以下 for循环语句 _。 for(i=0;k=-1,k=1,i+,k+) printf(“*n“); ( A)判断循环结束的条件不合法 ( B)是无限循环 ( C)循环 次也不执行 ( D)循环只执行一次 23 下面程序的输出结果是 _。 unsigned fun(unsigned num) unsigned k=1; do k*=num%10; num/=10; while(

7、num); return(k); main() unsigned n=26; printf(“%dn“,fun(n); ( A) 0 ( B) 4 ( C) 12 ( D)无限次循环 24 已知字母 A的 ASCII码值是 65,字母 a的 ASCII码值是 97,以下程序_。 maini() char a=A; int b=20; printh(“%d,%o“,(a=a+a,a+b,b),a+a-A,b); ( A)表达式非法,输出零或不确定值 ( B)因输出项过多,无 输出或输出不确定值 ( C)输出结果为 20,141 ( D)输出结果为 20,141,20 25 C语言函数返回值的类型

8、是由 _决定的。 ( A) return语句中的表达式类型 ( B)调用函数的主调函数类型 ( C)调用函数时临时 ( D)定义函数时所指定的函数类型 26 下列程序执行后输出的结果是 _。 int d=1; fun(int p) int d=5; d+=p+; printh(“%d,“,d); main() int a=3; fuin(a); d+=a+; printf(:%dn“,d); ( A) 8, 12 ( B) 9, 13 ( C) 8, 4 ( D) 9, 5 27 已知下面的程序段,正确的判断是 _。 #define A 3 #define B(A) (A+1)*a) int

9、a=3; X=3*(A+B(7); ( A)程序错误,不允许嵌套定义 ( B) X=93 ( C) X=81 ( D)程序错误,宏定义不允许有参数 28 定义 int* swap()指的是 _。 ( A) 个返回整型值的函数 swap() ( B) 个返回指向整型值指针的函数 swap() ( C) 个指向函数 swap()的指针,函数返回一个整型值 ( D)以上说法均错 29 以下程序段的输出结果是 _。 main() char s110,s210,s310; scanf(“%s“,s1);gets(s2);gets(s3); puts(s1);puts(s2);puts(s3); 输入数据

10、如下:(此处 CR代表回车符 ) aaa CR bbb CR ( A) aaa bbb ( B) aaa bbb ( C) aaa0bbb0 ( D) aaabbb 30 下述函数功能是 _。 int fun(char *x) char *y=x; while(*y+); retum y-x-1; ( A)求字符串的 长度 ( B)求字符串存放的位置 ( C)比较两个字符串的大小 ( D)将字符串 x连接到字符串 y后面 31 以下程序的输出结果是 _。 main() char str12=s,t,r,i,n,g; printf(“%d/n“,strlen(str); ( A) 6 ( B)

11、7 ( C) 11 ( D) 12 32 请读程序段: char str=“ABCD“,*p=str; printf(“%dn“,*(p+4); 程序段的输出结果是 _。 ( A) 68 ( B) 0 ( C)字符 D的地址 ( D)不确定的值 33 若有定义: int a410;,则以下选项中对数组元素 aij引用错误的是 _。 (0 =i 4,0 =j 10) ( A) *( 则 _不是对库函数的正确调用。 ( A) strcpy(str 1,“HELLO1“); ( B) strcpy(str2,“HELLO2“); ( C) strcpy(str3,“HELLO3“); ( D) st

12、rcpy(str4,“HELLO4“); 35 请读程序: #include stdio.h #include string.h main() char *s1=“AbCdEf“,*s2=“aB“; s1+;s2+; printf(“%dn“,strcmp(s1,s2); 上面程序的输出结果是 _。 ( A)正数 ( B)负数 ( C)零 ( D)不确定的值 36 下面程序的输出是 _。 char s=“ABCD“; main() char *p; for(p=s;p s+4;p+) printf(“%sn“,p); ( A) ABCD BCD CD D ( B) A B C D ( C) D

13、 C B A ( D) ABCD ABC AB A 37 以下程序输出的结果为 _。 main() char *alpha6=“ABCD“,“EFGH“,“IJKL“,“MNOP“,“QRST“,“UVWX“); char *p; int i; p=alpha; for(i=0;i 4;i+) printf(“%s“,pi); ( A) ABCDEFGHIJKL ( B) ABCD ( C) ABCDEFGHIJKLMNOP ( D) AEIM 38 下面程序的输出结果是 _。 #include stdio.h main() char *p=“BOOL“,“OPK“,“H“,“SP“; int

14、 i; for(i=3;i =0;i-,i-) printf(“%c“,*pi); printf(“n“); ( A) SO ( B) SP ( C) SPOPK ( D) SHOB 39 以下程序的输出结果是 _。 #include stdio.h void prt(int *x,int *y,int *z) printf(“%d,%d,%dn“,+*x,+y,*(z+); int a=10,b=40,c=20; main() prt( prt( ( A) 11,42,31 12,22,41 ( B) 11,41,20 12,42,20 ( C) 11,21,40 11,21,41 ( D)

15、 11,41,21 12,42,22 40 若一个外部变量的定义形式为 static int x;,那么,其中 static的作用应该是_。 ( A)将变量存储在静态存储区 ( B)使变量 x可以由系统自动初始化 ( C)使 x只能在文本文件内引用 ( D)使 x的值可以永久保留 41 以下程序的输出结果是 _。 #include stdio.h #define SQR(x)x*x main() int a,k=3; a=+SQR(k+1); printf(“%dn“,a); ( A) 8 ( B) 9 ( C) 17 ( D) 20 42 下面是对宏定义的描述,不正确的是 _。 ( A)宏不

16、存在类型问题,宏名无类型,它的参数也无类型 ( B)宏替换不占用运行时间 ( C)宏替换时先求出实参表达式的值,然后代入形参运算求值 ( D)宏替换只不过是字符替代而已 43 以下程序 (程序左边的数字为附加的行号 )_。 1 #include str.h 2 #include stdio.h 3 main() 4 char s=“string“; 5 puts(s); 6 strcpy(s,“hello“); 7 printf(“%3sn“,s); ( A)没有错 ( B)第 1行有错 ( C)第 6行有错 ( D)第 7行有错 44 若有如下说明,则 _的叙述是正确的。 struct st

17、 int a; int b2; a; ( A)结构体变量 a与结构体成员 a同名,定义是非法的 ( B)程序只在执行到该定义时才为结构体 st分配存储单元 ( C)程序运行时为结构体 st分配 6个字节存储单元 ( D)类型名 struct st可以通过 extern关键字提前引用 (即引用在前,说明在后 ) 45 若有以下结构体定义,则 _是正确的引用或定义。 struct example int x; int y; v1; ( A) example.x=10 ( B) example v2.x=10 ( C) struct v2;v2.x=10 ( D) struct example v2

18、=10; 46 下列程序的执行结果是 _。 #include stdio.h union int i; char c2; ; void main() union un x; x.c0=10; x.c1=1; printf(“n%d“,x.i); ( A) 266 ( B) 11 ( C) 265 ( D) 138 47 已知形成链表的存储结构如下图所示,则下述类型描述中的空白处应填_。 struct link char data; _, node; ( A) struct link next ( B) link *next ( C) stuct next link ( D) struct li

19、nk *next 48 已知小写字母 a的 ASCII码为 97,大写字母 A的 ASCII码为 65,以下程序的结果是 _。 main() unsigned int a=32,b=66; printf(“%cn“,a|b); ( A) 66 ( B) 98 ( C) b ( D) B 49 C语言库函数 fgets(str,n,fp)的功能是 _。 ( A)从 fp指向的文件中读取长度 n的字符串存入 str指向的内存 ( B)从 fp指向的文件中读取长度不超过 n-1的字符串存入 str指向的内存 ( C)从 fp指向的文件中读取 n个字符串存入 str指向的内存 ( D)从 str读取至

20、多 n个字符到文件 fp 50 下述程序向文件输出的结果是 _。 #include stdio.h void main() FILE *fp=fopen(“TESY“,“wb“); fprintf(fp,“%d%5.0f%c%d“,58,76273.0,-,2278); fclose(fp); ( A) 58 76273-2278 ( B) 5876273.000000-2278 ( C) 5876273-2278 ( D)因文件为二进制文件而不可读 51 常用的黑 箱测试有等价类划分法、【 】和错误推测法 3种。 52 测试的目的是暴露错误,评价程序的可靠性;而【 】的目的是发现错误的位置并

21、改正错误。 53 软件维护活动包括以下几类:改正性维护、适应性维护、【 】维护和预防性维护。 54 在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为【 】。 55 关键字 ASC和 DESC分别表示【 】的含义。 56 下列程序的输出结果是【 】。 #define PR(a)printf(“%dt“, (int)(a) #define PRINT(a)PR(a); printf(“ok!“) main() int i, a=1; for(i=0; i 3; i+) PRINT(a+i); printf(“n“); 57 关系表达式 x y z,用 C语言的表达式为【 】。

22、58 下述程序的输出结果是【 】。 #include stdio.h int fun(int x) int p; if(x=0|x=1) return 3; else p=x-fun(x-2); return p; void main() printf(“n%d“, fun(9); 59 下列程序的运行结果是【 】。 #include stdio.h main int k=4, m=3, p; p=func(k, m); printf(“%d“, p); p=func(k, m); printf(“%dn“, p); func(a, b) int a, b; static int m=0, i

23、=2; i+=m+1; m=i+a+b; return(m); 60 若有如下定义, double a100;,则 a数组元素的下标上限是【 】。 61 以下程序运行结果是【 】。 #include stdio.h main() int fun(); fun(); fun() static int a3=0, 1, 2; int i; for(i=0; i 3; i+)ai+=ai; for(i=0; i 3; i+)printf(“%d, “, ai); printf(“n“); 62 以下定义的结构体类型拟包含两个成员,其中成员变量 info用来存入整形数据;成员变量 link是指向自身结

24、构体的指针,请将定义补充完整。 struct node int info; 【 】 link; ; 63 下面程序的功能是将一个字符串 str的内容颠倒过来,请填空。 #include string.h main() inti, j,【 】; char str=“1234567“; for(i=0, j=strlen(str)【 】 ;i j; i+, j-) k=stri; stri=strj; strj=k; printf(“%sn“, str); 64 以下函 数用来求出数组的最大元素在数组中的下标并存放在 k所指的存储单元中。请填空。 #include conio.h #include

25、 stdio.h int fun(int*s, int t, int*k) int i; *k=0; 【 】 if(s*k si)*k=i; return【 】; main() int a10=876, 675, 896, 101, 301, 401, 980, 431, 451, 777, k; clrscr(); fun(a, 10, ,其两个参数均为字符指针或字符数组,选项 C中的目的串指针 str3没有指向具体有效的存储单元,故是错误的调用。 35 【正确答案】 A 【试题解析】 函数 strcmp的功能是比较字符串 s1和 s2,如果 s1 s2,则返回个正数;如果 s1 s2,则返

26、回负数,否则返回零。由于本题中小写字母 b的 ASCII码值大于大写字母 B,故 s1 s2,所以函数的值为正数。 36 【正确答案】 A 【试题解析】 在第 次执行 for循环时,字符数 组的首地址赋给了指针变量 p,使得指针变量 p指向了 s的首地址,输出 p所指向的字符串;第二次执行 for循环时, p值增加 1, p指向了 s的第二个元素输出 BCD:第三次输出 CD:第四次输出 D;直到 p指向字符串的结束字符 “0”, for循环终止执行。 37 【正确答案】 C 【试题解析】 alpha0指向 “ABCD”的首地址; alpha1指向 “EFGH”的首地址;alpha2指向 “I

27、JKL”的首地址,依此类推。当执行 p=alpha后, p指向指针数组alpha的首地址。 for循环中输出了 4个字符串 。 38 【正确答案】 A 【试题解析】 p0存放的是 “BOOL0”的首地址; p1存放的是 “OPK0”的首址等。在 printf语句中输出的 *pi表示 pi字符串的第 个字符。在 for循环中, i的初值为 3,那么输出的第 个字符为 “S”,接着两次 i-,则输出的值为 *p1,即字符 “O”,所以本题的输出为 SO。 39 【正确答案】 B 【试题解析】 由于实参传送的是变量的地址,所以对形参指针所指向的单元内容的改变,即对实参内容的改变。 40 【正确答案】

28、 C 【试 题解析】 事实上,无论有无 static修饰,外部变量都具有 A、 B和 C三种特性。作为 种修饰, static仅是限制此类型外部变量的引用范围:只能在定义它的文件范围内使用。 41 【正确答案】 B 【试题解析】 本题宏替换中遇到形参 x以实参 k+1代替,其他字符不变。SQR(k+1)展开后应为字符串 k+1*k+1。 42 【正确答案】 C 【试题解析】 宏替换实质上就是字符替代,它不可能进行计算,故 C错误。带参数的宏与函数相比,宏在程序编译之前已经将代码替换到程序内,执行时不会产生类似于函数调 用的问题,可以说不占用运行时间。 43 【正确答案】 B 【试题解析】 字符

29、串复制函数 strcpy包含在头文件 string.h中,因此,程序中的第 1行文件包含命令是错误的。 44 【正确答案】 D 【试题解析】 结构体变量 a与结构体成员 a同名是合法的定义,引用成员 a的方法是 a.a,变量 a处于不同的 “层次 ”上,系统完全能够分情。 st是 个结构体名,不会为结构体名分配存储空间,应该是在运行时为结构体变量 a分配 6个字节的存储单元,故选项 B和选项 C错误。 45 【正确答案】 D 【试 题解析】 在定义结构体变量时,不能只用结构体名 example或关键字 struct进行定义,必需要用结构钵类型名 struct example定义,在引用结构体成

30、员变量时,需要用结构体变量名进行引用,所以选 D。 46 【正确答案】 A 【试题解析】 由于本题定义的是共用体,所以成员表列中的整型变量 x与字符数组 c共占用同 个存储单元,且此存储单元为 2个字节,通常 c0位于低字节,c1位于高字节,所以兄 i的值为 266。 47 【正确答案】 D 【试题解析】 在单向链表中,由于每个结点需要存 储下一个结点的地址,且下 个结点的数据类型与前 个结点的数据类型完全相同,故应为 struct link *next。 48 【正确答案】 C 【试题解析】 位运算符 “|”的作用是按位或,即两个二进制数的相应位中只要有一个为 1,该位的结果值为 1。最后以

31、字符型输出, 98对应的字符 “b”。 49 【正确答案】 B 【试题解析】 fgets函数的作用是从指定的文件读入一个字符串。 fgets(str,n,fp);中的 n为要求得到的字符的个数,但只从 fp指向的文件输入 n-1个字符,然后在最后加 个 0字符,因此得到的字符串共有 n个字符。 50 【正确答案】 C 【试题解析】 fprintf函数工作时,多个数据间不会自珈口分隔符,选项 A错误;浮点数的输出格式是 “%5.0f”表明其小数部分输出 0位,即没有输出,所以选项 B也是错误的。 51 【正确答案】 边界值分析法 【试题解析】 黑箱测试方法完全不考虑程序的内部结构和内部特征,而只

32、是根据程序功能导出测试用例。常用的黑箱测试有等价类划分、边界值分析法和错误推测法 3种。 52 【正确答案】 调试 【试题解析】 软件测试的目标 是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定;调试也称排错,它是一个与测试有联系又有区别的概念。具体来说,测试的目的是暴露错误,评价程序的可靠性,而调试的目的是发现错误的位置,并改正错误。 53 【正确答案】 完善性 【试题解析】 软件维护活动包括以下几类:改正性维护、适应性维护、完善性维护和预防性维护。改正性维护是指在软件交付使用后,为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误

33、的过程;适应性维护是指为了使软件适应变化,而去修 改软件的过程;完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性;预防性维护是为了提高软件的可维护性、可靠性等,为以后的进一步改进软件打下良好基础。 54 【正确答案】 消息 【试题解析】 在面向对象技术中,主要用到对象 (object)、类 (class)、方法(method)、消息 (message)、继承 (inheritance)、封装 (encapsulation)等基本概念。其中消息是用来请求对象执行某一处 理或回答某些信息的要求。 55 【正

34、确答案】 升序排列和降序排列 【试题解析】 ASC表示升序排列, DESC表示降序排列,多用在索引定义和SELECT语句中的 ORDER子句中。 56 【正确答案】 1 2 3 ok! 【试题解析】 本题主要考查了 printf函数用在了宏替换中。宏替换不是函数调用,只是一种简单的字符替代。所以本题中 PRINT(a+i)展开为: printf(“%dt”,(int) (a+i),当 i=0时,输出 1;当 i=1时,输出 2;当 i=2时;输出 3; for循环结束后输出 ok!。 57 【正确答案】 (x y)&(y z) 【试题解析】 x y z的意思是 y大于 x并且 y小于 z。在

35、C语言中,表达 “并且 ”用逻辑与运算符 “&”。 58 【正确答案】 7 【试题解析】 本题考查的是函数的递归调用。 x=0或 x= 1是递归的终止条件,然后用回代的方法从一个已知值推出下一个值,直到计算出最终结果。 59 【正确答案】 1021 【试题解析】 此题主要考查了变量和函数的存储类别。函数的存储范围是从定义它的位置到文件结束为止,如果想在函数 定义之前使用函数,需要先对函数进行声明。静态局部变量的生存期为整个程序的运行期间,作用域却为定义它的函数或局部范围内。 60 【正确答案】 99 【试题解析】 数组的下标是从 0开始存放数据的,而不是 1,当数组大小为 n时,其下标从 0开

36、始,到 n-1,所以本题的答案为 99。 61 【正确答案】 0, 2, 4 0, 4, 8 【试题解析】 本题主要考查了 for循环语句的使用以及静态局部变量的特点。 62 【正确答案】 struct node * 【试题解析】 本题中的结构类型名为 struct node,所以空白处应填: struct node *。即定义一个指向自身的结构体指针。 63 【正确答案】 k -1 【试题解析】 颠倒一个字符串中的字符,就是首尾对应的元素两两交换。简单地可用两个游标变量 i和 j, i是前端元素的下标, j是后端元素的下标,交换以这两个变量值为下标的元素 stri和 strj。开始时, i的

37、值为 0, j的值为字符串末元素的下标 (字符串长度减 1)。每次交换后, i增 1, j减 1。继续交换的条件是 stri还位于 strj的前面,即 i j。字符串末元素的下标是它的长 度减 1,所以在第二个空框处应填入 -1。程序为了交换 stri和 strj,使用了变量 k,该变量应在程序的变量定义部分中一起定义,所以在第一个空框处应填入 k。 64 【正确答案】 for(i=0; i t; i+) 0 【试题解析】 本题中直接使用指针变量 k,但在使用时要注意对 k的指针运算,此外,一开始应使 *k的值为数组中的某一下标值,即 *k=0。 65 【正确答案】 int * * z 【试题解析】 函数希望通过形参 z带回结果,形参 z必须是指针类型的,由于返回整型结果,所以 z的说明是 int * z。函数返回前必须先把结果通过形参 z间接引用 (写成 * z)传回。 66 【正确答案】 i= =j k! i&k!j 【试题解析】 本题用双重 for循环写了一段 0 9之间不同的 3个数构成一个三位数的程序,因为要求三位数各个位数的数不能相同,所以第一个空 if语句的条件应为 i= =j,即当两个位数上的数相同的时候,不再执行下面的操作,转去执行for循环的下一次循环。第二个空,需要判断第三位上的数不能与其他两位的数相同。

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

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

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