国家计算机二级C78真题含答案与解析交互.docx
- 文档编号:25781360
- 上传时间:2023-06-14
- 格式:DOCX
- 页数:38
- 大小:30.90KB
国家计算机二级C78真题含答案与解析交互.docx
《国家计算机二级C78真题含答案与解析交互.docx》由会员分享,可在线阅读,更多相关《国家计算机二级C78真题含答案与解析交互.docx(38页珍藏版)》请在冰豆网上搜索。
国家计算机二级C78真题含答案与解析交互
国家计算机二级(C)78
(总分3480,做题时间120分钟)
选择题(1-10题每题2分,11-50题每题1分,共60分)
1.
下列关于C语言数据文件的叙述中正确的是()。
A 文件由ASCII码字符序列组成,C语言只能读写文本文件
B 文件由二进制数据序列组成,C语言只能读写二进制文件
C 文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
D 文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
分值:
60
答案:
D
2.
下列对队列的叙述正确的是【】。
A 队列属于非线性表
B 队列按"先进后出"原则组织数据
C 队列在队尾删除数据
D 队列按"先进先出"原则组织数据
分值:
60
答案:
D
队列是一种操作受限的线性表。
它只允许在线性表的一端进行插入操作,另一端进行删除操作。
其中,允许插入的一端称为队尾
(一),允许删除一端称为队首(front)。
队列具有先进先出的特点,它是按"先进先出"的原则组织数据的,故本题答案为D。
3.
有以下程序:
#include<string.h>
voidf(char*s,char*t)
{chark;
k=*s;+s=*t;*t=k;
S++;t--;
if(*s)f(s,t);
}
main()
{char.str[10]="abcdefg",*p;
p=str+strlen(str)/2+1;
f(p,p-2);
printf("%s\n",str);
}
程序运行后的输出结果是【】。
A abcdefg
B gfedcba
C gbcdefa
D abedcfg
分值:
60
答案:
B
本程序的作是将字符串str倒序。
语句"p=str+strlen(str)/2+1;"用于将指针变量p指向e字符所在的存储单元,p-2指向了c字符所在的存储单元,在函数f中将这两个存储单元的内容交换,并使得f函数中指向c字符的指针变量s加1。
指向c字符的指针变量t减1,然后继续将s和t指向的存储单元的内容进行交换,直到s指向的存储单元的内容为空为止。
所以本题程序输出的结果是字符串"abcdefg"的倒序形式"gfedcba"。
4.
下列叙述中正确的是【】。
A 一个逻辑数据结构只能有一种存储结构
B 数据的逻辑结构属于线性结构,存储结构属于非线性结构
C 一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率
D 一个逻辑数据结构可以有多种存储结构,且各种存储结构影响
分值:
60
答案:
D
一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等存储结构。
而采用不同的存储结构,其数据处理的效率是不同的。
5.
算法的有穷性是指
A 算法程序的运行时间是有限的
B 算法程序所处理的数据量是有限的
C 算法程序的长度是有限的
D 算法只能被有限的用户使用
分值:
60
答案:
A
算法具有5个特性:
①有穷性:
一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有限时间内完成,即运行时间是有限的;②确定性:
算法中每一条指令必须有确切的含义,读者理解时不会产生二义性。
③可行性:
一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。
④输入:
一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。
⑤输出:
一个算法有一个或多个输出。
6.
有以下程序:
#include<string.h>
main()
{charp[]={''a'',''b'',''c''},q[10]={''a'',''b'',''c''};
printf("%d%d\n",strlen(p),strlen(q));
}
以下叙述中正确的是【】。
A 在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3
B 由于p数组中没有字符串结束符,长度不能确定;但q数组中字符长度为3
C 由于q数组中没有字符串结束符,长度不能确定:
但p数组中字符长度为3
D 由于p和q数组中没有字符串结束符,故长度都不能确定
分值:
60
答案:
B
strlen是计算以"\0"结束的字符串的长度的函数,函数的值为字符串中实际长度,不包括"\0"。
题中"q[10]={'a','b','c'}"虽然给出了数组大小,即数组实际分配的存储空间,但此字符串只占用前3个存储弹元,其余存储单元系统自动加上"\0"故数组q的长度为3;由于p数组中没有字符串结束符,故字符串的长度不自绷定。
7.
下面选项中不属于面向对象程序设计特征的是【】。
A 继承性
B 多态性
C 类比性
D 封装性
分值:
60
答案:
C
面向对象程序设计的3个主要特征是:
封装性、继承性和多态性。
8.
以下选项中,值为1的表达式是【】。
A 1-'0'
B 1-'\0'
C '1'-0
D '\0'-'0'
分值:
60
答案:
B
本题主要考查了字符参与的数学运算,首先要将字符转换为对应的ASCII码值。
我们知道,字符‘1’所对应的ASCII码值不是1,字符‘0’所对应的ASCII码值也不是0,字符‘\0’是字符串结束标识符,其对应的ASCII码值是0。
9.
若有以下说明和定义
typedefint*INTEGER;
INTEGERp,*q;
以下叙述正确的是()。
A p是int型变量
B p是基类型为int的指针变量
C q是基类型为int的指针变量
D 程序中可用INTEGER代替int类型名
分值:
60
答案:
B
语句typedefint*INTEGER;定义了一个新类型名INTEGER,因此语句INTEGERp,*q;就相当于int*p,**q;。
10.
以下选项中,当X为大于l的奇数时,值为0的表达式是【】。
A x%2=1
B x/2
C x%2!
=0
D x%2=0
分值:
60
答案:
D
因为x的值为大于1的奇数,所以x除以2的余数等于l,因此,选项A)、C)中表达式的结果为真,不为0;对于选项B)来说,x除以2的商不会等于0;选项D)中表达式的结果为假,即等于0。
11.
有以下程序:
main()
{intm,n,p;
scanf("m=%dn=%dp=%d",&m,&n,&p);
printf("%d%d%\n",m,n,p);
}
若想从键盘上输入数据,使变量m中的值为123,n中的值为456;p中的值为789,则正确的输入是【】。
A m=123n=456p=789
B m=123n=456p=789
C m=123,n=456,p=789
D 123456789
分值:
60
答案:
A
根据本题的数据输入形式"scanf("m=%dn=%dp=%d",&m,&n,&p);"说明在输入数据时,必须输入"m="、"n="、"p"字符,且中间不能含有空格。
12.
设有定义:
intk=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是【】。
A k++
B k+=l
C ++k
D k+l
分值:
60
答案:
A
因为"intk=0;",所以B)、C)、D)三个选项的表达式的值都等于1,而A)选项的表达式的值等于0。
这是因为"k++"这个表达式先进行取k值的运算,然后是k值自加1。
故本题答案为A)。
13.
有以下程序
structS{intn;inta[20];};
voidf(structS*p)
{int,i,j,t;
for(i=0;i
for(j=i+1;j
if(p->a[i]>p->a[j]){t=p->a[i];p->a[i]=p->a[j];P->a[j]=t;}
}
maln()
{inti;structSs={10,{2,3,l,6,8,7,5,4,10,9}};
f(&s);
for(i=0;i 程序运行后的输出结果是【】。 A 1,2,3,4,5,6,7,8,9,10, B 10,9,8,7,6,5,4,3,2,1, C 2,3,1,6,8,7,5,4,10,9, D 10,9,8,7,6,1,2,3,4,5, 分值: 60 答案: A 本题中,在调用函数f()时,实参是结构体变量s的地址,所以在函数中对形参的改变会影响到实参的数值。 函数f()实现的功能是把结构体的成员数组中的值按从小到大顺序进行排列。 14. 若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0) s=a; for(b=1;b<=c;b++)s=s+1; 则与上述程序段功能等价的赋值语句是()。 A s=a+b; B s=a+c; C s=s+c; D s=b+c; 分值: 60 答案: B 15. 有定义语句: inta=1,b=2,c=3,x;,则以下选项中各程序段执行后,x的值不为3的是()。 A if(c<a)x=1; elseif(b<a)x=2; elsex=3; B if(a<3)x=3; elseif(b<a)x=2; elsex=1; C if(a<3)x=3; if(a<2)x=2; if(a<1)x=1; D if(a<b)x=b; if(b<c)x=c; if(c<a)x=a; 分值: 60 答案: C 16. C源程序中不能表示的数制是 A 二进制 B 八进制 C 十进制 D 十六进制 分值: 60 答案: A C语言中整型常量可用十进制、八进制和十六进制3种形式表示。 17. 有以下程序 voidchange(intk[]){k[0]=k[5];} main() {intx[10]={l,2,3,4,5,6,7,8,9,10},n=0; while(n<=4){change(&x[n]);n++;} for(n=0;n<5;n++)prinff("%d",x[n]); printf("\n"); } 程序运行后输出的结果是【】。 A 678910 B 13579 C 12345 D 62345 分值: 60 答案: A 子函数voidchange(intk[]){k[0]=k[5]};表示用一维数组中的第6个元素替换第一个元素。 因此主函数的四次循环,都是用数组中,当前指针所指元素后的第6个元素替换该元素,因此,本题的答案为A)。 此时,数组中的元素是"6,7,8,9,10,6,7,8,9,10"。 18. 有以下程序: intfa(intx) {returnx*x;} intfb(intx) {returnx*x*x;} intf(int(*f1)(),int(*f2)(),intx) {returnf2(x)-f1(x);} main( ) {inti; i=f(fa,fb,2);printf("%d\n",i); } 程序运行后的输出结果是()。 A -4 B 1 C 4 D 8 分值: 60 答案: C 本题考点是函数之间的参数传递。 19. 下列对于软件测试的描述中正确的是【】。 A 软件测试的目的是证明程序是否正确 B 软件测试的目的是使程序运行结果正确 C 软件测试的目的是尽可能多地发现程序中的错误 D 软件测试的目的是使程序符合结构化原则 分值: 60 答案: C 关于软件测试的目的,GrenfordJ.Myers在TheArtofSoftwareTesting一书中给出了深刻的阐述,整体来说,软件测试的目的就是尽可能多地发现程序中错误。 20. 在Windows环境下,能实现窗口移动的操作是()。 A 用鼠标拖动窗口中的任何部位 B 用鼠标拖动窗口的边框 C 用鼠标拖动窗口的控制按钮 D 用鼠标拖动窗口的标题栏。 分值: 60 答案: D 21. 若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为()。 A 0 B 1 C -1 D 一个非0值 分值: 60 答案: A 22. 下列叙述中正确的是【】。 A 线性链表是线性表的链式存储结构 B 栈与队列是非线性结构 C 双向链表是非线性结构 D 只有根结点的二叉树是线性结构 分值: 60 答案: A 所谓线性链表,就是指线性表的链式存储结构,简称链表。 线性表链式存储结构的基本单位称为存储结点,每个存储结点包括数据域和指针域两个组成部分。 栈、队列和双向链表是线性结构,二叉树是非线性结构。 线性结构和非线性结构是从数据的逻辑结构角度来讲的,与该数据结构中有多少个元素没有关系,即使是空的二叉树也是非线性结构。 23. 有以下程序: intf(intb[ ][4]) { inti,j,s=0; for(j=0;j<4;j++) { i=j; if(i>2)i=3-j; s+=b[i][j]; } returns; } main( ) { inta[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}}; printf(“%d\n”,f(a)); } 执行后的输出结果是()。 A 12 B 11 C 18 D 16 分值: 60 答案: D 24. 有以下程序: main() { chara[7]="a0\0a0\0": inti,j i=sizeof(a);j=strlen(a): printf("%d%d\n",i,j); } 程序运行后的输出结果是【】。 A 22 B 76 C 72 D 62 分值: 60 答案: C C语言中以'\0'作为字符串的结束符,且strlen()函数计算的是'\0'字符前的所有字符的个数。 数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。 25. 有以下程序 main() {intx,y,z; x=y=1; Z=X++,Y++,++Y; printf("%d,%d,%d\n",X,Y,Z); } 程序运行后的输出结果是【】。 A 2,3,3 B 2,3,2 C 2,3,1 D 2,2,1 分值: 60 答案: C 整型变量x、y的初值都为1,"x++,y++,++y"是一个逗号表达式,程序执行"z=x++,y++,++y"后,x的值为2,y的值为3。 z取豆号表达式中第二个表达式的值,为1。 26. 从工程管理角度,软件设计一般分为两步完成,它们是【】。 A 概要设计与详细设计 B 数据设计与接口设计 C 软件结构设计与数据设计 D 过程设计与数据设计 分值: 60 答案: A 软件设计是开发阶段最重要的步骤。 从工程管理的角度来看可分为两步: 概要设计和详细设计。 从技术观点来看,软件设计包括软件结构设计、数据设计、接口设计、过程设计4个步骤。 见下表。 27. 与数学式对应的C语言表达式是()。 A 3*x^n/(2*x-1) B 3*x**n/(2*x-1) C 3*pow(x,n)*(1/(2*x-1)) D 3*pow(n,x)/(2*x-1) 分值: 60 答案: C 28. 下列叙述中正确的是()。 A C语言中既有逻辑类型也有集合类型 B C语言中没有逻辑类型但有集合类型 C C语言中有逻辑类型但没有集合类型 D C语言中既没有逻辑类型也没有集合类型 分值: 60 答案: D 29. 有以下程序: intf(intn) {if(n==1)return1; elsereturnf(n-1)+1; } main() {inti,j=0; for(i=1;i<3;i++)j+=f(i); printf("%d\n",j); } 程序运行后的输出结果是()。 A 4 B 3 C 2 D 1 分值: 60 答案: B 第一次调用f()函数,返回值为1,第二次调用f()函数,牵涉到函数的递归调用,返回值为2。 30. 若有以下定义和语句 uniondata {inti;charC;floatf;}X; intY; 则以下语句正确的是【】。 A x=10.5; B x.C=101: C Y=x; D printf("%d\n",x); 分值: 60 答案: B 在引用共用体变量时,应当引用共用体变量中的成员,而不应当引用共用体的变量本身。 31. 有以下程序: #include<string.h> main(intargc,char*argv[]) {inti,len=0; for(i=1;i<argc;i++)len+=strlen(argv[i]); printf("%d\n",len); } 程序编译连接后生成的可执行文件是exl.exe,若运行时输入带参数的命令行是: exlabcdefg10<回车> 则运行的结果是()。 A 22 B 17 C 12 D 9 分值: 60 答案: D 本题通过键盘赋值,使指针argv,分别指向字符串“abcd、O”,“efg\0”和“10\0”。 32. 有以下程序: main() {chara1=''M'',a2=''m''; printf("%c\n",(a1,a2)); } 以下叙述中正确的是【】。 A 程序输出大写字母M B 程序输出小写字母m C 格式说明符不足,编译出错 D 程序运行时产生出错信息 分值: 60 答案: B 在逗号表达式(表达式1,表达式2)中,其运算方法是先求表达式1的值,然后求表达式2的值,整个逗号表达式的值是表达式2的值。 故本题输出的是a2的值m。 33. 有以下程序: main( ) {inta[3][3],*p,i; p=&a[0][0]; for(i=0;i<9;i++)p[i]=i+1; printf("%d\n",a[1][2]); } 程序运行后的输出结果是()。 A 3 B 6 C 9 D 2 分值: 60 答案: B 34. 有以下函数: fun(char*a,char*b) {while((*a! =''\''0&&(*b! =''\0'')&&(*a=*b)) {a++;b++;} return(*a-*b); } 该函数的功能是【】。 A 计算a和b所指字符串的长度之差 B 将b所指字符串连接到a所指字符串中 C 将b所指字符串连接到a所指字符串后面 D 比较a和b所指字符串的大小 分值: 60 答案: D 字符串的比较规则是对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到'\0'为止,相等,则返回0,否则返回第一个不等字符串的ASCII码的差值。 35. 已定义以下函数 fun(int*p) { return*p; } 该函数的返回值是()。 A 不确定的值 B 形参p中存放的值 C 形参p所指存储单元中的值 D 形参p的地址值 分值: 60 答案: C 36. 下列关于C语言用户标识符的叙述中正确的是()。 A 用户标识符中可以出现下划线和中划线(减号) B 用户标识符中不可以出现中划线,但可以出现下划线 C 用户标识符中可以出现下划线,但不可以放在用户标识符的开头 D 用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头 分值: 60 答案: B 37. 在64位高档微机中,一个字长所占的二进制位数为()。 A 8 B 16 C 32 D 64 分值: 60 答案: D 38. 有三个关系R、S和T如下: 由关系R和S通过运算得到关系T,则所使用的运算为 A 并 B 自然连接 C 笛卡尔积 D 交 分值: 60 答案: D 在关系运算中,交的定义如下: 设R1和R2为参加运算的两个关系,它们具有相同的度n,且相对应的属性值取自同一个域,则R1∩R2为交运算,结果仍为度等于n的关系,其中,交运算的结果既属于R1又属于R2。 39. 若有定义: floatx=1.5;inta=1,b=3,C=2;则正确的switch语句是【】。 A switch(x) {case1.0: printf("*\n"); case2.0: prinff("**\n");} B switch((int)x); {case1: printf("*\n"); case2: printf("**\n");} C switch(a+b) {case1: printf("*\n"); case2+1: prinff("**\n");} D switch(a+b) {case1: printf("*\n"); casec: printf("**\n");} 分值: 60 答案: C C语言中,switch语句专用于实现多分支结构程序,其特点是各分支清晰而直观。 switch后面括号中可以是任何表达式,取其整数部分与各常量表达式进行比较。 常量表达式中不能出现变量,且类型必须是整型、字符型或枚举型,各常量表达式各不相同。 40. 以下叙述中正确的是()。 A 局部变量说明为static存储数,其生存期将得到延长 B 全局变量说明为static存储类,其作用域将被扩大 C 任何存储类的变量在未赋初值时,其值都是不确定的 D 形参可以使用的存储类说明符与局
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 国家 计算机 二级 C78 真题含 答案 解析 交互