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

下载本文档

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

文档简介

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

卷第1套

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

1、下列叙述中正确的是

A、栈是一种先进先出的线性表

B、队列是一种后进先出的线性表

C、栈与队列都是非线性结构

D、以上三种说法都不对

标准答案:D

知识点解析:栈是先进后出的线性表,队列是先进先出的线性表,二者均为线性结

构。

2、以下选项中不属于C语言标识符的是

A、用户标识符

B、关键字

C、常量

D、预定义标识符

标准答案:C

知识点解析:C语言的标识符可分为以下3类:①关键字。C语言预先规定了一

批标识符,它们在程序中都代表着固定的含义,不能另作他用。这些字符称为关键

字。例如,ini、dotlbleif.else、while、for等。②预定义标识符。即预先定义

并具有特定含义的标识符。③用户标识符。由用户根据需要定义的标识符称为用

户标识符,又称自定义标识符,一般用来给变量、函数、数组等命名。

3、下列关于二叉树的叙述中,正确的是

A、叶子结点总是比度为2的结点少一个

B、叶子结点总是比度为2的结点多一个

C、叶子结点数是度为2的结点数的两倍

D、度为2的结点数是度为1的结点数的两倍

标准答案:B

知识点解析:由二叉树的性质可以知道在二叉树中叶子结点总是比度为2的结点多

一个。

4、执行以下程序段后,s的值为()。inta[]={l,2,3,4,5,6,7,8,9),

s=0,k;for(k=0;k<8;k+=2)s+=*(a+k);prinfR"%d\n",s);

A、13

B、16

C、17

D、45

标准答案:B

知识点解析:数组元素为:a[O]=l,a[l]=2...a[8]=9ok=0时,s=s+*(a+k)=O+l=l;

k=2时,s=l+*(a+2)=l=3=4;k=4时,s=4+5=9;k=6时,s=9+7=16o

5、以下正确的字符串常量是

A、'abc'

OlympicGames

C、””

D、\\\

标准答案:C

知识点解析•:字符串常量是由双引号括起来的一串字符。在C语言中,以一个反

斜线开头后跟一个特定的字符,用来代表一个特定的ASCII字符。利用两个

表示一个反斜杠,因此选项D)的表示无法确认表示几个反斜杠。

6、建立表示学生选修课程活动的实体联系模型,其中的两个实体分别是()。

A、学生和学号

B、课程和课程号

C、课程和成绩

D、学生和课程

标准答案:D

知识点解析:实体是概念世界中的基木单位,是客观存在并可以相互区别的事物。

要建立表示学生选修课程活动的实体联系模型,能互相区别并可以联系起来的实体

是学生和课程。

7^有以下程序:#include<stdio.h>charf(charx){returnx*x%lO+'O";}

main()(chara;intb=0;for(a=0;a<5;a+=1){b=f(a);putchar(b);}}则程序

的输出结果是()。

A、014916

B、01234

C、01496

D、00000

标准答案:C

知识点解析:该题目中x*x%10,即x和x相乘后,结果再对10求余操作。主函

数中通过for语句使变量a从0到4进行取值,当a=0时,调用函数f后,返回值

为0,赋给b,并且进行字符输出;当a=l时,返回值为1赋给b,并且进行字符

输出;当a=2时,返回值为4赋给b,并且进行字符输出;当a=3时,返回值为9

赋给b,并且进行字符输出;当a=4时,返回值为6赋给b,并且进行字符输巴。

故C选项正确。

8、以下选项中,合法的一组C语言数值常量是()。

A、12.0Xa234.5eO

B、028.5e-3-Oxf

C、.1774el.50abc

D、0x8A10,0003.e5

标准答案:A

知识点解析:C语言中,八进制整型常量的开头数字是0,十六进制整型常量的开

头数字是Ox或OX。C语言中的实型常量有两种表示形式:小数形式,表示的实型

常量必须要有小数点;指数形式,以e或E后跟一个整数来表示以10为底数的幕

数,且规定字母e或E之前必须要有数字,且e或E后面的指数必须为整数。B选

项中028错误,八进制中没有数字8。C选项中4el.5中e后面的指数不是整数。

D选项中10,000数字之间不能有逗号。

9、下列描述中错误的是()。

A、在数据库系统中,数据的物理结构必须与逻辑结构一致

B、数据库技术的根本目标是要解决数据的共享问题

C、数据库设计是指在已有数据库管理系统的基础上建立数据库

D、数据库系统需要操作系统的支持

标准答案:A

知识点解析:在数据库系统中,物理独立性是指数据的物理结构(包括存储结构、

存取方式等)的改变。如存储设备的更换、物理存储的更换、存取方式改变等都不

影响数据库的逻辑结构,从而不致引起应用程序的变化。

10、有以下程序main(){intx=Ly=0;if(!x)y++;elseif(x=O)if(x)y+=2;else

y+=3;printf("%dha",y):}程序运行后的输出结果是

A、2

B、0

C、1

D、3

标准答案:B

知识点解析:x=l,if和elseif的条件都不满足,故y值不改变输出。

II、若在定义语句:inta,b,c,*p=&c;接着执行以下选项中的语句,则能正确

执行的语句是

A、scanf("%d%d%出3a,b,c):

B、scanfV'%dl.,a,b,c);

C、scanfV'%d",p);

D、scanfC'%d",&p);

标准答案:C

知识点解析:程序语句ima,b,c,*p=&c;定义了三个整型变量a,b,c,和一

个整型指针变量p,并且把变量c的地址赋给p。scanf函数的一般形式

为“scanf(“格式控制字符串”,地址列表广,其中的地址列表应当是存放输入数据变

量的地址。

12>有以下程序段inta,b,c:a=10;b=50:c=30;if(a>b)a=b»b=c;c=a:

printfa=%db=%dc=%d\n",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

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

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

语句输出变量a,b,c的当前值,分别为10,50.10o

13、以下关于retum语句的叙述中正确的是

A、一个自定义函数中必须有一条return语句

B、一个自定义函数中可以根据不同情况设置多条return语句

C、定义成void类型的函数中可以有带返回值的return语句

D、没有return语句的自定义函数在执行结束时不能返回到调用处

标准答案:B

知识点解析:return语句主要用于返回函数的值。在一个自定义函数中,可以根据

不同的情况设置多条relurn语句返回函数的值。

14、数据库设计过程不包括

A、概念设计

B、逻辑设计

C、物理设计

D、算法设计

标准答案:D

知识点解析:数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和物理设

计。

15、以下选项中,合法的一组C语言数值常量是

A、12.0Xa234.5e0

B、028.5e-3-0xf

C、.1774el.50abc

D、0x8A10.0003.e5

标准答案:A

知识点解析:八进制数其开头必须是数字“0",其数字包括0〜7,而在选项B)中,

028是错误的。浮点数据的指数形式表示常量中,C语言规定字母e或E之前必须

要有数字,且e或E之后的指数必须为整数,而选项。中4el.5是错误的。在选

项D)中,整型数据10,000的表示形式是错误的。

16、学校的每个社团都有一名团长,且一个同学可同时担任多个社团的团长,则实

体团长和实体社团间的联系是

A、一1对多

B、多对多

C、多对一

D、一对一

标准答案:A

知识点解析:一对多关系是关系数据库中两个表之间的一种关系,该关系中第一个

表中的单个行可以与第二个表中的一个或多个行相关,但第二个表中的一个行只可

以与第一个表中的一个行相关。本题中,一个团长可以对应多个社团,一个社团只

有一个团长,因此是一对多关系。

17、以下叙述中正确的是

A、整型常量和实型常量都是数值型常量

B、常量的类型不能从字面形式上区分,需要根据类型名来决定

C、预定义的标识符是C语言关键字的一种,不能另作它用

D、只能在函数体内定义变量,其他地方不允许定义变量

标准答案:A

知识点解析:整型常量和文型常量都是数值型常量,选项A)正确;常量的类型可

以从字面上区分,比如整型常量不能有小数点,组成字符为。〜9等,选项B)错

误;预定义标识符,即预先定义并具有特定含义的标识符,可以另作他用,不过更

改了原有的含义,选项C)错误;变量可以定义在程序中任何的地方,属于不同的

变量,选项D)错误。

18、若变量x、y己正确定义并贼值,以下符合C语言语法的表达式是

A、++x,y=x-

B、x+l=y

C、x=x+10=x+y

D^double(x)/10

标准答案:A

知识点解析:用逗号将表达式连接起来的式子称为逗号表达式。其表达式的一般形

式为:表达式1,表达式2,……,表达式n。最后一个表达式的值就是此逗号表

达式的值。所以选项A)为C语言中的逗号表达式。赋值表达式的左侧只能是变

量,不能是常量或表达式。强制类型转换表达式的形式为:(类型名)(表达式),其

中(类型名)称为强制类型转换运算符,数据类型两边的圆括号不能省略。

19、设有定义:intk=0;以卜选项的四个表达式中与其他三个表达式的值不相同的

A^++k

B、k+=l

C^k++

D、k+1

标准答案:C

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

增1,所以C选项中表达式的值为0,而其他三个表达式的值均为1,所以选择C?

20、若有以下程序main。{inta=・2,b=0;do{++b;)while(a++);prinlf("%d,%d

\n",a,b);}则程序的输出结果是

A、0,2

B、1,2

C、1,3

D、2,3

标准答案:C

知识点解析:由于a的初始值等于-2,所以while循环语言执行三次结束,第一次

a=-2,b=l,然后判断价环条件a++非零,执行第二次循环体a=l,b=2,判断循环

条件非零,执行循环体a=0,b=3,判断循环条件为0,此时变量a的值等于1。

21,与数学表达式x沙表对应的C语言表达式是

A、(x>=y>=z)

B、(x>=y)&&(y>=z)

C^(x>=y)!(y>=z)

D、(x>=y)||(y>=x)

标准答案:B

知识点解析:若要表示x大于等于y,同时y大于等于z,需要用逻辑与表达式连

接。

22、以下叙述中正确的是

A、对于变量而言,“定义”和“说明”这两个词实际上是同一个意思

B、在复合语句中不能定义变量

C、全局变量的存储类别可以是静态类

D、函数的形式参数不属于局部变量

标准答案:c

知识点解析:用stalic说明符说明全局变量时,此变量可称作静态全局变量。静态

全局变量只限于本编译单位使用,不能被其他编译单位所引用。在一个函数内部定

义的变量(包括形参)是局部变量,它只在本函数范围内有效。不同函数中可以使

用相同名字的局部变量,它们代表不同的对象,互不影响。在函数内部复合语句

中也可以定义变量,这些变量都是局部变量,只在本复合语句中有效。

23、有以卜程序段charname|20];intnum;scanf(',name=%snum=%d',,name,&nuni);当

执行上述程序段,并从键盘输入:name=Lilinum=1001〈回车〉后,name的值为

A、name=Lilinum=1001

B>name=Lili

CNLilinum=

D、Lili

标准答案:D

知识点解析:在输入格式控制"name=%snum=%d"中,普通字符"name=num="在输

入时要原样输入,而格式控制符%5和%€1对应各自的输入项,将输入的数据赋给相

应的输入项。本题中输入“name=Lilinum=IOOY回车,”后,将字符串Lili赋给字符

数组name,整数1001赋给变量num。因此D选项正确。

24、若有定义typcdctint*1';1'aLIOJ;则a的定义与下面哪个语句等价

A、int(*a)[10];

B、int*a[10];

C、int*a;

Dsinta[IO];

标准答案:B

知识点解析:本题考查typedef的使用方法,typedef对已存在的类型使用一个新的

名字,其中本题中im*用T来代替,所以定义Ta[10];就相当于是选项B

正确。

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

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

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

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

读到第1个数据

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

标准答案:A

知识点解析:B)选项中打开一个已存在的文件并进行了写操作后,原有文件中的全

部数据不一定被覆盖,也可以对源文件进行追加操作等°C选项中在一个程序中当

对文件进行了写操作后,不用先关闭该文件然后再打开,才能读到第1个数据,可

以用fseek()函数进行重新定位即可。D选项中,C语言中的文件可以进行随机读

写。

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

卷第2套

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

1、若输入“abcdeF'、"abdeF',以下程序的输出结果为()。#include#includemain()

{intn:charsi[20],s2[20],*pl,*p2:scanf("%s",si);scanf("%s",s2);

p1=s1;p2=s2;n=strcmp(p1,p2);printf("%d\n'\n);}

A、-1

B、0

C、abcdcf

D、abdef

标准答案:A

知识点解析:本题考查两个知识点:①字符串比较函数strcmp(sl,s2),若

s1>s2,则返回1;若sl=s2,则返回0;若si

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

A、栈与队列都只能顺序存储

B、循环队列是队列的顺序存储结构

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

D、以上说法都不对

标准答案:B

知识点解析♦:栈和队列都可以采用链式存储结构,选项A)错误。队列的顺序存储

结构一般采用循环队列的形式,所以循环队列是队列的顺序存储结构,选项B正

确,选项C)错误。答案选B)。

3、数据库应用系统中的核心问题是()。

A、数据库设计

B、数据库系统设计

C、数据库维护

D、数据库管理员培训

标准答案:A

知识点解析:数据库应用系统中的核心问题是数据库的设计「

4、结构化程序由三种基本结构组成,三种基本结构组成的算法

A、可以完成任何复杂的任务

B、只能完成部分复杂的任务

C、只能完成符合结构化的任务

D、只能完成一些简单的任务

标准答案:A

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

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

5、对序线性表(23,29,34,55,60,70,78)用二分法查找值为60的元素时,需

要比较次数为()。

A、1

B、2

C、3

D、4

标准答案:C

知识点解析:根据二分法查找法需要两次:①首先将60与表中间的元素55进行

比较,由于60大于55,所以在线性表的后半部分查找。②第二次比较的元素是后

半部分的中间元素,将60与表中间的元素70进行比较,由于60小于70,所以在

线性表的前半部分查找。③第三次比较的元素是前半部分的中间元素,即60,这

时两者相等,即查找成功。

6、下列程序段的输出结果是()。main(){charslJ="Helloworld";s[3]=0;

printf("%s\n",s);}

A^HelloOworld

B、Heiioworld

C、Hello

D、HelloO

标准答案:C

知识点解析:由于r数组中数组下标为5的元素赋值为0,0是字符串的结束标

志,所以在输出字符串的时,仅输出数组下标为0~4的数组元素。

7、数据库系统的三级模式不包括()。

A、概念模式

B、内模式

C、外模式

D、数据模式

标准答案:D

知识点解析:数据库系统的三级模式包括概念模式、外模式和内模式(物理模式)。

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

A、a!=4l|b'

B、V%4

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

D、'A』32

标准答案:c

知识点。析:赋值表达式左边应为变量,选项C中左边为字符常最,因此非法,

其余表达式均为合法的表达式。

9、下列叙述中正确的是

A、带链栈的栈底指针是固定的

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

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

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

标准答案:B

知识点解析:栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允

许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈

底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的

上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶

元素删除掉,使其相邻的元素成为新的栈顶元素。带链栈的栈底指针是随栈的操作

而动态变化的;若带链队列的队头指针与队尾指针相同,则队列可能为0也可能为

lo

10、下列语句组中正确的是()。

A、charts;s={''BOOK!”};

B、charts;s="BOOK!”;

C、chars[10];s="BOOK!”;

D、chars[];s="BOOK!”;

标准答案:B

知识点解析:A选项去掉大括号就正确了;C选项和D选项应在定义时赋初值。B

选项正确。

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

A、5a

B、A%

C、」0_

D^sizeof

标准答案:C

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

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

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

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

名c

12、关于变量的定义和说明的叙述中正确的是()。

A、对于变量而言,“定义”和“说明”这两个词实际上是同一个意思

B、在复合语句中不能定义变量

C、全局变量的存储类别可以是静态类

D、函数的形式参数不属于局部变量

标准答案:C

知识点解析:C语言的关键字static说明符说明全局变量时,此变量可称作静态全

局变量。静态全局变量只限于本编译单位使用,不能被其他编译单位所引用。在一

个函数内部定义的变量(包括形参)是局部变量,它只在木函数范围内有效。不同函

数中可以使用相同名字的局部变量,它们代表不同的对象,互不影响。在函数内部

复合语句中也可以定义变量,这些变量都是局部变量,只在本复合语句中有效。

13、关于字符数组定义中存在语法错误的是()。

A、charss[][20]={,,right,,};

char*ss[6];ss[l]=,'right?B

C、char*ss[]={,,right?’‘};

D、charss[6][20];ss[l]=,,right?D

标准答案:D

知识点解析:本题考查字符数组,选项D中定义了二维数组ss,可以用于存储字

符串,但是字符串的存储不能通过赋值,仅可以初始化或者输入得到,而选项C

和A不同,选项B为指针数组,对于指针变量可以保存常量字符串的地址。

14、下面描述中正确的是

A、软件调试是为了改善软件的性能

B、软件测试要确定错误的性质和位置

C、软件测试是软件质量保证的重要手段

D、软件调试的任务是发现并改正程序中的错误

标准答案:C

知识点解析:软件测试(SoftwareTesting),描述一种用来促进鉴定软件的正确

性、完整性、安全性和质量的过程。

15,一个教师讲授多门课程,一门课程由多个教师讲授。则实体教师和课程间的联

系是

A、1:1联系

B、l:m联系

C、m:l联系

D、m:n联系

标准答案:D

知识点解析:一个教师可讲授多门课程,一门课程可由多个教师讲授,则实体教师

和课程的联系是多对多的联系。

16>若变量已正确定义为int型,要通过语句scanf("%d,%d,%d",&a,&b,

&c);给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是(注:□代表

一个空格符)

□□□1.2,3

B、1,□□□2,口口口3

C、1.2.3

D^1口2口3

标准答案:D

知识点解析:本题主要考查scanf函数的输入格式问题。scanf函数的一般形式为:

scanf(格式控制字符串,地址I,地址2,…);格式控制字符串是由双撇号括起来

的字符串,它主要由两种类型的字符组成:①格式说明符由“%”和格式字符组

成,如%“,%d,%s,%f等。其作用是将输入的数据转换为指定的格式,赋给

scanf的二个参量(是地址1)所指定的内存单元(可能一次使用多个)中。格式说明以

“%”字符为标志;②普通字符,是需要用户在输入时原样输入的字符。在本题中

格式控制字符串为"%d,%d,%d”,表示按十进制输入三个数据。要求在输入数

据时,两个数据间一定以一个逗号“,”作为间隔符,

17、有以下程序段序ti,n;for(i=0;i<8;i++){n=rand()%5;switch(n)

{case1:case3:pnntf;n%d\n",n);break;case2:case4:printf("%d\n",

n);continue;case0:exit(O);)printf("%d\n",n);}以下关于程序段执行情况

的叙述,正确的是

A、当产生的随机数n为4时结束循环操作

B、当产生的随机数n为1和2时不做任何操作

C、当产生的随机数n为。时结束程序运行

D、for循环语句固定执行8次

标准答案:C

知识点解析:rand()函数功能为产生一个随机数,rand()%5,则产生0〜4之间的任

意随机数,当产生的随机数n为。时,执行“case0:exit(0)”这条语句,结束程序的

运行。

18、以下叙述中正确的是

A、下面的语句用赋初值方式来定义字符串,其中,’\(r是必须的char

strl[]={'s','t','r',T,,\0,)»

B、有定义语句:charstrl[]=,,strr,;,数组strl将包含4个元素

C、字符串常量“strl”的类型是:字符串数据类型

D、字符数组的每个元素可存放一个字符,并且最后一个元素必须是、(T字符

标准答案:B

知识点解析:选项B)中除了字符串中实际字符之外,还要存储字符串结束标志,

应为5个元素。在C语言中没有字符串数据类型,因此选项C)不正确,选项D)字

符数组不一定必须存放字符串,因此没有规定最后一个元素为字符串结束标志。

19、有下列程序,程序执行后的输出结果是fun(charP[][10]){intn=0,i;

for(i=0;i<7;i++)if(p[i][0]==,T,)n++;returnn;(main(){char

str[][10]={"MonM,MTue",“Wed","Thu%Tri","Sat,nSun"};printf("%d\n",

fun(str));}

A、1

B、3

C、0

D、2

标准答案:D

知识点解析:本题在主函数中定义了一个字符二维数组sgHlO],并用{“Mon”,

"Tuen,"Wed","TbuH,"Fri",nSatH,”Sun”}初始化。函数fun(charp口[10])的功能

是统计出中p[i|[0]等于字符,「的个数。所以fun(str)的功能是统计一周七天

中英文名称首字母为“T”的个数。因为字符串“Tue”和“Thu”的首字符是“T",所以

n=2o

20、软件设计中模块划分应遵循的准则是

A、低内聚低耦合

B、图耦合图内聚

C、高内聚低耦合

D、以上说法均错误

标准答案:C

知识点解析:根据软件设计原理提出如下优化准则:①划分模块时,尽量做到高

内聚、低耦合,保持模块相对独立性,并以此原则优化初始的软件结构。②一个

模块的作用范围应在其控制范围之内,且判定所在的模块应与受其影响的模块在层

次上尽量靠近。③软件结构的深度、宽度、扇入、扇出应适当。④模块的大小

要适中。C正确。

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

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

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

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

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

标准答案:D

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

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

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

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

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

22、有以下程序#include#inckidetypedefstruct{charname[10];charsex;intage;)

STU;voidfun(STU*t){strcpy((*t).name,"Tong");(*t).age++;}main()|STU

s[2]={"Hua";m,,l8JQin",f』9};fun(s+l);

printf("%s,%d,%s,%d\n",s[O].name,s[O].age,s|I].name,s[1].age);}程序运行后的输出

结果是()。

A、Hua,18,Tong,20

B、Hua,18,Qin/9

C^Tong,19,Qin,19

D、Hua,19,Tong/9

标准答案:A

知识点解析:结构体数组名作为函数参数为地址传参,函数fun()的作用是把当前

指针指向的结构体变量中的name赋值为”Tong”,并让成员变量age自增1,调用

函数时传递的是数组第二个元素的地址,所以改变的是第二个元素的值,答案选

Ao

23、以下程序中函数f的功能是:当flag为1时,进行由小到大排序;当flag为0

时,进行由大到小排序。#includevoidf(intb[],intn,intflag){intfor(i=0;i<n-

1;i++)for(j=i+l;j<n;j++)if(flag?b[i]>b[j]:b[i]

A、1,2,3,4,5,6,7,8,9,10,

B、3,4,5,6,7,2,1,8,9,10,

C、5,4,3,2,1,6,7,8,9,10,

D、10,9,8,7,6,5,4,3,2,1,

标准答案:B

知识点解析:本题重点考察函数的参数传递,函数的参数传递分为传值和传地址两

种情况。本题就是结合数组考查参数传递的情形。解析:函数f完成的功能是对数

据进行排序,语句f(&a[2],5,0)的作用是对从a[2]开始的5个元素进行从大到小排

序。注意:这里传递的是地址&a[2],所以排序操作可看作是直接对数组a操作,

执行后的结果为5,4,7,63,2/,8,9,10。语句f(a,5,l)对数组a的前5个元素从小到大

排序,排序后数组为:3,4,5,6,7,2,1,8910。因此B选项正确。

24、有以卜程序#includeintfun(intx){intp;if(x==0||x==l)return(3);p=x-fun(x-2);

returnp;}main(){printf("%d\n",fun(7));}执行后的输出结果是

A、2

B、3

C、7

D、0

标准答案:A

知识点解析:因为fun(iMx)是一个递归函数,所以主函数中fun(7)经过3次递归调

用,其过程可以描述为"flm⑺=7-fuIl(5)=7-(5-fun(3))=7-(5-(3-fun(l)))=7-(5-(3-3))=7-

5=2”,所以最后输出结果为2。因此A选项正确。

25、构成计算机软件的是

A、源代码

B、程序和数据

C、程序和文档

D、程序、数据及相关文档

标准答案:D

知识点解析:软件指的是计算机系统中与硬件相互依赖的另一部分,包括程序、数

据和有关的文档,选D。

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

卷第3套

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

1、算法的有穷性是指

A、算法程序的运行时间是有限的

B、算法程序所处理的数据量是有限的

C、算法程序的长度是有限的

D、算法只能被有限的用户使用

标准答案:A

知识点解析:算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能

在执行有限个步骤之后终止。

2、关于C语言标识符,以下叙述中错误的是()。

A、标识符可全部由数字组成

B、标识符可全部由下画线组成

C、标识符可全部由小写字母组成

D、标识符可全部由大写字母组成

标准答案:A

知识点解析:c语言标识符只能由字母、数字、下画线构成,且只能以字母、下画

线开头,故选项A不正确。

3、下列描述中正确的是

A、软件交付使用后还需要再进行维护

B、软件工具交付使用就不需要再进行维护

C、软件交付使用后其生命周期就结束

D、软件维护是指修复程序中被破坏的指令

标准答案:A

知识点解析:通常将软件产品从提出、实现、使用维护到停止使刚退役的过程称为

软件生命剧期。软件生命周期分为软件定义、软件开发及软件运行维护三个阶段。

已交付的软件投入运行后,应在运行使用中不断地维护,根据新提出的需要进行必

要而且可能的扩充和删改。

4、设有定义:inta;floatb:,执行seanf(”%2d%F,&a,&b);语句时,若从键

盘输入876543.0V回车>,则a和b的值分别是0。

A、87和6.0

B、876和543.0

C、87和543.0

D、76和543.0

标准答案:A

知识点解析:在格式字符前加入一个整数可以指定输入数据所占的宽度,所以赋值

时会将87赋给变量a,把6.0赋给floal型变量b。

由关系R和S得到关系T的操作是

A、自然连接

B、并

C、交

D、差

标准答案:D

知识点解析:由关系T中的数据可以看出,其数据由属于关系R但是不属于关系S

的数据组成。所以关系T是由关系R和S通过差运算得到的。

6、有以下程序:#includevoidmain(){chara[5][10]={<<one,\"two","three”,

"fbur",“five”};inti,j;chart:for(i:0;i<5;i++)for(j=i+l;j<4;j++)

if(a[i][O]>a[j][O]){t;a[i][0];a[i][O]=a[j][O];a[j][O]=t;puts(a[l]);}}程序运行

后的输出结果是()。

A^twoowo

B、fixowo

C、twofov

D、owooff

标准答案:A

知识点解析:for循环完成的功能是把二维数组a的第一列的字母按从小到大排

序,其他列的字母不变。

7、若有以下程序main()finta=6,b=0,c=0;for(;a;){b+=a;a-=++c;}

printfC%d,%d,%d\n",a,b,c);}则程序的输出结果是

A、1,14,3

B、0,18,3

C、0,14,3

D、0,14,6

标准答案:C

知识点解析:循环体执行三次,a初值6,第一次执行循环体,b=6,a=5o继续执

行循环体,b=ll,a=3,第三次执行循环体,b=14,a=0,循环退出。

8、下列程序段中完全正确的是()。

A、int*p;scanR''%d'',&p);

B、int*p;scanf(,,%d,\p);

C、intk,*p=&k;scanf(''%d'',p);

D、intk,*p;*p=&k;scanf(''%d'',p);

标准答案:C

知识点解析:A选项中错在没有对指针进行初始化,无效指针,并且在scanf'%

&p)中无须再进行取地址操作;B选项中没有对指针进行初始化,无效指针;

D选项中语句*p=&k;的左端*p是指针所指内存空间的值,&k是地址,应为

p=&koC选项正确。

9、若有以下程序#include<sldio.h>main(){inta=0,b=0,c=0;c=(a-=++a),

(a+=b,b+=4);printf("^d,%d,%d\n",a,b,c);}则程序的输出结果是

A、0,4,4

B、1,4,1

C、0,4,0

D、1,4,4

标准答案:C

知识点解析:表达式c=(a-=++a),(a+=b,b+=4)相当于逗号表达式,首先计算

c=(a-=++a)»其中a・=++a)等价于a=a-(++a),得到a的值0,c的值为0,在计算

(a+=b,b+=4)时,a和b的初值为0,计算以后,a为0,b为4。

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

A、1.9

B、1

C>2

D、2.4

标准答案:B

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

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

11、有以下程序#includeVstdio.h>#include<stdlib.h>main(){int*a,*b,

*c;a=b=c=(int*)malloc(sizcof(int));*a=l;*b=2,*c=3;a=b:printf(''%d,%

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

A、2,2,3

B、3,3,3

C、I,2,3

D、1,1,3

标准答案:B

知识点解析:a=b=c=(int*)malloc(sjzeof(int));含义为中请了一个整型的存储空间,

让指针a,b,c分别指向它,*a=l;*b=2;*c=3;语句的含义为所申请的整型存储

空间的内容,*c=3最后执行导致存储空间的内容为3。

12、若有以卜程序#includemain。{inta=l,b=2,c=3,d=4,r=0;if(a!=l);elser=l;if

(b==2)r+=2;else;if(c!=3)r+=3;else;if(d==4)r+=4;printf("%d\n",r);}则程序的输

出结果是()。

A、7

B、10

C、6

D、3

标准答案:A

知识点解析:else总是与前面距离它最近的且未曾配对的if语句配对。”if(a!=l);

elser=l;”执行的是空语句";二"if(b=2)r+=2;else;”执行的是语句”r+=2”,r值为

2。"if(c!=3)r+=3;else;”执行的是空语句”if(d==4)r+=4;"执行语句”r+=4”,计算

后r的值为7,输出结果为选项A)。

13、有下列程序:yoidflintb[]){inti;for(i=2;i<6;i++)b[i]*=2;}main()

{inta[10]={l,2,3,4,5,6,7,8,9,10),i;fla):for(i=0;i<10,

i++)printf,%d,”,a[i]);}程序运行后的输出结果是

A、1,2,3,4,5,6,7,8,9,10,

B、1,2,3,4,10,12,14,16,9,10,

C、I,2,6,8,10,12,7,8,9,10,

D、1,2,6,8,10,12,14,16,9,10

标准答案:C

知识点解析:函数voidf(intb[])的功能是对数组b口中第2个到第5个元素的值逐个

扩大2倍。所以在main()函数中,f(a)语句的作用是对数组a[10]中从a⑵到a[5]的

各个数字乘以2,因而数组a[10]的元素就变成了{1,2,6,8,10,12,7,8,9,

10}。

14、有以下程序段intj;floaty;charname[50];scanf("%2d%f%s",&j,&y,

name):当执行H术程序段,从键盘卜输入555667777ahc后,y的值为

A、55566.0

B、7777.0

C、566.0

D、566777.0

标准答案:C

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

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

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

为选项C)o

15、avg函数的功能是求整型数组中的前若干个元素的平均值,设数组元素个数最

多不超过10,则下列函数说明语句错误的是

A^intavg(int*a,intn):

B、intavg(inta|10|,intn);

C、intavg(inta[bintn,);

D^intavg(inta,intn);

标准答案:D

知识点解析:本题考查函数的定义。题目要求计算数组的平均值,因此函数必须获

取数组的地址(指针),即函数必须要有一个指针类型的参数,选项D中函数参数都

是整型,错误。

16、有如[程序#includemain(){inti,k;intarray[4||2|={{1,2),{4,9},{6}};for

(i=0;i<2;i++)for(k=0;k<4;k++){printf("%d,H,array[k][i]);}printf(H\n");)程序运行

后的输出结果是()。

A、146,0,2,9,0,0,

B、124,9,6,

C、2,9,0,0,146,0,

D、2,9,61,4,

标准答案:A

知识点解析:定义语句"imarray[4][2]={{1,2},{4,9},{6}};"的作用是使

array[0][0]=l>array10]|1]=2,array111|0|=4,array[l][l]=9»array⑵⑼=6,其余元

素均为0,所以按列输巴结果为答案A)。

17、若有定义语句:chars[10]=nl234567\0\0n;则strlcn(s)的值是

A、8

B、7

C>9

D、10

标准答案:B

知识点解析:字符串长度函数strlcn(s)表示计算出以s为起始地址的字符串的长

度,并作为函数值返回。这个长度值不包括串尾的结束标志'\0'。

18、以下关于return语句的叙述中正确的是

A^一个自定义函数中必须有一条return语句

B、一个自定义函数中可以根据不同情况设置多条向urn语句

C、定义成void类型的函数中可以有带返回值的return语句

D、没有return语句的自定义函数在执行结束时不能返回到调用处

标准答案:B

知识点解析:return语句主要用于返回函数的值。在一个自定义函数中,可以根据

不同的情况设置多条return语句返回函数的值。

19、若有定义:in【a,b;通过语句scanf("%d;%d”,&a,&b);能把整数3赋给变量a,5

赋给变量b的输入数据是

A、3,5

B、35

C、3;5

D、35

标准答案:C

知识点解析:在采用scanf这个函数输入数据时,要严格遵守其输入的规则定义。

本题此函数定义的规则是,在两个整数之间加分号输入。

20、以下叙述中正确的是

A、用户自己定义的函数只能调用库函数

B、不同函数的形式参数不能使用相同名称的标识符

C、在C语言的函数内部,可以定义局部嵌套函数

D、实用的C语言源程序总是由一个或多个函数组成

标准答案:D

知识点解析:一个C语言源程序可以由一个或多个源文件组成,每个源文件可由

一个或多个函数组成,这些函数可以是自定义函数,也可以是库函数,各个函数之

间没有主从关系,不能嵌套定义函数。

21、若有以下程序#inckideint*f(int*s,int*t){int*k;if(*s<*t){k=s;s=t;t=k;}

returns;)main(){inti=3,j=5,*p=&i,*q=&j,*r;r=f(p,q);

printf("%d,%d,%d,%d,%d\n”,i,j,*p,*q,*r);}则程序的输出结果是()。

A、353,5,5

B、3,5,5,3,5

C、5,3,5,3,5

D、53,3,5,5

标准答案:A

知识点解析:考查指针与函数。被调函数为指针型函数,返回的是s这一指针型数

据。虽然该函数进行的是地址传参,但只是改变了指针的指向,对原指向的数据并

没有改变。并且若以指卦作为操作单元,不涉及其指向的数据时,该函数仍然可以

看做是值传递,即形参指针指向的变化不会影响到实参指针的指向。if语句将s指

向*s、%较大的数据的地址并返回。所以函数调用结束之后,i、j值不变,p的指

向不变,「的指向和q的指向一致,输出结果为:3,5,3,5,5,答案选A。

22、有以卜程序#includcmain。{ints[3][2]={1,2,34,5,6),*ps[3|,k;for(k=0;k<3;k++)

{ps[k]=s[k];printf("%d'^(pslkl+l));)}程序的运行结果是()o

A、246

B、135

C、123

D、456

标准答案:A

知识点解析:考查行指针。(*ps)[引表示一个能存放三个整型兀索首地址的一条数

组的首地址。”ps[k]=s[k];”表示将ps指向s的第k行数据,所以“printf("%d

”,*(ps[k]+l));"输出的是二维数组s中的第二列数据,答案选Ao

23、有以卜程序程ncludeVsidio.h>main(){FILE*fp;charstr[10|;

H

fp=fopen(myfile.dat","w");fputsC'abc'*,fl));fclose(fp);rpo

fopen("myfile.dat","a+");fprintf(fp,H%d",28);rewind(fp);fscanf(fp,

s",str);puts(str);fclose(fp);}程序运行后的输tj结果是

A、28c

B、abc28

C>abc

D、因类型不一致而出错

标准答案:B

知识点解析:在程序中首先把字符串abc写入到文件myfile.dal中,然后再把整

数28追加到字符串abc的后面,最后把文件myfiledat的内容读入到字符串str

中,并把其内容输出。

24、有以下结构体说明、变量定义和赋值语句structSTD{charname|10];image;

charsex;}s[5],*ps;ps=&s[0];则以下scanf函数调用语句有错误的是

scanf("%sn,s[0].name);

B、scanf("%d",&s|0].age);

C^scanf("%c,',&(ps->sex));

D^scanf("%d",ps->agc);

标准答案:D

知识点解析:本题考查结构体的相关知识,题目中需要输入一个变量,scanf要求

参数为指针,而D选项中ps->agc为一个变量,不是指针,所以错误。

25、以下选项中正确的语句组是

A^char*s;s={uBOOK!');

B、char*s;s="BOOK!H;

C、chars[10];s="BOOK!";

D、chars[];s=',ROOK!u;

标准答案:B

知识点解析:A选项去掉大括号就正确了;C选项和D选项应在定义时赋初值。因

此B选项正确。

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

卷第4套

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

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

A、AaBc

a-b

C^a_b

D、_1

标准答案:B

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

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

2、以下选项中表示一个合法的常量是(说明:符号□表示空格)

A、123E0.2

B、2.7eD

C、0999□

D、OXab

标准答案:D

知识点解析:本题考查C语言中的常量。选项A字母E后面必须是整型数,浮点

数错误:选项B字母e后面没有整型数:选项C以。开始表示8进制数,8进制数

没有9:选项D是一个正确的16进制常数。

3、数据库设计过程不包括()。

A、概念设计

B、逻辑设计

C、物理设计

D、算法设计

标准答案:D

知识点解析:数据库设计过程主要包括需求分析、概念结构设计、逻辑结构分析、

数据库物理设计、数据库实施、数据库运行和维护阶段。答案为D选项。

4、数据流图中带有箭头的线段表示的是

A、控制流

B、事件驱动

C、模块调用

D、数据流

标准答案:D

知识点解析:数据流图是从数据传递和加工的角度,来刻画数据流从输入到输出的

移动变换过程。其中带箭头的线段表示数据流。沿箭头方向传递数据的通道,一般

在旁边标注数据流名。

5、若有定义语句:intyear=2009,*p=&year;,以下不能使变量year中的值增至

2010的语句是O。

A、(*p)++:

B、*p++;

C、++(*p);

D^*p+=l;

标准答案:B

知识点解析:由于自加运算符++的运算级别高于间接运算*的运算级别,所以B选

项的表达式*P++不能使变量year中的值增至2010,因此选择B选项。

6、下列描述中正确的是

A、程序就是软件

B、软件开发不受计算机系统的限制

C、软件既是逻辑实体,又是物理实体

D、软件是程序、数据与相关文档的集合

标准答案:D

知识点解析:计算机软件与硬件是计算机系统中相互依存的两部分。计算机软件是

包括程序、数据及相关文档的完整集合。软件由两部分组成:一部分是机器可执

行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的

文档。软件具有以下六个特点:①软件是一种逻辑实体,而不是物理实体,具有

抽象性。②软件的生产与硬件不同,它没有明显的制作过程。③软件在运行、使

用期间不存在磨损、老叱问题。④软件的开发、运行对计算机系统具有依赖性,

受计算机系统的限制,这导致了软件移值的问题。⑤软件复杂性高,成本昂贵。

⑥软件的开发涉及诸多社会因素。

7、执行以下程序段后,w的值为()。intw='A\x=14,y=15;w=((xIIy)&(w

V'a'));

A、一1

B、2

C、1

D、0

标准答案:C

知识点解析:本题考查表达式和逻辑运算。x和y分别为14和15,因此(xlly)的

值是真。w的值为A,其ASCH值为65,a的ASCI【值为97,因此(wV3)的值为

真。表达式w=((xlly)&(wV3))的前后两个值均为真,整个表达式的值为真。

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

A、一次也不执行

B、执行一次

C、无限次

D、有语法错,不能执行

标准答案:C

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

9、以下叙述中正确的是

A、C语言程序总是从最前面的函数开始执行

B、C语言程序总是从main函数开始执行

C、C语言程序中main函数必须放在程序的开始位置

D、C语言程序所调用的函数必须放在main函数的前面

标准答案:B

知识点解析:C语言中一个源程序都有一个且只能有一个main函数,即主函数;C

语言规定必须用main作为主函数名。其后的一对圆括号中可以是空的,但不能省

略。程序中的main。是主函数的起始行,也是C程序执行的起始行。每一个程序

都必须有一个且只能有一个主函数。一个C程序总是从主函数开始执行,到main

函数体执行完后结束,而不论main函数在整个程序中的位置如何。而调用函数的

定义位置和调用没有直接关系。

10、若有定义语句inta⑵[3],*p[引;,则以下语句中正确的是()。

A、p=a;

B、p|O]=a;

C>p[0]=&a[l][2];

D、p[l]=&a;

标准答案:c

知识点.析:A选项错误,因为p是指向一个指针数组,作为数组名,不能指向别

的地方。B选项错误,因为p[0]是一个ini指针,也就是int*;而a是一个指向指《I

的指针int**。C选项正确,因为p[0]是一个int*,a⑴⑵是int,&a[l]⑵是int*,

类型吻合。D选项错误,因为a作为数组名,不能取地址,即使能取,p[l]是

int*,&aMint***,类型不对。

11、有以卜程序:#include<stdio.h>voidf(int*p,int*q);main(){intm=l,

n=2,*r=&m;f(r,&n);printf(''%d,%d",m,n);}voidf(intint*q)

{p=p+1:*q=*q+l:}程序的运行结果是()。

A、2,3

R、1.3

C、1,4

D、1,2

标准答案:B

知识点解析:在f(int*p,int*q)函数中,执行p=p+1是将p所对应的地址加1,而

*q=*q+l是将q所指向n的地址所对应的值加1,所以m的值所对应的值没有变,

而n的值则为3了,因比B选项正确。

12、若有定义intw[3][5];,则以下不能正确表示该数组元素的表达式是()。

A、*(&w[0][0]+l)

B、*(**+3)

C、*(*(w+l))

D、*(w+l)[4|

标准答案:D

知识点解析:A选项中*(&w⑼⑼+1)表示B选项中*(*w+3)表示w[0]]3];

C选项中*(*(w+l))表示

温馨提示

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

评论

0/150

提交评论