国家二级C语言机试(选择题)模拟试卷42(共225题)_第1页
国家二级C语言机试(选择题)模拟试卷42(共225题)_第2页
国家二级C语言机试(选择题)模拟试卷42(共225题)_第3页
国家二级C语言机试(选择题)模拟试卷42(共225题)_第4页
国家二级C语言机试(选择题)模拟试卷42(共225题)_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

家二级C语言机试(选择题)模拟试

卷42(共9套)

(共225题)

家二级C语言机试(选择题)模拟试

卷第1套

一、选择题(本题共25题,每题1.0分,共25分。)

1、以下叙述中错误的是

A、结构化程序由顺序、分支、循环三种基本结构组成

B、C语言是一种结构化程序设计语言

C、使用三种基本结构构成的程序只能解决简单问题

D、结构化程序设计提倡模块化的设计方法

标准答案:C

知识点解析:结构化程序由顺序结构、选择结构和循环结构3种基本结构组成。已

经证明,由3种基本结构组成的算法可以解决任何复杂的问题。由3种基本结构所

构成的算法称为结构化算法;由3种基本结构所构成的程序称为结构化程序。

2、某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为

A、n+1

B、n-1

C、2n

D、n/2

标准答案:A

知识点解析:在任意一裸二叉树中,度为0的结点[即叶子结点)总是比度为2的结

点多一个。所以该二叉树的叶子结点数等于n+1。

3、在深度为7的满二叉树中,度为2的结点个数为()。

A、64

B、63

C、32

D、31

标准答案:B

知识点解析:根据满二叉树的性质,深度为7的满二叉树共有2Z1=127个结点。

根据二叉树的性质,该满二叉树在第7层上,共有2^=64个结点,即共有64个叶

子结点,那么度为2的结点个数为127-64=63个。

4、下列叙述中正确的是

A、循环队列是线性结构

B、循环队列是线性逻辑结构

C、循环队列是链式存储结构

D、循环队列是非线性存储结构

标准答案:A

知识点解析:为充分利用向量空间,克服“假溢出”现象的方法是:将向量空间想象

为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队

列(CircularQueue)。线性结构是一个有序数据元素的集合。常用的线性结构有:线

性表,栈,队列,双队列,数组,串。常见的非线性结构有:二维数组,多维数

组,广义表,树(二叉树等),图。

5、下列选项中不属于结构化程序设计原则的是()。

A、可封装

自顶向下

C、模块化

D、逐步求精

标准答案:A

知识点解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使

用goto语句,所以选择A。

6、设有定义:intk=0;,以下选项的4个表达式中与其他3个表达式的值不相同

的是()c

A、++k

B、k+=l

C、k++

D、k+1

标准答案:C

知识点解析:++k,先使得k的值自增1后再使用,k++是先取得k的值再将k的值

自增1,所以C选项中表达式的值为0,而其他3人表达式的值均为1,所以选择

C选项。

7、合法的C语言常量是()。

A、-20.

B、-020

C、一2el.0

D、—20.0e

标准答案:A

知识点解析:C语言常量指数表达式中字母e或E之前必须有数字,且e或E后面

的指数必须为整数。

8、以下叙述中错误的是

A、函数调用可以作为一个独立的语句存在

B、函数形参的值也可以传回给对应的实参

C、若函数有返回值,必须通过return语句返回

D、C程序必须由一个或一个以上的函数组成

标准答案:B

知识点解析:一个C程序中可以包含任意多个不同名的函数,但只能有一个主函

数。一个C程序总是从主函数开始执行。函数的值通过return语句返回,return语

句中的表达式的值就是所求的函数值。在C语言中,数据只能从实参单向传递给

形参,称为“按值”传递,也即是说,当简单变量作为实参时,用户不可能在函数中

改变对应实参的值。

9、有以下程序#includeVstdio.h>inta=l>b=2;yoidfunl(inta,intb){printf(''%

d%d'',a,b);)yoidfun2(){a=3;b=4;)main()[funl(5,6);fun20;printf("%

d%d\n”,a,b);}程序运行后的输出结果是

A、3456

B、1256

C、5612

D、5634

标准答案:D

知识点解析:函数funl])的作用是输出局部变量a和b的值,在主函数中执行

fun1(5,6)的结果是输出5,6:函数fun2()的作用是给变量a和b分别赋值3,4;执

行fun2()的作用是输出3,4o

10、规范化主要为克服数据库逻辑结构中的插入异常,删除异常以及

A、数据丢失的问题

B、冗余度大的问题

C、数据不一致的问题

D、结构不合理的问题

标准答案:B

知识点解析:规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不

合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。

11、有以下程序,程序运行后的输出结果是main(){chara=,H>a=(a>=,A'&&a<

=,Z,)?(a+321):a;printfC%c\n",a);}

A、H

B、A

C、h

D、a

标准答案:C

知识点解析:表达式a=(a>='A'&&aV,Z')?(a+32):a,为条件表达式,如果a是

大写字符,则转换为小写字符存放到a中,否则不变。

12、C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的

A、关键字可用作用户标识符,但失去原有含义

B、在标识符中大写字母和小写字母被认为是相同的字符

C、用户标识符可以由字母和数字任意顺序组成

D、预定义标识符可用作用户标识符,但失去原有含义

标准答案:D

知识点解析:预定义标浜符是C语言中的标识符,在C语言中也有特定的含义,

如函数pfinlf、scanf、sin等和编译预处理命令名(如define和include)。预定义标识

符可以作为用户标识符使用,只是这样会失去系统规定的原义。

13、以下叙述中错误的是

A、常量可以用一个符号名来代表

B,数值型常量有正值和负值的区分

C、常量是在程序运行过程中值不能被改变的量

D、定义符号常量必须用类型名来设定常量的类型

标准答案:D

知识点解析:C语言中,常常用一个标识符来代表一个常量,称为符号常量。符号

常量在使用之前要先定义,定义格式:#define<符号常量名〉(常量)其中,〈符号

常量名〉用标识符,习惯上用大写字母,V常量〉可以是数字常量,也可以是字

符。

14、若有定义语句:intx=12,y=8,z;在其后执行语句z=0.9+x/y;贝Uz的值

A、1.9

B、1

C、2

D、2.4

标准答案:B

知识点解析:由于x,y,z都是整型数据,所以x除以y的值为整型数值1,1和

0.9相加得到1.9,再转换为整型数1赋给整型变量z。

15、关于文件操作中的标高符“EOF”的叙述中正确的是()。

A、EOFB|JNULL

B、文本文件和二进制文件都可以用EOF作为文件结束标志

C、EOF是在库函数文件中定义的符号常量

D、对于文本文件,fgetc函数读入最后一个字符时,返回值是EOF

标准答案:c

知识点露析:EOF是在stdio.h库函数文件中定义的符号常量,其值等于一1.

EOF用作文件结束标志,在二进制或者文本文件内部有一个位置指针,用以指示

文件内部的当前读写位置。使用fgetc函数,每读写一次,该指针均向后移动。

16、以下关于字符串的叙述中正确的是

A、两个字符串中的字符个数相同时才能进行字符串大小的比较

B、可以用关系运算符对字符串的大小进行比较

C、空串比空格打头的字符串小

D、C语言中有字符串类型的常量和变量

标准答案:C

知识点解析:C语言本身并没有设置一种类型来定义字符串变量,却允许使用“字

符串常量”。字符串常量是由双引号括起来的一串字符。任意两个字符串的大小比

较要调用字符串比较函数strcmp(sl,$2)来进行,其比较的方法是依次对si和s2

中对应位置上的字符两两进行比较,当出现第一对不相同的字符时,即由这两个字

符决定所在串的大小(比较字符大小的依据是其ASCII码值)。

17、以下选项中合法的变量是

A,5a

B、A%

C、」0_

D^sizeof

标准答案:C

知识点解析:对于变量的命名要利用标识符命名,所谓标识符就是C语言中的变

量名、函数名、数组名、文件名、类型名等。其中标识符构成如下:①标识符由

字母、数字和下划线组成;②第一个字符必须为字母或下划线;因此选项A中数

字开头,选项B出现了非法字符%,而选项D中sizeof为关键字,不能为变量命

名c

18、为了建立如图所示的存储结构(即每个结点含两个域,data是数据域,next是

指向结点的指针域),则在_________处应填入的选项是Structlink{chardata;

A、structlink*next:

B、linknext;

C、1ink*next;

D、structlinknext;

标准答案:A

知识点解析:单链表为动态分配的存储空间,在分配时,每个结点之间可以是不连

续的(结点内是连续的)。结点之间的联系用指针实现,即在结点结构中定义一个成

员项用来存放卜一结点的首地址,这个用于存放地址的成员,常把它称为指针域,

该指针为了保持链表中结点的地址,因此其基类型和结点的类型相同,选项为A。

19、有以下程序段inta,b,c;a=10;b=50;c=30;if(a>b)a=b,b=c;c=a;printf("a=%d

b=%dc=%d\nM,a,b,c);程序的输出结果是

A^a=10b=50c=30

B、a=10b=30c=10

C、a=10b=50c=10

D、a=50b=30c=50

标准答案:C

知识点解析:本题的程序段首先定义三个整型变量a,b,c,并且其初始值分别等于

10,50,30,然后判断a>b是否成立,如果条件成立,则把b的值赋给a,把c的值

赋给b。由a和b的初始值可知,此条件表达式不成立,所以a和b的值保持不

变。再执行下一条语句,把a的值赋给c,所以c的当前值等于10,最后由输出语

句输出变量a,b,c的当前值,分别为10,50,10。

20、有以卜程序#includevoidfun(inta[][N],intb|]){inti;for(i=0;i

A、-12,-3,0,0,

B,-3,-1,1,3,

C、0,1,2,3,

D、-3,-3,-3,-3,

标准答案:B

知识点解析:fun函数的功能是求出二维数组a中第i行第i个元素与第N-1-i元素

的差,赋给b[i]。在主函数中,把实参二维数组x和一维数组y传递给形参a和

b,最后输出一维数组y中元素的值。

21有以卜程序#includcVstdio-h>#include<string.h>typcdcfstruct{char

name[9];charsex;intscore[2];)STU;STUf(STUa){STUb={,'Zhao",'m',

85,90);inti;strcpy(a.name,b.name):a.sex=b.sex;for(i=0:i<2:

i++)a.score[i]=b.score[i];returna;)main(){STUc={"Qian",f,95,92).

d;d=f(c);printf("%s,%c,%d,%ci,",d.name,d.sex,d.score[0],

d.score[l]);printf("%s,%c,%d,%d,”,c.name,c.sex,c.score[0]}

c.score[l]);)

A、Zhao,m,85,90,Zhao,m,85,90

B、Qian,f,95,92,Qian,f,95,92

C、Zhao,m,85,90,Qian,f,95,92

D、Qian,f,95,92,Zhao,m,85,90

标准答案:C

知识点解析:在C语言中,函数实参与形参之间数据的传递是传值,也就是说在

用实参调用形参时,是次实参的值拷贝一份给形参,而实参的值并不变化,仍是原

来的值。所以对于本题来说,在主函数中调f(e)后,实参e的值并不会变化,仍是

原值。在函数f中把局部变量b的值依次返回给变量d。

22、在软件开发中,需求分析阶段产生的主要文档是()。

A、可行性分析报告

B、软件需求规格说明书

C、概要设计说明书

D、集成测试计划

标准答案:B

知识点解析:A)错误,可行性分析阶段产生可行性分析报告。C)错误,概要设计

说明书是总体设计阶段产生的文档。D)错误,集成测试计划是在概要设计阶段编

写的文档。B)正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文

档。

23、有以下程序#include#includetypedefstruct{charname[9];charsex;float

score[2];}STU;STUf(STUa){STUb={"Zhao-m\85.0,90.0};inti;strcpy(,

);a.sex=b.sex;for(i=0;i<2;i++)a.score[i]=b.score[i];returna;}main(){STU

c={uQianM,T,95.0,92.0},d;d=f(c);

printf("%s,%c,%2.0f,%2.0f\n",,d.sex,d.score[0],d.score[l]);)程序的运行结果是

()o

A、Zhao,m,85,90

R、Qian,m,85,90

C、Qian,f,95,92

D、Zhao,f,95,92

标准答案:A

知识点解析:结构体是用户自己定义的一种数据类型,使用方法和C语言中的基

本数据类型一致。函数f()中将结构体b中成员的数据分别赋值给a,所以函数的返

回值为a即{"Zhao'\?m?,85,90)o

24、有以下程序:includemain(){chare1,c2;cl='A+8'—4;c2='A'+'8'

一'5';printf(H%c,%d\n",cl,c2);}已知字母A的ASCII码为65,程序运行后

的输出结果是()。

A、E,68

B、D,69

C、E,D

D、输出无定值

标准答案:A

知识点解析:本题目中字符变量cl是字符W的ASCII码加上4,即69所对应的

字符,EL字符变量c2是字符,A,的ASCII码加上3,即68所对应的字符,D,但是

打印输出时,cl以%(:的格式输出,所以是E,©2以%<1的格式输出,所以是68。

25、有以下程序include<stdio.h>main(){FILE*fp;inti,

a[6]={l,2,3,4,5,6),b[6];fp=fopen("d.dat",nw+b");fwrite(a,

sizeof(int),6,fp);for(i=0;i<6;i++)fwrite(&a[2]»sizeof(int),1,fp);

rewind(fp);fseek(fp.sizeof(int)*2,SEEK_CUR);fread(b,sizeof(int),6,

fp);fclose(fp);for(i=0;i<6;i++)printf("%d,",b|i]);}程序执

行后的输出结果是()。

A、3,4,5,6»3,3,

B、1,2,3,4,5,6,

C、3,4,5,6,1,2,

D、3,4,5,6,1,1,

标准答案:A

知识点解析:程序首先以读二进制文件的方式打开d.dat,然后使用fwrite()函数

将数组a中6个元素写入d.dat中,接着调用for循环将凯2]元素(值为3)6次写入

d.dal文件中;再使用rewind。函数将文件指针fp移动到文件头,再使用fseek()函

数将fp以当前位置向后移动2个整数位置,再使用fread。函数从fp指向的位置向

后读取6个整数,由此可知这6个整数分别是:3,4,5,6,3,3,本题答案为

Ao

国家二级C语言机试(选择题)模拟试

卷第2套

一、选择题(本题共25题,每题1.0分,共25分。)

1、下列叙述中正确的是

A、线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的

B、线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构

C、线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构

D、.卜述二种说法都不对

标准答案:B

知识点解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所

占的存储空间是连续的,各数据元素在存储空间中是按逻辑顺序依次存放的。所以

每个元素只存储其值就可以了,而在链式存储的方式中,将存储空间的每一个存储

结点分为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存储

下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式

的存储空间要大一些。

2、某二叉树共有12个结点,其中叶子结点只有1个。则该二叉树的深度为(根结

点在第1层)

A、3

B、6

C、8

D、12

标准答案:D

知识点解析:根据二叉树的性质,度为0的结点(即叶子结点)总是比度为2的结点

多一个。题目中的二叉树的叶子结点为1,因此度为2的结点的数目为0,故该二

叉树为12层,每层只有一个结点。

3、对长度为n的线性表作快速排序,在最坏情况下,比较次数为

A、n

B、n—1

C、n(n―1)

D、n(n—1)/2

标准答案:D

知识点解析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2

遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n—1)/

2o快速排序法也是一种互换类的排序方法,但由于它比冒泡排序法的速度快,因

此,称为快速排序法。

4、下列数据结构中,能用二分法进行查找的是

A、顺序存储的右.序线性表

B、线性链表

C、二叉链表

D、有序线性链表

标准答案:A

知识点解析:二分法查找只适应于顺序存储的有序表。有序表是指线性表中的元素

按值非递减排序(即从小到大,但允许相邻元素值相等)的表:

5、度为3的一棵树共有30个结点,其中度为3、1的结点个数分别为3、4。则该

树中的叶子结点数为

A、14

B、15

C、16

D、不可能有这样的树

标准答案:B

知识点解析:根据题目可知本树中还有度为2的结点。树的总结点=(度1*个数+度

2*个数…)+1,这里我优设度为2的结点数为x,那么

30=3*3+2*x+l*4+l=2*x+14,由此可计算出x=8。树的叶子结点数等于总结点减去

所有度不为0的结点,也就是30-3-8-4=15。

6、下列定义变量的语句中错误的是()。

A、int_int;

B、doubleint;

C、charFor;

D、floatUSS;

标准答案:D

知识点解析:C语言规定,变量命名必须符合标识符的命名规则。D选项中包含了

非法字符“$",所以错误。标识符由字母、数字或下划线组成,且第一个字符必须

是大小写英文字母或者下划线,而不能是数字。大写字符与小写字符被认为是两个

不同的字符,所以For不是关键字for。

7^有以下程序#inchidemain(){inta=一1,b=-1;for(;++a;)++b;prinfIT44%

d%d'n”,a,b);}程序运行后的输出结果是()。

A、0—1

B、00

C、-1—I

D、结果不确定

标准答案:A

知识点解析:这是对for循环的基本考查。其中++a是判断条件,并且是a先自增

1,再参与运算。a初值为-1,经++a后,a值为0,0相当于false,判断条件不成

立,跳过for循环后面的语句++b,直接执行printf语句,所以最后输出a的值为

0,b的值没变,还是一1。

8、若有“doublea;”,则正确的输入语句是()“

A、scanfV'%ir',a);

B、scanff'%?',&a);

C、scanff'%ir‘,&a)

D、scanf(''%lc'',a);

标准答案:C

知识点露析:scanf函数的调用形式是:scanf(”格式字符串”,输入项地址表)。其

中,”格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量的

地址。a是double型数据,格式字符串可以用“%1/,"%产是浮点型。题中定义

变量a为双精度型变量,双精度变量的格式符为“%1产:变量的地址用取地址符

加变量名表示,变量a的地址为“&葭。

9、软件调试的目的是

A、发现错误

B、改正错误

C、改善软件的性能

D、验证软件的正确性

标准答案:B

知识点解析:软件调试的任务是诊断和改正程序中的错误。程序调试活动由两部分

组成,一是根据错误的迹象确定程序中的错误的确切性质、原因和位置。二是对程

序进行修改,排除这个错误。

10、软件生命周期可分为定义阶段、开发阶段和维护阶段,下面属于定义阶段任务

的是

A、软件设计

B、软件测试

C、可行性研究

D、数据库设计

标准答案:c

知识点解析:定义阶段包括:问题定义、可行性研究和需求分析。问题定义:要

求系统分析员与用户进行交流,弄清“用户需要计算机解决什么问题”然后提出关于

“系统目标与范围的说明“,提交用户审查和确认;可行性研究:一方面在于把待开

发的系统的日标以明确的语言描述出来,另一方面从经济、技术、法律等多方面进

行可行性分析;需求分析:弄清用户对软件系统的全部需求,编写需求规格说明书

和初步的用户手册,提交评审。

11、有以下程序main(){inta=-2,b=0;while(a++&&++b);printf「%d,%

d\n-,a,b);)程序运行后输出结果是

A、0,3

B、1,2

C、1,3

D、0,2

标准答案:B

知识点解析:循环体为空,共执行2次。第一次变量a初值为-2,b初值为0,表

达式a++&&++b值为1,同时a的值为-1,b的值为1,第二次循环条件判断以

后,a的值为0,b的值2,执行循环体空,第三次判断条件表达式值为0,不执行

循环体,而a的值为1,但是表达式a++的值为0,因此不计算表达式++b的值,b

的值仍为2。

12、若有函数首部intfun(doublex[10],int*n),则下列针对此函数的函数声明语句

中正确的是()。

A、intfnn(double.int):

B、intfun(double*,int*);

C、intfun(double*x,intn);

D、intfun(doublex,int*n);

标准答案:B

知识点解析:函数声明的一般形式为:类型说明符被调函数名(类型形参,类型形

参……):或为类型说明符被调函数名(类型,类型……)。由于函数首部为int

fun(doublex[10],int*n),因此B选项正确。

13、有以下程序:#includeintadd(inta,intb){return(a+b);main(){intk,

(*f)(),a=5,b=10;f=add:}则以下函数调用语句错误的是()。

A、k=f(a,b);

B、k=add(a,b);

C>k=(*f)(a,b);

D、k=*f(a,b);

标准答案:D

知识点解析:D选项中,*f(a,b)表示调用后返回一个指向整型数据的地址指针,

即该函数的返回值为指针类型,所以不能将其赋值给整形变量ko

14、以下选项中非法的C语言字符常量是

A、、夕

B、’\007,

C、'aa,

D、,\xaa,

标准答案:C

知识点解析:一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号

把一个字符括起来作为字符常量。

15、若变量已正确定义,以下选项中非法的表达式是()。

A、,a,=l/2*(x=y=20,x*3)

B、a!=4『b,

C、V%4

D、'A'+32

标准答案:A

知识点解析:赋值运算符的左侧必须为变量而不能是表达式或者常量,选项A)的

表达式非法,答案选A)。

16、以下叙述中正确的是

A、程序必须包含所有三种基本结构才能成为一种算法

B、如果算法非常复杂,则需要使用三种基本结构之外的语句结构,才能准确表达

C、只有简单算法才能在有限的操作步骤之后结束

D、我们所写的每条C语句,经过编译最终都将转获成二进制的机器指令

标准答案:D

知识点解析:C语句构成了函数,函数构成的程序,经过编译转换成二进制代码后

可以运行,算法是指为解决某个特定问题而采取的确定且有限的步骤,可以利用代

码来描述算法,而算法+数据结构才是程序,结构化的程序由顺序结构、循环结构

和选择结构三种基本结沟组成。由这三种基本结构组成的算法可以解决任何复杂的

问题,反之则不一定,所有算法必须在有限步骤后结束。

17、以下叙述中正确的是

A、对于“for(表达式1;表达式2;表达式3)循环体”首先要计算表达式2的值,以

便决定是否开始循环

B、对于“for(表达式1;表达式2;表达式3)循环体,只在个别情况下才能转换成

while语句

C、只要适当地修改代码,就可以将do-while与while相互转换

D、如果根据算法需要使用无限循环(即通常所称的“死循环”),则只能使用whh语

标准答案:C

知识点解析:whik和do…while语句和for语句很容易进行相互转换。对于for循

环的执行过程如下:①计算表达式1。②计算表达式2。若其值为非O,转步骤

若其值为0,转步骤⑤。③执行一次for循环体。④计算表达式3,转向步

骤②。⑤结束循环。任何循环都有可能成为死循环。

18、以下叙述中正确的是

A、可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行

B、C语言程序将从源程序中第一个函数开始执行

C、main的各种大小写拼写形式都可以作为主函数名,如:MAIN,Main等

D、C语言规定必须用main作为主函数名,程序将从此开始执行

标准答案:D

知识点解析:C语言规定必须以main作为主函数名。程序中的main()是主函数的

起始行,也是C程序执行的起始行。每一个可执行的C程序都必须有一个且只能

有一个主函数。一个C程序中可以包含任意多个不同的函数,但只能有一个主函

数。程序要从main。函数开始执行,最后在main。函数中结束。

19、设有定义:charp[]={T,2,'3'},*q=p;以下不能计算出一个char型数据

所占字节数的表达式是

A^sizcof(p)

sizeof(char)

C、sizeof(*q)

D^sizcof(p[0])

标准答案:A

知识点解析:选项A)计算的是p口字符数组首地址所占的内存字节数,返回值数组

中所有元素占有的空间。*口和“0]分别表示数组p中下标为0的字符元素,选项

B)和D)都可以计算char型数据占有的字节数。

20、以下叙述中正确的是

A、函数调用时,不必区分函数名称的大小写

B、调用函数时,函数名必须与被调用的函数名完全一致

C、函数名允许用数字开头

D、在函数体中只能出现一次return语句

标准答案:B

知识点解析:在标准C中,函数的定义形式为:函数返回值的类型名函数名(类型

名形式参数1,类型名形式参数2,…){说明部分语句部分}需要说明的是函数名

和形式参数都是由用户命名的标识符,在同一程序中,函数名必须惟一,形式参数

名只要在同一函数中惟一即可,与其他函数中的变量可以同名。return语句的作用

是返回函数的值,在函数中可以出现多个或者没有。

21、有以卜程序#includemain(){inta,b;for(a=l,b=l;a<=100;a++){if(b>=20)

break;if(b%3==1){b=b+3;continue;}b=b-5;}printf("%d\n",a);}程序的输出垢果

A、10

B、9

C、8

D、7

标准答案:B

知识点解析:首先注意for循环的控制条件当b>=20或者a>100则跳出for循环

也即b<20且a<=100时执行for循环;第一次进入循环a=l,b=1均满足循环条

件,但b%3==l条件满足,故执行b=b+3,得到b=4,注意有continue,所以后面语

句不执行,直接跳转到a++这个语句,所以第一次循环完之后a=2,b=4;进入第二

轮循环,b%3==l也是满足的,故再次b=b+3,此轮循环执行之后a=3,b=7,进入下

一轮。此后和前面循环同理,都是b%3==l满足,因为每次都是加3,而之后又去

模3,且都跳过for后面语句直接执行a++,所以,一直循环到b=22跳出for循

环。此时a为8。综合起来就是,每次循环b增加3,a增加1,且当b>22时跳出

循环,结束程序。所以b从1增加到22,有(22-1)/3=7,所以a=1+7=8。因此B

选项正确。

22、有以2程序#includemain(){charcl=,A,,c2=,Y,;printf(H%d,%d\n",c1,c2);}程序

的输出结果是

A、输出格式不合法,输出出错信息

B、65,89

C、65,90

D、A,Y

标准答案:B

知识点解析:本题重点考察字符变量的相关知识。分别给字符型变量a和b分别赋

值为,A,和,Y,,即A和Y的ASSCH码,因此输出结果为65,89,因此B选项正

确。

23、以下不能输出字符A的语句是(注:字符A的ASCII码值为65,字符a的

ASCII码值为97)

A、printf("%c\n",'a'-32);

B、printf("%d\n",

C、printf("%c\n",65);

D、

标准答案:B

知识点解析:B选项输出的格式为%d,即为整型格式,所以输出字符A的ASCII码值

65,而不是字符Ao由于大写字母和其对应的小写字母的ASCII码值小32,所以A正

确。字符A的ASCII码值就是65,所以以%c格式输出可以输出字符A,所以C正

确。由于字符A的ASCII码值比字符B的小1,所以D正确。

24、下列叙述中正确的是()。

A、带链栈的栈底指针是随栈的操作而动态变化的

B、若带链队列的队头指针与队尾指针相同,则队列为空

C、若带链队列的队头指针与队尾指针相同,则队列中至少有一个元素

D、不管是顺序栈还是带链的栈,在操作过程中其栈底指针均是固定不变的

标准答案:A

知识点解析:由于带链栈利用的是计算机存储空间中的所有空闲存储节点,因此随

栈的操作栈顶栈底指针动态变化。带链的队列中若只有一个元素,则头指针与尾指

针相同。

25、下列叙述中正确的是()。

A、软件过程是软件开发过程

B、软件过程是软件维护过程

C、软件过程是软件开发过程和软件维护过程

D、软件过程是把输入转化为输出的一组彼此相关的资源和活动

标准答案:D

知识点解析:软件过程是把输入转化为输出的一组彼此相关的资源和活动。软件过

程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务

的工作步骤。软件过程所进行的基本活动主要有软件规格说明、软件开发或软件设

计与实线、软件确认、软件演进。在过程结束时,将输入(用户要求)转化为输出(软

件产品)。故本题答案为D选项。

家二级C语言机试(选择题)模拟试

卷第3套

一、选择题(本题共25题,每题1.0分,共25分。)

1、设血类型的数据长度为2个字节,则unsignedint类型数据的取值范围是()。

A、0-255

B、0-65535

C、-32768-32767

D、-256-255

标准答案:B

知识点解析:整型数据分为signed和unsigned两种,设int类型的数据长度为2个

字节,则无符号整数表示的范围为0-65535。

2、下列对于线性链表的描述中正确的是

A、存储空间不一定连续,且各元素的存储顺序是任意的

B、存储空间不一定连续,且前件元素一定存储在后件元素的前面

C、存储空间必须连续,且前件元素一定存储在后件元素的前面

D、存储空间必须连续,且各元素的存储顺序是任意的

标准答案:A

知识点解析:一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不

连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。在线性链表

中,各数据元素之间的前后件关系是由各结点的指针域来指示的,指向线性表中第

一个结点的指针head称为头指针,当head=NULL(或0)时称为空表。

3、以下选项中,不合法的C语言用户标识符是

A、AaBc

B、a-b

C、a_b

D、_1

标准答案:B

知识点解析:在C语言中的用户标识符只能由字母,数字和下划母组成,并旦第

一个字符必须是字母或下划线,在选项B中出现了非法的字符

4、在深度为7的满二叉树中,度为2的结点个数为

A、64

B、63

C、32

D、31

标准答案:B

知识点解析:因为在任意的二叉树中,度为0的结点(即叶子结点)总比度为2的

结点的个数多1个,而度为。的结点数no=2m」(其中m为二叉树的深度)。本题

的度为0的结点个数no=27-,=26=64o因此,度为2的结点数n2=no-l=63o所以选

项B正确。

5、下列叙述中正确的是()。

A、数据库的数据项之间无联系

B、数据库中任意两个表之间一定不存在联系

C、数据库的数据项之间存在联系

D、数据库的数据项之间以及两个表之间都不存在E关系

标准答案:C

知识点解析:数据库的数据项之间以及表之间都存在联系。

6、下面不属于软件设计原则的是

A、抽象

B、模块化

C、自底向上

D、信息隐藏

标准答案:c

知识点露析:软件设计的基本原则包括抽象、信息隐藏、模块化、局部化、确定

性、一致性、完备性和可验证性。

7、有以下程序段inlj;floaty;chamame|50|;scanf(''%2d%f%s'',&j,&y.

name);当执行上述程序段,从键盘上输入555667777abc后,y的值为

A、55566.0

B、7777.0

C>566.0

D、566777

标准答案:C

知识点解析:因为在输入格式控制符中指定变量j的输入格式控制符为“%2d”,即

变量i所占的宽度为2,所以变量j只接收输入数据的前两位,从第三位开始直到

空格之间的输入整数都会被保存到变量y中,因为y为浮点型数据,所以输出结果

为选项C。

8、以下程序的输出结果是()。main(){intx=l,y=0;if(!x)y++;elseif(x==0)

if(x)y+=2;elsey+=3;printff'%d\n",y);}

A、一1

B、0

C、1

D、2

标准答案:B

知识点解析:如果不满足if语句的条件,函数将不执行本题中x=l,if和elseif的

条件都不满足,故y值不改变输出。

9、以下叙述中正确的是

A、C程序中的每一行只能写一条语句

B、简单C语句必须以分号结束

C、C语言程序中的注释必须与语句写在同一行

D、C语句必须在一行内写完

标准答案:B

知识点解析:C语言的书写格式自由,一行可写多条语句,一条语句也可写在不同

行上。C语言注释是比较自由的,可以写在一行或者多行。C语言规定每条语句和

数据定义的最后必须有一个分号,分号是c语句的必要组成部分。

10、有以下程序:#include<stdio.h>intadd(inta,intb){return(a+b);}main()

{intk,(+f)()ra=5,b=10;f=add:…}则以下函数调用语句错误的是()。

A、k=f(a,b);

B、k=add(a,b);

C、k=(*f)(a,b);

D、k=*f(a,b);

标准答案:D

知识点解析:D选项中,*f(a,b)表示调用后返回一个指向整型数据的地址指针,

即该函数的返回值为指针类型,所以不能将其赋值给整形变量ko

II、设有定义:intx|2||3|;则以下关于二维数组X的叙述错误的是

A、数组x可以看作是由x[0]和x[l]两个元素组成的一维数组

B、可以用x[0]=0;的形式为数组所有元素赋初值0

C、元素x|0]可看作是由3个整型元素组成的一维数组

D、x[0]和x[l]是数组名,分别代表一个地址常量

标准答案:B

知识点解析:二维数组的元素在内存中占一系列连续的存储单元。数组元素在内存

中的排列顺序是先存放第。行的元素,再存放第1行的元素……称这种存放顺序为

按行存放。可以把一个二维数组看成是一个一维数组,每个数组元素又是包含有若

干个元素的一维数组。另外在给二维数组赋初值时可以不用含花括号对。例如,

inta[4][引={1,2,4,5):在编译时,系统将按a数组元素在内存中排列的顺序,

将花括号内的数据一一对应地赋给各个元素,若数据不足,系统将给后面的元素自

动补初值0。以上将给a数组第一行的元素和第二行的第一个元素依次赋予1、2、

4、5,其他元素的初值都为0。

12、当变量c的值不为不4、6时,值为“真”的表达式是()o

A、(0=2&&c<=6)||(c!=3)||(c!=5)

(c==2)||(c==4)||(c==6)

C、(0=2&&c<=6)&&!(c%2)

D、(c>=2&&c<=6)&&;c%2!=l)

标准答案:A

知识点解析:逻辑或运算符的两个运算对象中,只要有一个值为真,整个逻辑表达

式的值就为真;逻辑与运算符的两个运算对象的值均为真,整个逻辑表达式的值才

为直°选项A)中.只要c的值不为3或者不为5或者在2和6之间,这个表达式

就为真,所以答案选A)。

13、以下选项中,不合法的C语言用户标识符是

A、AaBc

B、a-b

C>a_b

D、_1

标准答案:B

知识点解析:在C语言中的用户标识符只能由字母,数字和下划母组成,并且第

一个字符必须是字母或下划线,在选项B中出现了非法的字符

14、有以下程序程ncludeVstdio.h>#defineSQR(x)x*xmain(){inta=10,k=2,

m=l;a/=SQR(k+m)/SQR(k+m);printf「%d\nLa);)程序的输出结果是

A、0

B、1

C、9

D、10412文件包含

标准答案:B

知识点解析:SQR(k+m)宏展开以后为k+m*k+m,值为5,表达式

a/=sQR(k+m)/SQR(k+m)为a=a/(5+5),表达式值为L

15、关于文件操作的叙述中正确的是()。

A、在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能

读到第1个数据

B、C语言中的文件是流式文件,因此只能顺序存取数据

C、打开一个已存在的文件并进行写操作后,原有文件中的全部数据必定被覆盖

D、当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失

标准答案:D

知识点解析:在C语言中,有两种对文件的存取方式:顺序存取和直接存取。如

果以“屋的方式对一个已打开的文件进行写操作后,则原有文件中内容将保存,新

的数据写在原有内容之后。如果以“a+”的方式为读和写而打开一个文件,则既可以

对文件进行读,也可以对文件进行写,而且在读和写操作之间不必关闭文件,可以

从头开始读。当对文件的读(写)操作完成之后,必须将它关闭。

16、以下关于结构化程序设计的叙述中正确的是()。

A、在C语言中,程序的模块化是利用函数实现的

B、结构化程序使用got。语句会很便捷

C、一个结构化程序必须同时由顺序、分支、循环三种结构组成

D、由三种基本结构构成的程序只能解决小规模的问题

标准答案:A

知识点解析:golo语句会导致程序结构混乱,所以结构化程序中限制使用got。语・

句,选项R)错:一个结构化的程序可以依据该程序要实现的功能选用顺序、分

支、循环这三种基本结沟中的某几种或者全部使用,不是必须都用上,选项C)

错;已经证明,由这三种基本结构组成的算法可以解决任何复杂的问题,选项D)

错;程序的模块化是指已程序要解决的总目标分解为若干目标,再进一步分解为具

体的小目标,每个小目标即为一个模块,而函数是C语言的基本模块,实现某一

模块的具体功能。答案选A)。

17、若i和k都是int类型变量,有以下for语句for(i=0,k=—1;k=l;k++)

prindT*\n");下面关于语句执行情况的叙述中正确的是

A、循环体执行两次

B、循环体执行一次

C、循环体一次也不能执行

D、构成无限循环

标准答案:D

知识点解析:本题考查for循环。本题的for循环初始条件为i=0,k=-l;循环

结束条件为k=l永远为真(k不为0),因此循环不能结束。

18、以下叙述中正确的是

A、循环发生嵌套时,最多只能两层

B、三种循环for,while,do—while可以互相嵌套

C、循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误

D、for语句的圆括号中的表达式不能都省略掉

标准答案:B

知识点解析:在一个循环体内又完整包含了另一个循环,称为循环嵌套。循环的嵌

套可以多层,但每一层循环在逻辑上必须是完整的。for循环、while循环、do-

while循环可以互相嵌套,但每层循环在逻辑上必须完整。而在for语句中,for语

句中的表达式可以部分或全部省略,但两个":’‘不可省略。

19、程序中若有如下说明和定义语句charfun(char*);main(){char*s=Hone",

a[5]={0),(*fl)()=fun,ch;}以下选项中对函数fun的正确调用语句是

A、(*fl)(a);

B、*fl(*s);

C、fun(a);

D、ch=*fl(s);

标准答案:A

知识点解析:本题主要考查函数调用和函数指针的使用。根据定义fl是一个函数

指针,且指向fun函数,因此可以使用函数指针来调用函数。使用函数指针调用函

数的时候使用.运算符,即*门和fun是一样的,Rin函数有参数,通过门调用fun

函数写法为:(*fl)(a),括号是必须的,这样才能保证各部分正确结合。

20、不能正确表示数学式0的表达式是

A^a/c*b

B、a*b/c

C、a/b*c

D、a*(b/c)

标准答案:C

知识点解析:/号和*号的优先级处于平级,结合性都是自左至右?所以选择C,C式子

表示的是回。

21、若有以下程序structstu{char*namc,gender:intscore:):main(){structstu

a二{NULL,,m',290),b;a.name=(char*)malloc(10);strcpy(a.name,

"Zhao");b=a:b.gender=T;b.score=350:strcpy(b.name,"Qian");

printf("%s,%c,%d,”,a.name»a.gender,a.score);printf("%s»%c,%d

\nH,b.

A、Zhao,m,290,Qian,f,350

B、Qian,f,350,Qian,f,350

C、Zhao,m,290,Zhao,e350

D、Qian,m,290,Qian,f,350

标准答案:D

知识点解析:主函数中定义结构体类型structstu,有三个成员,第一个成员为字符

指针变量。主函数中为stu类型变量a赋值,首先为a.name成员分配存储空间,

存入数据。b=a;语句执行完毕以后,a和b的各个成员值相同,需要注意的是

b.name和a.name成员都保存了同一段内存的地址,因此当为变量b赋值的时

候,同样更改了a的name成员,而其他成员由于有单独的存储空间而不会发生改

变。

22、下面选项中关于位退算的叙述正确的是

A、位运算符都需要两个操作数

B、左移运算的结果总是原操作数据2倍

C、右移运算时,高位息是补0

D、位运算的对象只能是整型或字符型数据

标准答案:D

知识点》析:位运算则是以位(bit)一级进行的运算,位运算符中除“〜”以外,均为

二元运算符,即要求两恻各有一个运算量,运算量只能是整型或字符型的数据,不

能为实型数据。其中右移时,右端(低位)移出的二进制数舍弃,左端(高位)移入的

二进制数分两种情况:对于无符号整数和正整数,高位补0;对于负整数,高位补

lo而左移运算在没有溢出的前提下每移动一位,相当于原数据的2倍。

23、下面选项中关于位运算的叙述正确的是

A、位运算符都需要两个操作数

B、左移运算的结果总是原操作数据2倍

C、右移运算时,高位总是补0

D、位运算的对象只能是整型或字符型数据

标准答案:D

知识点解析:位运算则是以位(bit)一级进行的运算,位运算符中除以外,均为

二元运算符,即要求两侧各有一个运算量,运算量只能是整型或字符型的数据,不

能为实型数据。其中右移时,右端(低位)移出的二进制数舍弃,左端(高位)移入的

二进制数分两种情况:对于无符号整数和正整数,高位补0;对于负整数,高位补

lo而左移运算在没有溢出的前提下每移动一位,相当于原数据的2倍。

24、一间宿舍可住多个学生,则实体宿舍和学生之间的联系是()。

A、一对一

B、一对多

C、多对一

D、多对多

标准答案:B

知识点解析:因为一间官舍可以住多个学生即多个学生住在一个宿舍中,但一个学

生只能住一间宿舍,所以实体宿舍和学生之间是一对多的关系。

25、若有以下程序#includemain(){inta=1,b=2,c=3,d=4;if((a=2)||(b=l))c=2;

if((c==3)&&(d=-l))a=5;printf(',%d,%d,%d,%d\n',,a,b,c,d);}则程序的输出结果是

A、1,2,3,4

B、2,1,2,-1

C、5J,2,-1

D、222,4

标准答案:D

知识点解析:第一个if语句的判断条件中是逻辑或表达式,所以只要有一个运算对

象为真结果就为真,且如果前面的已经为真,后面的表达式不再进行执行判断。执行

第一个if判断条件时a的值为2,整个表达式的值为真,b的值不变,c的值为2。判断

第二个if条件为逻辑与表达式,只有两个运算对象均非零,才为真,第一个表达式

c=3,不成立,不再判断第二个运算对象,所以不执行d=-l操作和a=5操作。所以结

果为选项Do

国家二级C语言机试(选择题)模拟试

卷第4套

一、选择题(本题共25题,每题1.0分,共25分。)

1、计算机网络的主要特点是

A、运算速度快

B、运算精度高

C、资源共享

D、人机交换

标准答案:D

知识点解析:计算机网络的.主要特点是资源共享。

2、下列关于栈的描述中正确的是

A、在栈中只能插入元素而不能删除元素

B、在栈中只能删除元素而不能插入元素

C、栈是特殊的线性表,只能在一端插入或删除元素

D、栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素

标准答案:C

知识点解析:栈是限定在一端进行插入与删除的线性表,在栈中,允许插入与删除

的一端称为栈顶,不允许插入与删除的另一端称为栈底。

3、数据库中对概念模式内容进行说明的语言是()。

A、数据控制语言

B、数据操纵语言

C、数据定义语言

D、数据并发语言

标准答案:C

知识点解析:概念模式主要描述数据的概念记录类型以及它们间的关系,它还包括

一些数据间的语义约束,对它的描述可用DDL语言(数据定义语言)定义。

4、若有定义“mtx,y;”并已正确给变量赋值,则下列选项中与表达式、'(x-

y)?(x++):(y++)”中的条件表达式“(x・y)”等价的是()。

A、(x-y>0)

B、(x-y<0)

C、(x-y<0IIx-y>0)

D^(x-y==O)

标准答案:C

知识点解析:条件表达式的形式如下:“表达式17表达式2:表达式3"。其含义为

当“表达式1”的值为非零时,求出“表达式2”的值,此时“表达式2”的值就是整个条

件表达式的值;当“表达式1”的值为零时,则求“表达式3”的值,这时“表达式3”的

值就是整个表达式的值。本题条件表达式的执行顺序是先求解表达式“x-y”的值,

若其值为非0(可以是正数,也可以是负数),则再求表达式“XH”的值,其值就是条

件表达式的值:若表达式“x-y”的值为0,则再求表达式“y++”的值,其值就是条件

表达式的值。因此,本题的答案为选项C。

5、设有定义:inta=l,b=2,c=3;以下语句中执行效果与其它三个不同的是

A、if(a>b)c=a;a=b;b=c;

B、if(a>b){c=a,a=b,b=c;)

C、if(a>b)c=a.a=h.h=c:

D、if(a>b){c=a;a=b;b=c;}

标准答案:A

知识点解析:在C语言中,用分号表示一条语句的结束,用{}把几条语句放在一

块表示一个语句块,其整体表示一个功能。因而在题目给出的四个选项中,选项

B)、C)、D)表示的功能相同,而选项A)表示的是一条if语句,两条赋值语句。

6、下列测试方法中,()均属于白盒测试的方法。

A、语句覆盖法和边界值分析法

B、条件覆盖法和基本路径测试法

C、边界值分析法和代码检查法

D、等价类划分和错误推测法

标准答案:B

知识点解析:白盒测试电称结构测试或逻辑驱动测试,它是按照程序内部的结构测

试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,

检验程序中的每条通路是否都能按预定要求正确工作。白盒测试的测试方法有代码

检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测

试、符号测试、路径覆盖和程序变异。黑盒测试也称为功能测试,着眼于程序外部

结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。黑盒测试方

法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正

交试验设计法、功能图法等。故B选项正确。

7、若有以下程序段:ini『8;printfL%d\n\r>>l);输出结果是()。

A、16

B、8

C、4

D、2

标准答案:C

知识点解析:本题考查位运算,属于基础知识。题目中的整型变量8,二进制表达

为00001000,右移一位为00000100,即4,C选项正确。

8、由以下while构成的循环,循环体执行的次数是intk=0;while(k=l)k++;

A、一次也不执行

B、执行一次

C、无限次

D、有语法错,不能执行

标准答案:C

知识点解析:循环条件表达式为赋值表达式k=l,因此循环执行无限次。

9、有以下程序:#include<stdio.h>intf(intx){returnx*x+l;}voidmain()

{inta,b=0;for(a=0;a<3;a++){b=b+f(a);putchar('A'+b);}printf("\

n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论