二级C语言笔试282.docx
- 文档编号:15193191
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:27
- 大小:26.16KB
二级C语言笔试282.docx
《二级C语言笔试282.docx》由会员分享,可在线阅读,更多相关《二级C语言笔试282.docx(27页珍藏版)》请在冰点文库上搜索。
二级C语言笔试282
二级C语言笔试-282
(总分:
100.00,做题时间:
90分钟)
一、选择题
(总题数:
40,分数:
70.00)
1.C语言结构体类型变量在程序执行期间()。
(分数:
2.00)
A.所有成员一直驻留在内存中 √
B.没有成员驻留在内存中
C.部分成员驻留在内存中
D.只有一个成员驻留在内存中
解析:
[解析]在C语言的结构体类型变量在程序执行期间所有成员一直驻留在内存中。
2.下列选项中不合法的十六进制数是()。
(分数:
2.00)
A."0"xff
B."0"X11
C."0"xlg √
D."0"Xabc
解析:
[解析]十六进制是以“0x、0X”开头的字符串,字符串中只能含有0~9这10个数字和a、b、c、d、e、f这6个字母。
3.有以下程序:
main()
union
charch[2];
intd:
s;
s.d=0x4321;
printf("%x,%x/n",s.ch[0],s.ch[1]);
在16位编译系统上,程序执行后的输出结果是()。
(分数:
2.00)
A.21,43 √
B.43,21
C.43,00
D.21,00
解析:
[解析]s是一个公用体,d的值分别与ch中的两上元素的值相同,d的高位放在ch[1]中、低位放在ch[0]中,因此输出的结果为21,43。
4.下列程序的输出结果是()。
#include<stdio.h>
main()
inta=0,1;
for(i=1;i<5;i++)
switch(i)
case0:
case3:
a+=1;
case1:
case2:
a=2;
default:
a+=3:
printf("%d",a);
(分数:
2.00)
A.19 √
B.18
C.6
D.8
解析:
[解析]本题考查switchcase开关语句,default退出继续循环。
当i=1时,执行case1,因为没有break语句,所以依次往下运行,a=a+2-2,a=a+3-5;当i=2时,执行case2,没有break语句,所以依次往下运行,a=a+2=7,a=a+3=10;当i=3时,执行case3,当a=a+1=11,没有break语句,所以依次往下运行,a=a+2=13,a=a+3=16,当i=4时,没有case语句,则执行default,a=a+3=19,i=5不成立循环结束。
5.有以下程序:
main()
inta=0,b=0;
a=10;/*给a赋值
b=20;给b赋值*/
printf("a+b=%d/n",a+b);//输出计算机结果
程序运行后的输出结果是()。
(分数:
2.00)
A.a+b=10 √
B.a+b=30
C.30
D.出错
解析:
[解析]本题中/*……*/为多行注释,所以可知b-20为注释语句,在程序运行时不起作用,b仍为0,所以本题中A正确。
6.设有以下定义和语句:
charstr[20]="Program",*p;
p=str;
则以下叙述中正确的是()。
(分数:
2.00)
A.*p与str[0]的值相等 √
B.str与p的类型完全相同
C.str数组长度和p所指向的字符串长度相等
D.数组tr中存放的内容和指针变量p中存放的内容相同
解析:
[解析]本题中的str为一个字符型数组,p为字符型指针变量,其指向str的首地址,*p的值为str[0]中的字符,其类型、长度不同但字符第一个相同,故答案选择A。
7.标准库函数fgets(s,n,file)的功能是()。
(分数:
2.00)
A.从文件file中读取长度为n的字符串存入字符数组s中
B.从文件file中读取长度为不超过n-1个字符的字符串放到字符数组s中 √
C.从文件file中读到n个字符串存入字符数组s中
D.从文件file中读取长度为n-1个字符的字符串存入字符数组s中
解析:
[解析]本题考查fgets()函数的使用调用形式为:
fgets(s,n,fp)。
fgets函数参数说明:
“s”可以是一个字符数组名,也可以是指向字符串的指针:
“n”为要读取的最多的字符个数:
“fp"是指向该文件型指针。
fgets函数的功能是:
从fp所指向的文件中读取长度不超过n-1个字符的字符串,并将该字符串放到字符数组s中,读入字符串后会自动在字符串末尾加入"/0"结束符,表示字符串结束。
8.若有说明“chars1[30]="abc",s2[]="defghi";”,则在使用函数stcat(s1,s2)后结果是()。
(分数:
2.00)
A.s1的内容更新为abcdefghi
B.s1的内容更新为defghi/0
C.s1的内容更新为defghiabc/0
D.s1的内容更新为abcdefghi/0 √
解析:
[解析]strcat(s1,s2)函数的功能是把s2字符串连接到s1字符串的末尾,要保证s1有足够的空间容纳下连接后的字符串。
9.#define能作简单的替代,用宏来替代计算多项式5*x*x+5*x+5的值的函数f,正确的宏定义语句为()。
(分数:
2.00)
A.#definef(x)5*x*x+5*x+5
B.#definef5*x*x+5*x+5
C.#definef(a)(5*a*a+5*a+5) √
D.#define(5*x*x+5*x+5)f(x)
解析:
[解析]本题考查带参数宏的格式:
#define标识符(形参表)形参表达式。
其功能:
把预处理程序中出现的所有带实参的宏名,展开形成由实参组成的表达式。
故C正确。
10.有下列函数定义:
intfun(doublea,doubleb)
returna*b;)
若下列选项中所用变量都已经正确定义并赋值,错误的函数调用是()。
(分数:
2.00)
A.if(fun(x,y))……
B.z=fun(fun(x,y),fun(x,y));
C.z=fun(fun(x,y)x,y); √
D.fun(x,y);
解析:
[解析]本题考查函数的在函数调用时参数传递形式,形参与实参参数个数类型要一致。
11.有以下程序:
main()
intnum[4][4]=1,2,3,4,5,6,7,8,9,10,11,12,,13,14,15,16,i,j;
for(i=0;i<4;i++)
for(j=0;j<i;j++)printf("%4c",");
for(j=______;j<4;j++)printf("%4d",num[i][j]);
printf("/n");
若要按以下形式输出数组右上半三角
1234
678
1112
16
则在程序下划线处应填入的是()。
(分数:
1.00)
A.i-1
B.i √
C.i+1
D.4-i
解析:
[解析]本题中要求输出右上半角的数,对角线上的数的下标相同,所以j=i。
12.有以下程序:
intfun(intx,inty)return(x+y);
main()
inta=1,b=2,c=3,sum;
sum=fun((a++,b++,a+b),c++);
printf("%d/n",sum);
执行后的输出结果是()。
(分数:
1.00)
A.6
B.7
C.8 √
D.9
解析:
[解析]sum=fun((a++,b++,a+b),c++)中a++,b++,a+b为逗号表达武,运算后取a+b的值为5,c++为3,故函数调用后输出结果为8。
13.已知i、j、k为int型变量,若要从键盘输入2、3、4<CR>,使i、j、k的值分别为2、3、4,下列正确的输入语句是()。
(分数:
1.00)
A.scanf("%3d,%3d,%3d",&.i,&j,%k);
B.scanf("%d,%d,%d",&i,&j,&k); √
C.scanf("%d%d%d",&.i,&j,&k);
D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);
解析:
[解析]本题主要考查scanf函数的使用,scanf函数的调用形式是:
scanf(格式字符串,输入项地址表)。
“格式字符串”是要输入的变量的格式符:
“输入项地址表”是要输入的变量的地址。
14.对下列二叉树
进行中序遍历的结果是()。
(分数:
1.00)
A.ACBDFEG √
B.ACBDFGE
C.ABDCGEF
D.FCADBEG
解析:
[解析]有3种遍历方法;前序、中序、和后序。
中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树。
D为前序遍历对二叉树进行中序遍历,结果为ACBDFEG。
15.源程序的文档不包括()。
(分数:
1.00)
A.符合号名的命名要有实际意义
B.正确的文档形式 √
C.良好的视觉组织
D.正确的程序注释
解析:
[解析]本题主要考查源程序的定义:
①符号名应具有一定实际的含义;②正确的程序注释;③良好的视觉组织。
16.下列叙述中正确的是()。
(分数:
1.00)
A.在赋值表达式中,赋值号的左边既可以是变量,也可以是任意表达式
B.实型变量中允许存放整型数
C.若a和b类型相同,在执行赋值a=b后,b中的值将放入a中,但b中的值不变
D.在C程序中,求余算符“%”两边的类型相同时才能进行运算 √
解析:
[解析]选项A,在赋值表达式中,赋值号的左边只能是变量或者是代表某个存储单元的表达式,不能是任意表达式,右边也不得出现表达式;选项B中,整型变量中只能存放整型数,但实型交量中的能存放实型数,也能存放整型数;选项C表达武a=b的意思是把变量b的值赋给变量a,从而覆盖a中原来值;选项D,要求取余运算符"%"两边的类型均为整型。
17.有以下程序:
main()
inta=0,b=lO,c=0,d=0;
if(a=1)b=1;c=2;
elsed=3;
printf("%d,%d,%d,%d/n",a,b,c,d);
程序输出()。
(分数:
1.00)
A.0,1,2,0
B.0,0,0,3
C.1,1,2,0
D.编译有错 √
解析:
[解析]语法错误else与if之间不应再用其他语句,如果满足if条件则继续执行if后面的语句不满足就执行else语句。
18.下列程序的输出结果是()。
main()
inta=6,b=3,c;
if(a<b)
c=a*b;printf("%d%d,%d/n",b,a,c);
else
c=b/a;printf("%d,%d,%d/n",b,a,c);
(分数:
1.00)
A.3,6,18
B.3,6,2 √
C.6,3,18
D.6,3,2
解析:
[解析]本题考查if...else语句。
如果if条件成立,则执行if下面的语句,不成立则执行else,判断条件,发现a<b不成立,则执行else下的语句,得c=b/a=2。
19.有下列程序:
#include<stdio.h>
main()
intx=0;
inty=0;
while(x<7&&++y)
y--;
x++;
printf("%d,%d",y,x);
程序的输出结果是()。
(分数:
1.00)
A.0,7 √
B.7,7
C.0,6
D.1,6
解析:
[解析]本题考查while循环。
在while循环中,y自加每次循环都加1,在循环体内y--每次减1,所以总的y值不变,当x自加到7时不满足循环条件,循环结束。
20.若有定义“doublea;”,则正确的输入语句是()。
(分数:
1.00)
A.scanf("%1f",a);
B.scanf("%f",&a);
C.scanf("%1f",&-a)
D.scanf("%1e",&a); √
解析:
[解析]本题考查scanf函数的调用形式:
scanf(格式字符串,输入项地址表)。
题中定义变量a为双精度型变量,双精度变量的格式符为“1e”;变量的地址用取地址符“&”加变量名表示,所以选项D正确。
21.数据库系统的核心是()。
(分数:
2.00)
A.数据模型
B.数据库管理系统 √
C.数据库
D.数据库管理员
解析:
[解析]本题考查对数据库系统的理解,数据库系统由数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、硬件平台(硬件)、软件平台5个部分构成。
其中数据库管理系统是数据库系统的核心,它负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等工作。
22.若有定义和语句:
int**pp,*p,a=20,b=10;
pp=&p;p=&a;p=&b;printf("%d,%d/n",*p,**pp);
则输出结果是()。
(分数:
2.00)
A.20,10
B.20,20
C.10,20
D.10,10 √
解析:
[解析]本题考查指针变量的赋值。
**pp是定义一个指针变量,语句pp=&p是将pp指向指针p,*p和**pp都是指针p所指的内存空间的内容,即b的值。
23.函数调用strcat(strcpy(str1,str2),str3)的功能是()。
(分数:
2.00)
A.将字符串str1复制到字符串str2中后再连接到字符串str3之后
B.将字符串str1连接到字符串str2之后再复制到字符串str3之后
C.将字符串str2复制到字符串str1之后再将字符串str3连接到字符串str1之后 √
D.将字符串str2连接到字符串str1之后再将字符串str1复制到字符串str3中
解析:
[解析]strcat(s1,s2)函数的功能是把s2字符串连接到s1字符串末尾,strcpy(s1,s2)是把s2字符串复制到给s1字符串,要保证s1的容量。
24.若有以下的说明和语句,则在执行for语句后,*(*(pt+1)+2)表示的数组元素是()。
intt[3][3],*pt[3],k;for(k=O;k<3;k++)pt[k]=&t[k][0];
(分数:
2.00)
A.t[2][0]
B.t[2][2]
C.t[1][2] √
D.t[2][1]
解析:
[解析]从for循环可知pt是指向行的首地址的指针变量,因此由指针的表示方法可知:
*(*(pt+1)+2)=pt[1][2]=t[1][2]。
25.下列叙述中正确的是()。
(分数:
2.00)
A.算法的执行效率与数据存储结构无关
B.算法的空间复杂度是指算法程序中指令(或语句)的条数
C.算法的有穷性是指算法必须能在执行有限个步骤之后终止 √
D.以上3种描述都不对
解析:
[解析]在程序设计中,算法执行效率与数据的存储结构密切相关。
算法的空间复杂度是指算法执行过程中所需存储空间。
26.下列4个关于C语言的结论中错误的是()。
(分数:
2.00)
A.可以用do-while语句实现的循环一定可以用while语句实现
B.可以用for语句实现的循环一定可以用while语句实现
C.可以用while语句实现的循环一定可以用for语句实现
D.do-while语句与while语句的区别仅是关键字“while”出现的位置不同 √
解析:
[解析]本题考查对各个循环语句的理解。
①do-while语句、for语句、while语句所实现的循环可以相互替代;②do-while语句至少执行一次,而while是符合条件执行条件,不符合不执行。
27.下列程序的输出结果是()。
#include<stdio.h>
main()
structst
inty,x,z;
;
union
longi;
intj;
chark:
un;
printf("%d,%d/n",sizeof(structst),sizeof(un);
(分数:
2.00)
A.6,2
B.6,4 √
C.8,4
D.8,6
解析:
[解析]本题主要考查结构和联合内存使用的一些区别:
结构中每个成员相互独立,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,联合所占用内存空间最长的成员占用的空间。
28.下列程序的运行结果是()。
#include<stdio.h>
main()
inta=2,b=3,c=4;
if(a<b)
if(b<0)c=0;
elsec++;
printf("%d/n",c);
(分数:
2.00)
A.2
B.3
C.5 √
D.4
解析:
[解析]本题考查if…else语句。
第一个if语句,先判断条件,发现a<b条件成立,则执行第二个if语句,再判断条件,发现b<0条件件成立,则执行与其配对的else语句,c++,c自加1,得c=5。
29.下列程序的运行结果是()。
#include<stdio.h>
voidfun(int*s,int*p)
staticintt=3;
*p=s[t];
t--:
voidmain()
inta[]=2,3,4,5),k;
intx:
for(k=0,k<4,k++)
fun(a,&x);
printf("%d,",x);
(分数:
2.00)
A.5,4,3,2 √
B.2,3,4,5
C.2,2,2,2
D.5,5,5,5
解析:
[解析]依据fun函数,可知其要实现的功能是将s中第(t+1)个元素以前的元素逆置赋给数组p。
由于fun中函数定义了静态变量t=3,因此,main()函数中调用函数fun(a,&x)时,就是要将数组a中前4个元素逆置赋给数x,最后输出x数组。
30.有以下程序:
voidfunl(char*p)
char*q;
q=p;
while(*q!
='/0')
(*q)++;q++;
main()
chara[]="Program"),*p;
p=&a[3];funl(p);
printf("%s/n",a);
程序执行后的输出结果是()。
(分数:
2.00)
A.Prohsbn √
B.Prphsbn
C.Progsbn
D.Program
解析:
[解析]本题中使用了函数的调用,由funl函数中的while循环可知,循环的作用是为了把q所指向的内容增加1,而从主函数传到函数时是把下标为3开始传,因此当调用函数执行完后,传过去的字符串为'hsbn',前面不变。
31.下列能正确定义且赋初值的语句是()。
(分数:
2.00)
A.intn1=n2=1;
B.charc=99; √
C.floatf=f+1;
D.doublex=1.2E5.6:
解析:
[解析]在C语言规定中,可以在定义变量的同时给变量赋初值,选项A中n2没有定义;选项C中不能在赋值表达武的右边出现变量本身,选项D中字母E后面的数应该为整数,所以不对。
32.下列叙述中正确的是()。
(分数:
2.00)
A.break语句只能用于switch语句体中
B.continue语句的作用是使程序的执行流程跳出包含它的所有循环
C.break语句只能用在循环体内和switch语句体内 √
D.在循环体内使用break语句和continue语句的作用相同
解析:
[解析]break只能在循环体内和switch语句内。
如果break出现在循环体的switch语句体内时,表示跳出该switch语句体,但并不能中止循环体的执行。
33.为了提高软件的独立性,模块之间最好是()。
(分数:
2.00)
A.控制耦合
B.公共耦合
C.内容耦合
D.数据耦合 √
解析:
[解析]在程序设计中,各模块间的内聚性越强,则耦合性越弱。
一般较优秀的软件设计,应尽量做到高内聚、低耦合,有利于提高模块的独立性。
耦合性与内聚性是模块独立的两个定性标准,是互相关联的。
34.在16位编译系统上,若有定义“inta[]=10,20,30,*p=&a;”,当执行“p++;”后,下列说法错误的是()。
(分数:
2.00)
A.p向高地址移了一个字节 √
B.p向高地址移了一个存储单元
C.p向高地址移了两个字节
D.p与a+1等价
解析:
[解析]因为p是整型的指针变量,因此其移动一个位置即两个字节,故选择A选项。
35.若希望下列的程序运行后输出25,程序空白处的正确选项是()。
main()
inti,j=50,a[]=7,4,10,5,8;
for()
j+=a[i];
printf("%d",j-40);
(分数:
2.00)
A.i=1;i<4;++i
B.i-1;i<3;++i
C.i-4;i>2;i--
D.i-2;i<4;++i √
解析:
[解析]要想使程序输出是25,则在printf中,j-40=25,j=65,而j初值是50,“j+=a[i];”也可写成i=j+a[i];j=50+a[i]=65,当a[i]=15条件满足数组下标由0开始,当i=2时,指向元素10,i=3时,10+5=15退出循环体,所以选项D正确。
36.已知大写字母A的ASCⅡ码是65,小写字母a的ACSⅡ码是97。
下列能将变量中的大写字母转换为对应小写字母的语句是()。
(分数:
2.00)
A.c=(c-'A')%26+'A'
B.c=c+32 √
C.c=c-'A'+'A'
D.c=('A'+
解析:
[解析]根据ASCII码可知大写字符A与小写字符a的ASCII码相差32,而D中应该是加上'a',选项A和C左侧的表达式都是大写字符c与大写字符A的差与'a'的ASCⅡ代码的和就是小写字符c的ASCⅡ代码。
37.下列程序的执行结果是()。
#include<stdio.h>
inta,b,c;
a=b=2,c=1;
c=(a++)-1;printf("%d,%d",a,c);
c+=-a+++(++b);printf("%d,%d",a,c);
(分数:
2.00)
A.3,14,1 √
B.3,14,2
C.2,04,1
D.2,14,1
解析:
[解析]本题主要考查自加减运算符(++,--)的使用。
①如果作为前缀变量“++a,--a”,在使用a之前,先使a的值加1或者减1,再使用表达式的值参与运算;②后缀变量“a++,a--”,先使用表达式的值参与运算,在使用a之后,再使i的值加1或者减1。
在本题中计算表达式c=(a++)-1时先使用a的值进行计算,结果为c=2-1=1,然后将a的值加1,即执行完此句后a的值是3;表达式c+=-a+++(++b)也可写成c=c+(-a++)+(++b),c=1+(-3)+3=1,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言 笔试 282