二级C语言笔试128.docx
- 文档编号:19094473
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:25
- 大小:25.99KB
二级C语言笔试128.docx
《二级C语言笔试128.docx》由会员分享,可在线阅读,更多相关《二级C语言笔试128.docx(25页珍藏版)》请在冰豆网上搜索。
二级C语言笔试128
二级C语言笔试-128
(总分:
98.00,做题时间:
90分钟)
一、选择题(总题数:
40,分数:
68.00)
1.数据的完整性是指数的正确性、有效性和______。
(分数:
2.00)
A.可维护性
B.独立性
C.安全性
D.相容性 √
解析:
[评析]数据模型的完整性规则是始定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态及其状态的变化,以保证数据的正确性、有效性和相容性。
2.下列程序执行后输出的结果是______。
intd=l;
fun(intp)
intd=5;
d+=p++;
printf("%d,",d);
main()
inta=3;
fun(
(分数:
2.00)
A.;
&nbs
解析:
[评析]本题执行过程如下:
首先调用fun函数,使得实参a的值3传递绐形参p,得到局部变量d=8,打印出局部变量d的值8返回主函数执行“d+=a++””,此处的d为全局变量,所以d=1+3=4(由于本题是值传递,所以在函数fun中对p值的改变并不能引起a的改变),故本题的输出是8,4。
3.以下程序(程序左边的数字为附加的行号)______。
1#include<str.h>
2#include<stdio.h>
3main()
4chars[]="string";
5puts(s);
6strcpy(s,"hello");
7printf("%3S/n",s);
(分数:
2.00)
A.没有错
B.第1行有错 √
C.第6行有错
D.第7行有错
解析:
[评析]字符串复制函数strcpy包含在头文件string.h中,因此,程序中的第1行文件包含命令是错误的。
4.下面是对宏定义的描述,不正确的是______。
(分数:
2.00)
A.宏不存在类型问题,宏名无类型,它的参数也无类型
B.宏替换不占用运行时间
C.宏替换时先求出实参表达式的值,然后代入形参运算求值 √
D.宏替换只不过是字符替代而已
解析:
[评析]宏替换实质上就是字符替代,它不可能进行计算,故C错误。
带参数的宏与函数相比,宏在程序编之前已经将代码替换到程序内,执行时不会产生类似于函数调用的问题,可以说不占用运行时间。
5.数据存储和数据流都是______,仅仅是所处的状态不同。
(分数:
2.00)
A.分析结果
B.事件
C.动作
D.数据 √
解析:
[评析]数据流图有4种成分:
源点或终点、处理、数据存储和数据流。
数据存储是处于静止状态的数据,数据流是处于运动中的数据。
6.在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比较次数为______。
(分数:
2.00)
A.2
B.3
C.4 √
D.5
解析:
[评析]二分法查找是用关键码与线性表的中间元素比较,然后根据比较结果来判断是结束查找,还是在左边或右边子表按相同的方法继续查找。
本题中,与11比较的关键码分别为15,8,10,12四个。
7.以下程序段的输出结果是______。
main()
chars1[10],s2[10],s3[10];
scanf("%s",s1);gets(s2);gets(s3);
puts(s1);puts(s2)puts(s3)
输入数据如下:
(此处<CR>代表回车符)
aaa<CR>
bbb<CR>
(分数:
2.00)
A.aaa
bbb
B.aaa
bbb √
C.aaa/0bbb/0
D.aaabbb
解析:
[评析]scanf是标准输入函数,在输入字符串aaa时,实际的内容为“aaa/0”,“/0”是由系统自动加入的;gets的功能是从终端读入—行字符,即—直读到换行符为止,并由系统自动以“/0”代替换行符。
8.能将高级语言程序转换成目标语言程序的是______。
(分数:
2.00)
A.调试程序
B.解释程序
C.编译程序 √
D.编辑程序
解析:
[评析]用高级语言编写的程序称为“源程序”,而计算机只能识别和执行由O和1组成的二进指令,所以高级语言必须先用—种称为“编译程序”的软件,把源程序翻译成二进制形式的“目标程序”。
9.下列程序的输出结果是______。
main()
inti=3;
switch(i)
case1:
case2:
printf("%d",i)
case3:
case4:
break;
default:
printf("OK");
(分数:
2.00)
A.0
B.3
C.OK
D.没有任何输出 √
解析:
[评析]在题中,i的值为3,由于“case3:
”后面没有break语句,所以继续向下执行“case4”后面的语句,由于“case4:
”后面的语句为break强行退出switch语句,所以,本题没有任何输出。
10.以下程序输出的结果为______。
main()
char*alpha[6]="ABCD","EFGH","IJKL","MNOP","QRST","UVWX";
char**p;
inti;
p=alpha;
for(i=0,i<4;i++)
prntf("%s",p[i]);
(分数:
2.00)
A.ABCDEFGHIJKL
B.ABCD
C.ABCDEFGHIJKLMNOP √
D.AEIM
解析:
[评析]alpha[0]指向“ABCD'’的首地址;alpha[1]指向“EFGH'’的首地址;alpha[2]指向“IJKL”的首地址,依此类推。
当初行p=alpha后,p指向指针数组alpha的首地址。
for循环中输出了4个字符串。
11.下面程序的输出结果是______。
#inc1ude<stdio.h>
main()
char*p[]="BOOL","OPK","H","SP";
inti;
for(i=3;i>=0;i-,i-)
prinf("%c",*p[i]);
print("/n")
(分数:
1.00)
A.SO √
B.SP
C.SPOPK
D.SHOB
解析:
[评析]p[0]存放的是“BOOL/0”的首地址;p[1]存放的是“OPk/0”的首址等。
在printf语句中输出的*p[i]表示p[i]字符串中的第一个字符。
在for循环中,i的初值为3,那么输出的第—个字符为“S”,接着两次i--,则输出的值为*p[1],即字符“O”,所以本题的输出为SO。
12.下列程序的执行结果是______。
#lnClude<stdio.h>
unionun
inti;
charc[2];
;
voidmain()
unionunx;
x.c[0]=10
x.c[l]=1;
printf("/n%d,x.i);
(分数:
1.00)
A.266 √
B.11
C.265
D.138
解析:
[评析]由于本题定义的是共用体,所以成员表列中的整型变量x与字符数组c共占用同—个存储单元,且此存储单元为2个字节,通常c[0]位于低字节,c[1]位于高字节,所以x.i的值为266。
13.在软件开发过程中,软件结构设计是描述______。
(分数:
1.00)
A.数据存储结构
B.软件体系结构 √
C.软件结构测试
D.软件控制过程
解析:
[评析]从工程管理角度来看,软件设计分两步完成:
概要设计和详细设计。
概要设计(又称结构设计)将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式。
14.对于n个结点的单向链表(无表头结点),需要指针单元的个数至少为______。
(分数:
1.00)
A.n-1
B.n
C.n+1 √
D.2n
解析:
[评析]在n个结点的单向链表(无表头结点)中,每个结点都有—个指针单元(即指针域),加上头指针,至少需要n+1个指针单元。
15.可以在C语言中用做用户标识符的是______。
(分数:
1.00)
A.void
define
WORD
B.as_b3
_123
If √
C.for
-abc
cas
D.2c
Do
SIG
解析:
[评析]C语言规定,标识符只能由字母、数字和下划线三种符号组成,而且第—个字符必须是字母或下划线。
另外还需要注意的是关键字不能作标识符。
选项a中void,C中for都为关键字,D中2c以字母开头。
16.下述函数功能是______。
intfun(char*x)
char*y=x;
while(*y++)
retumy-x-1;
(分数:
1.00)
A.求字符串的长度 √
B.求字符串存放的位置
C.比较两个字符串的大小
D.将字符串x连接到字符串y后面
解析:
[评析]在函数体内定义—字符型指针并指向形参,然后遍历其中各字符直到NULL,最后返回字符串首尾地址的差值,即字符串的长度。
17.在数据结构中,从逻辑可以把数据结构分为______。
(分数:
1.00)
A.动态结构和静态结构
B.紧凑结构和非紧凑结构
C.线性结构和非线性结构 √
D.内部结构和外部结构
解析:
[评析]逻辑结构反映数据元素之间的逻辑关系,线性结构表示数据元素之间—对—的关系,非线性结构表示数据元素之间—对多或多对—的关系。
18.______是构成C语言程序的基本单位。
(分数:
1.00)
A.函数 √
B.过程
C.子程序
D.子例程
解析:
[评析]C程序是由函数构成的。
—个C源程序至少包含—个main函数,也可以包含—个main函数和若干个其他函数,因此,函数是C程序的基本单位。
19.请读程序段:
charstr[]="ABCD",*p=str
print("%d/n",*(p+4));
程序段的输出结果是______。
(分数:
1.00)
A.68
B.O √
C.字符'D'的地址
D.不确定的值
解析:
[评析]在对字符数组赋字符串值时,系统会自动在字符串的末尾加上—个字符串结束标志'/0',故指向字符数组的指针p的*(p+4)的值为'/0'。
由于'/0'的编码值就是0,所以本题输出为0。
20.若有定义:
inta[4][10];,则以下选项中对数组元素a[i][j]引用错误的是______。
(o<=i<4,0<=j<=10
(分数:
1.00)
A.*(&a[0][0]+10*i+j)
B.*(a+i)+j √
C.*(*(a+i)+j)
D.*(a[i]+
解析:
[评析]本题中选项B是错误的引用,*(a+i)+j只代表了a[i][j]的地址。
21.以下程序的输出结果是______。
#include<sulio.h>
#defmeSQR(x)x*x
main()
inta,k=3;
a=++SQR(k+1);
printf("%d/n",
(分数:
2.00)
A.;
&n
解析:
[评析]本题宏替换中遇到形参x以实参k+l代替,其他字符不变。
SQR(k+1)展开后应为字符串k+l*k+l。
22.下列程序执行后的输出结果是______。
main()
intm[][3]=1,4,7,2,5,8,3,6,9
inti,k=2
for(i=0;i<3;i++)
print("%d",m[k][i]);
(分数:
2.00)
A.456
B.258
C.369 √
D.789
解析:
[评析]根据二维数组的定义得出:
m[0][0]=1,m[0][1]1=4,m[0][2]2=7,m[1][0]=2,m[1][1]=5,m[1][2]=8,m[2][0]=3,m[2][1]=6,m[2][2]=9,所以本题的输出是第3行的值m[2][0],m[2][2],即369。
23.已知字母A的ASCII码值是65,字母a的ASCII码值是97,以下程序______。
main()
chara='A';
intb=20;
pxintf("%d,%o",(a=a+a,a+b,b),a+'a'-'A',b);
(分数:
2.00)
A.表达式非法,输出零或不确定值
B.因输出项过多,无输出或输出不确定值
C.输出结果为20,141 √
D.输出结果为20,141,20
解析:
[评析]本题中首先输出逗号表达式“a=a+a,a+b,b”的值,即20。
然后以八进制的形式输出a+'a'-'A'的值为97对应的八进制数141,由于最后—个表达式b没有对应输出格式的输出项表列就不会输出。
24.定义int*swap()指的是______。
(分数:
2.00)
A.—个返回整型值的函数swap()
B.一个返回指向整型值指针的函swap() √
C.一个指向函数swap()的指针,函数返回一个整型值
D.以上说法均错
解析:
[评析]—个函数可以带回—个整型值、字符值、实型值等,但也可以带回指针型数据,即地址。
本题的定义中,包括括号和*号,由于()优先级高于*。
故它是—个返回整型指针的函数。
25.若一个名部变量的定义形式为staticintx;,那么,其中static的作用应该是______。
(分数:
2.00)
A.将变量存储在静态存储区
B.使变量X可以由系统自动初始化
C.使x只能在本文件内引用 √
D.使x的值可以永久保留
解析:
[评析]事实上,无论有无Static修饰,外部变量都具有A、B和C三种特性。
作为—种修饰,static仅是限制此类型外部变量的引用范围C只能在定义它的文件范围内使用。
26.以下程序的输出结果是______。
#include<stdio.h>
voidprt(int*x,int*y,int*z)
printf("%d,%d,%d/n",++*x,++*y,*(z++));
inta=10,b=40,c=20;
main()
prt(&a,&b&c)
prt(&a,&b,&c);
(分数:
2.00)
A.11,42,31
12,22,41
B.11,41,20
12,42,20 √
C.11,21,40
11,21,41
D.11,41,21
12,42,22
解析:
[评析]由于实参传送的是变量的地址,所以对形参指针所指向的单元内容的改变,即对实参内容的改变。
27.模块本身的内聚是模块独立性的重要性度量因素之—。
在7类内聚中,具有最强内聚的—项是______。
(分数:
2.00)
A.顺序性内聚
B.过程性内聚
C.逻辑性内聚
D.功能性内聚 √
解析:
[评析]内聚性是—个模块内部各元素间彼此结合的紧密程度的度量。
内聚共有7类,它们之间的内聚性由弱到强排列顺序为:
偶然内聚、逻辑内聚,时间内聚、过程内聚、通信内聚、顺序内聚和功能内聚。
28.排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的方法,称为______。
A.希尔排序 √
B.冒泡排序
C.插入排序
D.选择排序
解析:
[评析]希尔排序法的基本思想是:
将整个无序序列分割成若干小的子序列分别进行插入排序。
29.C语言库函数fgets(str,n,fp)功能是______。
(分数:
2.00)
A.从中指向的文件中读取长度n的字符串存入int指向的内存
B.从fp指向的文件中读取长度不超过n-1的字符串存入str指向的内存 √
C.从fp指向的文件中读到n个字符串存入str指向的内存
D.从str读取至多n个字符到文件fp
解析:
[评析]fgets函数的作用是从指定的文件读入—个字符串。
fgets(str,n,fp);中的n为要求得到的字符的个数,但只从fp指向的文件输入n-1个字符,然后在最后加—个“/0”字符,因此得到的字符串共有n个字符。
30.若进栈序列为1,2,3,4,进栈过程中可以出栈,则下列不可能的—个出栈序列是______。
(分数:
2.00)
A.1,4,3,2
B.2,3,4,1
C.3,1,4,2 √
D.3,4,2,1
解析:
[评析]栈是—种后进先出表,选项C中,先出栈的是3,说明此时栈内必然有1,2,由于1先于2进栈,所以1不可能在2之前出栈,故选项C这种出栈序列是不可能的。
31.下面语句的输出结果是______。
printf("%d、n",strlen("/t/"/065/xff/n"));
(分数:
2.00)
A.14
B.8
C.5 √
D.输出项不合法,无正常输出
解析:
[评析]在C语言中,以“/”开头的字符均为转义字符,其中“/”后可跟1~3位八进制数或在“/”后跟字母x及1~2位十六进制数,以此来代表—个特定的字符。
32.若有以下结构体定义,则______是正确的引用或定义。
structexample
intx;
inty;
v1;
(分数:
2.00)
A.example.x=10
B.examplev2.x=10
C.example.x=10
D.structexamplev2=10; √
解析:
[评析]在定义结构体变量时,不能只用结构体名example或关键字struct进行定义,必需要用结构体类型名structexample定义,在引用结构体成员变量时,需要用结构体变量名进行引用,所以选D。
33.下述程序文件输出的结果是______。
#inelude<stdio.h>
voidmain()
FILE*fp=fopen("TEST","wb");
fprintf(fp,"%d5.of%c%d",58,76273.0,'-',2278);
fclose(fp);
(分数:
2.00)
A.5876273-2278
B.5876273.000000-2278
C.5876273-2278 √
D.因文件为二进制文件而不可读
解析:
[评析]fprintf函数工作时,多个数据间不会自动加分隔符,选项A错误;浮点数的搞出格式是“%5.0f”表明其小数部分输出0位,即没有输出,所以选项B也是错误的。
34.设有以下语句:
charstrl[]="string",str2[8],*str,*str4="string";
则______不是对库函数的正确调用。
(分数:
2.00)
A.strcpy(strl,"HELLO1");
B.strcpy(str2,"HELLO2");
C.strcpy(str3,"HELLO3"); √
D.strcpy(str4,"HELLO4");
解析:
[评析]C语言中strcpy(stl,st2);,其两个参数均为字符指针或字符数组,选项C中的目的串指针str3没有指向具体有效的存储单元,故是错误的调用。
35.下列程序的输出结果是______。
#defineA100
main()
inti=0,sum=0;
doif(i=(i/2)*2)continue;
sum+=i;
while(++i<
(分数:
2.00)
A.;
print("%d/n",sum);
A)2500 √
B.2050
C.4
D.0
解析:
[评析]本题程序的功能是求1到99之间(包括1和99)所有奇数之和。
程序中的while循环的终止条件为++i=100,在while循环体内,如果i是偶数,则执行continue,跳过这一次循环,执行下—次循环,否则求和。
最后输出的值是1到99之间(包括1和99)所育奇数之和(1+99)*50/2=2500。
36.已知下面的程序段,正确的判断是______。
#defineA3
#defineB(
(分数:
2.00)
A.(A+1)*a)
inta=3;
……
X=3*(A+B(7));A)程序错误,不允许嵌套定义
B.X=93
C.)X=81 √
D.程序错误,宏定义不允许有参数
解析:
[评析]本题的宏定义是合法的,宏定义展开为3*(3+((A+1)*a))=3*(3+(7+1)*3))=81
37.关系代数运算是以______为基础的运算。
(分数:
2.00)
A.关系运算
B.谓词运算
C.集合运算 √
D.代数运算
解析:
[评析]关系代数运算是以关系代数作为运算对象的—组高级运算的集合。
它的基本操作是并、交、差、笛卡尔积,另外还包括垂直分割(投影)、水平分割(选择)、关系的结合(连接)等。
38.已知形成链表的存储结构如下图所示,则下述类型描述中的空白处应填______。
struct1ink
chardata;
node;
(分数:
2.00)
A.
B.
C.
D. √
解析:
[评析]在单向链表中,由于每个结点需要存储下—个结点的地址,且下—个结点的数据类型与前—个结点的数据类型完全相同,故应为strectlink*next。
39.已知小写字母a的ASCII码为97,大写字母A的ASCII码为65,以下程序的结果是______。
main()
unsignedinta=31,b=66;
pfintf("%c/n,a|b);
(分数:
2.00)
A.66
B.98
C.b √
D.B
解析:
[评析]位运算符“|”的作用是按位或,即两个二进制数的相应位中只要有—个为1,该位的结果值为1。
最后以字符型输出,98对应的字符“b”。
40.请读程序:
#include<stdio.h>
#include<string.h>
main()
char*s1="AbCdEf",*s2="aB";
s1++;s2++;
printf("%d/n",strcmp(s1,s2));
上面程序的输出结果是______。
(分数:
2.00)
A.正数 √
B.负数
C.零
D.不确定的值
解析:
[评析]函数strcmp的功能是比较字符串s1和s2,如果sl>s2,N0则返回个正数;如果sl<s2,则返回负数,否则返回零。
由于本题中小写字母b的ASCII码值大于大写字母B,故sl>s2;所以函数的值为正数。
二、填空题(总题数:
12,分数:
30.00)
41.对于长度为n的顺序存储的线性表,当随机插入和删除—个元素时,需平均移动元素的个数为【1】。
(分数:
2.00)
填空项1:
__________________ (正确答案:
n/2)
解析:
[评析]删除—个元素,平均移动的元素个数为(n-l+n-2+…+0)/n=(n-1)/2;插入—个元素,平均移动元素个数为(n+n-1+n-2+…+1)/n=(n+1)/2;所以总体平均移动元素个数为n/2。
42.注释说明了程序的功能,它分为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言 笔试 128