1、二级 C语言笔试-383 及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:70.00)1.假定当前盘符下有两个如下文本文件: 文件名 a1.txt a2.txt 内容 123# 321# 则下面程序段执行后的结果为 #include“stdio.h“ void fc(FILE*p) charc; while(c=fgetc(p)!=#)putchar(c); main() FILE*fp; fp=fopen(“a1.txt“,“r“); fc(fp); fclose(fp); fp=fopen(“a2.txt“,“r“); fc(fp); fclos
2、e(fp); putchar(/n);(分数:2.00)A.123321B.123C.321D.以上答案都不正确2.数据库系统的核心是(分数:2.00)A.数据库B.数据库管理系统C.模拟模型D.软件工程3.下列选项中错误的说明语句是(分数:2.00)A.char a=to,y,o,u,/0;B.char a=“toyou/0“;C.chara=“toyou/O“;D.chara=toyou/0;4.以下对 C语言函数的有关描述中,正确的是(分数:2.00)A.在 C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参B.C函数既可以嵌套定义又可以递归调用C.函数必须有返回值,否则
3、不能使用函数D.函数必须有返回值,返回值类型不定5.下面程序的输出结果是 #includestdio.h main() int a=1,2,3,4,5,6,7,8,9,0,*p; p=a; printf(“%d/n“,*p+9);(分数:2.00)A.0B.1C.10D.96.以下不是面向对象思想中的主要特征的是(分数:2.00)A.多态B.继承C.封装D.垃圾回收7.在深度为 5的满二叉树中,叶子结点的个数为(分数:2.00)A.32B.31C.16D.158.下列叙述中,不符合良好程序设计风格要求的是(分数:2.00)A.程序的效率第一,清晰第B.程序的可读性好C.程序中要有必要的注释D.
4、输入数据前要有提示信息9.可在 C程序中用作用户标识符的一组标识符是(分数:2.00)A.andB.DateC.HiD.case _2007 y-m-d DTom Bigl10.有以下程序 #include stdio.h main() int i,j,m=55; for(i=1;i=3;i+) for(j=3;j=i;j+)m=m%j; printf(“%d/n“,m); 程序的运行结果是(分数:2.00)A.0B.1C.2D.311.下面各选项中,均是 C语言合法标识符的选项组是(分数:1.00)A.33 we autoB._23 me _3ewC._43 3e_ elseD.ER-DF
5、3212.为了提高测试的效率,应该(分数:1.00)A.随机选取测试数据B.取一切可能的输入数据作为测试数据C.在完成编码以后制定软件的测试计划D.集中对付那些错误群集的程序13.下列程序的运行结果是 #include“stdio.h“ main() intx=-9,y=5,z=8; if(xy) if(y0)z=0; else z+=1; printf(“%d/n“,z);(分数:1.00)A.6B.7C.8D.914.有以下函数 int aaa(char *s) char *t=S; while(*t+); t-; return(t-s); 以下关于 aaa函数的功能的叙述正确的是(分数:
6、1.00)A.求字符串 s的长度B.比较两个串的大小C.将串 s复制到串 tD.求字符串 s所占字节数15.有下面程序段 #include“stdio.h“ #include“stringh“ main() char a320=“china“,“isa“,“bigcountry!“; chark100=0,*p=k; int i; for(i=0;i3;i+) p=strcat(p,ai); i=strlen(p); printf(“%d/n“,“i); 则程序段的输出结果是(分数:1.00)A.18B.19C.20D.2116.下列程序是用来判断数组中特定元素的位置所在的。 #include
7、conio.h #includestdio.h int fun(int *s,int t,int *k) int i; *k=0; for(i=0;it;i+) if(s*ksi)*k=i; returns*k; main() int a10=876,675,896,101,301,401,980,431,451,777,k; fun(a,10,i+); return(i);(分数:2.00)填空项 1:_53.阅读下列程序,则程序的输出结果为_。 #include“stdio.h“ struct ty int data; char c; main() struct ty a=30,x; fu
8、n(a); printf(“%d%c“,a.data,a.c); fun(struct ty b) b.data=20; b.c=y;(分数:2.00)填空项 1:_二级 C语言笔试-383 答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:70.00)1.假定当前盘符下有两个如下文本文件: 文件名 a1.txt a2.txt 内容 123# 321# 则下面程序段执行后的结果为 #include“stdio.h“ void fc(FILE*p) charc; while(c=fgetc(p)!=#)putchar(c); main() FILE*fp;
9、 fp=fopen(“a1.txt“,“r“); fc(fp); fclose(fp); fp=fopen(“a2.txt“,“r“); fc(fp); fclose(fp); putchar(/n);(分数:2.00)A.123321 B.123C.321D.以上答案都不正确解析:解析 本题的功能是顺序的读两个文本文件,依次输出。当打开文件时出现错误,fopen 函数将返回 NULL。2.数据库系统的核心是(分数:2.00)A.数据库B.数据库管理系统 C.模拟模型D.软件工程解析:解析 数据库管理系统(Database Management System,简称 DBMS)是数据库的机构,它
10、是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,数据库管理系统是数据库系统的核心。3.下列选项中错误的说明语句是(分数:2.00)A.char a=to,y,o,u,/0;B.char a=“toyou/0“;C.chara=“toyou/O“;D.chara=toyou/0; 解析:解析 通过赋初值的方式给一维数组赋字符串,可以用给一般数组赋初值的相同方式给一维字符数组赋字符串,也可以在赋值时直接赋字符串常量。选项 B)和 C)后面的/0是多余的,在 C语言中,系统会自动在字符串的结尾处加上一个字符/0作为串的结束标记。4.以下对 C语言函数的有关描述中,
11、正确的是(分数:2.00)A.在 C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参 B.C函数既可以嵌套定义又可以递归调用C.函数必须有返回值,否则不能使用函数D.函数必须有返回值,返回值类型不定解析:解析 C 语言中的函数可以进行递归调用,但是不能在函数中定义函数,函数不用有返回值,若有返回值,则返回值类型必确定。5.下面程序的输出结果是 #includestdio.h main() int a=1,2,3,4,5,6,7,8,9,0,*p; p=a; printf(“%d/n“,*p+9);(分数:2.00)A.0B.1C.10 D.9解析:解析 此题考查了指针引用一维数
12、组元素的方法。*p+9 因为运算符“*”的优先级高于“+”,所以输出结果为 p指向的元素 1,然后加 9,值为 10。6.以下不是面向对象思想中的主要特征的是(分数:2.00)A.多态B.继承C.封装D.垃圾回收 解析:解析 面向对象思想中的三个主要特征是:封装性、继承性和多态性。7.在深度为 5的满二叉树中,叶子结点的个数为(分数:2.00)A.32B.31C.16 D.15解析:解析 满二叉树是指除最后一层外,每一层上的所有结点都有两个叶子结点。在满二叉树中,层上的结点数都达到最大值,即在满二叉树的第 k层上有 2k-1个结点,且深度为 m的满二叉树有 2m-1个结点。8.下列叙述中,不符
13、合良好程序设计风格要求的是(分数:2.00)A.程序的效率第一,清晰第 B.程序的可读性好C.程序中要有必要的注释D.输入数据前要有提示信息解析:解析 当今主导的程序设计风格是“清晰第一,效率第二”的观点。结构化程序设计思想提出之前,在程序设计中曾强调程序的效率,而在实际应用中,人们更注重程序的可理解性。9.可在 C程序中用作用户标识符的一组标识符是(分数:2.00)A.and B.DateC.HiD.case _2007 y-m-d DTom Bigl解析:解析 在 C语言中,合法标识符的命名规则是:标识符可以由字母、数字和下划线 3种字符组成,且第一个字符必须为字母或下划线。C 语言的标识
14、符可以分为关键字、预定义标识符和用户标识符。选项B)和 C)中的横线以及点都不合法,选项 D)中的 case为 C语言关键字。10.有以下程序 #include stdio.h main() int i,j,m=55; for(i=1;i=3;i+) for(j=3;j=i;j+)m=m%j; printf(“%d/n“,m); 程序的运行结果是(分数:2.00)A.0B.1 C.2D.3解析:解析 本题考查循环语句的嵌套以及条件的判断问题。在程序中,内层循环判断条件为“ji”,而 j的初值为 3,故当 i的值为 1和 2时,内层循环体都不会被执行。只有当 i和 j都等于 3时才会执行一次。m
15、 的值为 55对 3取模,计算结果为 1。11.下面各选项中,均是 C语言合法标识符的选项组是(分数:1.00)A.33 we autoB._23 me _3ew C._43 3e_ elseD.ER-DF 32解析:解析 合法的标识符是由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,用户定义的标识符不能与关键字相同。选项 A),数字不能为第一个字母,auto 为关键字;选项 C)中,也是数字不能为第一个字母,else 为关键字;选项 D)中负号不合法。12.为了提高测试的效率,应该(分数:1.00)A.随机选取测试数据B.取一切可能的输入数据作为测试数据C.在完成编码以后制定软件
16、的测试计划D.集中对付那些错误群集的程序 解析:解析 测试的目的是发现软件中的错误。经验表明,程序中存在错误的概率与该程序中已发现的错误成正比。这一现象说明,为了提高测试效率,测试人员应该集中对待那些错误群集的程序。13.下列程序的运行结果是 #include“stdio.h“ main() intx=-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 解析:解析 ifelse 语句的执行过程如下,首先计算 if后面一对圆括号内表达式的值,若表达式的值为非 0,执行 if子句,然后跳过
17、else子句,去执行 if语句后的下一条语句;若表达式的值为 0,跳过if子句,去执行 else子句,接着去执行 if语句后的下一条语句。C 语言的语法规定,else 子句总是与前面最近的不带 else的 if匹配,与书写格式无关,本题目的后一个 if-else相当于嵌套在第一个 if子句里,相当于 xyi+); return(i);(分数:2.00)填空项 1:_ (正确答案:*(str+i 或 stri)解析:解析 str 是指针变量,它指向字符型数据,在循环过程中,可以用*(str+i)来访问字符串中的第 i个元素,判断是否为结束标志,如果不是,i=i+1,继续取下一个元素进行判断,直到*(str+i)的值为/0,为止,也可以用下标的方式引用字符,如*(str+i)相当于 stri。53.阅读下列程序,则程序的输出结果为_。 #include“stdio.h“ struct ty int data; char c; main() struct ty a=30,x; fun(a); printf(“%d%c“,a.data,a.c); fun(struct ty b) b.data=20; b.c=y;(分数:2.00)填空项 1:_ (正确答案:30x)解析:解析 本题的参数传递属于值传递,所以被调用函数内不能改变调用函数中的数据。