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

下载本文档

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

文档简介

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

卷第1套

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

1、下面对对象概念描述正确的是()。

A、对象间的通信靠消息传递

B、对象是名字和方法的封装体

C、任何对象必须有继承性

D、对象的多态性是指一个对象有多个操作

标准答案:A

知识点解析:对象是面向对象方法中最基本的概念。操作描述了对象执行的功能,

通过消息传递,还可以为其他对象使用。操作过程是被封装在对象中,用户看不

到,称之为对象的封装性v对象的多态性是指同一个操作可以是不同对象的行为.

不是所有的对象都必须有继承性。

2、设数据结构B=(D,R),其中D={a,b,c,d,e,f)R={(f,a),(d,b),(e,d),(c,e),(a,c))该数据

结构为

A、线性结构

B、循环队列

C、循环链表

D、非线性结构

标准答案:A

知识点解析:由结点之间的关系R={(f,a),(d,b),(e,d).(c,e),(a,c)}可以得到,该数据结

构为:“f-a-c-e-d-b”。由此可知结点f没有前驱,结点b没有后继结点,并且其它的

结点只有一个前驱结点和一个后继结点,所以该数据结构为线性结构。所以应选A

选项。

3、以下程序段中.与语句k=a>b?(b>e?l:0):0;功能相同的是()。

A、if((a>b)II(b>c))k=l;elsek=0:

if((a>b)&&(b>c))k=1;elsek=0;

C>if(a<=b)k=0;elseif(b<=c)k=l;

D、if(a>b)k=l;elseif(b>c)k=l;elsek=0;

标准答案:B

知识点解析:条件表达式的含义是,如果表达式1成立,结果为表达式2的值,如

果不成立,则为表达式3的值。所以题干中k的值这样取值:如果a>b且b>c,k

值结果为1,如果a>b且bb与b>c中只要有一个条件不成立,k的值就为0,所以

选择B选项。

4、以下各项中,当x为大于I的奇数时,值为0的表达式是()。

A、x%2==0

B、x/2

C、x%2!=0

D、x%2==1

标准答案:A

知识点解析:当x为大于1的奇数时,x%2==。表达式为3所以答案为A。

5、在学生管理的关系数据库中,存取一个学生信息的数据单位是

A、文件

B、数据库

C、字段

D、记录

标准答案:D

知识点解析:本题考查关系数据库中,数据单位的相关概念。文件是指存储在外部

介质上的数据的集合v数据库是存储在计算机存储设备上,结构化的相关数据集

合。它不仅包括描述事物的数据本身,而且还包括相关事物之间的联系。在数据库

中,表的“行”称为“记录”,“列”称为“字段”。由此可得,题中存取一个学生信息的

数据单位为记录。

6、程序中对fun函数有如下说明void%。。;此说明的含义是

A、fun函数无返回值

B、fun函数的返回值可以是任意的数据类型

C、fun函数的返回值是无值型的指针类型

D、指针fun指向一个函数,该函数无返同值

标准答案:A

知识点解析:本题主要考察函数的声明,voidfun()表示fun函数没有输入参数,函

数返回void表示函数无返回值。

7、有以下程序#includemain(){charch[]="uvwxyz",*pc;pc=ch;printf(n%c\n",

*(pc+5));}程序运行后的输出结果是

A、z

B、0

C、元素ch⑸的地址

D、字符y的地址

标准答案:A

知识点解析:语句pc=ch;使得指针变量指向字符数组ch的首地址,即指向字

符,则pc+5指向的是字符向后移动5位,指向字符,z"所以输出的*pc+5的值

即为,z'。因此A选项正确。

8、关于结构体类型的叙述中正确的是()。

A、结构体类型中各个成分的类型必须是一致的

B、在定义结构体类型时,编译程序就为它分配了内存空间

C、结构体类型中的成分只能是C语言中预先定义的基本数据类型

D、一个结构体类型可以由多个称为成员(或域)的成分组成

标准答案:D

知识点解析:C语言中的结构体类型,它是由若干“成员”组成,每一个成员可以是

一个基本数据类型或者是一个构造类型。在说明和使用之前先定义它,也就是构造

它。

9、下列语句组中,正确的是

A^charts;s="01ympic";

B、chars[7J;s="Olympic";

C、charts;s={"Olympic"};

D、chars[7];s={"Olympic");

标准答案:A

知识点解析:选项A中定义了指针变量s,通过赋值语句保存字符串常量的地址,

而字符数组绝对不能赋值,而只能初始化或者输入。

10、以下结构体说明和变量定义中,正确的是

A、typedefstructabc{intn;doublem;)ABC;ABCx,y;

structabc{intn;doublem);structabcx,y;

C、structABC{intn;doublem;)structABCx,y;

D、structabc{intn;doublem;};abcx,y;

标准答案:A

知识点解析:选项B)中结构体定义中每个成员后面的分号都不能省略,doublem

后没分号,因此错误。选项C)结构体类型定义完毕后,}外没加分号。选项D)中

定义变量要加I•关键字"ruetc

11、若有定义语句:imx=10;则表达式x-=x+x的值为

A、-20

B、0

C、-10

D、10

标准答案:C

知识点解析:表达式x・=x+x等价于x=x・(x+x),整型变量x的初始值等于10,计算

题目所求表达式的值时,首先计算x与x的和等于20,然后再用10减去20等于-

10,得到该表达式的值。

12、设有定义:intx=2;以下表达式中,值不为6的是

A、2*x,x+=2

B、x++,2*x

C、x*=(i+x)

D^x*=x+l

标准答案:A

知识点解析:本题考查逗号表达式。逗号表达式的求解过程是:先求解表达式1,

再求解表达式2,整个逗号表达式的值是表达式2的值,因此,选项A)中值为4:

选项B)中,值为6。选项C)中x*=x+l等价于x=x*(x+l),所以等于6;选项D)与

选项。等价,结果也为6。

13、以下叙述中正确的是

A、函数的类型不能是指针类型

B、函数的形参类型不能是指针类型

C、基类型不同的指针变量可以相互混用

D、设有指针变量为“double*p",则“p+1”将指针p移动8个字节

标准答案:D

知识点解析:在对指针进行加、减算术运算时,数字1表示1个存储单元的长度,

而double类型数据在内存中占8个字节,因此移动一次移动8个字节。其他三个

都不正确。

14,有以下函数intfun(char*x,char*Y){intn=O:while((*x=*Y)&&

*x!=,\0,){x++;y++;n++;)retumn;)函数的功能是

A、查找x和y所指字符串中是否有'O'

B、统计x和Y所指字符串中最前面连续相同的字符个数

C、将y所指字符串赋给x所指存储空间

D、统计x和y所指字符串中相同的字符个数

标准答案:B

知识点解析:在while循环中的判断表达式为(*x二*y)&&*x!=\(r,所以只要字符

串x与y的当前字符不相等时,循环就结束。

15、以下叙述中错误的是

A、可以用typedef将已存在的类型用一个新的名字来代表

B、可以通日typedef增加新的类型

C、用typedef定义新的类型名后,原有类型名仍有效

D、用typedef可以为各种类型起别名,但不能为变量起别名

标准答案:B

知识点解析•:C语言允许用typedef说明一种新类型名。typedef类型名标识符:其

中“类型名,,必须是在此语句之前已定义的类型标识符;“标识符,,是一个用户定义标

识符,用作新的类型名:typedef语句的作用仅仅是用“标识符”来代表已存在的“类

型名“,并未产生新的数据类型,原有类型名依然有效。

16、若变量己正确定义,在if(W)prim^r%d\n”,k);中,以下不可替代W的是

A、ch=getchar()

a==b+c

C、a<>b+c

D^a++

标准答案:C

知识点解析:在if()语句的括号是一个合法的C语言表达式即可,如果表达式的值

为0,则不执行if语句,否则执行if语句,而在选项C)中,符号<>不是C语言

的合法运算符,如果要表达a大于或小于b+c可用a!=b+c或(a>b+c)||(aVb+c)来表

达,而不能使用a〈>b+c。所以它不是一个合法的C语言表达式。

17、以下与函数fseek(fp,OL,SEEK_SET)有相同作用的是

A、teot(tp)

B、ftell(fp)

C、fgetc(fp)

D、rewind(fp)

标准答案:D

知识点解析•:本题主要考查文件系10函数的使用,fseek函数用于设置文件指针的

位置,feof函数用于判断是否已经到了文件结束,他11函数返回文件指针的当前位

置,fgetc从文件读取一个字符,rewind函数将文件指针重新指向文件开始。题目

当中fseek(fp,OL,SEEK_SET)表示把文件指针移动到文件的开始位置0,和

rewind函数功能一致。

18、若已建立以下链表结构,指针P、S分别指向如图所示结点

daunext&匕nextdaunext

则不能将S所指节点插入到链表末尾

的语句组是

A、s->next=,\p=p->next;p->next=s;

p=p->next;s->next=p->next=s;

C,p=p->ncxt;s->next=p->next;P->next=s;

D、p=(*p).next;(*S).next=(*p).next;(*p).next=s;

标准答案:B

知识点解析:选项A)中首先p后移,s的后继指针指向p,p的后继指向s,在s和

最后结点之间形成了圆圈,无法完成题中的操作。

19、以下叙述中错误的是

A、gets函数用于从终端读入字符串

B、getchar函数用于从磁盘文件读入字符

C、fputs函数用于把字符串输出到文件

D、fwrite函数用于以二进制形式输出数据到文件

标准答案:B

知识点解析:本题考查的是输入输出函数的使用,gets和getchar函数用于从标准

输入设备终端读入字符串和字符,并非从磁盘文件读入,fputs用于把字符串输出

到文件,fwrile用于以二进制形式输出数据到文件。

20、以下.叙述中正确的是

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

三种循环for,while,do-while可以互相嵌套

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

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

标准答案:B

知识点解析:A选项中,循环发生嵌套时,没有规定层数;C选项中,循环嵌套

时,书写代码时没有要求必须缩进;D选项中,for语句的圆括号中的表达式都可

以省略掉。因此B选项正确。

21、程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、p、q均

己正确定义,并用于指向链表结点,指针变量s总是作为头指针指向链表的第一个

bCNULL

结点。若有以下

程序段:q=s;s=s—>next;p=s;while(p—>next)p=p—>next;p—>next=q;

q->next=NULL;该程序段实现的功能是

A、尾结点成为首结点

首结点成为尾结点

C、胴除首结点

D、删除尾结点

标准答案:B

知识点解析:分析程序可知,程序段首先让q指向链表的首结点,s指向链表的第

二结点,p此时指向链表的第二个结点。然后在while循环中,当p的后继结点非

空时,让p指向链表的最后一个结点,退出循环。然后让尾结点指向首结点,并使

首结点的后继结点为NULLo所以最终实现链表的首结点成为尾结点。

22、有以下程序#inckide<stdio.h>#defineSUB(a)(a)-(a)main(){int

a=2,b=3.c=5.d:d=SUB(a+b)*c:printf(',%d\n".d):)程序运行后的输出结果是

A、-12

B、0

C、10

D、-20

标准答案:D

知识点解析♦:本题主要考查的是宏替换,在程序中执行d=sub(a+b)*c这条语句

时,首先要进行宏替换,依据宏SUB(a)的定义可知,上面这条语句替换为

d=(a+b)-(a+b)*c,因为乘法的优先级比减法的优先级高,所以先进行乘法运算,即

d=5-5*5=-20o

23、有以下程序:#include<stdio.h>voidfun(char*c){while(*c){if(*c>

=,a,&&*c<=,z,)*c=*c-(,a'-,A,);c++;}}voidmain(){chars[81];

gets(s);fun(s);puts(s);)当执行程序时从键盘上输入HelloBeijingV回车>,则程序

的输出结果是

A、HELLOBEIJING

HelloBeijing

C、helloBeijing

D、hELLOBeijing

标准答案:A

知识点解析:子函数fun的功能是把小写字母转换成大写字母,所以程序的输出结

果为选项A。

24、若有定义typedefintT[10];Ta[20];则与上述定义完全等价的说明语句是

()O

A、inta[20][10];

B、inta[20];

C、inta[10J;

Dsinta[IO][2O|;

标准答案:A

知识点解析:typedef为类型定义符,作用是用“新类型名“代替“原类型名”,即为现

有类型定义容易记忆的类型名。typedef能够隐藏复合类型,比如指针和数组,定

义语句“typedefintT[10];”表明类型T就代表了具有10个元素的整型数组,所以语

句“Ta[20];”则表示定义了具有20个元素并且每个元素都为一个有10个元素的一维

数组,所以答案选A。

25、下列关于C语言文件的叙述中正确的是

A、文件由一系列数据依次排列组成,只能构成二进制文件

B、文件由结构序列组成,可以构成二进制文件或文本文件

C、文件由数据序列组成,可以构成二进制文件或文本文件

D、文件由字符序列组成,其类型只能是文本文件

标准答案:C

知识点解析:本题考查文件的概念,文件是由数据序列组成,可以构成二进制文件

或文本文件,所以答案为C选项。

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

卷第2套

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

1、以下四个程序中,完全正确的是

A、#includemain();main(){/*/Programming/*/printf("programming!\nw);)

B、#include{/*programming*/printf("programming!\n");)

C、#includemain()main(){/*/*programming*/*/prinlf("programming!\n");}

D^include{/*programming*/printCprogramming!\n");}

标准答案:B

知识点解析:在选项A中,main()函数后而的分号是错误的,C语言在函数名后而

不能有分号。在C语言中注释内容必须放住"/*和“*/”之间,“/*”和“*/”必须

成对出现,按语法规定在注释之间不可以再嵌套"/*和“*/"。在选项C的程序段

中注释语句之间有嵌套:所以选项C不正确。C语言用include命令行米实现文件

包含的功能。#include命令行的形式为:/include“文件名”,所以在选项D中

include前面少了一个#符号,因而选项D不正确。

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

A、存储空间连续的数据结构一定是线性结构

B、存储空间不连续的数据结构一定是非线性结构

C、没有根结点的非空数据结构一定是线性结构

D、具有两个根结点的数据结构一定是非线性结构

标准答案:D

知识点解析:判断一个非空的数据结构是否为线性结构必须满足以下两个条件:

①有且只有一个根结点;②每一个结点最多有一个前件,也最多有一个后件。根

据这两个条件,可知选预A)、B)和C)都不能判定是否是线性结构,选项D)

正确,答案选D)。

3、以下程序段的输出结果是()。char*s=n\\141\141\abc\t":pirntf("%d\

n",strlen(s));

A、8

B、9

C>10

D、11

标准答案:R

知识点解析:本程序实际上是计算字符串\\141\141\abc\t的长度,里面包括

三个转义字符:“\\",各占一个字节,再加上其余的6个字节,

共计长度为9个字节。

4、软件按功能可以分为应用软件、系统软件和支撵软件(或工具软件)。下面属于

应用软件的是

A、学生成绩管理系统

B、C语言编译程序

C、UNIX操作系统

D、数据库管理系统

标准答案:A

知识点解析:学生成绩管理系统为应用软件。

5、软件生命周期中的活动不包括()。

A、市场调研

B、需求分析

C、软件测试

D、软件维护

标准答案:A

知识点解析:软件生命周期可以分为软件定义、软件开发与软件运行维护三个阶

段。主要活动阶段是:可行性研究与计划阶段,需求分析,软件设计,软件实现,

软件测试,运行和维护,所以选择A。

6、软件需求规格说明书的作用不包括

A、软件验收的依据

B、用户与开发人员对软件要做什么的共同理解

C、软件设计的依据

D、软件可行性研究的依据

标准答案:D

知识点解析:软件规格说明书主要有三个作用:①用户和软件开发人员之间的合

同;②开发人员进行设计和编程的依据;③软件工程项目验收的依据。

7、下面的程序在编译时产生错误,其出错原因是()“includemain(){intl_case;

floatprintF;printf(”请输入2个数:");scanf(H%d%f',&l_case,&printF);

printf("%d%f\n",Lease,printF);}

A、定义语句出错,lease不能作为变量名

B、定义语句出错,printF不能用作用户自定义标识符

C、定义语句无错,scanf不能作为输入函数使用

D^定义语句无错,primf不能输出Lease的值

标准答案:A

知识点解析:C语言变量名可由数字,字母,下划线构成,但首字符不能为数字。

8、有以下程序段:#includeintj;floaty;charnaine[50];seanf("%2d%f%s",

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

为()。

A、566.0

B、55566.0

C、7777.0

D、566777.0

标准答案:A

知识点解析:它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定

的变量之中。其中的格式命令可以说明最大域宽。在百分号(%)与格式码之间的整

数用于限制从对应域读人的最大字符数。所以j的值为55,y的值为566.0,字符

数组name为7777abc。

9、以下程序段完全正确的是

A>intk,*p=&k;scanf(,,%d,\p);

,,,,

int*p;scanf(%dJp);

C>int*p:scanf(,,%d,,i&p);

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

标准答案:A

知识点解析:选项B没有对指针进行初始化,无效指针。选项C错在没有对指针

进行初始化,无效指针,并且在scanf("%d”,&p)中无需再进行取地址操作。选项

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

1。、把以下四个表达式用作计语句的控制表达式时,有一个选项与其他三个选项

含义不同,这个选项是

A、k%2

B、k%2==l

C、(k%2)!=0

D、!k%2==l

标准答案:D

知识点解析:本题考查if语句和if语句构成的选择。选项A表示k除以2的余

数,如果余数为1则if成立,否则不能成立,即if判断k是否为奇数;选项B是

判断k除以2的余数是否等于1,函数和选项A相同;选项C表示k除以2的余数

不为0,和选项A一致;选项D中,!运算符优先级高于%预算符,先计算!k,然

后再取余数,并判断余数是否等于1。

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

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

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

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

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

标准答案:A

知识点解析:C语言中main函数的位置可以任意,而且不管main函数放在哪里,

程序的执行总是从main函数开始,并在main函数结束,答案选A。

12、数据库管理系统是()。

A、操作系统的一部分

B、在操作系统支持下的系统软件

C、一种编译系统

D、一种操作系统

标准答案:B

知识点解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中

数据组织、数据操纵、数据维护、控制及保护和数据服务等。是一种在操作系统之

上的系统软件。

13、有以下程序main(){inti=5;do{if(i%3=l)if(i%5==2){printf(”*%d”,i);

break:)i++:)while(i!=0);printf("\n”);)程序的运行结臬是

A、*3*5

B、*5

C、*7

D、*2*6

标准答案:C

知识点解析:由于循环变量i的初值等于5,所以第一、二次进入do…while循环

语句时,条件语句if(i%3=l),if(i%5=2){printf("*%d”,i);break;}不执行,只

执行i++语句。当i=7时,满足条件语句if(i%3=l),if(i%5==2){primf(”*%d”,

i);break:},所以输出*7,结束循环。

14、有以下程序#includcdoublef(doublex);main(){doublea=0;inti;for(i=0;i<

30;i+=10)a+=f((double)i);printf("%3.0f\n",a);)doublef(doublex)(return

x*x+l;}程序运行后的输出结果是

A、500

B、401

C、503

D^1404

标准答案:C

知识点解析:本题重点考察函数的定义和调用,第一次循环,a=0,仁0;返回值

a=0*0+l=l;第二次循环,a=Li=10;返回值a=10*10+l+l=102;第三次循环,

a=102,i=20;返回值a=20*20+l+102=503;第四次循环,a=503,i=30;不符合

i<30,跳出循环,最后结果输出a=503。

15、以下不合法的字符常量是()。

A、'\018'

B、

C、Z

D、,\xcc,

标准答案:A

知识点解析:\dckT表示卜3位八进制数代表的字符,不能出现8,所以选项A)错

误;、表示双引号符,选项B)正确;’N表示反斜线符选项C)正确;Zee,

表示由两位十六进制数cc所代表的字符,选项D)正确,所以答案选A)。

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

A、int*p;scanf(,'%d',»&p);

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

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

Dsintk,*p;*p=&k;scanf("%d",p);

标准答案:C

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

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

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

p=&koC选项正确。

17、若有定义:doublea=22;inti=0,k=18;则不符合C语言规定的赋值语句

A、i=(a+k)V=(i+k);

B、a=a++,i++;

C、i=a%ll;

D、i=!a;

标准答案:C

知识点解析:在C语言中,求余运算符的运算对象只能是整型,在题目中,变量a

是一个双精型实型变量。

18、以下选项中,不能作为合法常量的是

A、1.234c04

B、1.234e0.4

C、1.234e+4

D、1.234c0

标准答案:B

知识点解析:本题考查C语言中的常量,C语言中字母e或E之前必须有数字,且

e或E后面的指数必须为整数。选项B中字母。后面是浮点数,错误,其他选项都

是正确的常量。

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

A、_1

B、AaBc

C、a_b

D、a-b

标准答案:D

知识点解析:本题考查用户标识符,C语言中,用户标识符只能由字母、下划线和

数组组成,旦必须以字母或者下划线开始。选项A、B)和C)都是正确的,选项D

中的case是C语言关键字,不能作为用户标识符,是错误的。

20、下面选项中关于编译预处理的叙述正确的是

A、凡是以#号开头的行,都被称为编译预处理命令行

B、预处理命令行必须使用分号结尾

C、预处理命令行不能出现在程序的最后一行

D、预处理命令行的作用域是到最近的函数结束处

标准答案:A

知识点解析:在C语言中,凡是以“#”号开头的行,都称为编译预处理命令行。这

些预处理命令组成的预处理命令行必须在一行的开头以飞”号歼始,每行的末尾不

能用”号结束,以区别于C语句、定义和说明语句。根据需要,命令行可以出

现在程序的任何一行的开始部位,其作用一直持续到源义件的末尾。

21、以下叙述中正确的是

A、在包含文件中,不得再包含其他文件

B、include命令行不能出现在程序文件的中间

C、在一个程序中,允许使用任意数量的include命令行

D、虽然包含文件被修改了,包含该文件的源程序也可以不重新进行编译和连接

标准答案:C

知识点解析:include文件包含命令,使用时应注意以下5个规则:①包含文件

的#加11^命令行通常应书写在所用源程序文件的开头,故有时也把包含文件称作

“头文件头文件名可以由用户指定,其后缀不一定用“.h”。②包含文件中,

般包含有一些公用的。#define命令行、外部说明或对(库)函数的原型说明。⑧当

包含文件修改后,对包含该文件的源程序必须重新进行编译连接。④在一个程序

中,允许有任意多j#include命令行。⑤在包含文件中还可以包含其他文件。

22,有以下程序main(){intx=l,y=0;if(!x)y++;elseif(x==O)if(x)y+=2:else

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

A、2

B、0

C、1

D、3

标准答案:B

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

23、fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。在下划

线处应填写的是#include#defineN5Voidfun(intx[N]){intm;for(m=N—1;m>

=0;m一一)scanf("%cT,—);}

A、x+m

B、x[m+1]

C、x+(m++)

D、x[++m]

标准答案:A

知识点解析:本题考查数组和scanf函数的使用。程序通过for循环来给数组元素

赋值,赋值语句通过调用scanf函数来实现。scanf函数从键盘接收数据,函数的第

二个参数是数据保存的地址,因此选项B和选项D不是地址,错误。选项A和选

项C是地址,但是选项C的m值会++自增,然后for循环里面又m一自减,会

导致死循环,不满足要求,选项A正确。

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

printf("a=%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。boc,并且其初始值分别等

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

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

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

语句输出变量a,b,cP勺当前值,分别为10,50,10o

25、设有以卜代码do{while(条件表达式I)循环体A;)while(条件表达式2);

while(条件表达式1){do{循环体B;}while(条件表达式2);}其中,循环体A与

循环体B相同,以下叙述正确的是()。

A、循环体A与循环体B的执行次数相同

B、循环体A比循环体B的执行次数多一次

C、循环体A比循环体B的执行次数少一次

D、循环体A与循环体B的执行次数不确定

标准答案:A

知识点解析:考查do-wh仇和while循环语句的执行过程。若条件表达式1的值为

假,则循环体A和B均一次都不执行;若只有条件表达式2的值为假,则循环体

A和B均执行一次;若条件表达式1、2的值均为真,则循环体A和B会一直执行

直到其中一个条件表达式的值为假,这之前两个循环体执行的次数也是相同的;由

此答案选A。

26、有以下程序:#inclnde<stdio.h>inth=2:intfun(int*k){h=*k+h:

retum(b);)main(){inta[10]={1,2>3,4,5,6,7,8},i;for(i=2;i<4;

i++){b=fun(&a[i])+b;printf(%d.t,b);)printff'W'');}程序运行后的输出结果

A、810

B、1028

C、1012

D、1016

标准答案:B

知识点解析:i=2时,fim(&a⑵)返回值是b_b+a"L2+3=5bb+b:5+5=10;i=3

时,fun(&a[3])返回值是b_b+a⑶=10+4=14,b=b+b=14+14=28<)

27、设有如下的说明和定义struct{inta;charts;}x,*p=&x:x.a=4;

x.s="hello";则以下叙述中正确的是

A、语句++p->a;的效果是使p增1

B、(p++)->a与p++,a都是合语法的表达式,但二者不等价

C^语句*p->s++;等价于(*p)->s++;

D、语句++p->a;的效果是使成员a增1

标准答案:D

知识点解析:p->a得到p指向的结构体变量中的成员a的值。p->a++得至p指向的

结构体变量中的成员a的值,用完该值后使p->a加1。++p->a得剑p指向的结构

体变量中的成员a的值使之加1(先加)。由此可见指向运算符,优先级高于++,因

此*p->s++相当于*(p->s〕++,结介性自右至左,因此p++->a和(p++)->a等价。

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

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

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

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

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

标准答案:D

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

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

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

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

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

29、有三个关系R、S和T如下:口则由关系R和S得到关系T的操作是

A、自然连接

B、交

C、投影

D、并

标准答案:A

知识点解析:关系R和关系S有公共域,关系T是通过公共域的等值进行连接的

结果,符合自然连接,选A。

30、以下叙述中正确的是

A、在scanf函数中的格式控制字符串是为了输入数据用的,不会输出到屏幕上

B、在使用scanf函数输入整数或实数时,输入数据之间只能用空格来分隔

C、在prinlf函数中,各个输出项只能是变量

D、使用printf函数无法输出百分号%

标准答案:A

知识点解析:seanf函数中的格式控制字符串是为了输入数据用的,无论其中有什

么字符,也不会输出到屏幕上,因此若想在屏幕上输出提示信息,应该首先使用

printf函数输出,选项A)正确;在使用scanf函数输入整数或实数时,输入数据之

间可以用空格、跳格、回车来分隔,选项B)错误;printf输出项不但可以为变量,

还可以表达式或者常量,选项C)错误;如果要输出“%”,可以在格式控制中用

“%%”表示,将输出一个“%”,选项D)错误。

31、if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是

A、必须是整数值

B、必须是正数

C、可以是任意合法的数值

D、必须是逻辑值

标准答案:C

知识点解析:在计语句中,表达式可以是任意合法的数值。当其值为非零时,执

行if语句,为0时执行else语句。

32、若有定义语句:char*sl="OK”,*句="ok”;以下选项中,能够输出“OK”的语句

是()。

if(strcmp(sl,s2)!=0)puts(sl);

if(strcmp(sl,s2)!=0)puts(s2);

C、if(strcmp(s1,s2)==1)puts(sI);

D、if(strcmp(s1,s2)==0)puts(s1);

标准答案:A

知识点解析:字符串比较函数strcmp(字符串1,字符串2)得返回值为若字符串1与

字符串2相同则返回0,若字符串I小于字符串2则返回负整数,若字符串1大于

字符串2则返回正整数。要输出字符指针si指向的字符串,则需保证条件判定语

句为真,调用语句puts(sl)输出即可,易知答案选A。

33、在数据管理技术发展的三个阶段中,数据共享最好的是()。

A、人工管理阶段

B、文件系统阶段

C、数据库系统阶段

D、三个阶段相同

标准答案:C

知识点解析:数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段

和数据库系统阶段。其中最后一个阶段结构简单,使用方便逻辑性强物理性少,在

各方面的表现都最好,一直占据数据库领域的主导地位,所以选择C)。

34、设已有定义:float9则以下对指针变量p进行定义且赋初值的语句中正确的

A、int*p=(float)x;

B、float*p=&x;

C^floatp=&x;

D、float*p=1024;

标准答案:B

知识点解析:定义指针变量的一般形式为:类型名*指针变量名1,*指针变量名

2,……;对一个指针变量赋值要通过求地址运算符(&)获得变量的地址值,然后把

此地址值赋给指针变量。因而在选项A)的表达式中。赋值号的左边表示定义了指

针变量口,而右边表示求变量x的地址值。

35、以下关于指针的叙述正确是()。

A、所有类型的指针变量所占内存的大小是一样的

B、指针变量所占内存的大小与其类型有关,char型指针变量只占1个字节,

double型指针变量占8个字节

C、指针变量可直接指向任何类型的变量,而不会出现编译或运行错误

D、指针变量既可以直接指向结构体,也可直接指向结构体中某个成员,而不会出

现编译或运行错误

标准答案:A

知识点解析:不管什么类型的指针变量,存储的都是被指向变量的地址,即是该变

量在内存中的一个存储单元编号,所以所有的指针变量占用的内存大小是相同的,

答案选A。

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

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

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

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

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

标准答案:D

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

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

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

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

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

37、下列关于栈的叙述中,正确的是

A、栈底元素一定是最后入栈的元素

B、栈顶元素一定是最先入栈的元素

C、栈操作遵循先进后出的原则

D、以上说法均错误

标准答案:C

知识点解析:栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元

素总是最先被插入的元素,从而也是最后才能被删除的元素。栈的修改是按后进先

出的原则进行的。因此,栈称为先进后出表,或“后进先出”表,所以选择C。

38、已知大写字母A的ASCH码是65,小写字母a的ASCII码是97。以下不能将

变量c中的大写字母转换为对应小写字母的语句是

A、c=('A'+c)%26-'a,

B>c=c+32

C、c=c-'A'+'a'

D、c=(c-'A')%26+'a'

标准答案:A

知识点解析:根据题意可知,小写字母比与之对应的大写字母的ASCII码大32cA

选项中字符A加上c表示的大写字符再对字母个数26取余,本身这个表达式没有任

何含义所以选择A选项。

39、在关系数据库中,用来表示实体间联系的是

A、属性

B、二维表

C、网状结构

D、树状结构

标准答案:B

知识点解析:关系模型实体间的联系采用二维表来表示,简称表。选项C为网状

模型实体间的联系,选顷D为层次模型实体间的联系,选项A属性刻画了实体。

40、软件设计中模块划分应遵循的准则是()。

A、低内聚低耦合

B、高内聚低耦合

C、低内聚高耦合

D、高内聚高耦合

标准答案:B

知识点解析:软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适

当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合

理.,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块

之间的耦合应尽可能的低,模块的内聚度应尽可能的高。

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

卷第3套

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

1、以下叙述中正确的是

A、每个后缀为.c的C语言源程序都应该包含一个main函数

B、在C语言程序中,main函数必须放在其他函数的最前面

C、每个后缀为.c的C语言源程序都可以单独进行编译

D、在C语言程序中,只有main函数才可单独进行编译

标准答案:C

知识点解析:每一个C语言的文件或函数都可以单独编译,但只有main函数的才

可以执行。

2、下列叙述中正确的是

A、在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化

B、在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化

C、在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化

D、上述三种说法都不对

标准答案:C

知识点解析:在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另

一端称为栈底。栈跟队列不同,元素只能在栈顶压入或弹出,栈底指针不变,栈中

元素随栈顶指针的变化而动态变化,遵循后进先出的规则。

3、下面对软件特点描述正确的是()。

A、软件具有明显的制作过程

B、软件在使用中存在磨损、老化问题

C、软件复制不涉及知识产权

D、软件是一种逻辑实体,具有抽象性

标准答案:D

知识点解析:软件具有以下特点:软件是一种逻辑实体,而不是物理实体,具有抽

象性;软件的生产与硬件不同,它没有明显的制作过程;软件在运行、使用期间不

存在磨损、老化问题;软件的开发、运行对硬件和环境具有依赖性;软件复杂性

高,成本昂贵;软件开发涉及诸多的社会因素(包括软件知识产权及法律等问题)。

4、已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。以下不能将

变量c中的大写字母转换为对应小写字母的语句是

A、c=('A'+c)%26-H

B、c=C+32

C、c=C-'A+a'

D、c=(C-'A,)%26+'a,

标准答案:A

知识点解析:由题意可知,小写字符a和大写字符A的ASCH代码相差为32,所

以选项C能将大写字符C的ASCII代码转换为小写字符c的ASCH代码;选项D

和C)左侧的表达式都是大写字符C与大写字符A的差与匕,的ASCII代码的和就是

小写字符c的ASCH代码。而选项A中应该是加上匕、而不是减去匕\

5、结构化程序设计中,下面对goto语句使用描述正确的是()。

A、禁止使用goto语句

B、使用got。语句程序效率高

C、应避免滥用goto语句

D、以上说法都不对

标准答案:c

知识点.析:结构化程序设计中,应尽量避免使用GOTO语句,但不是禁止使

用,所以选择C。

6、面向对象方法中,继承是指

A、一组对象所具有的相似性质

B、一个对象具有另一个对象的性质

C、各对象之间的共同性质

D、类之间共享属性和操作的机制

标准答案:D

知识点解析:面向对象方法中,继承是使用已有的类定义作为基础建立新类的定义

技术。广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它

们。

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

B、doubleint;

C、charFor;

D、floatUSS;

标准答案:D

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

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

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

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

8、某二叉树共有399个结点,其中有199个度为2的结点,则该二叉树中的叶子

结点数为

A、不存在这样的二叉树

B、200

C、198

D、199

标准答案:B

知识点解析:在二叉树中,设叶子结点个数为no,度为2的结点个数为n2,叶子

结点的个数计算方法n0=n2+1=199+1=200,所以选项B正确。

9、若a、b、c、d都是int型变量且都已经正确赋初值,则以下不正确的赋值语句

是()。

A、a+d:

B、a++:

C、a=b=c=d=100;

D^a=(b=3)+(d=5);

标准答案:A

知识点解析:C语言规定,赋值号的右边可以是一个赋值表达式,因此选项C、选

项D正确;在选项B中,a++是一个自加1的表达式,a被重新赋值,因此它是一

个合法的赋值表达式;选项A中,a+d是一个算术表达式,虽然最后有一个分号,

但这个表达式中没有赋值操作,因此它不是一条赋值语句。

10、若有以下程序段:inlr=8;printf("%d\n",r»l);输出结果是()。

A、16

B、8

C、4

D、2

标准答案:C

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

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

11、以下叙述中错误的是()。

A、gets函数用于从终端读入字符串

B、gctchar函数用于从磁盘文件读人字符

C、fpuls函数用于把字符串输出到文件

D、fwrite函数用于以二进制形式输出数据到文件

标准答案:B

知识点解析:本题考查字符处理函数和文件做操函数,属于基础知识。其中B选

项的getehar函数用于从终端读入字符。

12、在数据管理技术发展的三个阶段中,数据共享最好的是

A、人工管理阶段

B、文件系统阶段

C、数据库系统阶段

D、三个阶段相同

标准答案:C

知识点解析:数据管理技术的发展经历了三个阶段:人工管理阶段、文件系统阶段

和数据库系统阶段。人工管理阶段无共享,冗余度大;文件管理阶段共享性差,冗

余度大;数据库系统管理阶段共享性大,冗余度小。

13、若变量已正确定义,则语句s=32;sA=32;printf("%d",s);的输出结果是

()。

A、-1

B、0

C、1

D、32

标准答案:B

知识点解析:本题考查逻辑异或运算。异或运算只有在两个比较的位不同时其结果

为1,否则结果为0,题目中两个值相同,所以结果为0。

14、子函数的功能是通过键盘输入给x所指的整型数组所有元素赋值。在下划线处

应填写的是()。#include#defineN5voidfun(intx[N]){intm;for(m=N一1;m>

=0;m-----)scanf(''%d'',—);}

A、x+m

B、x[++m]

C>x+(m++)

D、x[m+l]

标准答案:A

知识点解析:本题用f。「循环给数组赋值,与上题类似,选项B和选项D不是地

址,错误。选项A和选项C是地址,但是选项C的m值会++自增,然后for循环

里面又m一—自减,会导致死循环,不满足要求,选项A正确。

15、数据库DB、数据走系统DBS、数据库管理系统DBMS之间的关系是

A、DB包含DBS和DBMS

B、DBMS包含DB和DBS

C、DBS包含DB和DBMS

D、没有任何关系

标准答案:C

知识点解析:数据库系统(DauibascSystem简称DBS)由下列几个部分组成:数据库

(DB)、数据库管理系统(DBMS)、数据库管理员(人员)、系统平台之一—硬件平

台(硬件)、系统平台之二—软件平台(软件)。这五个部分构成了一个以数据座为

核心的完整的运行实体,称为数据库系统。其中:DB(DataBase)即数据库,是统一

管理的相关数据的集合:DBMS(DatabaseManagemenlSystem)即数据库管理系统,

是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB

的方法。

16、以下选项中不合法的标识符是

A、FOR

B、&a

C、print

D、_00

标准答案:B

知识点解析:合法的标设符要满足组成字符为a〜z以及A〜Z,数字字符0到9和

下划线,其中数字不开头,不能是关键字。选项B)中,&不属于组成字符,是错

误的。

17、下面不属于黑盒测试方法的是

A、边界值分析法

B、基本路径测试

C、等价类划分法

D、错误推测法

标准答案:B

知识点解析:常用的黑盒测试方法和技术有:等价类划分法、边界值分析法、错误

推测法和因果图等。白盒测试是把程序看成装在一只透明的白盒里,测试者完全了

解程序的结构和处理过程。它根据程序的内部逻辑来设计测试用例,检查程序中的

逻辑通路是否都按预定的要求正确地工作。白盒测试的主要技术有逻辑覆盖测试、

基本路径测试等,故选择B选项。

18、有以下程序intfun(intn){ifln=l)retuml;elseretum(n+fun(n-l));}main()

(intx;scanf(''%d'',&x);x=fun(x);printf(,,%d\n>\x);}执行程序时,给变量

x输入10,程序的输出结果是

A、54

B、65

C、45

D、55

标准答案:D

知识点解析:在C语言中函数可以递归调用,即直接或间接地自己调用自己。本

题在函数intfun(intn)的定义中又出现了对函数fun的调用,所以函数fun是递归函

数。因而在主函数中调用x=fun(x)时,当输入10赋给变量x时,递归调用的过程

为:

fun(l0)-10+fun(9)-10十9+fun(8)=10+9++8+fun(7)-10+9+十8十7+fun(6)—10十9十十8十7十6十

fun(6)=10+9++8+7+6+5-fun(4)=10+9++8+7+6+5+4+fun(3)=10+9++8+7+6+5+4+3+fu

n(2)=10+9++8+7+6+5+4+3+2+fun(l)=10+9++8+7+6+5+4+3+2+1=55

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

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

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

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

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

标准答案:C

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

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

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

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

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

20、学院的每名教师只能属于一个系,则实体系和实体教师间的联系是

A、一对多

B、多对多

C、多对

D、一对一

标准答案:A

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

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

以与第一个表中的一个行相关。本题中一个是体系有多个老师,但老师只能属于一

个系,因此是一对多关系。

21>已定义以下函数intfun(int*p){return*p;}fun函数返回值是

A、一个整数

B、不确定的值

C、形参p中存放的值

D、形参p的地址值

标准答案:A

知识点解析:返回值为由针变量指向的数据,该数据已被定义为整型。因此A选

项正确。

22、有以下程序:#include<stdio.h>#definePT3.5:#defineS(x)PT*x*x;

main(){inta=l»b=2;prinff("%4.lf\n",S(a+b));)程序的运行结果是()。

A、7.5

B、31.5

C、程序有错无输出结果

D、14.0

标准答案:C

知识点解析:宏定义不是C语句,末尾不需要有分号,语句printf(”%4.

s(a+b));展开后为primf("%4.lf\n",3.5;*a+b*a+b;);,所以程序会出现语

法错误。

23、23.以下程序的输出结果是()。main()|intm=l,n=2,*p=&m,*q=&n,*r;

r=p;p=q;q=r;printff'%d,%d,%d,%d\n'',m,n,*P,*q);)

A、2,1,2,1

B、1,2,2,1

C、1,2,1,2

D、2,1,1,2

标准答案:B

知识点解析:题目中在主函数定义了3个整数指针变量p,q,r,并且使p指向

m,q指向n,再执行“r=p;p=q;q=r;”这三条语句,使q指向m,p指向n,再输

出变量“m,n,*p,*q”时,它们值分别为1,2,2,1。

24、有以下程序#include#

温馨提示

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

评论

0/150

提交评论