二级C语言笔试-387
(总分:100.00,做题时间:90分钟)
一、{{B}}选择题{{/B}}(总题数:40,分数:70.00)
1.有以下程序 #include<stdio.h> main() {char c1,c2,c3,c4,c5,c6; scanf("%c%c%c%c",&c1,&c2,&c3,&c4); c5=getchar();c6=getchar(); putchar(c1);putchar(c2); printf("%c%c/n",c5,c6); } 程序运行后,若从键盘输入(从第1列开始) 123<回车> 45678<回车> 则输出结果是
(分数:2.00)
(分数:2.00)
A.1267
B.1256
C.1278
D.1245 √
解析:[解析] putchar(c1)输出1,putchar(c2)输出 2,pfintf("%c%c/n",c5,c6)输出45。
2.现有如下程序段 #include"stdio.h" #include"string.h" main() { char a[]="acfijk";/*这里是有序的字符序列*/ char b[]="befijklqswz";/*这里是有序的字符序列*/ char c[80],*p; int i=0,j=0,k=0; while(a[i]!二'/0'&&b[j]!='/0') { if(a[i]<b[j])c[k++]=a[i++]; else if(a[i]>b[j])c[k++]=b[j++]; else{ c[k++]=b[j++]; i++;}} while(a[i]=='/0'&&b[j]!='/0') c[k++]=b[j++]; while(a[i]!='/0'&&b[j]=='/0') c[k++]=a[i++]; c[k]='/0'; puts(c);} 则输出结果是
(分数:2.00)
(分数:2.00)
A.acfijkbefijklqswz
B.abceffiijjkklqswz
C.befijklqswz acfijk
D.abcefijklqswz √
解析:[解析] 这个题目的功能是实现两个有序字符串,合并成一个新的有序的字符串。
3.线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是
(分数:2.00)
(分数:2.00)
A.每个元素都有一个直接前件和直接后件
B.线性表中至少要有一个元素
C.表中诸元素的排列顺序必须是由小到大或由大到小
D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件 √
解析:[解析] 线性表可以为空表;第一个元素没有直接前件,最后一个元素没有直接后件;线性表的定义中,元素的排列并没有规定大小顺序。
4.具有3个结点的二叉树有
(分数:2.00)
(分数:2.00)
A.2种形态
B.4种形态
C.7种形态
D.5种形态 √
解析:[解析] 具有3个结点的二叉树有以下的几种形态:
5.以下程序的输出结果是 long fun(int n) { long s; if(n==1‖n==2)s=2; else s=n-fun(n-1); return s;} main() {printf("%1d/n",fun(3));}
(分数:2.00)
(分数:2.00)
A.1 √
B.2
C.3
D.4
解析:[解析] 该题考查的是递归函数的调用,题中读fun函数进行了递归调用,第1次调用:fun(3)n=3 s=3-fun(2);第二次调用时:fun(2)n=2 s=2返回第一次调用后,s=3-2=1。
6.下列是用户自定义标识符的是
(分数:2.00)
(分数:2.00)
A._w1 √
B.3_xy
明解c语言 C.int
D.LINE-3
解析:[解析] C语言规定用户标识符由英文字母、数字和下划线组成,且第一个字符必须是字母或下划线,由此可见选项B),D)是错的;此外,C语言不允许用户将关键字作为标识符,而选项C)选项项中的int是C语言的关键字。
7.以下4个程序中,完全正确的是
(分数:2.00)
A.#include<stdih> main(); {/*programming*/ printf("programming!/n");}
B.#include<stdih> main() {/*/programming/*/ printf("programming!/n");} √
C.#include<stdih> main() {/*/*programming*/*/ printf("programming!/n")}
D.include<stdih> main() {/*programming*/ printf("programming!/n");}
解析:[解析] 选项A)main();的分号是错误的,不能有分号;选项C)的注释语句多了两个*号;选项D)include前面没有#。
8.下列选项中C语言中不合法的字符串常量的是
(分数:2.00)
(分数:2.00)
A."/121"
B.'y' √
C."/n/n"
D."ABCD/x6d"
解析:[解析] 字符串常量是由双引号括起来的一串字符,其中的双引号不可缺少。由此可知,选项A)、C)、D)都是合法的字符串常量,而选B)是一个字符常量。
9.若要求从键盘读入含有空格字符的字符串,应使用函数
(分数:2.00)
(分数:2.00)
&()
&s() √
&har()
D.scanf()
解析:[解析] canf()语句用“空格”区别不同的字符串;getc()与getchar()语句不能用于字符串的读入。
10.在软件测试设计中,软件测试的主要目的是
(分数:2.00)
(分数:2.00)
A.实验性运行软件
B.证明软件正确
C.出软件中全部错误
D.尽可能多地发现软件中的错误 √
解析:[解析] 使用人工或自动手段来运行或测定某个系统的过程,目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试是为了发现错误而执行程序的过程。测试以查错误为目的,而不是为了演示软件的正确功能。
11.下列程序的输出结果为 main() { union u {char *name; int age; int income;}s s.name="WANGLIONG"; s.age=28; s.income=1000; printf("%d/n",s.age); }
(分数:1.00)
(分数:1.00)
A.28
B.1000 √
C.0
D.不确定
解析:[解析] 本题对共用体的使用进行了考查。由于共用体所有成员共同占据一段存储空间,所以对成员变量的赋值,后面的赋值会覆盖掉前面的赋值,因为s.income=1000;是最后一次成员变量赋值,变量age与变量income共同占据一段存储空间,所以age的值也为1000。
12.下列选项中不属于结构化程序设计方法的是
(分数:1.00)
(分数:1.00)
A.自顶向下
B.逐步求精
C.模块化
D.可复用 √
解析:[解析] 结构化程序设计方法的主要原则是:自顶向下,逐步求精,模块化,限制使用goto语句。可复用性是指软件元素不加修改和稍加修改可在不同的软件开发过程中重复使用的性质。软件可复用性是软件工程追求的目标之一,是提高软件生产效率的最主要方法。面向对象的程序设计具有可复用性的优点。
13.下列叙述中,正确的是
(分数:1.00)
(分数:1.00)
A.用E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系 √
B.用E-R图只能表示实体集之间一对一的联系
C.用E-R图只能表示实体集之间一对多的联系
D.用E-R图表示的概念数据模型只能转换为关系数据模型
解析:[解析] 两个实体之间的联系实际上是实体集合的函数关系,这种函数关系可以有下面几种,即一对一的联系、一对多(或多对一)的联系和多对多的联系;概念模型便于向各种模型转换。由于概念模型不依赖于具体的数据库管理系统,因此,容易向关系模型、网状模型和层次模型等各种模型转换。
14.有如下程序段 int a=14,b=15,x; char c='A'; x=(a&&b)&&(c<'b'); 执行该程序段后,x的值为
(分数:1.00)
(分数:1.00)
&ue
B.false
C.0
D.1 √
解析:[解析] 在C语言中,逻辑运算符有4个,它们分别是:!(逻辑非)、‖(逻辑或)、&&(逻
辑与)、^(异或)。在位运算里面还有&(位与)、|(位或)的运算。本题考查逻辑与运算符的用法,在表达式x=(a&&b)&&(c<'B');中,先判断a&&b条件,逻辑与条件的两边都要保证为1,即a和b都成立,当然c<'B',是成立的,显然,该表达式的值为1。
15.有以下程序 int fun(int x[],int n) {static int sum=0,i; for(i=0;i<n;i++)sum+=x[i]; return sum; } main() {int a[]={1,2,3,4,5},b[]={6,7,8,9},s=0; s=fun(a,5)+fun(b,4);printf("%d/n",s); } 程序执行后的输出结果是
(分数:1.00)
(分数:1.00)
A.45
B.50
C.60 √
D.55
解析:[解析] 内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数
据,再次调用该函数时,以前调用时的数值仍然保留着。fun(a,5)的值是15,再次调用后sum=15,所以Fun(b,4)=45,s=45+15=60。
16.栈通常采用的两种存储结构是
(分数:1.00)
(分数:1.00)
A.顺序存储结构和链式存储结构 √
B.散列方式和索引方式
C.链表存储结构和数组
D.线性存储结构和非线性存储结构
解析:[解析] 和线性表类似,栈也有两种存储方法,一是顺序栈,二是链式栈。栈的顺序存储结构是利用一组地址连续的存储单元一次存储自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素的位置,由于栈的操作是线性表操作的特例,相对而言,链式栈的操作更易于实现。
17.下面程序段的运行结果是 char *p="abcdefgh"; p+=3; printf("%d/n",strlen(strcpy(p,"ABCD")));
(分数:1.00)
(分数:1.00)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论