1、二级 C语言笔试-284 及答案解析(总分:90.00,做题时间:90 分钟)一、选择题(总题数:50,分数:50.00)1.设有数组定义:char array=“China“;,则数组 array所占的空间为(分数:1.00)A.4个字节B.5个字节C.6个字节D.7个字节2.以下对 C语言函数的有关描述中,正确的是(分数:1.00)A.在 C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参B.C函数既可以嵌套定义又可以递归调用C.函数必须有返回值,否则不能使用函数D.函数必须有返回值,返回值类型不定3.在软件测试设计中,软件测试的主要目的是(分数:1.00)A.实验性运行软
2、件B.证明软件正确C.找出软件中全部错误D.尽可能多地发现软件中的错误4.以下对结构体类型变量的定义中,不正确的是(分数:1.00)A.typedef struct aaint n;float m;AA;AA tdl;B.#define AA struct aa AA int n;float m;tdl;C.struct int n;float m;aa;struct aa tdl;D.structint n;float m;tdl;5.下列程序的运行结果是#include“stdio.h“main()int x=-9,y=5,z=8;if(xy)if(y0)z=0;else z+=1;pri
3、ntf(“%d/n“,z);(分数:1.00)A.6B.7C.8D.96.以下程序的输出结果是main()char x=040;printf(“%o/n“,x1);(分数:1.00)A.100B.80C.64D.327.下面程序的文件名为 t.exe,在 DOS下输入的命令行参数如下:t to meet me回车则程序输出的结果是#include“stdio.h“main(argc,argv)int argc;char*argv;int i;printf(“%d/n“,argc);(分数:1.00)A.3B.4C.2D.以上答案都不正确8.以下程序有语法错误,有关错误原因的正确说法是main(
4、)int G=5,k;void prt_char();k=prt_char(G);(分数:1.00)A.语句 void prt_char();有错,它是函数调用语句,不能用 void说明B.变量名不能使用大写字母C.函数说明和函数调用语句之间有矛盾D.函数名不能使用下划线9.下列程序是用来判断数组中特定元素的位置所在。如果输入如下整数:876 675 896 101 301 401 980 431 451 777#includeconio.h#includestdio.hint fun(int *s,int t,int *k)int i;*k=0;for(i=0;it;i+)if(s*ksi)
5、*k=i;return s*k;main()int a10=876,675,896,101,301,401,980,431,45l,777,k;clrscr();fun(a,10,i+)p=strcat(p,ai);i=strlen(p);printf(“%d/n“,i);则程序段的输出结果是(分数:1.00)A.18B.19C.20D.2116.C语言中,能识别处理的文件为(分数:1.00)A.文本文件和数据块文件B.文本文件和二进制文件C.流文件和文本文件D.数据文件和二进制文件17.下列选项中错误的说明语句是(分数:1.00)A.char a=t,o,y,o,u,/0;B.char a=
6、“toyou/0“;C.char a=“toyou/0“;D.char a=toyou/0;18.若有下面的说明和定义,则 sizeof(struct a(分数:1.00)A.的值是int *p=a;for(i=0;i4;i+)ai=*p;printf(“%d/n“,a2);上面程序输出结果是(分数:1.00)A.6B.8C.4D.224.若某二叉树的前序遍历访问顺序是 abdgcefh,中序遍历访问顺序是 dgbaechf,则其后序遍历的结点访问顺序是(分数:1.00)A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca25.软件工程的理论和技术性研究的内容主要包
7、括软件开发技术和(分数:1.00)A.消除软件危机B.软件工程管理C.程序设计自动化D.实现软件可重用26.以下程序的输出结果是int f()static int i=0;int s=1;s+=i;i+;return s;main()int i,a=0;for(i=0;i5;i+)a+=f();printf(“%d/n“,(分数:1.00)A.;A) 20B) 24C) 25D)27.数据库系统的核心是(分数:1.00)A.数据库B.数据库管理系统C.模拟模型D.软件工程28.已知如下定义,则 sizeof((分数:1.00)A.的值是b=p5;则 b的值是(分数:1.00)A.5B.6C.9
8、D.845.数据处理的最小单位是(分数:1.00)A.数据B.数据元素C.数据项D.数据结构46.下面各选项中,均是 C语言合法标识符的选项组是(分数:1.00)A.33 we autoB._23 me _3ewC._43 3e_ elseD.ER-DF 3247.下面程序的输出结果是#includestdio.hmain()int a=1,2,3,4,5,6,7,8,9,0,*p;p=a;printf(“%d/n“,*p+9);(分数:1.00)A.0B.1C.10D.948.以下程序的输出结果是main()int a,i=a=0;for(i=1;i5;i+)switch(i)case 0:
9、case 3:a+=2;case 1:case 2:a+=3;default:a+=5;printf(“%d/n“,(分数:1.00)A.;A) 31B) 13C) 10D)49.有如下程序段int*p,a=10,b=1;p=printf(“%d,%o,%x,%u/n“,a,a,a,a);(分数:2.00)填空项 1:_62.下述程序的输出结果是 【12】 。#includestdio.hint 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);(分数:2
10、.00)填空项 1:_63.以下函数用来在 w数组中插入 x。n 所指向的存储单元中存放 w数组中字符个数。数组 w中的字符已按从小到大的顺序排列,插入后数组 w中的字符仍有序。请填空。void fun(char*w,char x,int*n)int i, p;p=0;w*n=x;while(xwp)p+;for(i=*n;ip;i-)wi= 【13】 ;wp=x;+ *n;(分数:2.00)填空项 1:_64.mystrlen函数的功能是计算 str所指字符串的长度,并作为函数值返回。请填空。int mystrlen(char*str)int i;for(i=0; 【14】 !=/0;i+)
11、;return(i);(分数:2.00)填空项 1:_65.下面程序的输出结果是 【15】 。long fun5(int n)long s;if(n=1)|(n=2)s=2;elses=n+fun5(n-1);return(s); main()long x;x=fun5(4);printf(“%ld/n“,x);(分数:2.00)填空项 1:_66.阅读下列程序,则程序的输出结果为 【16】 。#include“stdio.h“struct tyint data;char c;main()struct ty a=30,x;fun(a);printf(“%d%c“,a.data,a.c);fun
12、(struct ty b)b.data=20;b.c=y;(分数:2.00)填空项 1:_67.下面程序将二维数 a的行和列元素互换后存放另一个二维数组 b中。请填空。main()int a 23=1,2,3,4,5,6;int b32, i,j;printf(“array a“/n“);for(i=0;i=1;i+)for(j=0; 【17】 ;j+)printf(“%5d“,aij);【18】 ;printf(“/n“);printf(“array b:/n“);for(i=0; 【19】 ;i+)for(j=0;j=1;j+)printf(“%5d“,bij);printf(“/n“);
13、(分数:6.00)填空项 1:_68.设有以下定义和语句,则*(*(p+2)+1)的值为 【20】 。int a32=10,20,30,40,50,60,(*p)2;p=a;(分数:2.00)填空项 1:_二级 C语言笔试-284 答案解析(总分:90.00,做题时间:90 分钟)一、选择题(总题数:50,分数:50.00)1.设有数组定义:char array=“China“;,则数组 array所占的空间为(分数:1.00)A.4个字节B.5个字节C.6个字节 D.7个字节解析:解析 在给数组赋值时,可以用一个字符串作为初值,这种方法直观,方便而且符合人们的习惯。数组 array的长度不是
14、 5,而是 6,这点必须要注意。因为字符串常量的最后由系统加上一个/0,因此,上面的初始化与 char array=C,h,i,n,a,/ 0;等价。2.以下对 C语言函数的有关描述中,正确的是(分数:1.00)A.在 C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参 B.C函数既可以嵌套定义又可以递归调用C.函数必须有返回值,否则不能使用函数D.函数必须有返回值,返回值类型不定解析:解析 C 语言中的函数可以进行递归调用,但是不能在函数中定义函数,函数不必要有返回值,若有返回值,则返回值类型必确定。3.在软件测试设计中,软件测试的主要目的是(分数:1.00)A.实验性运行软
15、件B.证明软件正确C.找出软件中全部错误D.尽可能多地发现软件中的错误 解析:解析 使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试是为了发现错误而执行程序的过程。测试要以查找错误为中心,而不是为了演示软件的正确功能。4.以下对结构体类型变量的定义中,不正确的是(分数:1.00)A.typedef struct aaint n;float m;AA;AA tdl;B.#define AA struct aa AA int n;float m;tdl;C.struct int n;float m;aa;struct a
16、a tdl; D.structint n;float m;tdl;解析:解析 定义结构体类型的变量有几种的方法如下:定义结构体类型的同时,定义结构体类型的变量,如下面的定义中在定义结构体类型 aa的同时定义了该类型的变量 tdl。上述 B)项中将宏名 AA用宏体 struct aa 替换进去后,与该定义形式一样,因此是正确的。这一定义形式中,结构体类型名明是可以省略的,因此,D)项也是正确的。struct aa tdl;先定义结构体类型,然后再定义结构体类型的变量,形式如下:struct aa;struct aa tdl;这种定义形式也可演变为,先用类型定义语句 typedef将该结构体类型定
17、义成一个类型名 AA,然后直接用该类型名 AA去定义一个变量(这时不再需要使用关键字 struct了)。这就是 A)项的形式。5.下列程序的运行结果是#include“stdio.h“main()int x=-9,y=5,z=8;if(xy)if(y0)z=0;else z+=1;printf(“%d/n“,z);(分数:1.00)A.6B.7C.8D.9 解析:解析 if.else 语句的执行过程如下,首先计算 if后面一对圆括号内表达式的值,若表达式的值为非 0,执行 if子句,然后跳过 else子句,去执行 if语句后的下一条语句;若表达式的值为 0,跳过if子句,去执行 else子句,
18、接着去执行 if语句后的下一条语句。 C 语言的语法规定,else 子句总是与前面最近的不带 else 的 if匹配,与书写格式无关,本题目的后一个 if else相当于嵌套在第一个 if子句里,相当于 xyi+)p=strcat(p,ai);i=strlen(p);printf(“%d/n“,i);则程序段的输出结果是(分数:1.00)A.18B.19 C.20D.21解析:解析 字符串连接函数 strcat的调用形式如下:strcat(s1,s2)。此函数用来把 s2所指字符串的内容连接到 s1所指的字符串后面,并自动覆盖 s1串末尾的尾标,函数返回 s1的地址值。16.C语言中,能识别处
19、理的文件为(分数:1.00)A.文本文件和数据块文件B.文本文件和二进制文件 C.流文件和文本文件D.数据文件和二进制文件解析:解析 在计算机中,对于输入输出均采用数据流的形式。文件按照存取方式分为顺序存取文件和随机存取文件。按照存储形式分为二进制文件和文本文件。文本文件存储的是一个 ASCII码,文件的内容可以直接进行输入输出。二进制文件直接将字符存储,不能将二进制文件的内容直接输出到屏幕上。所以,C语言所能够处理文件是按照存放形式分为文本文件和二进制文件。17.下列选项中错误的说明语句是(分数:1.00)A.char a=t,o,y,o,u,/0;B.char a=“toyou/0“;C.
20、char a=“toyou/0“;D.char a=toyou/0; 解析:解析 通过赋初值的方式给一维数组赋字符串,可以用给一般数组赋初值的相同方式给一维字符数组赋字符串,也可以在赋值时直接赋字符串常量。选项 B)和 C)后面的/0是多余的,不过也不错,在C语言中,系统会自动在字符串的结尾处加上一个字符/0作为串的结束标记。18.若有下面的说明和定义,则 sizeof(struct a(分数:1.00)A.的值是int *p=a;for(i=0;i4;i+)ai=*p;printf(“%d/n“,a2);上面程序输出结果是(分数:1.00)A.6B.8C.4D.2 解析:解析 在 C语言中,
21、数组元素下标是从 0 开始的;指针变量 p指向数组的首地址。for 循环语句中,指针变量 p始终指向数组的首地址,因而执行循环赋值语句后数组各元素的值均变为 2。24.若某二叉树的前序遍历访问顺序是 abdgcefh,中序遍历访问顺序是 dgbaechf,则其后序遍历的结点访问顺序是(分数:1.00)A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca 解析:解析 前序遍历的第一个结点 a为树的根结点;中序遍历中 a的左边的结点为 a的左子树,a 右边的结点为 a的右子树;再分别对 a的左右子树进行上述两步处理,直到每个结点都找到正确的位置。25.软件工程的理论和技
22、术性研究的内容主要包括软件开发技术和(分数:1.00)A.消除软件危机B.软件工程管理 C.程序设计自动化D.实现软件可重用解析:解析 软件工程的目标是,在给定的成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。基于这一目标,软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程管理。26.以下程序的输出结果是int f()static int i=0;int s=1;s+=i;i+;return s;main()int i,a=0;for(i=0;i5;i+)a+=f();printf(“%d/
23、n“,(分数:1.00)A.;A) 20B) 24C) 25D)解析:解析 对函数的静态局部变量是在编译时就赋初值,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋值,而只是保留上次函数调用结束时的值。27.数据库系统的核心是(分数:1.00)A.数据库B.数据库管理系统 C.模拟模型D.软件工程解析:解析 数据库管理系统(Database Management System,简称 DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,数据库管理系统是数据库系统的核心。28.已知如下定义,则 sizeof((分数:1
24、.00)A.的值是b=p5;则 b的值是(分数:1.00)A.5B.6C.9 D.8解析:解析 p=i+)switch(i)case 0:case 3:a+=2;case 1:case 2:a+=3;default:a+=5;printf(“%d/n“,(分数:1.00)A.;A) 31B) 13C) 10D) 解析:解析 本题考查用于多分支选择的 switch 语句,其一般形式为:switch(表达式)case常量表达式 1:语句 1;case常量表达式 2:语句 2;case常量表达式 n:语句 n;default:语句 n+1;其语义是:计算表达式的值。并逐个与其后的常量表达式值相比较,
25、当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有 case后的语句。如表达式的值与所有 case后的常量表达式均不相同时,则执行 default后的语句。49.有如下程序段int*p,a=10,b=1;p=printf(“%d,%o,%x,%u/n“,a,a,a,a);(分数:2.00)填空项 1:_ (正确答案:31,37, 1f,31)解析:解析 此题考查了 printf函数的格式字符,题中 d是以十进制形式输出,o 是以八进制形式输出,x是以十六进制形式输出,u 以不带符号的十进制数输出。62.下述程序的输出结果是 【12】 。#includestdio.hint 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);(分数:2.00)
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1