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

付费下载

下载本文档

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

文档简介

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

(共9套)

(共478题)

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

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

70分。)

1、下列说法不正确的是()。

A、C程序是以函数为基本单位的,整个程序由函数组成

B、C语言程序的一条语句可以写在不同的行上

C、C程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写

D、C程序的每个语句都以分号结束

标准答案:C

知识点解析:本题涉及C语言基本的3个知识点:①C语言的源程序是由函数构

成的,函数是其基本单位,每一个函数完成相对独立的功能,其中只能包括一个主

函数;②C语言规定每个语句以分号结束,其书写格式是自由的,一条语句可以

写在不同的行上,或者一行也可以写多条语句;③注释行虽然对程序的运行不起

作用,但是它可以方便程序员阅读,提高程序的可读性和可移植性,所以书写注释

行还是很有必要的。

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

A、一个算法的空间复杂度大,则其时间复杂度也必定大

B、一个算法的空间复杂度大,则其时间复杂度必定小

C、一个算法的时间复杂度大,则其空间复杂度必定小

D、上述三种说法都不对

标准答案:D

知识点解析:算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。所渭

算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度一般是指

执行这个算法所需要的内存空间。算法的时间复杂度和空间复杂度没有直接关系。

3、下列叙述中,不属于软件需求规格说明书的作用的是

A、便于用户、开发人员进行理解和交流

B、反映出用户问题的结构,可以作为软件开发工作的基础和依据

C、作为确认测试和验收的依据

D、便于开发人员进行需求分析

标准答案:D

知识点解析:软件需求规格说明书(SRS,SoftwareRequirementSpecificalion)是需求

分析阶段的最后成果,是软件开发中的重要文档之一。它具有以下几个方面的作

用:①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软

件开发工作的基础和依据;③作为确认测试和验收的依据。

4、下面的叙述正确的是()。

A、程序设计就是编制程序

B、程序的测试必须由程序员自己去完成

C、程序经份试改错后江应进行再测试

D、程序经调试改错后不必进行再测试

标准答案:4

知识点解析:程序调试的任务是诊断和改正程序中的错误,改正以后还需要再测

试。

5、算法一般都可以用控制结构组合而成。

A、循环、分支、递归

B、顺序、循环、嵌套

C、循环、递归、选择

D、顺序、选择、循环

标准答案:8

知识点解析:算法的控制结构给出了算法的基本框架,不仅决定了算法中各操作的

执行顺序,也直接反映了算法的设计是否符合结构化原则C一个算法一般都可以用

顺序、选择、循环三种基本控制结构组合而成。

6、下列模式中,能够给出数据库物理存储结构与物理存取方法的是()。

A、内模式

B、外模式

C、概念模式

D、逻辑模式

标准答案:1

知识点解析:内模式能够给出数据库物理存储结构与物理存取方法;外模式是用户

的数据视图:概念模式是全体用户公共数据视图;没有逻辑模式。

7、在面向对象方法中,()描述的是具有相似属性与操作的一组对象。

A、属性

B、事件

C、方法

D、类

标准答案:8

知识点解析:类(class)描述的是具有相似属性与操作的一组对象,而一个具体对象

则是其对应类的一个实例。

8、在32位计算机中,一个字长所占的字节数为

A、1

B、2

C、4

D、8

标准答案:C

知识点解析:字长是指计算机能够同时处理的二进制数据的位数。

9、对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为

A、log2n

B、n/2

C、n

D、n+1

标准答案:C

知识点解析:顺序查找过程中,如果被查找的元素是线性表中的最后一个元素,或

者元素不在线性表中,贝需要与线性表中所有的元素进行比较。对长度为n的线性

表进行顺序查找,在最坏隋况下需要比较n次。

10、软件是指

A、程序

B、程序和文档

C、算法加数据结构

D、程序、数据与相关文档的完整集合

标准答案:D

知识点解析:本题考查软件的定义。软件是计算机系统中与硬件相互依存得另一部

分,它包括程序、相关数据及其说明文档得总和。因此,本题得正确答案是选项

Do

二、选择题(1分)(本题共〃题,每题,.0分,共〃

分。)

11、以下合法的十六进制数是

A、Ox

B、0x4dc

C、Oxlh

D、oX77

标准答案:B

知识点解析:暂无解析

12、以下是while语句的基本形式:while(表达式){语句;}其中“表达式”()。

A、必须是逻辑表达式

B、必须是关系表达式

C、必须是逻辑表达式或关系表达式

D、可以是任意合法的表达式

标准答案:B

知识点解析:由程序可知,函数fun(inta,intb)是一个递归函数。所以当主函数中

调用fun(4,2)时,其执行过程如F:砌(4,2)->fun(3,l)->fun(2,0),其返回值为

2o所以正确答案为选项B。

13、在学校中,“班级”与“学生”两个实体集之间的联系属于()关系。

A、一对一

B、一对多

C、多对一

D、多对多

标准答案:B

知识点解析:暂无解析

14、以下程序的运行结果是intk=0;voidfun(intm){m+=k;k+=m;printf("m=%d

k=%dn,m,k++);}main()(inti=4;fun(i++);printf("i=%dk=%d\nH,i,k);)

A、m=4k=5i=5k=5

B、m=4k=4i=5k=5

C、m=4k=4i=4k=5

D、m=4k=5i=4k=5

标准答案:B

知识点解析:由于在main。函数中,变量i=4,所以就调用fun(4),则输出“m=4k=4-0

然后变量k增1等于5,变量i增1等于5,所以main。函数的"printf(”i=%d

k二%d\n”,i,k);“语句输出“i=5k=5"

15、下列叙述中错误的是

A、一个C语言程序只能实现一种算法

B、C程序可以由多个程序文件组成

C、C程序可以由个或多个函数组成

D、一个C函数可以单独作为一个C程序文件存在

标准答案:A

知识点解析:一个C程序可以有一个或多个程序文件,也可以有一个或多个函数,所

以一个C语言程序可以实现多种算法。

16、以F叙述中错误的是

A、C语句必须以分号垢束

B、复合语句在语法上被看作一条语句

C、空语句出现在任何位也都不会影响程序运行

D、赋值表达式末尾加分号就构成赋值语句

标准答案:4

知识点解析:C语句必须以分号结束,选项A是正确的。复合语句在语法上被看

作一条语句,选项B也是正确的。空语句也算是一条语句,因此如果空语句出现

在条件或者循环语句中,一样会被当作条件子句或者循环体来看待,所以选项c是

错误的。赋值表达式末尾加分号就构成赋值语句,选项D正确。故本题应该选择

Co

17、表达式(double)(20/3)的值为()

A、6

B、6

C、2

D、3

标准答案:2

知识点解析:暂无解析

18、下列叙述中正确的是o

A、C语言编译时不检查语法

B、C语言的子程序有过程和函数两种

C、C语言的函数可以嵌套定义

D、C语言中,根据函数能否被其他源文件调用,被区分为内部函数和外部函数

标准答案:8

知识点解析:选项A的错误在于编译过程中是险杳语法的,若发现源程序有语法

错误,则系统会提示出错信息:选项R的错误在于C语言中.子程序的作用是由

函数来完成的,无过程的概念;选项C的错误在于函数不可以嵌套定义,但可以

嵌套调用。

19、下列关于C语言用户标识符的叙述中正确的是()。

A、用户标识符中可以出现下划线和中划线(减号)

B、用户标识符中不可以出现中划线,但可以出现下划线

C、用户标识符中可以出现下划线,但不可以放在用户标识符的开头

D、用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头

标准答案:2

知识点。扁:在C语言中,合法的标识符由字母、数字和下划线组成(故选项A不

正确),并且第一个字符必须为字母或者下划线(故选项C和选项D不正确)。故B

为所选。

20、若有以卜.程序段inim=0xabc,n=0xubc;m-=n;print「("%X\n",m);执行后输

出结果是

A、0X0

B、0x0

C、0

D、OXABC

标准答案:4

知识点解析:C语言中的自反赋值运算符。“m-=n”相当于"m=m-n”,两个相等的数

相减,其值为0。

21、若变量a,b已正确定义,且b已正确赋值,则合法的语句是()。

A、b=double(b);

B、++b;

C、a=a++=5;

D^a=double(b);

标准答案:2

知识点解析:要解答此题只要知道两个知识点:①在C语言中规定进行强制类型

转换的格式是:(double]变量名;②在C语言中不允许给表达式赋值。

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

分。)

22、有以下程序#include<stdio.h>voidfun(char*t,char*s){while(*t!=0)t++;

while((九++=*s++)!=0);}main(){charss[10]="acc"',aa[10]="bbxxyyH;fun(ss,aa);

printf("%s,%s\n",ss,aa);}程序的运行结果是

A、accxyy,bbxxyy

Bxacc,bbxxyy

C、accxxyy,bbxxyy

D、accbbxxyy,bbxxyy

标准答案:D

知识点解析:本题中fun函数实现了字符串函数stmat的功能,将字符串aa连接到

字符串ss的末尾。调用fun函数时,形参t和s分别指向了字符串ss和aa,然后通

过一个while循环使t指向字符串ss的结束符的位置,第二个while循环将字符串

aa中的字符(包括结束符“\0”)逐个复制到字符串ss的末尾处。

23、下列二维数组的说明中,不正确的是()。

A、floata[][4]={0,1,8,5,9);

B、inta[3]|4];

C>)#defineN5floata[N][3];

D、inta[2][9.5];

标准答案:D

知识点解析:C语言规定,对于二维数组,只可以省略第一个方括号中的常量表达

式,而不能省略第二个方括号中的常量表达式;二维数组的一般定义格式是:类型

说明符数组名[常量表达式n常量表达式)。

24、下列标识符不是关键字的是()。

A、break

char

C、Switch

D、return

标准答案:C

知识点解析:break、char、returnsswitch都是C语言中的关键字,Switch不是。

因为C语言区分字母的大小写。

25、下列程序的输出结果是()。#includc<stdio.h>main(){iuta=2,b=3,p;p=

f(a,b);printf(',%dM,p);}intf(a,b){intc;if(a>b)c=1;e1Seif(a==b)c=0;else(3=-l;

return(c);)

A、-1

B、0

C、1

D、2

标准答案:A

知识点解析:本题考查ifelse语句。在inlf(a,B)中:第一个if语句,先判断条件,

发现a>b条件不成立,则执行与其配对的else语句:第二个if语句,先判断条

件,发现a==b条件不成立,则执行与其配对的else语句,c=・l。

26、以下能正确定义一维数组的选项是_____。

A、inta[5]=(0,1,2,3,4,5);

B、chara[]={0,1,23,4,5);

C、chara={'A\B,C'};

D、inta[5]="OI23";

标准答案:B

知识点解析:暂无解析

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

能正确执行的语句是()c

A、k=*ql+*q2;

ql=k;

C、ql-q2;

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

标准答案:2

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

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

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

28、下面的程序段运行后,输出结果是inti,j,x=0;staticinta[8][8];for(i=0;i<3;i++)

fbr(j=0;j<3u++)a[i][j]=2*i+j;fbr(i=0;i<8;i++)x+=a|i]|j];printf("%dn,x);

A、9

B、不确定值

C、0

D、18

标准答案:C

知识点解析:本题主要考查的是用二维数组首地址和下标来引用二维数组元素的方

法。通过分析可知,程序中的双重循环定义了一个如下的二维数组:012234456

由于数组的下标是从0开始的,所以二维数组元素表示的是二维数组a的第

i+1行、第j+1列对应位置的元素。

29、若有说明:血&口[3]={0,0}:则不.正确的叙述是()。

A、数组a的每个元素的初值都是0

R、数组a的第一维大小为I

C、数组a的行数为1

D、只有元素a[0]⑼和可得到初值0,其余元素均得不到初值0

标准答案:8

知识点解析:本题考查给二维数组元素赋值。给二维数组元素赋值时应注意下列两

点:①在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素

自动取0。②二维数组第一维的大小由下列规则确定;当初值的个数能被第二维的

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

的常量表达式的值除尽时,第一维的大小等于所得商数加1。

30有以下程序:fun(inta,intb){if(a>b)return(a);elsereturn(b);}main(){int

x=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf("%d\n",r);}程序运行后的输出结果是

A、3

B、6

C、8

D、12

标准答案:8

知识点解析:本题考核的知识点是函数的返回值作为函数参数的应用。主函数中首

先定义了4个整型变量x、y、z和r,并分别给x、y、z赋初值为3、8、6,接着

调用一个fun()函数,并将返回值赋给变量底其中将fun(x,y)函数的返回值和2*z

作为fun()函数的两个参数。在内层fun(x,y)函数中,将x的宿和y的值传给形参a

和b,此时a和b的值分别为3和8,执行if语句,由于i「后面判断条件表达式“a

>b”为假,所以执行else后面的语句,返回值为8。此时,外层fun(x,y)函数两个

参数为8和2*z=12,所以r的赋值语句相当于r=fun(8,12),同上分析可知fun(8,12)

返回值为12,因此最后r的值为12。所以,4个选项中选项D符合题意。

31、以下程序(程序左边的数字为附加的行号)ol#include<str.h>2#include

<stdio.h>3main()4{chars[尸'string";5puts(s);6strcpy(s,"hello");

7printf(M%3s\nH,s);)

A、没有错

B、第1行有错

C、第6行有错

D、第7行有错

标准答案:2

知识点解析:字符串复制函数strcpy包含在头文件string.h中,因此,程序中的第

1行文件包含命令是错误的。

32、在下列叙述中,正确的一条是o

A、对while循环、do...while循环和for循环,可以用continue语句跳出循环

B、表达式1+2VV3和sizeof(3.8)的结果分别为24和8

C、函数fputc(c,stdout)与putchax(c)的结果相同

D、在有参函数中,定义函数中指定的形参变量在整个程序一开始执行时便分配内

存单元

标准答案:4

知识点解析:暂无解析

33、当a=l、b=3、c=5、d=4时,执行下面一段程序:if(a<B)if(c<D)x=l;

elseif(a<C)if(b<D)x=2;elsex=3;elesx=6;elsex=7;程序执行后,x的

值为()

A、1

B、2

C、3

D、6

标准答案:2

知识点解析:暂无解析

34以下程序输出正确的是oamovep(int*p,int(*A)[3],intn)(inti,j;for(i=0;i

<n;i++)for(j=Oy<nj++){*p=a[i][j];p++}}main(){int*p,a[3][3]={{1,3,5),

{2,4,6}};p=(int*)malloc(100);amovep(p,a,3);

printf("%d%d\n",p[2],p[5]);free(p);}

A、56

B、25

C>34

D、程序错误

标准答案:1

知识点解析:本题main函数中定义了指针p和二维数组a,通过函数amov叩将数

组的值存入指针p所指向的存储单元中,a的各元素分别为:a[0][0]=l,

a[0][l]=3,a[0][2]=5,a[l][0]=2,a[l][l]=4,a[l][2]=6,a[2][0]=0,a[2][l]=0o通过

malloc。函数给指针分配内存空间,free。函数用于释放指针变量所用内存空间.在

主函数中通过amovep(p,a,3)调用函数amovep,使得实参p与形参p,实参数组a

与形参中指向数组的指针变量共用同一存储空间。最后输出p[2],p[5]为56。

35、若fp是指向某文件的指针,且已读到文件末尾,则函数feof(fp)的返回值是

()。

A、EOF

B、-1

C、1

D、NULL

标准答案:4

知识点解析:feof函数用来判断文件是否结束,如果遇到文件结束,函数feof(fp)

的值为1,否则为0。

36、函数函n的返回值是()。fun(char*a,char*b)intnum=0,n=0;

while(*(a+num))!='\O')numH;while(b[n]){*(a+num)=b[n];num++;n++;)rerurn

num;)

A、字符串a的长度

B、字符串b的长度

C>字符串a和b的长度之差

D、字符串a和b的长度之和

标准答案:8

知识点解析:因为'\0'是字符串结束标记,而fun函数中的第一个while循环从字符

串a的第一个字符开始,直到碰到、(T时结束循环,所以其作用就是将字符串a的

长度记录到变量num中°而第二个while循环从开始.将字符串b中的字符依

次复制到字符串a的结尾处,直到b[n]为假,即b[n]为字符串结束标志、(T时,所

以最后返回的num保存了字符串a和b的长度之和。故应该选择D。

37、下列不合法的main函数命令行参数的表示形式是。

A、main(inta.char*c[J);

B、main(ac,av)intarc;char**av;

C^main(c,v)intc;char*v[];

D、main(argc,argv)intargc;charargv||;

标准答案:8

知识点解析:main函数的参数通常有两个,前者为整型,后者为字符型指针数

组。参数的名字可以是任意合法的标识符。而且,形如**@丫与*@\以等价,所以选

项A、B、C均正确,选项D是错误的。

38、已知字母A的ASCH码为十进制数65,下面程序的输出结果是()main()

{charch1,ch2;chi=A+5-3;ch2=A+6-3;

printf("%d,%c\n",chi,ch2);}

A、67,D

B、B,C

C、C,D

D、不正确定的值

标准答案:1

知识点解析:暂无解析

39、F列程序的输出结果是()。#include<stdio.h>intb=2;intfunc(int*a)

{b+=*a;returnb;)main(i{inta=l,t=2;t+=func(&a);printf("%d\n",t);)

A、4

B、5

C、6

D、8

标准答案:2

知识点解析:本题考查函数调用时的参数传递。在执行函数func时,由于全局定

义了一个变量b,所以在函数体中执行时b=2+l=3,最终t=2+3=5。

40设有下列的程序段:charstr[]="HelloWorldn;char*ptr;ptr=str;执行上面的

程序段后,*(ptr+10)的值为()。

A、’\0,

B、'0'

C、不确定的值

D、U的地址

标准答案:1

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

在存放字符串时会自动在末尾加上‘\0',所以题中数组str有11个元素;②ptr指向

数组sir的首地址,ptr+10是指向sb[10],*(ptr+10)是引用str[10]的值。

41、若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段

A、for(i=l,p=l;i<=5;i++)p*=i;

B、fbr(i=l;i<=5;i++){p=l;p*=i;}

C>i=1;p=1;while(i<=5){p*=i;i++;}

D、i=l;p=l;do{p*=i;i++;}while(i<=5);

标准答案:B

知识点解析:本题选项A、C和D均能完成5!的计算,选项B不能完成此计算,

因为在循环过程中,第一次循环都将结果重新初始化,最后得到结果为5。

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

分。)

42、树中度为零的结点称为o

标准答案:叶子结点

知识点解析:树中度为零的结点,也就是没有后件的结点,称为叶子结点。

43、在面向对象的方法中,描述的是具有相似属性与操作的一组对象。

标准答案:类

知识点。析:在面向对象的方法中,把具有相同属性和方法的对象称为类,类是对

象的抽象,对象是类的实例。

44、软件的【】设计又称为总体结构设计,其主要任务是建立软件系统的总体结

构。

标准答案:概要/初步

知识点解析:暂无解析

45、数据库技术的主要特点为数据的集成性、数据的高【】和低冗余性、数据独

立性和数据统一管理与控制。

标准答案:共享性

知识点解析:数据库技术的主要特点有以下几个方面:数据的集成性,数据的高共

享性与低冗余性,数据的独立性,数据统一管理与控制。

46、从Windows环境进入MS-DOS方式后,返回Windows环境的DOS命令为

[]O

标准答案:exit

知识点解析:在Windows环境下进入MS-DOS后,返回的命令是exit。

五、填空题(本题共〃题,每题1.0分,共〃分。)

47、下面程序的功能:瑜出100以内能被3整除且个位数为6的所有整数,请填

空。#include<stdio.h>main(){inti,j;for(i=0;iVlO或i<=9;i++){j=i*10+6;

if([1)continue;printf("%d",j);)}

标准答案:j%3!=0或j%3

知识点解析:题目要求输出100以内能被3整除且个位数为6的所有整数,且通过

for循环实现,循环体内上=/10+6;这也就满足了个位数为6的条件,所以第1个

空格填入iV10或iV=9;if语句中的continue说明如果条件不成立则不输出j,所

以第2空填j%3!=0或j%3。

48、有以下程序:#include<stdio.h>main(){charchl,ch2;intnl,n2

chl=getchar();ch2=getchar();nl=chl-,O,;n2=nl*10+(ch2-,0,);printf(',%d\n",n2);}

程序运行时输入:12V回车〉,执行后的输出结果是【】。

标准答案:12

知识点解析:本题中nl=,l,-,0,=l,n2=lxl0+(,2,-,0,)=10+2=12o

49>有以下程序#include<stdio.h>typcdefstruct{intnum;doubles;)REC;

voidfunl(REC*x){x->num=23;x->s=88.5;)voidmain(){RECa={16,90.0);

funl(&A);printf("%d\n",a.num);}程序运行后的输出结果是()。

标准答案:23

知识点解析:暂无解析

50、设某循环队列的容量为50,头指针front=5(指向队头元素的前一位置),尾指

针rear=29(指向队尾元素),则该循环队列中共有()个元素。

标准答案:24

知识点解析:当frontVrear时循环队列中元素的个数为rear-front,当front〉rear

时,循环队列中元素的个数为N(N为循环队列容量)-front+rcar。此题中front=5<

rear=29,因此该循环队列中共有29-5=24个元素。

51、以下程序的运行结果是【】。#includemain(){intx=l,y=0,a=0,b=0;switch(x)

{case1:switch(y){case0:a++;break;case1:b++;break;)case2:a++;b++;break;

case3:a++;b++;}printf("a=%d,b=%d\n",a,b);}

标准答案:a=2,b=l

知识点解析:本题考查了switch结构的内容。C语言中,程序执行完一个case标号

的内容后,如果没有break语句,控制结构会转移到下一个case继续执行,因为case常

量表达式只是起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内

部switch结构后,继续执行C外部switch结构的case2:分支,最后a和b的值分别为

2和1。

52、下面程序的输出结果是[]o#includemain(){staticchara|]="

language",b|]='rprogram',;char*ptrl=a,*ptr2=b;intk;foi(k=0;k<7;k++)

if(*(ptrl+k)==*(ptr2+k))printf(M%c",*(ptrl+k));}

标准答案:ga

知识点解析:考查了用字符指针处理字符串的方法。用字符指针处理字符串,首先

要使指针指向这个字符串,即题中的ptrl=a和ptr2=b,然后就是通过指针的移动可以

引用到字符串中的每一个字符。题中的*(ptrl+k)是使指针ptrl向后移动k个位置,

然后取出指向的字符。

53、设有以下定义和语句,贝iJ*(*(p+2)+l)的值为【】。int

a[3][2]={10,20,30,40,50,60),(*pH2];p=a;

标准答案:60

知识点解析:程序中定义a是一个3行2列的二维数组,p是指向两个元素的一维

数组指针,并让p指向二维数组a的首行。则代码*(*(p+2)+l)中的p+2指向二维数

组a的第三行a[2],*(p+2)指向a⑵]0|,*(p+2)+l指向a⑵⑴,*(*(p+2)+l)是引用

a[2][l],其值是60。

54、若要使指针p指向一个double类型的动态存储单元,请填空。p=[]

malloc(sizeof(doublc));

标准答案:(double*)

知识点解析:一般用malloc函数为变量分配存储单元时,要在前面用强制类型转

换符说明该存储单元中数据的类型。本题要为指向双精度浮点型数据的指针变量p

分配存储单元,因此用(double*)说明。

55、下面程序的运行结果是[]o#defineDOUBLE(x,y)x/ymain(){intx=4,y=2,t;

t=DOUBLE(x+y,x-y);printf(n%d",t);}

标准答案:2.'

知识点解析:暂无解析

56求任意一个数(用16位二进制码表示)的补码。main(){unsignedint

a;[];scanf("%0",&a);prinif("%o\n",getbits(a));}

unsignedintgetbits(value)unsignedintvalue;{unsignedintz;z=

【];if(z==0100000)[];elsez=value;

retum(z);)

标准答案:unsignedintgetbits()value&O100000z=~value+l

知识点解析:暂无解析

57、有以卜程序#inculde#inculdevoidFun(char*str){chartemp;intn,I;n=strlen(str);

temp=str[n-1];For(i=n-1;i>0;i-)str[i]=str[i-l];str[0]=temp;)main(){chars[50];

ScanF(t<%s,,,s);Fun(s);printF(<t%s\n,,,s);}程序运行后输入:aBcDeFV回车》,则输

出结果是【】

标准答案:fabcde

知识点解析:在函数fun中,先求出字符串str的长度,并将最后一个字符暂存到

temp中,然后使用循环语句将所有字符向右移动一个位置,最后将temp中的字符

放到字符串的第1个位置,所以结果为fabedeo

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

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

10分。)

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

A、完整性

B、可行性

C、有穷性

D、拥有足够的情报

标准答案:A

知识点0析:作为一个算法,一般应该具有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、不允许使用GOT。语句

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

标准答案:C

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

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

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

求规格说明书以及3。

A、阶段性报告

B、需求评审

C、总结

D、都不正确

标准答案:B

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

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

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

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

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

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

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

标准答案:C

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

未发现的错误。

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

A、便于随机存取

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

C、便于插入和删除操作

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

标准答案:C

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

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

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

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

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

A、需求分析阶段

B、逻辑设计阶段

C、概念设计阶段

D、物理设计阶段

标准答案:B

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

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

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

分。)

11、c语言可执行程序的开始执行点是()。

A、包含文件中的第一个函数

B、程序中第一个函数

C、程序中的main。函数

D、程序中第一条语句

标准答案:C

知识点解析:每个C程序有且只有一个主函数main(),且程序必须从main函数开

始执行,并在main。函数中结束。

12、可以在C语言程序中用做用户标识符的一组标识符是()。

A、void

B、aa123abcBBNcas

C、as+b3

D、6f-123DoIfSIG

标准答案:B

知识点解析:C语言规定,标识符是由字母、数字或下划线组成,并且它的第一

个字符必须是字母或者下划线。

13、下列正确的实型常量是()。

A、E3.4

B、-12345

C、2.2eO.8

D、4

标准答案:B

知识点解析:实型常量有两种书写形式:①小数形式,它由符号、整数部分、小

数点及小数部分组成;②指数形式,由十进制小数形式加上指数部分组成,其形

式为十进制小数e指数或十进制小数E指数。

14、下列表达式中,可以正确表示烂0或X*的关系是()。

A、(x>=l)10(x<=0)

B、x>lIIx=0

C、x>=lORx<=0

D、X>=l&&x<=0

标准答案:A

知识点解析:题中要求x的取值是小于等于0或者大于等于1,这说明表达式是或

的关系,所以在写成C语言表达式应是逻辑或的关系,逻辑或运算符是“11”。

15、若有定义定ta=5,b=7;,则表达式a%=(b%2)运算后,a的值为()。

A、0

B、1

C、11

D、3

标准答案:A

知识点解析:本题考查"%”运算符的使用。运算符"%”要求两个运算对象都为整

型,其结果是整数除法的余数。本题中表达式ao%=(b%2)等价于a=a%o(b%2)=

5%(7%2)=5%l=0o

16、已知i、j、k为血型变量,若要从键盘输入2、3、4VCR>,使i、j、k的值

分别为2、3、4,下列正确的输入语句是()。

A、scanf("%3d,%3d,%3d",&i,&j,&k);

B、scan(M%d,%d,%d”,&i,&j,&k);

C、scan(M%do/od%dH,&i,及

D、scanf("i=%d,j=%d,k=%dH,&i,&j,&k);

标准答案:B

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

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

址。

17、下列程序的输出结果是()。main(){intp[8]={1l,12,13,14,15,16,17,18),i=0,j=

0;while(i++<7)if(p[i]%2)j+=p[i];printf(n%dXn",j);)

A、42

B、45

C、56

D、60

标准答案:B

知识点解析:在C语言中,数组的下标默认为0,因此数组p的下标范围为:0〜

7o程序循环过程为:第1次循环i=0,执行循环,并且i自加,得i=l,因此p[i]

为p[l]=12,12%2=0,不执行后面的语句:接着进行第2次循环,此时i=l,小于

7执行循环,并且i自加,得i=2,因此p[i]为p⑵=13,13%2=1,执行后面的语

句;这样一直到退出循环。最后,i的值九.i=13+15+17=45。

18、若有下列定义(设int类型变量占2个字节):inti=8J=9;则下列语句:

printf(ni=%u,j=%x\n',.ij);输出的结果是0。

A、i=8,j=9

B、8.9

C、89

D、i=8,i=8

标准答案:A

知识点解析:本题考查函数prinlf()的格式。“%x”表示以十六进制输出整型数据;

“%u”表示以十进制无符号型输出整型数据。printf函数中格式说明符之前插入的任

何字符都原样输出。

19、设有定义:inlk=l,m=2;noalf=7;则下列选项中错误的表达式是()。

A、k=k>=k

B、-k++

C、k%int(f)

D、k>=f>=m

标准答案:C

知识点解析:在c语言中,求余运算符“%”两边的运算对象都应为整型数据,所

以需要对变量f进行强制类型转换,正确的写法为k%(int)f。在C语言中,逻辑运

算符与赋值运算符、算术运算符、关系运算符之间从高到低的运算优先次序

是:!(逻辑"非”)、算术运算符、关系运算符、&&(逻辑“与”卜II(逻辑“或”)、赋值

运算符.根据运算符的优先级与结合忤,对于选项A).先计算k>=k的值(为

真,即1),再用1对k进行赋值。对于选取项B),先计算k什的值,再对其取负

数。对于选项D),先计算k>=f的值(为假,即0),再用0与m进行比

20、若执行下列程序时从键盘上输入2,则输出结果是()。#inclUde<stdio.h>

main()(inta;scanf("%d",&A);if(a++<3)printf("%d\n",A);elseprintf(',%d\n,,,a—);)

A、1

B、3

C、2

D、4

标准答案:B

知识点解析:本题考查ifelse语句。程序中首先使用函数scanf()通过键盘读入a

的值,并通过第1个if语句,先判断条件,取a的值2和3比较,然后将a的值加

1,发现条件成立,执行下列的printf语句,输出a的值3。

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

分。)

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

A、不确定的值

B、一个整数

C、形参p中存放的值

D、形参p的地址值

标准答案:B

知识点解析:由函数血皿I1(血*仅{1以110^^;}的定义可知,返回值为整型指针变

量p所指向的数据。

22下列程序的输出结果是()。#include<stdio.h>main(){iuta=2,b=3,p;p=

f(a,B)printf("%dH,p);}intf(a,b){intc;if(a>B)c=1;elSeif(a==B)c=0;else(3=-l;

return(C);)

A、-1

B、0

C、1

D、2

标准答案:A

知识点解析:本题考查ifelse语句。在intf(a,B)中:第一个if语句,先判断条件,

发现a>b条件不成立,则执行与其配对的else语句:第二个if语句,先判断条

件,发现a==b条件不成立,则执行与其配对的else语句,c=-l。

23>有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+l;m=i+x+y;retum

m;}main(){intj=l,m=l,k;k=funO,m);printf(,,%d,"k);k=

fiinO,m);printf("%d\n'',k);}执行后的输出结果是()。

A、5,5

B、5,11

C、11,11

D、11,5

标准答案:B

知识点解析:子函数fun(intx,inty),将变量m和i声明为局部静态变量,因此第1

次调用主函数后,局部静态变量m和i的值为5和3,第1次函数调用结束时,它

们的值不释放保持不变,所以第2次调用时,局部静态变量m和i的初始值分别为

5和3,即在执行“i+=m+l”时,i的值为9,因此,最终m的值为11。

24、下列循环体的执行次数是()。#include<stdio.h>main(){inti,j;for(i=0,j=

l;i<j+l;i+=l,j-)printf("%d\n';j);)

A、3

B、2

C、I

D、0

标准答案:C

知识点解析:本题考查for循环。第一次循环前先判断循环条件,此时i=0j=l,i

Vj+1成立,循环第一次;第二次循环前先判断循环条件,此时是先

使用j的值再减1),iVj+1不成立,结束循环。

25、设变量x和y均已正确定义并赋值。下列if语句中,在编译时将产生错误信息

的是

A、ifx++);

B、it(x>y&&y!=0);

C、if(x>0)x—

D、if(y<0)(;)elsey++;elsex++;

标准答案:C

知识点解析:选项A)和选项B)在条件判断语句的后面是空语句,什么都不做;在

选项D)中,if后面是一个复合空语句;而在选项C)中,在X--后面少了一个分

号,所以程序段在编译时,会出现语法错误。

26,下列字符数组初始化语句中,不正确的是()。

A、charc[]='goodmorning';

B、char,c[20]=,,goodmomingn;

C、charc[]={,a,,,b,;c,;d,};

D、charc[]={"goodmoniing");

标准答案:A

知识点解析:本题考查两个概念:①用单引号括起来的一个字符常量只能存放一

个字符;②C语言中没有字符串变量,只能用字符数组来存储字符串。选项A)中

一个单引号内放了若干个字符是错误的;选项B)和选项D)中将一个字符串赋值给

一个字符数组是允许的.

27、下列程序的输出结果是()。#include<stdio.h>voidp(int*x)

{printf(M%d'\++*x);}voidmain(){inty=3;p(&y);)

A、3

B、4

C、2

D、5

标准答案:B

知识点解析:本题考查函数调用时的参数传递。在函数调用时,形参是指向实参

的指针变量,则printf的执行结果为3+l=4。

28、下列程序的运行结果为()。#include<stdio.h>voidabc(char*str){inta,b,i,j;

for(i=j=0;str[i]!=,\0,;i++)if(str[i]!=,a,)str[j-H-]=str[j];str[j]=>\O,;}voidmain()

{charStr[]=,,abcdef;abc(str);printf("str[]=%s",str);)

A、str[]=bcdef

str[]=abcdef

C>str[]=a

D、str||=ab

标准答案:A

知识点解析:本题考查函数调用时的参数传递。通过函数abc的执行,将字符串

中的字母a去掉,保留剩下的。由于是通过指针调用,所以改变字符串的结果。

29、变量m的值为8,m的地址为1010,若欲使p为指向m的指针变量,则下列赋

值正确的是()。

A、&m=8

B、*p=8

C、*p=1010

D、p=&m

标准答案:D

知识点解析:指针变量是通过指向变量地址来指定变量值的。这里只要取m的地

址赋给P,即可实现使p为指向m的指针变量。

30、在下列语句中,其含义为因为一个指针的函数,该指针指向整型数据”的定义

语句是()。

A、int**q;

int(*q)0;

C>int*q;

D、int*q();

标准答案:B

知识点解析:本题考查的是指针函数。指针函数定义的基本格式:类型说明符(*

函数名)()。其中,类型说明符表示返回的指针值指向的数据类型。

31、下列二维数组初始叱语句中,不正确的是()。

A、intb[][2]={1,2,345.6,7};

B、intb[3][5]={0,0,0};

C.intb[][4]={{l,2},{3,4,5M6});

D.intb[3][2]={(1,2),(3,4),(5,6));

标准答案:D

知识点解析:在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值

的元素自动取0;C语言规定,对于二维数组,只可以省略第1个方括号中的常量

表达式,而不能省略第2个方括号中的常量表达式;赋的初值不能多于事先定义好

的数组元素个数。在选项D)赋值表达式中,对每一维的元素赋初值应用{},而不

是()。

32、下列程序中函数sori。的功能是对数组a中的数据进行由大到小的排序。

#include<stdio.h>voidsort(inta[],intn){inti,j,t;for(i=0;i<n-l;i++)for(j=i+l;<

n;j++)if(a[i]<a|j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){inta[10]=

[1,2,3,4,5,6,7,8,9,10)4;sort(&a[l],7);for(i=0;i<10;i++)printf(n

A、1,234,5,6,7,8,9,10,

B、10,9,8,7,6,5,4,3,21,

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

D、1,2,1098,7,654,3,

标准答案:C

知识点解析:本程序中的函数sort(inta[],intn)实现的功能是将数组a中的前n个数

进行从大到小排序。sort(&a[l],7)是将数组中从a⑴到a⑺这7个数进行从大到小

排序,其他数不变。

33、下列判断正确的是()。

A、chara="ABCD";等价于char*a;*a="ABCD”;

B、charstr[IO]=ABCD");等价于charstr[10];str[]={"ABCD"};

C、char*s="ABCD";等价于chars;*s="ABCD”;

D、charc[5]=MABCDH,d[5]=',ABCDn;等价于charc[5]=d[5]="ABCD”;

标准答案:D

知识点解析•:a="ABCD”书写错误,因为“=”左边不能出现常量;数组名s是代

表s数组首地址的地址常屋,而不是变星;字符串只有在定义时维数可以省略。

34、下列语句中,在字符串si和s2相等时显示"theyareEqual"的是()。

A、if(*sl==*s2)

BNif(!strcmp(sl,s2))puts("theyareEqual");puts("theyareEqual");

C、if(sl==s2)

D、if(strcmp(sl,s2))Puts("theyareEqual");puts("theyareEqual");

标准答案:B

知识点解析:字符串比较不能用两个等于号(=)来进行比较,应使用函数

.strcnW)来比较°函数VrcnW)的功能:当字符串4和*2相等时.返回值

为0。因此,当表达式!strcmp(sl,s2)=l时,条件成立,执行后面的语句,输出

theyareEqualo

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

A、在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值

B、在C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容

C、在C语言中,外部变量的隐含类型是自动存储类别

D、在C语言中,函数形参的存储类型是自动(auto)类型的变量

标准答案:C

知识点解析:外部变量在编译时由系统分配永久的内存空间,所以外部变量的类

型不是自动存储类别。

36、卜列程序的输出结果是()。#include<stdio.h>#defineF(x)2.84+x

#definew(y)printf(,,%d,,,(int(y))#defineP(y)w(y)pmchar(,\n,main(){intx=2;

P(F(5)*x);}

A、12

B、13

C>14

D、16

标准答案:A

知识点解析:本题考查带参数的宏的定义及相关运算。P(F(5)*x)=P(2.84+5*2)=

P(12.84),调用w(12.84),输出(int)(12.84)=12。

37、若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是()。

Structstu(inti;intname;)st,*#p;p=&St;

A、st.i

B、*p.i

C、(*p).i

D、p->i

标准答案:B

知识点解析;本题主要考查结构指针;p=&st,访问结构体的成员,可以通过结

构变量访问,即Sl.i,也可以用等价的指针形式即(*p).i和p・>i。

38、下列说法错误的是()。

下列结构体定义时,占据了5个字节的空间structstudent{intnum;intage;char

sex;}

B、’结构体的成员名可以与程序中的变量名相同

C、对结构体中的成员可以单独使用,它的作用相当于普通变量

D、结构体可以嵌套定义

标准答案:A

知识点解析:本题主要考查定义结构体的几个特点:①结构的定义明确了结构的

组成形式,定义了一种C语言中没有而用户需要的新的数据类型。与其他的数据

类型不同,在程序编译的时候结构的定义并不会使系统为该结构分配内存空间,只

有在说明结构变量时才分配内存空间;②结构体的成员名可以与程序中的变量名

相同;⑥结构体中的成员可以单独使用,它的作用相当于普通变量;④结构体可

以嵌套定义。

39、若x=10010111,则表达式(3+(int)(

温馨提示

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

最新文档

评论

0/150

提交评论