计算机等级考试二级C语言模拟试卷_第1页
计算机等级考试二级C语言模拟试卷_第2页
计算机等级考试二级C语言模拟试卷_第3页
计算机等级考试二级C语言模拟试卷_第4页
计算机等级考试二级C语言模拟试卷_第5页
已阅读5页,还剩229页未读 继续免费阅读

下载本文档

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

文档简介

计算机等级考试二级C语言模拟试卷(1)

一、选择题

(1)栈和队列的共同特点是

A)都是先进先出

B)都是先进后出

C)只允许在端点处插入和删除元素

D)没有共同点

(2)已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是

A)acbed

B)decab

C)deabc

D)cedba

(3)链表不具有的特点是

A)不必事先估计存储空间

B)可随机访问任一元素

C)插入删除不需要移动元素

D)所需空间与线性表长度成正比

(4)结构化程序设计的3种结构是

A)顺序结构、选择结构、转移结构

B)分支结构、等价结构、循环结构

C)多分支结构、赋值结构、等价结构

D)顺序结构、选择结构、循环结构

(5)为了提高测试的效率,应该

A)随机选取测试数据

B)取一切可能的输入数据作为测试数据

C)在完成编码以后制定软件的测试计划

D)集中对付那些错误群集的程序

(6)算法的时间复杂度是指

A)执行算法程序所需要的时间

B)算法程序的长度

C)算法执行过程中所需要的基本运算次数

0)算法程序中的指令条数

(7)软件生命周期中所花费用最多的阶段是

A)详细设计

B)软件编码

C)软件测试

D)软件维护

(8)数据库管理系统DBMS中用来定义模式、内模式和外模式的语言为

A)C

B)Basic

C)DDL

D)DML

(9)下列有关数据库的描述,正确的是

A)数据库是一个DBF文件

B)数据库是一个关系

C)数据库是一个结构化的数据集合

D)数据库是一组文件

(10)卜一列有关数据库的描述,正确的是

A)数据处理是将信息转化为数据的过程

B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变

C)关系中的每一列称为元组,一个元组就是一个字段

D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,

则称其为本关系的外关键字

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

A)C语言比其他语言高级

B)C语言可以不用编译就能被计算机识别执行

C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式

D)C语言出现的最晚,具有其他语言的一切优点

(12)C语言中用于结构化程序设计的3种基本结构是

A)顺序结构、选择结构、循环结构

B)if,switch,break

C)for,while,do-while

D)if,for,continue

(13)C语言中最简单的数据类型包括

A)整型、实型、逻辑型

B)整型、实型、字符型

C)整型、字符型、逻辑型

D)字符型、实型、逻辑型

(14)若变量已正确定义并赋值,以下符合C语言语法的表达式是

A)a:=b+l

B)a=b=c+2

C)int18.5%3

D)a=a+7=c+b

(15)下列可用于C语言用户标识符的一组是

A)void,define,WORD

B)a3_b3,_123,Car

C)For,-abc,IFCase

D)2a,DO,sizeof

(16)C语言中运算对象必须是整型的运算符是

A)%=

B)/

C)=

D)<=

(17)若变量a,i已正确定义,且i已正确赋值,合法的语句是

A)a==1

B)++i;

C)a=a++=5;

D)a=int(i);

(18)已知

intt=0;

while(t=l)

{...)

则以下叙述正确的是

A)循环控制表达式的值为0

B)循环控制表达式的值为1

O循环捽制表达式不合法

D)以上说法都不对

(19)若变量已正确说明为float型,要通过语句scanf(",&a,&b,&c);给a赋

予10.0,b赋予22.0,c赋予33.0,下列不正确的输入形式是

A)10〈回车>22<回车>33<回车)

B)10.0,22.0,33.0〈回车)

C)10.0<回车〉22.033.0<回车)

D)1022〈回车>33〈回车〉

(20)有如下程序:

main()

(

intx=l,a=0,b=0;

switch(x)

(

case0:b++;

case1:a++;

case2:a++;b++;

}

printf("a=%d,b=%d\n〃,a,b);}

该程序的输出结果是

A)a=2,b=l

B)a=l,b=l

C)a=l,b=0

D)a=2,b=2

(21)有以下程序

main()

{inti=l,j=l,k=2;

if((j++||k++)&&i++)

printf(,z%d,%d,%d\n,z,i,j,k);

I

执行后输出结果是

A)1,1,2

B)2,2,1

C)2,2,2

D)2,2,3

(22)有如下程序

main()

{floatx=2.0,y;

if(x<0.0)y=0.0;

elseif(x<10.0)y=l.0/x;

elsey=l.0;

printf(〃%f\n〃,y);}

该程序的输出结果是

A)0.000000

B)0.250000

C)0.500000

D)1.000000

(23)有如下程序:

main()

{intn=9;

while(n>6){n--;printf("%d〃,n);}

I

该程序的输出结果是

A)987

B)876

C)8765

D)9876

(24)在下列选项中,没有构成死循环的是

A)inti=100;

while(1)

{i=i%100+l;

if(i>100)break;

}

B)for(;;);

C)intk=10000;

do{k++;}while(k>10000);

D)ints=36;

while(s)-s;

(25)设intx=l,y=l;表达式(!x||y--)的值是

A)0

B)1

C)2

D)-1

(26)若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是

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

B)函数调用可以作为一个函数的实参

C)函数调用可以出现在表达式中

D)函数调用可以作为一个函数的形参

(27)有以下程序

floatfun(intx,inty)

{return(x+y);)

main()

{inta=2,b=5,c=8;

printf("%3.Of\n”,fun((int)fun(a+c,b),a-c));

I

程序运行后的输出结果是

A)编译出错

B)9

C)21

D)9.0

(28)若有以下调用语句,则不正确的fun函数的首部是

main()

{…

inta[50],n;

fun(n,&a[9]);

}

A)voidfun(intm,int[])

B)voidfun(ints,inth[41])

C)voidfun(intp,int*s)

D)voidfun(intn,inta)

(29)fseek函数的正确调用形式是

A)fseek(文件指针,起始点,位移量)

B)fseek(文件指针,位移量,起始点)

C)fseek(位移量,起始点,文件指针)

D)fseek(起始点,位移量,文件指针)

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

A)EOF

B)-1

C)1

D)NULL

(31)若有说明语句:charc=''72';则变量c

A)包含1个字符

B)包含2个字符

C)包含3个字符

D)说明不合法,c的值不确定

(32)若有说明inta[3][4];则a数组元素的非法引用是

A)a[0][2*1]

B)a[1][3]

C)a[4-2][0

1

D)a[0][4](33)设有以下说明语句

structstu

{inta;

floatb;

}stutype;

则下面的叙述不正确的是

A)struct是结构体类型的关键字

B)structstu是用户定义的结构体类型

C)stutype是用户定义的结构体类型名

D)a和b都是结构体成员名

(34)在C语言中,引用数组元素时,其数组下标的数据类型允许是

A)整型常量

B)整型表达式

C)整型常量或整型表达式

D)任何类型的表达式

(35)若运行时给变量x输入12,则以下程序的运行结果是

main()

{intx,y;

scanf(%d”,&x);

y=x>12?x+10:x-12;

printf("%d\n",y);

}

A)0

B)22

C)12

D)10(

(36)以下说法正确的是

A)C语言程序总是从第一个的函数开始执行

B)在C语言程序中,要调用函数必须在main()函数中定义

C)C语言程序总是从main()函数开始执行

D)C语言程序中的main()函数必须放在程序的开始部分

(37)表达式0x13八0x17的值是

A)0x04

B)0x13

C)0xE8

D)0x17

(38)有以下程序

MefineF(X,Y)(X)*(Y)

main()

{inta=3,b=4;

printf(\d\n〃,F(a++,b++));

程序运行后的输出结果是

A)12

B)15

C)16

D)20

(39)下列程序执行后的输出结果是

voidfunc(int*a,intb[])

{b[0]=*a+6;}

main()

{inta,b[5];

a=0;b[0]=3;

func(&a,b);printf(〃%d\n〃,b[0]);

}

A)6

B)7

C)8

D)9

(40)若有下面的程序段:

chars[]="china”;char*p;p=s;

则下列叙述正确的是

A)s和p完全相同

B)数组s中的内容和指针变量p中的内容相等

C)s数组长度和p所指向的字符串长度相等

D)*p与s[0]相等

(41)以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序

voidsort(inta口,intn)

{inti,j,t;

for(i=0;i<n-l;i++)

for(j=i+l;j<n;j++)

if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}

)

main()

{intaa[10]={1,2,3,4,5,6,7,8,9,10),i;

sort(&aa[3],5);

for(i=0;i<10;i++)printf("%d,”,aa[i]);

printf("\n");

)

程序运行后的输出结果是

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

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

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

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

(42)以下程序的运行结果是

#include“stdio.h〃

main()

{structdate

{intyear,month,day;}today;

printf(,z%d\n/z,sizeof(structdate));

}

A)6

B)8

C)10

D)12

(43)若有语句int*point,a=4;和point二&a;下面均代表地址的一组选项是

A)a,point,*&a

B)&*a,&a,*point

C)*&point,*point,&a

D)&a,&*point,point

(44)在调用函数时,如果实参是简单的变量,它与对应形参之间的数据传递方式是

A)地址传递

B)单向值传递

C)山实参传形参,再山形参传实参

D)传递方式由用户指定

(45)已定义以下函数

fun(char*p2,char*pl)

while((*p2=*pl)!八O'){pl++;p2++;}

}

函数的功能是

A)将pl所指字符串复制到p2所指内存空间

B)将pl所指字符串的地址赋给指针p2

C)对pl和p2两个指针所指字符串进行比较

D)检查pl和p2两个指针所指字符串中是否有‘\0'

(46)若执行下述程序时,若从键盘输入6和8时,结果为

main()

{inta,b,s;

scanf(〃%d%d”,&a,&b);

s=a

if(a<b)

s=b;

s*二s;

printf(〃%d〃,s);

}

A)36

B)64

C)48

D)以上都不对

(47)fscanf函数的正确调用形式是

A)fscanf(fp,格式字符串,输出表列);

B)fscanf(格式字符串,输出表列,fp);

C)fscanf(格式字符串,文件指针,输出表列);

D)fscanf(文件指针,格式字符串,输入表列);

(48)下列关于C语言数据文件的叙述中正确的是

A)文件由ASCH码字符序列组成,C语言只能读写文本文件

B)文件由二进制数据序列组成,C语言只能读写二进制文件

C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件

D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

(49)有以下程序

voidss(char*s,chart)

{while(*s)

{if(*s==t)*s=t-'a'+'A';

s++;

)

}

main()

{charstrl[100]=〃abcddfefdbd〃,c='d’;

ss(strl,c);printf(〃%s\n〃,strl);

}

程序运行后的输出结果是

A)ABCDDEFEDBD

B)abcDDfefDbD

C)abcAAfefAbA

D)Abcddfefdbd

(50)若以下定义:

structlink

{intdata;

structlink*next;

}a,b,c,*p,*q;

且变量a和b之间已有如下图所示的链表结构:

ab

指针P指向变量a,q指向变量c。则能够把c插入到a和b之间并形成新的链表的语句

组是:

A)a.next=c;c.next=b;

B)p.next=q;q.next=p.next;

C)p->next=&c;q->next=p->next;

D)(*p).next=q;(*q).next=&b;

二、填空题

(1)算法的基本特征是可行性、确定性、【1】和拥有足够的情报。

解析:算法是指解题方案的准确而完整的描述。它有4个基本特征,分别是可行性、确定

性、有穷性和拥有足够的情报。

(2)在长度为n的有序线性表中进行二分查找。最坏的情况下,需要的比较次数为【2】o

解析:对于长度为n的有序线性表,在最坏情况下,二分查找只需要比较log2n次,而顺

序查找需要比较n次。

(3)在面向对象的程序设计中,类描述的是具有相似性质的一组【3】。

解析:将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象

的集合。

(4)通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为【4】。

解析:软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生

命周期。一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。

(5)数据库管理系统常见的数据模型有层次模型、网状模型和【5】3种。

解析:数据库管理系统是位于用户与操作系统之间的一层系统管理软件,是一种系统软件,

是用户与数据库之间的•个标准接口。其总是基于某种数据模型,可以分为层次模型、网状

模型和关系模型。

(6)设y是int型,请写出y为奇数的关系表达式【6】。

答案(那2)=1

(7)设inta=5,b=6,表达式(++a==b—)?++a:一b的值是【7]<.

解析:此表达式为三目运算符,++a的值为6,b——的值为6,则整个表达式的值为++a

的值,++a的值为7。请注意前缀++,一和后缀++,一的区别。

(8)卜列程序的输出结果是[8】。

maim()

{charb[]=,,Helloyou”;

b[5]=0;

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

解析:语句b[5]=0;相当于语句b[5]=''0',且''0'为字符串结束标志,输出时

遇到''0'就停止输出。

(9)当调用函数时,实参是一个数组名,则向函数传递的是[9]。

解析:在函数中,可以通过指针变量来引用调用函数中对应的数组元素,此操作是通过传

递数组的首地址来实现。

(10)以下程序的输出结果是[10]。

inta=1234:

printf("%2d\n”,a);

解析:在%与格式符之间插入一个整形数来指这输出宽度,并不影响数据的完整性,当插入

的宽度小于实际的宽度时,则实际的宽度输出。

(11)用高级语言编写的程序称为[11]程序,它可以通过解释程序翻译一句执行一句的

方式执行,也可以通过编译程序一次翻译产生目标程序,然后执行。

解析:用高级语言编写的程序称为源程序,源程序不能在计算机上直接运行,运行源程序

有两种方式:一种是通过解释程序,对源程序逐句解释执行;另种是先让编译程序将源程

序一次翻译产生目标程序(目标程序是计算机可直接执行的机器语言程序,它是一种二进制

代码程序),然后执行目标程序。

(12)以下程序的输出结果是[12],

main()

{inta=0;

a+=(a=8);

printf(,z%d\n,z,a);}

解析:赋值表达式的值就是所赋值变量的值,本题中a+=8相当于a=a+8,对表达式逐步进

行求解:

a+=(a=8)此时,a的值由于赋值为8,而不是0

a+=8

a=a+8

a=16

(13)函数XI+voidfun(float*sn,intn)的功能是:根据以下

公式计算S,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。请填空。

voidfun(float*sn,intn)

{floats=0.0,w,f=-l.0;

inti=0;

for(i=0;i<=n;i++)

{f=[13]*f;

w=f/(2*i+l);

s+=w;}

[14]=s;}

解析:C语言中实参变量和形参变量的数据传递是单向的“值传递”方式。指针变量作函

数也要遵循这一规则。调用函数不可能改变实参指针变量的值,但可以改变实参指针变量所

指变量的值。

(14)函数fun的功能是:根据以下公式求p的值,结果由函数值返回。m与n为两个正数

.上mt

且要求m>n。M(m-Q!

例如:m=12,n=8时,运行结果应该是495.000000。请在题目的空白处填写适当的程序语句,

将该程序补充完整。

#include<conio.h>

#include<stdio.h>

floatfun(intm,intn)

{inti;

doublep=l.0;

for(i=l;i<=m;i++)[15];

for(i=l;i<=n;i++)[16];

for(i=l;i<=m-n;i++)p=p/i;

returnp;}

main()

{clrscr();

printfCp=%f\nz/,fun(12,8));}

解析:本题中,欲求P的值,需要先求m,n,m-n的阶乘值,可用循环语句实现。

(15)该程序运行的结果是[17]o

#include<conio.h>

#include<stdio.h>

^defineM100

voidfun(intm,int*a,int*n)

{inti,j=0;

for(i=l;i<=m;i++)

if(i%7==0||i%ll==0)

a[j++]=i;

*n=j;}

main()

{intaa[M],n,k;

clrscr();

fun(10,aa,&n);

for(k=0;k<n;k++)

if((k+1)%20=0)printf(〃\n〃);

elseprintf("%4d〃,aa[k]);

printf(〃\n");}

解析:解答本题的关键是要读懂程序,试题要找出能被7或11整除的所有整数,注意数学

中的“或”和C语言中的“或”的区别,但在此处,if条件语句中用了运算符,若

要找能同时被7和11整除的所有整数则在if()中应用“&&”运算符。

当然,如果m的值输入50,即表达式fun(10,aa,&n);为fun(50,aa,&n);时输入结果为:

711142122283335424449o

(16)下列程序的功能是:求出ss所指字符串中指定字符的个数,并返回此值。

例如,若输入字符串123412132,输入字符1,则输出3,请填空。

#include<conio.h>

#include<stdio.h>

^defineM81

intfun(char*ss,charc)

{inti=0;

for(;[18];ss++)

if(*ss==c)i++;

returni;)

main()

{chara[M],ch;

clrscr();

printfC'\nPleaseenterastring:〃);gets(a);

printf(,z\nPleaseenterachar:〃);ch=getchar();

printf(〃\nThenumberofthecharis:%d\n〃,fun(a,ch));}

解析:从字符串ss中找出子字符串的方法是:从第1个字符开始,对字符串进行遍历;若

SS串的当前字符等于t串的第1个字符,两字符串的指针自动加1,继续比较下一个字符;

若比较至字符串的结尾,则跳出循环;若SS串的字符和C串的字符对应不同,继续对SS

串的下一个字符进行处理。本程序是采用逐一比较的方式找出出现的次数。循环的作用是在

串中从左到右逐一走动,if()的作用是进行判断是否相同,若与C相同则表示又出现一次。

(17)下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新

文件中,请填空。

#include〃stdio.h〃

FILE*fp;

{charch;

if((fp=fopen([19]))==NULL)exit(0);

while((ch=getchar())!='@')fputc(ch,fp);

fclose(fp);}

解析:fopen函数的调用方式通常为:

FILE*fp

fp二fopen(文件名,使用文件方式);

(18)设有如下宏定义

^defineMYSWAP(z,x,y)

{z=x;x=y;y=z;}

以下程序段通过宏调用实现变量a,b内容交换,请填空。

floata=5,b=16,c;

MYSWAP([20],a,b);

解析:该题考查两个知识点:

(1)用一个指定的标识符(即名字)来代表一个字符串,它的一般形式为#€16丘1)0标识符

字符串

(2)在MYSWAP宏定义中,利用中间变量z来交换x和y的值,所以要实现a和b的交换,

只需通过中间变量即可,所以,此处应填c。

选择题

01-05CDBDD

06-10CDCCB

11-15CABBB

16-20ABBBA

21-25CCSDB

26-30DBDBC

31-35ADCCA

36-40CAAAD

41-45CABBA

46-50BDDBD

计算机等级考试二级C语言模拟试卷⑵

一、选择题

(1)已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后

序遍历为

A)GEDHFBCA

B)DGEBHFCA

C)ABCDEFGII

D)ACBFEDHG

(2)树是结点的集合,它的根结点数目是

A)有且只有1

B)1或多于1

C)0或1

D)至少2

(3)如果进栈序列为el,e2,e3,e4,则可能的出栈序列是

A)e3,el,e4,e2

B)e2,e4,e3,el

C)e3,e4,el,e2

D)任意顺序

(4)在设计程序时,应采纳的原则之一是

A)不限制goto语句的使用

B)减少或取消注解行

C)程序越短越好

0)程序结构应有助于读者理解

(5)程序设计语言的基本成分是数据成分、运算成分、控制成分和

A)对象成分

B)变量成分

C)语句成分

D)传输成分

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

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

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

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

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

(7)下列不属于软件工程的3个要素的是

A)工具

B)过程

C)方法

D)环境

(8)单个用户使用的数据视图的描述称为

A)外模式

B)概念模式

C)内模式

D)存储模式

(9)将E-R图转换到关系模式时,实体与联系都可以表示成

A)属性

B)关系

C)键

[))域

(10)SQL语言又称为

A)结构化定义语言

B)结构化控制语言

C)结构化查询语言

D)结构化操纵语言

(11)下列叙述中正确的是

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

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

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

D)C语言的函数可以嵌套调用

(12)在C语言中,退格符是

A)\n

B)\t

C)\f

D)\b

(13)以下叙述中正确的是

A)构成C程序的基本单位是函数

B)可以在一个函数中定义另一个函数

C)main()函数必须放在其他函数之前

D)所有被调用的函数一定要在调用之前进行定义

(14)在C程序中,判逻辑值时,用“非0”表示逻辑值“真”,又用“0”表示逻辑值“假”。

在求逻辑值时,用()表示逻辑表达式值为“真”,又用()表示逻辑表达式值为“假”。

A)10

B)01

C)非0非0

D)11

(15)在C语言中,运算对象必须是整型数的运算符是

A)%

B)\

C)%和\

D)**

(16)字符型数据在机器中是用ASCH码表示的,字符“5”和“7”在机器中表示为

A)10100011和01110111

B)01000101和01100011

C)00110101和00110111

D)01100101和01100111

(17)若已定义:inta=25,b=14,c=19;以卜三目运算符(?:)所构成语句的执行后

a<=25&&b一<=2&&c?printf('***a=%d,b=%d,c=%d\n”,a,b,c):printfb=

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

A)***a=25,b=13,c=19

B)***a=26,b=14,c=19

C)nnna=25,b=13,c=19

D)###a=26,b=14,c=19

(18)若有定义:inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值

A)2.500000

B)2.750000

C)3.500000

D)0.000000

(19)下列程序段的输出结果是:

inta=1234;

floatb=123.456;

doublec=12345.54321;

printf("%2d,%2.If,%2.If”,a,b,c);

A)无输出

B)12,123.5,12345.5

C)1234,123.5,12345.5

D)1234,123.4,1234.5

(20)若运行以下程序时,从键盘输入ADescriptor<CR>(<CR>表示回车),则下面程序的

运行结果是#include<stdio.h>

main()

{charc;

intv0=l,vl=0,v2=0;

do{switch(c=getchar())

{case'a':case'A’:

case1e’:case'E’:

case'i':case'I’:

case'o':case'O':

case'u':case'U':vl+=l;

default:v0+=l;v2+=l;}

}while(c!=z\nz);

printf(,zvO=%d,vl=%d,v2=%d\nz,,vO,vl,v2);}

A)v0=7,vl=4,v2=7

B)v0=8,vl=4,v2=8

C)vO=ll,vl=4,v2=ll

D)v0=13,vl=4,v2=12

(21)设有以F程序段

intx=0,s=0;

while(!x!=0)s+=++x;

printf("%d〃,s);

A)运行程序段后输出0

B)运行程序段后输出1

C)程序段中的控制表达式是非法的

D)程序段执行无限次

(22)有如下程序

main()

{floatx=2.0,y;

if(x<0.0)y=0.0;

elseif(x>10.0)y=l.0/x;

elsey=l.0;

printf("%f\n",y);}

该程序的输出结果是

A)0.000000

B)0.250000

C)0.500000

D)1.000000

(23)执行下面的程序段后,变量k中的值为

intk=3,s[2];

s[0]=k;k=s[1]*10;

A)不定值

B)33

C)30

D)10

(24)以下程序段的描述,正确的是

x=-l;

do

{x=x*x;}

while(!x);

A)是死循环

B)循环执行两次

C)循环执行一次

D)有语法错误

(25)以下选项错误的是

A)main()

{intx,y,z;

x=O;y=x-l;

z二x+y;}

B)main()

{intx,y,z;

x=0,y=x+l;

z=x+y;}

C)main()

{intx;int

inty;

x=0,y=x+l;

z=x+y;}

D)main()

{intx,y,z;

x=O;y=x+l;

z=x+y,}

(26)有如下程序段

inta=14,b=15,x;

charc='A';

x=(a&&b)&&(c<'B');

执行该程序段后,x的值为

A)ture

B)false

C)0

D)1

(27)下列程序执行后的输出结果是

voidfund(inti);

voidfunc2(inti);

charst[]="hello,friend!”;

voidfund(inti)

{printf(z/%cz,,st[i]);

if(i<3){i+=2;func2(i);}}

voidfunc2(inti)

{printfst[i]);

if(i<3){i+=2;funcl(i);}}

main()

{inti=0;fund(i);printf(〃\n〃);)

A)hello

B)hel

C)hlo

D)him

(28)以下函数返回a所指数组中最大值所在的下标值

fun(int*a,intn)

{inti,j=0,p;

P=J;

for(i=j;i<n;i++)

if(a[i]>a[p]);

return(p);)

在下划线处应填入的内容是

A)i=p

B)a[p]=a[i]

C)P=j

D)p=I

(29)下面说明不正确的是

A)chara[101=〃china”;

B)chara[10],*p二a;p=〃china”

C)char*a;a=〃china”;

D)chara[10],*p;p=a="china”

(30)以下程序的输出结果是

#include<stdio.h>

voidprt(int*x,int*y,int*z)

{printf("d,%d,%d\n〃,++*x,++*y,*(z++));}

main()

{inta=10,b=40,c=20;

prt(&a,&b,&c);

prt(&a,&b,&c);}

A)11,42,31

12,22,41

B)11,41,20

12,42,20

C)11,21,40

11,21,21

D)11,41,21

12,42,22

(31)若有函数内部说明:inta[3][4];则数组a中各元素

A)可在程序的运行阶段得到初值0

B)可在程序的编译阶段得到初值0

C)不能得到确定的初值

D)可在程序的编译或运行阶段得到初值0

(34)定义如下变量和数组:

intk;

inta[3][3]={9,8,7,6,5,4,3,2,1);

则下面语句的输出结果是

for(k=0;k<3;k++)printf(〃%d〃,a[k][k]);

A)753

B)951

0963

D)741

(35)下列程序执行后的输出结果是

main()

{chararr[2][4];

strcpy(arr,〃you〃);strcpy(arr[1],"m6〃);

arr[0][3]=';

printf(〃%s\n〃,arr);}

A)you&me

B)you

C)me

D)err

(36)有以下函数

charfun(char*p)

{returnp;}

该函数的返回值是

A)无确切的值

B)形参p中存放的地址值

C)一个临时存储单元的地址

D)形参p自身的地址值

(37)以下正确的说法是

A)定义函数时,形参的类型说明可以放在函数体内

B)return后边的值不能为表达式

C)如果函数值的类型与返回值类型不一致,以函数值类型为准

D)如果形参与实参类型不一致,以实参类型为准

(38)有以下程序

intf(intn)

{if(n-1)return1;

elsereturnf(n-1)+1;)

main()

{inti,j=0;

for(i=l;i<3;i++)j+=f(i);

printf("%d\n",j):}

程序运行后的输出结果是

A)4

B)3

C)2

D)1

(39)设有如下定义:

strucksk

{inta;

floatb;

}data;

int*p;

若要使P指向data中的a域,正确的赋值语句是

A)p=&a;

B)p=data.a;

C)p=&data.a;

D)*p=data.a;'

(40)以下对结构体类型变量的定义中,不正确的是

A)typedefstructaa

{intn;

floatm;

}AA;

AAtdl;

B)^defineAAstructaa

AA{intn;

floatm;

}tdl;

C)struct

{intn;

floatm;

}aa;

structaatdl;

D)struct

{intn;

floatm;

}tdl;

(41)若说明int*p,n;则通过语句scanf能够正确读入数据的程序段是

A)p=&n;scanf(〃%d〃,&p);

B)p=&n;scanf(〃%d〃,*p);

C)scanf(〃%d〃,n);

D)p=&n;scanfp);

(42)在下述程序中,判断i>j共执行的次数是

main()

{inti=0,j=10,k=2,s=0;

for(;;)

{i+=k;

if(i>j)

{printfs);

break;

}s+=i;

I

}

A)4

B)7

C)5

D)6

(43)以下4个选项中,不能看做一条语句的是

A);

B)a=5,b=2.5,c=3.6;

C)if(a<5);

D)if(b!=5)x=2;y=6;

(44)在C语言中,变量的隐含存储类别是

A)auto

B)static

C)extern

D)无存储类别

(45)若有以下程序

#include<stdio.h>

voidf(intn);

main()

{voidf(intn);

f(5);

}

voidf(intn)

{printf("%d\n〃,n);)

则以下叙述中不正确的是

A)若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f

B)若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以正确调用

函数f

C)对于以上程序,编译时系统会提示出错信息:提示对f函数重复说明

D)函数f无返回值,所以可用void将其类型定义为无返回值型

(46)若有下面的说明和定义

structtest

{intml;charm2;floatm3;

unionuu{charul[5];intu2[2];}ua;

}myaa;

则sizeof(structtest)的值是

A)12

B)16

C)14

D)9

(47)以下程序的输出是

structst

{intx;int*y;}*p;

intdt[4]={10,20,30,40);

structstaa[4]={50,&dt[01,60,&dt[0],60,&dt[0],60,&dt[0]};

main()

{P=aa;

printf("%d\n〃,++(p->x));

}

A)10

B)11

C)51

D)60

(48)若有运算符《,sizeof,二,则它们按优先级山高至低的正确排列次序是

A)sizeof,&=,«,"

B)sizeof,«,\&二

C)*,«,sizeof,&=

D)<<,,&=,sizeof

(49)函数fseek(pf,OL,SEEKEND)中的SEEKEND代表的起始点是

A)文件开始

B)文件末尾

C)文件当前位置

D)以上都不对

(50)有以下程序

#include<stdio.h>

main()

{FILE*fp;inti=20,j=30,k,n;

fp=fopen(〃dl.dat〃,〃w〃);

fprintf(fp,〃%d\n〃,i)jfprintf(fp,〃/d\n〃,j);

fclose(fp);

fp二fopen(〃dl.dat〃,〃r〃);

fscanf(fp,"%d%d〃,&k,&n);printf(〃%d%d\n,z,k,n);

fclose(fp);

}

程序运行后的输出结果是

A)2030

B)2050

C)3050

D)3020

二、填空题

(1)数据结构分为逻辑结构与存储结构,线性链表属于【1】O

解析:数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构;数据的存储结构是指

数据的逻辑结构在计算机存储空间中的存放形式。在数据的存储结构中,不仅要存放各数据

元素的信息,还需要存放各数据元素之间的前后件关系的信息。

(2)在面向对象方法中,类之间共享属性和操作的机制称为【2】。

解析:类是面向对象语言中必备的程序语言结构,用来实现抽象数据类型。类与类之间的

继承关系实现了类之间的共享属性和操作,一个类可以在另个已定义的类的基础上定义,

这样使该类型继承了其超类的属性和方法,当然,也可以定义自己的属性和方法。

(3)耦合和内聚是评价模块独立性的两个主要标准,其中【3】反映了模块内各成分之间

的联系。

解析:内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量,内聚是从功能角度

来度量模块内的联系;耦合性是模块间互相连接的紧密程度的度量。

(4)一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体”项目主管〃与实

体"项目”的联系属于【4】的联系。

解析:两个实体集间的联系实际上是实体集间的函数关系,这种函数关系可以有3种,即

一对一(1:1)的联系、一对多(1:N)或多对一(N:1)的联系和多对多(N:N)的联系。

(5)数据库设计分为以下6个设计阶段:需求分析阶段、【5】、逻辑设计阶段、物理设

计阶段、实施阶段、运行和维护阶段。

解析:数据库设计分为以下6个设计阶段:需求分析阶段、概念设计阶段、逻辑设计阶段、

物理设计阶段、实施阶段及数据库运行和维护阶段。

(6)以下程序的运行结果是[6】。

#defineMAX(a,b)(a>b?a:b)+1

main()

{inti=6,j=8,k;

printf(〃%d\n〃,MAX(i,j));

)

解析:本题考查宏定义与三目运算符的综合用法,宏定义是原样替换,本题中,如果a>b

成立,则a+1的值为整个表达式的值,否则为b+1的值为整个表达式的值,(应注意后面的

加1)o

(7)以下程序的功能是从健盘输入若干学生的成绩,并输出最高成绩和最低成绩,当输入

负数时结束。请填空。

main()

{floatx,amax,amin;

scanf;

amax=x;

amin=x;

while([7])

{if(x>amax)

amax=x;

else

if[8]

amin二x;

elsescanf&x);

)

printf("\namax=%f\namin=%f\nz,,amax,amin);

)

解析:本题先从键盘接受数值,并分别赋给amax(用于保存最高成绩)和amin(用干保存

最低成绩),然后通过while循环控制是否结束输入,并且通过if语句来给amax和amin

赋值和进行下一次的输入。

(8)在对文件操作的过程中,若要求文件的位置指针回到文件的开始处,应当调用的函数

是【9】o

答案;rewind0

(9)在计算机中,字符的比较是对它们的[10]进行比较。

解析:C语言中,字符也可以进行比较运算,且是按照ASCH码值进行的。

(10)在内存中,存储字符'X,要占用1个字节,存储字符串"X"要占用[11]个字节。

解析:计算机存储一个字符用1个字节,存储字符串时,每个字符用占用1个字节,另在

字符串的有效字符之后存储1个字符串的结束标记符。所以存储字符串“X”要占用2个字

节,存储字符'x'只要1个字节。

(11)下列程序的输出结果是16.00,请填空。

main()

{inta=9,b=2;

floatx=[12],y=l.1,z;

z=a/2+b*x/y+l/2;

printf("%5.2f\n",z);

)

解析:本题最后一条语句,表示以浮点格式输出z的值,宽度为5,其中所含2位小数,

应该注意的是,两个整型运算结果仍为整型,如1/2的结果为0,对本题可逐步求解:

16.00=9/2+2*x/l.1+1/2

16.00=4+2*x/l.1+0

12.00=2*x/l.1

所以,x的值为6.6«

(12)设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写Hlfun函

数的首部【13]。要求形参名为b。

main()

{doubles[10][22];

intn;;

I

I

fun(s);

}

解析:本题中,为了明确表示“不带回值”,可以用“void”定义“无类型”(或称“空

类型”)。这系统就保证不使函数带回任何值,二维数组的第一维可以省略。

(13)下列程序的功能是输入一个整数,判断是否是素数,若为素数输出1,否则输出0,

请填空。

main()

{inti,x,y=l;

scanf(绘d”,&x);

for(i=2;i<=x/2;i++)

if[14]{y=0;break;}

printf(/,%d\n/,,y);

}

解析:为判数x是否是素数,预置变量y的值为1(x可能是素数),然后用循环,用2

至x/2的整数i测试对x的整除性,若能被其中的某个整数整除,则x是合数,置y的值为

0(x不是素数),结束测试循环。若都不能整除,则x为素数。i能否整除x,可用求余运

算蝴i等于。来判定。所以程序中的空框可填斓i==0。测试x为素数的代码可写成:y=

1;

for(i=2;i<=x/2;i++)

if(x%i==0){y=0;break;}

(14)下面程序的功能是将一个字符串str的内容颠倒过来,请填空。

#include<string.h>

main()

{inti,j,[15];charstr[]={"1234567”};

for(i=0,j=strlen(str)[16];i<j;i++,j一

温馨提示

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

评论

0/150

提交评论