国家二级(C语言)笔试模拟试卷30(共473题)_第1页
国家二级(C语言)笔试模拟试卷30(共473题)_第2页
国家二级(C语言)笔试模拟试卷30(共473题)_第3页
国家二级(C语言)笔试模拟试卷30(共473题)_第4页
国家二级(C语言)笔试模拟试卷30(共473题)_第5页
已阅读5页,还剩118页未读 继续免费阅读

下载本文档

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

文档简介

家二级(C语言)笔试模拟试卷30

(共9套)

(共473题)

国家二级(C语言)笔试模拟试卷第1

一、公共基础选择题(本题共10题,每题7.0分,共

70分。)

1、下列选项中,不是一个算法的基本特征的是()。

A、完整性

B、可行性

C、有穷性

D、拥有足够的情报

标准答案:A

知识点解析:作为一个算法,一般应该具有4个特征:①可行性,即考虑到实际

的条件能够达到一个满意的结果:②确定性,算法中的第一个步骤都必须是有明

确定义的;⑧有穷性,一个算法必须在有限的时间内做完;④拥有足够的情报。

2、结构化分析方法是面向()的自顶向下、逐步求精进行需求分析的方法。

A、对象

B、数据结构

C、数据流

D、目标

标准答案:C

知识点解析:结构化分析方法是面向数据流进行需求分析的方法,采用自顶向下、

逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的

逻辑模型。

3、下列工具中为需求分析常用工具的是()。

A、PAD

B、PFD

C、N-S

D、DFD

标准答案:D

知识点解析:需求分析常用的工具有数据流图(DFD)、数据字典(DD)、判定树和判

定表。PAD(问题分析图)、PFD(程序流程图)、N-S(盒式图)都是详细设计的常用工

具,不是需求分析的工具。

4、对线性表进行二分法检索,其前提条件是()。

A、线性表以顺序方式存储,并按关键码值排好序

B、线性表以顺序方式存储,并按关键码的检索频率排好序

C、线性表以链式方式存储,并按关键码值排好序

D、线性表以链式方式存储,并按关键码的检索频率排好序

标准答案:A

知识点解析:对线性表进行二分法检索,要求线性表是按顺序方式存储的,并按关

键码值的大小排好序,而不是按关键码的检索频率排序。

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

A、自顶向下

B、逐步求精

C、模块化

D、可复用

标准答案:D

知识点解析:结构化程序设计的主要原则概括为自顶向下、逐步求精和限制使用

GOTO语句。

6、关于结构化程序设计原则和方法描述错误的是()。

A、选用的结构只准许有一个入口和一个出口

B、复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现

C、不允许使用GOTO语句

D、语言中所没有的控制结构,应该采用前后一致的方法来模拟

标准答案:C

知识点解析:限制使用GOTO语句是结构化程序设计的原则和方法之一,但不是

绝对不允许使用GOTO语句。其他3项为结构化程序设计的原则。

7、软件需求分析阶段的工作,可以分为4个方面:需求获取、需求分析、编写需

求规格说明书以及()。

A、阶段性报告

B、需求评审

C、总结

D、都不正确

标准答案:B

知识点解析:需求分析是软件定义时期的最后一个阶段。可以概括为4个方面:

①需求获取;②需求分析;⑧编写需求规格说明书;④需求评审。

8、下列对于软件测试的描述中正确的是()。

A、软件测试的目的是证明程序是否正确

B、软件测试的目的是使程序运行结果正确

C、软件测试的目的是尽可能多地发现程序中的错误

D、软件测试的目的是使程序符合结构化原则

标准答案:C

知识点解析:软件测试是为了尽可能多地发现程序中的错误,尤其是发现至今尚未

发现的错误。

9、用链表表示线性表的优点是()。

A、便于随机存取

B、花费的存储空间较顺序存储少

C、便于插入和删除操作

D、数据元素的物理顺序和逻辑顺序相同

标准答案:C

知识点解析:在链表中因为除了存放数据元素之外,还要存放指针,所以链表花费

的存储空间要比顺序表还要多。在插入和删除数据元素时,只需要移动相应的记录

指针即可。在链表中数据的物理结构与逻辑结构不一定相同,因为是靠指针来实现

对数据的指定的,所以不能进行随机存取。

10、在数据库设计中,将E-R图转换为关系模式的过程属于()。

A、需求分析阶段

B、逻辑设计阶段

C、概念设计阶段

D、物理设计阶段

标准答案:B

知识点解析:数据库设计阶段主要包括需求分析、概念设计、逻辑设计和物理设

计。其中,逻辑设计的主要工作是将E-R图转换为关系模式。

二、选择题(2分)(本题共30题,每题,.0分,共30

分。)

11、c语言的基本单位是()。

A、函数

B、过程

C、子程序

D、子函数

标准答案:A

知识点解析:C语言是函数式的语言,它的基本组成单位是函数,在C语言中任何

程序都是由一个或者多个函数组成的。

12、下列不正确的转义字符是()。

A、3

B、t

C、

D、'088'

标准答案:D

知识点解析:是反斜线转义字符:、'是水平跳格转义字符;’\n,饭是换行转义字

符;C语言中没有规定,088,为转义字符。

13、能正确表示“当x的取值在[1,10]和[100,110]范围内为真,否则为假”的表达式

是()

A、(x>=I)&&(x<=10)&&(x>=100)&&(xV=110)

B、(x>=0II(x<=10)II(x>=100)IIx<=110)

C、(x>)&&(x<=10)II(x>=100)&&(x<=110)

D、(x>=)IIx<=10)&&(x>=100)IIx<=110)

标准答案:C

知识点解析:本题考查逻辑与(&&)和逻辑或(II)运算符的使用。x>=l和xV=10

是逻辑与的关系,因此C语言表达式应写成”(x>=l)&&(xV=10)”,x>:100和x

<=110也是逻辑-与的关系,因此C语言表达式应写成“(x>=100)&&(x<=

110)”;[140]和[100,110]是逻辑或的关系,因此只要将前两个表达式用逻辑或运算符

连接起来即可,所以最后的表达式:(x>=l)&&(xV=10)II(x>=100)&&(x<=

110)o

14、若定义inta=10,则表达式a+=a-=a*=a的值是()。

A、0

B、-180

C、-100

D、-90

标准答案:B

知识点解析:算术运算符的运算规则是:从右到左的原则。所以表达式中先计算a

=a-a*(上标)a的值是-90,再计算a=a+a的值是-180。

15、下列程序的输出结果是()。main{intx=8,y=8;printf("%do%od\n",x-,-y);)

A、88

B、77

C>78

D、87

标准答案:D

知识点解析:本题考查刍减(--)运算符的使用。“X」是先引用X的值然后将X的值

减1,所以输出的x值为8;“-y”是先将y的值减1然后再引用y的值,所以输出的

y值为7。

16、若有定义“doublea;",则正确的输入语句是()。

A、scanf(n%lf,A);

B、scanf("%f,&A);

C、scanf(M%lf,&A)

D、scanf("%le",&A);

标准答案:D

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

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

址。题中定义变量a为双精度型变量,双精度变量的格式符为“1c”;变量的地址用

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

17、下列选项中合法的赋值语句是()。

A、a-b=34

B、a=34,b=34

C、i-1;

D^m=(int)(x+y);

标准答案:D

知识点解析:选项A是一个合法的赋值表达式,但结尾没加分号,所以它不是一

个赋值语句:选项B是一个逗号表达式,也因为结尾没有加分号而不是合法的赋

值语句;选项C是一个算术表达式,虽然有分号,但这个表达式没有赋值操作,

因此,也不是一条赋值语句。

18、若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a〈b?a:c

Vd?c:d的值是()。

A、1

B、2

C、3

D、4

标准答案:A

知识点解析:条件表达式的形式如下:表达式17表达式2:表达式3,所以本题条

件表达式aVb?a:cVd?c:d应该理解为aVb?a:(c<d?c:D),首先求出条件表达式eV

d?c:d的值等于2,再求条件表达式aVb?a:2的值,由于a=lVb=4成立,所以上

述条件表达式的值等于1。

19、假定所有变量均已正确说明,下列程序段运行后x的值是()。a=b+c=0;x=

12;if(!A)x-;elsex=5;if(C)x=3;elsex=4;

A、11

B、4

C、12

D、3

标准答案:B

知识点解析:本题考查ifelse语句。第一个if语句,先判断条件,发现a=0,

则!a成立,执行下列的语句,X-,得x=ll;第二个if语句,判断条件,发现c=

0,则条件不成立,执行下列的else语句,得x=4c

20、设变量a、b、c、d和y都己正确定义并赋值。若有下列if语句if(a<b)if(c=

=d)y=0;elsey=l;该语句所表示的含义是()。

y=<\a>b

A、

o

»=ja^bQ.c^d

B、

o

adflled

c、

0a<b\\ic^d

y=\ictd

D、,

标准答案:c

知识点解析:语句if(c==D)y=0;elsey=l;是if(aVB)语句的一个子句。所以整

个C语句表达式的意思是:在、aVb的情况下,如果c=d则y=0,否则y==

io所以,选项C)为正确答案。

21、下列程序的运行结果是()。main(){inta=2,b=3,c=4;if(a<b)ifO<O)c=O;

elsec+=1;printf("%dh^,c);

A、2

B、3

C、5

D、4

标准答案:C

知识点解析:本题考查ifelse语句。第一个if语句,先判断条件,发现aVb条件

成立,执行下列的语句;第二个if语句,先判断条件,发现bVO条件不成立,则

执行与其配对的else语句,c+=l,得c=5。

22、在下列给出的表达式中,与while(E)中的(E)不等价的表达式是()。

A^(!E==0)

B、(E>0IIE<0)

C、(E==0)

D、(E!=0)

标准答案:B

知识点解析:在while(E)中,表达式E可以是C语言中任意合法的条件表达式,但

不能为空,由它来控制循环体是否执行。在选项B)中表达式E>0IIE<0是一个

逻辑表达式。

23、有下列程序:main(){intx=0;inty=O;while(x<7&&+4-y){y-;

printf(:%d,%d",y,x);}程序的输出结果是()°

A、0,7

B、7,7

C、0,6

D、1,6

标准答案:A

知识点解析:本题考查while循环。y的值在while循环的控制表达式中加1,在循

环体内减1,所以总的y值不变,且控制条件++y永远非零。当x加到7时不满足

循环条件,结束循环。

24、有下列程序:main。{chars口="abcde”;s+=2;printf("%d\n”,s[0];)执行后的结

果是()。

A、输出字符a的ASCII码

B、输出字符c的ASCII码

C、输出字符c

D、程序出错

标准答案:D

知识点解析:因为字符数组si)中的数组名s表示的是一个地址常量。所以语句“s+

=2;”不能将指针在当前位置的基础上再向后移动两位,因而程序编译时出错。

25、下列选项中非法的字符常量是()。

A、

B、,\039,

C>V

D、,\n,

标准答案:B

知识点解析:选项A)中,表示的是横向跳若干格;选项B)中,,03夕错

误,,03夕是八进制形式表示的字符,但其中出现了,歹,所以错误:选项C)

中,‘,’是字符逗号;选项D)中,,表示的是回车换行。

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

A、break语句只能用于switch语句

B、在switch语句中必须使用default

C、break语句必须与switch语句中的case配对使用

D、在switch语句中,不一定使用break语句

标准答案:D

知识点解析:break为C语言关键字,又称间断语句。break语句的功能是跳出正在

执行的条件语句或循环语句。它可以出现在switch语句中,也可以出现在循环语

句中。default是关键字,起标号的作用,代表所有case标号之外的那些标号。

default标号可以出现在语句体中任何标号位置上。在switch语句体中也可以没有

default标号。

27、下列叙述中,错误的是()。

A、在同一C程序文件中,不同函数中可以使用名字相同的变量

B、在main。函数体内定义的变量是全局变量

C、形参是局部变量,函数调用完成即失去意义

D、若同一文件中全局和局部变量同名,则全局变量在局部变量作用范围内不起作

标准答案:B

知识点解析:本题考查函数调用时变量的作用域。形参是局部变量,函数调用完就

失去意义了,所以在同一个C程序文件中,不同的函数体中可以使用名字相同的

局部变量。

28、C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递是()。

A、地址传递

B、值传递

C、由实参传给形参,并由形参传回给实参

D、由用户指定传递方式

标准答案:B

知识点解析:本题考查函数调用时的参数传递。在函数调用时,实参和其所对应的

形参分别占用不同的存储单元,彼此之间只是实参将值传递给形参。

29、设ql和q2是指向一个float型一维数组的指针变量,k为float型变量,则不

能正确行的语句是()。

A、k=*ql+*q2;

B、ql=k;

C、ql=q2;

D^k=*ql*(*q2);

标准答案:B

知识点解析:选项A)中是将指针ql和q2所指向的变量值相加,然后赋给k;选项

B)中,float型数据和指针型数据之间不能进行赋值运算;选项。中,是两个指针

变量之间的赋值;选项D)中,是两个指针型变量所指向的两个float型数据相乘。

30、若有说明:inbpljp2m=8,m;下列均是正确赋值语句的选项是()。

A^pl=&n;p2=&pl;

B、pl=n;

C、pl=&n;*p2=pl;

D^pl=&n;p2=pl;

标准答案:D

知识点解析:本题考查指针变量的赋值。选项A)中,pl、p2本身都是地址变量,

不能再将pl取地址赋给p2;选项B)中,不能将整型数据直接赋值给指针型数据;

选项C)中,*p2代表了一个整型变量,而*p2=pl这个语句试图把一个地址值放入

一个整型变量中是错误的;选项D)中指针间的赋值是正确的。

31、若希望下列的程序运行后输出25,程序空白处的正确选项是()。main()(inti,j

=50,a[]={7,4,10,5,8};for()j+=a[i];primf(H%d,j-40);)

A、i=l;i<4;++i

B、i=l;i<3;++i

C、i=4;i>2;i-

D、i=2;i<4;++i

标准答案:D

知识点解析:要想使程序输出是25,则j-40=25,j=65,而j初值是50,所以填入

for循环中的语句,使引用的数组元素累加为65-50=15即可。

32、若有说明inta口[3]={123,4,5,6,7,8,9},则a数组第一维的大小是()。

A、2

B、3

C、4

D、无确定值

标准答案:B

知识点解析:本题考查二维数组第一维的大小如何确定。二维数组第一维的大小由

如下规则确定:①当初值的个数能被第二维的常量表达式的值除尽时,所得商数

就是第一维的大小;②当初值的个数不能被第二维的常量表达式的值除尽时,第

一维的大小等于所得商数加1。

33、若二维数组a有m列,则在刚前的元素个数为()。

A^i*m+j-l

B、i*m+j

C、j*m+I

D、i*m+j+l

标准答案:B

知识点解析:二维数组的元素可以看成是按矩阵形式存放的,总是先存放第一行的

元素,再存放第二行的元素。数组第一维的下标是i,说明它前面还有i行,有

i*m个元差,数组第二维的下标是j,说明它前面还有j歹U,有j个元素,所以共有

i*m+j个元素。

34、函数调用strcat(strcpy(strl,str2),str3)的功能是()。

A、将字符申strl复制到字符串str2中后再连接到字符串str3之后

B、将字符串strl连接到字符串str2之后再复制到字符串slr3之后

C、将字符串str2复制到字符串strl后再将字符串str3连接到字符串strl之后

D、将字符串Slr2连接到字符串strl之后再将字符串strl复制到字符串str3中

标准答案:C

知识点解析:strcat(sl,s2)是把s2字符串连接到si字符串末尾,strcpy(sl,s2)是把s2

字符串复制给si字符串,要保证si能容纳下连接或复制后的字符串。

35、下列程序的输出结果是()。#include<stdio.h>f(intA){intb=0;staticintc=4;

a=c++;b++;retum(A);]main(){inta==2,i,c;fbr(i=0;i<2;i++)C=f(a++);

printf("%dhnH,C);)

A、4

B、7

C、6

D、5

标准答案:D

知识点解析:本题考查静态变量的使用方法和for循环。在函数调用时,static变量

在函数调用结束后所作的所有变化均不保持,所以当i-1时,第2次进入f函数时c

=5,所以最终main函数中c的值为5。

36、#define能作简单的替代,用宏来替代计算多项式5*x*x+5*+5的值的函数f,

正确的宏定义语句为(),

A、#definef(x)5*x*x+5*+5

B>#definef5*x*x+5*x+5

C、#definef(a)(5*a*a+5*a+5)

D、#define5*x*x+5*+5f(x)

标准答案:C

知识点解析:带参数宏的格式:#deflne标识符(形参表)形参表达式。其功能:在预

处理程序中将程序中出现的所有带实参的宏名,展开成由实参组成的表达式。

37、定义结构体数组:structstu{intnum;charname[20];}x[5]=

{1,"LI",2,"ZHAO",3;'WANG",4,,'ZHANG';5;,LIUH};for(i=l;i<5;i++)

printf(',%d%C';x[i].num,x[i]name[2]);以上程序段的输出结果为()°

A、2A3N4A5U

B、112A3H41

C>1A2N3A4U

D、2H3A4H51

标准答案:A

知识点解析:本题主要考查结构体数组的使用。x[i].num为结构体x[i]中的num成

员,x[i].name[2]是结构体x[i]中name成员的第3个元素。程序执行循环过程时:

第1次循环,i=l,输出x[l].num,x[l].name[2]的值,即2A:第2次循环,i=

2,输出x[2].num,x[2].namc[2]的值,即3N;第3次循环,i=3,输出x[3].num,

x[3].name[2]的值,即4A:第4次循环,i=4,输出x[4].num,x[4].name⑵的值,

即5Uo

38、若有下列说明和语句,已知int型数据占2个字节,则下列语句的输出结果是

()ostmctst{chara[15]:intb;doublec;};printf("%d",sizeof(structSt));

A、15

B、8

C、25

D、2

标准答案:c

知识点0析:本题主要考查结构体的内存使用:对结构体而言,结构中不同的成员

分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内

存空间大小的总和,结沟中每个成员相互独立。题中inlb占2个字节,chara[l5]

占15个字节,doublec占8个字节,所以共25个字节。

39、设intx=7,则-x的值是()。

A、-8

B、-7

C、-1

D、1

标准答案:A

知火点解析:本题主要考查按位求反运算和C语言中正负数的表示,“(T代表正

数,代表负数;x=7的二进制为00111,第一个0代表正数,〜x为11000,第

一个1代表负数,值为8。

40、函数Rcll(fp)的作用是()。

A、得到fp所指向文件的当前读写位置

B、初始化流式文件的位置指针

C、移动流式文件的位置指针

D、以上3种答案均正确

标准答案:A

知识点解析:位置指针当前值函数ftcll。的基本调用格式为:ftell(fp)o函数

的参数说明:“fp”是指向文件的文件型指针。ffell函数的功能:得到fp所指向文

件的当前读写位置,即位置指针的当前值,如果函数的返回值为-1L,表示出错。

三、公共基础填空题(本题共5题,每题1.0分,共5

分。)

41、数据结构分为逻辑结构和存储结构,循环队列属于结构。

标准答案:逻辑

知识点解析:数据的逻辑结构主要是反映数据之间的逻辑关系,而存储结构是用来

反映数据的逻辑结构在计算机存储空间中的存放形式。循环队列主要是强调数据之

间的关系,因此属于逻辑结构。

42、队列是限定在表的一端进行插入和在另一端进行删除操作的线性表。允许插入

的一端称作o

标准答案:队尾

知识点解析:在队列中,允许插入的一端叫做“队尾”,允许删除的一端叫做“队

头”。

43、在_____个容量为32的循环队列中,若头指针front=3,尾指针rear=2,则

该循环队列中共有个元素。

标准答案:31

知识点解析:设队列容量为m,如果:rearAfront,则队列中元素个数为rear-

front;如果rear<from,则队列中元素个数为m+(rear-from)。本题rearVfrom,则

m=32+(2-3)=31o

44、一棵二叉树第6层(根结点为第一层)的结点最多为个。

标准答案:32

知识点解析:二叉树第k层上,最多有2k-l(kNl)个结点。第6层的结点数最多是

26-1=32。

45、度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为。

标准答案:45

知识点解析:对于长度为N的线性表,在最坏情况下(即线性表中元素现在的顺序

与目标顺序正好相反),冒泡排序需要经过N/2遍的从前往后的扫描和N/2遍的从

后往前的扫描,需要的比较次数为N(N-l)/2。

四、填空题(本题共70题,每题1.0分,共10分。)

46、若a是血型变量,则表达式(a=2*3,a*2),a+6的值为。

标准答案;12

知识点解析:本题考查逗号表达式的运算规则。逗号表达式的基本格式为:”表达

式1,表达式2,…”,其整个表达式的结果取最后一个子表达式的值。本题中首先

计算逗号表达式中的第1个表达式a=2*3=6,然后计算第2个表达式a*2,这时整

个表达式的值为12,但要注意,因为第2个表达式并没有给a赋值,因此a的值不

变:接下来执行最后一个表达式a+6=12,所以整个表达式最后的值为12。

47、表达式l/2*(int)3.7/(int)(2.4*(1.5+2.5))值的数据类型为。

标准答案:整型

知识点解析:上面的表达式中,通过强制类型转换把最后参与运算的数据都转换成

了血型,所以坡后得到的结果也是int类型。

48、下列程序段的输出结果是ointn=,C,;switch(n++)

{dehull:printR"error");break;case'a':printfV'good");break;case,C':printR"moming");

cased:printff'class");}

标准答案:morningclass

知识点解析:本题考查了两个知识点:①运算后缀形式是先使用变量原来

的值,使用完后再使其增1或减1;②在switch语句中,当n=Q时,执行

“case'c':",输出morning;因为此句中没有break语句,因此接着执行“case'd':",

输出class,最终输出结果为morningclasso

49>写出下列程序的输出结果omain(){intn=0;while(n++<=l);

printf("%d,",n);printf("%dH,n++);)

标准答案:3,3

知识点解析:本题在while(n++<=l”语句后,直接加了分号,说明如果while。的

条件为真时,该循环什么都不做;n++是先取n的当前值和1做比较,然后再将n

加1。第一次循环,n=0时,循环条件n++=0V=l成立,执行循环,然后得到

n=lo第二次循环,n=l时,循环条件a++=lV=l成立,执行循环,然后得到

n二2。第三次循环,n=2时,循环条件n++=2V=l不成立,不执行循环,但在判断

循环条件时仍将n加1,得到n=3。退出循环后执行prinif语句,第二个prinlf语句

输出n++,是先输出n的当前值3,然后再将n加1,即程序结束后得到n=4,但

输出的是3。

50、下列程序的功能是对输入的一行字符中的数字字符的字面值累加,输出此累加

和,请填空。#include<stdio.h>#include<ctype.h>main(){charc;inta,s=0;

while()if(isdigit(C)){a=c-,0,;s+=a;}printf("s=%d",s);}

标准答案:(c=getchar())!=、n'

知识点解析:分析题目可知,程序中运用函数c=getchar()从标准输入设备读取下一

个字符,而且是一行的字符(即没有换行),所以条件为(c=getchar())!=W

51、下列程序输出的结果是©intm=17;intfun(intx,inly){intm=3;

retum(X*y-m);}main(){inta=5,b=7;printf(H%d\n",fun(a,B)Zm);}

标准答案:1

知识点解析:本题考查局部变量和全局变量的区别:局部变量是指作用域在函数级

和块级的变量,全局变量是指作用域在程序级和文件级的变量。本程序首先定义

了一个全局变量m=17,m=17的作用域在整个程序内。在fun函数内部定义了一个

局部变量m=3,m=3的作用域仅在Rin函数内部,通过fun函数返回两个形参的积

再减m。在主函数中,输出fun(a,b)/m2(5*7-3)/17=1o

52>设有下列的程序段:charstr[]="Hello";char*ptr;ptr=-str;执行上面的程序段

后,*(ptr+5)的值为o

标准答案:

知识点解析:本题涉及字符数组和指针的两个知识点:①在c语言中,字符型数

组在存放字符串时会自动在末尾加上字符串结束标识符、(T,所以题中数组str有6

个元素。②ptr指向数组s仕的首地址,ptr元是指向str[5],*(ptr+5)是引用str[5]的

值,即‘\0'.

53、若有定义定1社4][4]={{1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},则初始化后,a|l|(l|

得到的初值是o

标准答案:0

知识点解析:二维数组可以看成是按矩阵形式排列的,题目中给二维数组赋初值是

按行分段赋值的,a[4][4]可以分解为4个一维数组,其数组名分别为a[0]、a[l].

a⑵、a[3],这4个一维数组都有4个元素,a[0]的元素为a[0][0]、a[O][l],

a[0||2ha|0][3]o

54、设有下列程序:#include<stdio.h>#include<string.h>main(){inti;char

sL!OJ,t[IOJ;gets(t);for(i=D;i<2;i++){gcts(s);if(strcmp(t,s)<0)strcpy(t,s);}

printf("%s\n”,l);}程序运行后,从键盘上输入(<CR>代表回车符):CDEF<CR>

BADEF<CR>QTHRG<CR>,则程序的输出结果是______。

标准答案:QTHRG

知识点解析:strcmp(t,s)函数用来比较t和s所指字符串的大小,若t>s,则函数

值大于O若1=§,则函数值等于0:若tVs,则函数值小于0。strcpy(t,s)函数的功

能是把字符数组s所指字符串的内容复制到字符数组t所指的存储空间中。本题

中,t[10]="CDEF”。第一次循环,s[10]="BADEF”,if语句的控制条件strcmp(t,s)

V0不成立,接着执行第二次循环,s="QTHRG”,if语句的控制条件strcmp(t,s)VO

成立,执行下列的语句,将字符数组s所指字符串的内容复制到字符数组I所指的存

储空间中,然后输出字符数组t。

55、下列程序的输出结果是o#defineP(A)Printf("%d;,,(int)(A))

#dcfincPRINT(A)P(A);printf("theend")main(){inti,a=O;fdr(i=l;i<5;++)

PRINT(a+i);printf("\nn);)

标准答案:1,2,3,4,theend

知识点解析:本题考查带参数的宏的定义。第1次循环,i=l时,调用PRINT(l),

P(l)输出1;第2次循环,i=2时,调用PRINTQ),P(2)输出2;第3次循环,i=3

时,调用PRINT(3),P⑶输出3;第4次循环,i=4时,调用PRINT(4),P⑷输出

4,thecndo

国家二级(C语言)笔试模拟试卷第2

一、公共基础选择题(本题共10题,每题1.0分,共

10分。)

1、以下4组用户定义标识符中,全部合法的一组是o

A、mainencludesin

B>If-maxturbo

C、txtREAL3COM

D、intk_2_001

标准答案:A

知识点解析:选项C中有非法标示符.max,错误;选项B中有非法标示符

3COM;选项D中有非法标示符int。选项A正确。

2、以下选项中可以作为C语言中合法整数的是o

A、10110B

B、3X6

C、OXffa

D、x2a2

标准答案:C

知识点解析:C语言中整型常量有3种表示形式:十进制、八进制和十六进制。选

项A是二进制表示,错误;八进制的数字是0、1、2、3、4、5、6、7,选项B错

误;十六进制整数常量用0X开头,选项D错误。

3、已经定义ch为字符型变量,以下赋值语句中错误的是。

A、ch=V;

B、ch=62+3;

C、ch=NULL;

D^ch='\xaa’;

标准答案:A

知识点解析:对字符变量赋值时,即可以赋一字符常量,也可以赋0〜255的整

数,该整数表示字符常量的ASCII值。本题中选项B是将65赋值给ch,表示字符

A;选项C中NULL是C语言中的符号常量,其值为0;选项D是将一个转义字符

赋值给ch,该字符的ASCH值为aa,其中aa是十六进制;选项A错误。

4、己定义c为字符型变量,则下列语句中正确是o

A、c=,97\

B、c二"97”;

C、c=97;

D、c="a";

标准答案:C

知识点解析:’97,不是字符变量,选项A错误;“97”是字符串,选项B错误;

是字符串,选项D错误;正确答案是选项C。

5、有以下程序:main(){inta=l,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);

printf("%d,%d\n",k,m);}程序运行后的输出结果是。

A、0,0

B、0,1

C、1,0

D、1,1

标准答案:C

知识点解析:本题考查“逻辑或”运算的特例。本题中执行语句k=(n=b>a)||(m=aV

b)时,首先计算表达式(n=b>a)||(m=aVb)的值,因b=2,a=l,所以b>a成立,即

得n=l,故表达式(n=b>a)||(m=a〈b)的值为真,不再执行表达式m=a〈b,故执行

完表达式k=(n=b2>a)||(m=aVb)后,n=l>m=0>k=lo

6、有以下程序:main(){intm=12,n=34;

printf("%d%d',,m++,++n);printf(,'%d%d\n,',n++,++m);}程序运行后的输出结果是

A、12353514

B、12353513

C、12343514

D、12343513

标准答案:A

知识点解析:m++表示先输出m,再m+1,++n表示先n+1,再输出n,因此第一

条输出语句出1235,第二条语句输出3514。

7、设有以下定义:inta=0;doubleb=l.25;charc='A'#defined2则下面语句中错误

的是。

A、a++;

B、b++;

C、c++

D、d++

标准答案:D

知识点解析:选项D中d是符号常量,不能进行++的运算。

8、以下程序的功能是:给r输入数据后计算半径为r的圆面积s。程序在编译时出

错。main()/*Beginning*/{intr;floats;scanf("%d",&r);

s=*K*r*r*r;printf(ns=)出错的原因是。

A、注释语句书写位置错误

B、存放圆半径的变量不应该定义为整型

C、输出语句中格式描达符非法

D、计算圆面积的赋值语句中使用了非法变量

标准答案:D

知识点解析:兀必须用一个符号名来代表,而旦这个符号名必须在程序中进行指

定,否则计算机将不能设别。

9、若整型变量a、b、c、d中的值依次为:1、4、3、2,则条件表达式aVb?a:cV

d?c:d的值是o

A、1

B、2

C、3

D、4

标准答案:A

知识点解析:因为aVb成立,此表达式的值就为1。

10、有以下程序:main(){unsignedchara,b;a=4|3;b=4&3;printf("%d%d\n",a,b);}

执行后输出结果是O

A、70

B、07

C、11

D、430

标准答案:A

知识点解析:a=4I3=00000100100000011=00000111=7,

b=4&3=00000100&00000011=00000000=0。

二、选择题(1分)(本题共70题,每题1.0分,共70

分。)

11、以下叙述中正确的是

A、用C程序实现的算法必须要有输入和输出操作

B、用C程序实现的算法可以没有输出但必须要有输入

C、用C程序实现的算法可以没有输入但必须要有输出

D、用C程序实现的算法可以既没有输入也没有输出

标准答案:C

知识点》析:算法具有的5个特性是:有穷性;确定性;可行性;有0个或多个输

入;有一个或多个输出。所以说,用C程序实现的算法可以没有输入但必须要有

输出。

12、请选出可用作C语言用户标识符的是

A^void,define,WORD

B、a3_b3,_I23,IF

C、FOR,—abc,Case

D、2a»Do,Sizeof

标准答案:B

知识点解析:C语言规定用户标识符由字母、数字和下画线组成,且第一个字符必

须是字母或下画线,可见选项C),D)是错误的;此外,C语言不允许用户将关键

字作为标识符,而选项A)中的void正是C语言的关键字。

13、以下选项中可作为C语言合法常量的是

A、-80

B、-80

C、-8el.O

D、-80.0e

标准答案:A

知识点解析:选项B)中,以0开头表示是一个八进制数,而八进制数的取值范围

是0〜7,所以-080是不合法的;选项C)和D)中,e后面的指数必须是整数,所以

也不合法。

14、在C语言中,运算对象必须是整型数的运算符是

A、%

B、\

C、%和\

D、**

标准答案:A

知识点解析:在C语言中,“%”运算符两侧的运算数必须是整型。

15、以下定义语句中正确的是

A、inta=b=0;

B、charA=65+l,b='b';

C、noata=1,*b=&a,*c=&b:

D、doublea=0.0;b=1.1;

标准答案:B

知识点解析:本题考查变量的定义方法。如果要一次进行多个变量的定义,则在它

们之间要用逗号隔开,因此选项A)和D)错误。在选项C)中,变量c是一个浮点

型指针,它只能指向一个浮点型数据,不能指向指针变量b,故选项C)错误。

16、有以下程序段chareh;intk;ch='a':k=12;printf("%c,%d,”,ch,ch,

k);printf("k=%d\nn,k);已知字符a的ASCII码值为97,则执行上述程序段后输

出结果是

A7因变量类型与格式描述符的类型不匹配输出无定值

B、输出项与格式描述符个数不符,输出为零值或不定值

C、a,97,12k=12

D、a,97,k=12

标准答案:D

知识点解析:输出格式控制符%<:表示将变量以字符的形式输出;输出格式控制

符%€1表示将变量以带符号的十进制整型数输出,所以第一个输出语句输出的结果

为a,97;第二个输出语句输出的结果为k=12。

17、有以下程序main。}inti,s=l;for(i=l;i<50;i++)if(!(i%5)&&!(i%3))s+=i;

printf(”%d/n”,s);}程序的输出结果是

A、409

B、277

C、1

D、91

标准答案:D

知识点解析:本题是计算50之内的自然数相加之和,题中if语句括号中的条件表

达式!(i%5)&&!(i%3)表明只有能同时被5和3整除妁数才符合相加的条件,1〜49

之间满足这个条件的只有15、30和45,因为s的初始值为1,所以s=

l+15+30+45=91o

18、当变量c的值不为2、4、6时,值也为“真''的表达式是

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

13、(c>=2&&c<=6)||(c:=3)||(c!=5)

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

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

标准答案:B

知识点解析:满足表达13式(c>=2&&cV=6)的整型变量c的值是2,3,4,5,

6o当变量c的值不为2,4,6时,其值只能为3或5,所以表达式c!=3和c!=5

中至少有一个为真,即不论c为何值,表达式B)者,为“真工

19、若变量已正确定义,有以下程序段inia=3,b=5,c=7;if(a>b)a=b;c=a;

if(c!=a)c=b;printf("%d,%d,%d\n”,a,b,c);其输出结果是

A、程序段有语法错

B、3,5,3

C、3,5,5

D、3,5,7

标准答案:B

知识点解析:两个if语句的判断条件都不满足,程序只执行了c=a这条语句,所

以变量c的值等于3,变量b的值没能变化,程序输出的结果为3,5,3。所以正

确答案为B)o

20、以下不正确的定义语句是

A、doublex[5]={2.0,4,0,6.0,8.0,10.0);

B>inty[5]={0,1,3,5,7,9);

C、charcl[]={,l,,2,3,4,5}:

D、charc2[]={,\x10,,'\x8'};

标准答案:B

知识点解析:在一维数组中要注意的是作为下标表达式的常量表达式的值必须是大

于等于0,选项B)中定义有5个元素,但赋值时有6个元素,所以是错误的。

三、选择题(2分)(本题共20题,每题7.0分,共20

分。)

21、有以下程序:#include<stdio.h>main(){charcl=,l,,c2=,2,;

c1=getchar();c2=getchar();putchar(c1);putchar(c2);]当运行时输入:aV回车〉后,

以下叙述正确的是0

A、变量cl被赋予字符a,c2被赋予回车符

B、程序将等待用户输入2个字符

C、变量cl被赋予字符a,c2中仍是原有字符2

D、变量cl被赋予字符a,c2中将无确定值

标准答案:A

知识点解析:getchar函数读入字符时,空格、回车符都作为字符读入,因此A正

确。

22>x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语

句是0

A、INPUTx>y、z;

B、scanf("%d%d%dH,&x,&y,&z):

C、scanf("%d%d%d",x,y,z);

D、read("%d%d%d",&x,&y,&z);

标准答案:B

知识点解析:选项A和选项D都不是C语言中的输入方法,选项C中的变量名前

面缺少取地址符

23、以下程序的输出结果是o#defineSQR(X)X*Xm疝1(){inta=10,

k=2,m=l;a/=SQR(k+m)/SQR(k+m);printf(,,d\n';a);)

A、16

B、2

C、9

D、1

标准答案:D

知识点解析:本题考查带参数的宏调用。a/=SQR(k+m)/SQR(k+m)进行宏替换后

得:

a=a/(SQR(k+m)/SQR(k+m))=a/(k+m*k+m/k+m*k+m)=l0/(2+1*2+1/2+1*2+1)=10/(2+2

+0+2+l)=10/7/lo

24、有以下程序:main())inta=3,b=4,c=5,d=2;if(a>b)if(b>c)

printf("%d'\d+++1);elseprintf(,,%d",++d+l);printf("%d\n",d);}程序运行后的

输出结果是o

A、2

B、3

C、43

D、44

标准答案:A

知识点解析:本题考查嵌套if语句中else的配对。本题中eke和第二个if即if(b>

c)配对。由于a>b不成立,因此整个程序只输出printf("%d\n",d),即输出2。

25>有以下程序:main(){chark:inti;for(i=l:i<3;i++){scanf(u%c",&k);

switch(k){case'0':printf("another'n");case*1*:printf(unuinber\n");})}程序运行

时,从键盘输入:01〈回车〉,程序执行后的输出结果是o

A、anothernumber

B、anothernumberanother

C^anothernumbernumber

D、numbernumber

标准答案:C

知识点解析:第一次执行for循环语句时,k=XT,故执行caseO语句输出

another,同时因没有break语句,继续执行case」',语句,输出number;第二次

执行for循环语句时,k="l故输出number。所以正确答案为C。

26、有以下程序:main。{intx=O,y=5,z=31while(z-->0&&++xV5)y=y-l:

printf("%d,%d,%d\n';x,y,z);)程序执行后的输出结果是。

A、3,2,0

B、3,2,-1

C、4,3,-1

D、5,2-5

标准答案:B

知识点解析:第一次执行while语句时,z=3>0,然后执行z-得z=2,执行++x

得x=l<5,条件成立,执行y=y-l=5-1=4;第二次执行while语句时,z=2>0,然

后执行z-得z=l,执行++x得x=2V5,条件成立,执行y=y-1=4-1=3;第三次执行

while语句时,z=l>0,然后执行z-得x=0,执行++x得x=3V5,条件成立,执

行尸y」=3-l=2;第四次执行while语句时因z=0,z〈0条件不成立,同时执行

得即执行完while循环后x=3、y=2、z=-l«

27、有以下程序:main(){inta[]={2,4,6,8,10),y=0,x,*p;p=&a[l];for(x=l;x<

3;x+4-)y+=p[x];prinlf("%d\n”,y);}程序运行后的输出,结果是。

A、10

B、11

C、14

D、15

标准答案:C

知识点解析:因为p=&a[l],p[0]=a[l],p[l]=a⑵,p[2]=a[3]°for循环是求p[l]+p[2],

因此y的值应为:6+8=14o

28、有以卜程序中若有如下说明和定义语句;charfun(char*);main(){char*

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

A、(*fl)(a);

B、*fl(*s);

C、fun(&a);

D、ch=*fl(s);

标准答案:A

知识点解析:(*fl)()=fun可以理解为将fun函数的函数名称用(*fl)()来代替了,因

此高调用fun时就可以用(*门)()来代替,因此只有A是正确的。

29>有以下程序:intf(inta){returna%2;)main(){ints[8]={1,3,5,2,4,6},i,d=O;

for(i=0;f(slij);i++)d+=slij;pnntf("%d\n'\d);}程序运行后的输出结果是。

A、9

B、11

C、19

D、21

标准答案:A

知识点解析:本题中d=s[O]+s[1]+s[2]=1+3+5=9<>

30、若有定义:intx=0,*p=&x;,则语句printf("%d\n",*p);的输出结果是

A、随机值

B、0

C、x的地址

D、p的地址

标准答案:B

知识点解析:由定义*p=&x,p指向x的地址,*p=x,因此输出的是x的值。

31、设有定义:intA,*pA=&A;,以下scanf语句中能正确为变量A读入数据的是

A、scanf("%d",pA);

B、scanf("%dn,A);

C、scanf("%d",apA);

D、scanf(',%d,,,*pA);

标准答案:A

知识点解析:选项B中不是变量A的地址,错误;选项C是指针pA的地址,错

误:选项D中*pA表示变量A的值,错误。

32、有以下程序:main(){inta[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++)p[i]=i;

for(i=0;i<3;i++)printf(M%d,,,a[l][i]);}程序运行后的输出结果是。

A、012

B、123

C、234

D、345

标准答案:D

知识点解析•:p指向的a的首地址,由于C语言是行优先存储的,一维数组p就依

次存放了a中从第0行到第2行的所有元素,因此就对应了p[3]〜p[5]。

33、以下能正确定义二维数组的是o

A、inta[][3];

inta[][3]={2*3);

C>inta[][3]={};

D.inta[2][3]={{l},{2),{3,4));

标准答案:B

知识点解析:(1)二维数组的定义二维数组的定义方式为:类型说明符数组名[常量

表达式][常量表达式]。二维数组在内存中是按行优先的顺序存放的,即先存放第

一行的元素,再存放第二行的元素,依次类推。(2)二维数组元素的引用二维数组

元素的表示形式为:数组名[下标][下标],下标可以是整型常量或整型表达式其范

围为:0〜(常量表达式-1)。(3)二维数组的初始化可以用以下方法对二维数组元素

初始化:①分行给二维数组赋初值例如:inta⑵⑵={{1,2},{3,4}};这种赋值方

式比较直观,把第1个大括号内的数据赋给第1

温馨提示

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

评论

0/150

提交评论