程序员的真题

2011三月计算机等级考试二级C语言笔试:文字版

一、选择题

(1)下列关于栈的说法是正确的。

a)可以首先删除堆栈的顶部元素。

b)最后只能删除栈顶元素。

c)底部元素永远不能删除。

d)以上三种说法都不正确。

(2)下列说法是正确的。

a)具有多于一个根节点的数据结构不一定是非线性的。

b)只有一个根节点的数据结构不一定是线性的。

c)循环链表是非线性的。

d)双向链表是非线性的。

(3)一棵二叉树* * *有7个节点,其中只有1叶子,所以二叉树的深度为(假设根节点在1层)。

A)3 B)4 C)6 D)7

(4)在软件开发中,需求分析阶段产生的主要文档有

a)软件集成测试计划b)软件详细设计规范

用户手册软件需求规格

(5)结构化程序所要求的基本结构不包括

a)序列结构B)跳转

c)选择(分支)结构d)重复(循环)结构

(6)下列描述中错误的是

a)系统的总体结构图支持软件系统的详细设计。

b)软件设计是将软件需求转化为软件表示的过程。

c)数据结构和数据库设计是软件设计的任务之一。

D)PAD图是详细软件设计的表示工具。

(7)负责数据库查询操作的数据库语言是

a)数据定义语言

b)数据管理语言

c)数据操作语言

d)数据控制语言

(8)一个老师可以教多门课,一门课可以多位老师教。那么实体教师与课程的关系是

A)1:1联系人B)1:m联系人

C)m:1触点D)m:n触点

(9)存在如下三种关系R、S和T:

那么从关系R和S获得关系T的操作是

a)自然连接b)交叉c)分割d)和

(10)将无符号整数类定义为UInt,下面可以作为UInt类的实例化值。

A)-369 B)369 C)0.369 D)整数集{1,2,3,4,5}

(11)运行计算机高级语言程序有两种方式:编译执行和解释。以下说法是正确的。

A)C语言程序只能编译执行。

B)C语言程序只能被解释和执行。

C)C语言程序可以编译和执行,也可以解释。

d)以上陈述都不正确。

(12)下列说法中错误的是

a)C语言的可执行程序由一系列机器指令组成。

b)C语言编写的源程序不能直接在计算机上运行。

c)编译后的二进制目标程序需要连接后才能运行。

d)的。C源程序生成的exe文件不能在没有安装C语言集成开发环境的机器上运行。

(13)以下哪个选项不能作为C程序的合法常量

A)1,234 B)'123 '

C)123 D)"\x7G "

(14)下列选项中,可以作为C程序合法实数的是

a)1e0b)3.0e 0.2

9.12E

(15)如果有定义的语句:int a=3,b=2,c = 1;下列选项中不正确的赋值表达式是

a)a =(b = 4)= 3;b)a = b = c+1;

c)a =(b = 4)+c;d)a = 1+(b = c = 4);

(16)具有以下程序段。

char name[20];

int num

scanf("name=%s num=%d ",name;& ampnum);

当执行上述程序段并从键盘输入:name = lilinum = 1001之后,name的值为

莉莉

B)name=Lili

c)丽丽数量=

d)name = Lili num = 1001

(17)if语句的基本形式是:if (expression)语句,下面关于“expression”的值的语句中哪一个是正确的

a)必须是逻辑值b)必须是整数值。

c)必须是正数d)可以是任何合法值。

(18)有以下步骤。

# include & ltstdio & gt

主()

{ int x = 011;

printf("%d\n ",++ x);

}

程序运行后的输出结果是

a)12 B)11 C)10D)9

(19)有以下步骤。

# include & ltstdio & gt

主()

{ int s;

scanf("%d ",& amps);

while(s & gt;0)

{开关

{ case1:printf("%d ",s+5);

case2:printf("%d ",s+4);打破;

case3:printf("%d ",s+3);

默认值:printf("%d ",s+1);打破;

}

scanf("%d ",& amps);

}

}

在运行时,如果输入123450,输出结果是

a)6566456 B)66656 C)66666D)6666656

(20)有以下程序段

int i,n;

for(I = 0;我& lt8;i++)

{ n = rand()% 5;

开关(n)

{案例1:

案例三:printf("%d\n ",n);打破;

案例二:

情况4:printf("%d\n ",n);继续;

案例0:出口(0);

}

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

}

下列关于程序段执行的说法是正确的。

a)for循环语句执行了8次。

b)当生成的随机数n为4时,结束循环操作。

c)当生成的随机数n为1和2时什么都不做。

d)当生成的随机数n为0时,结束编程操作。

(21)有以下程序。

# include & ltstdio & gt

主()

{ char s[]= " 012xy \ 08s 34 f 4 w 2 ";

int i,n = 0;

for(I = 0;s[i]!=0;i++)

if(s[I]& gt;= ' 0 ' & amp& amps[I]& lt;= ' 9 ')n++;

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

}

程序运行后的输出结果是

A)0 B)3 C)7 D)8

(22)如果I和k都是int类型的变量,那么对于。

for(i=0,k =-1;k = 1;k++)printf(" * * * * * \ n ");

下列关于语句执行的陈述是正确的

a)循环执行两次。

b)循环执行一次。

c)循环不执行一次。

d)形成无限循环。

(23)有以下程序

# include & ltstdio & gt

主()

{ char b,c;int I;

b = ' ac = ' A

for(I = 0;我& lt6;i++)

{ if(I % 2)putchar(I+b);

else putchar(I+c);

} printf(" \ n ");

}

程序运行后的输出结果是

a)ABCDEF B)ABCDEF C)ABCDEF D)ABCDEF

(24)定义为双x[10],* p = x;下列可以将数据读入下标为6的数组X的元素的正确说法是

A)scanf("%f ",& ampx[6]);B)scanf("%lf ",*(x+6));

C)scanf("%lf ",p+6);D)scanf("%lf ",p[6]);

(25)有以下程序(注:字母A的ASCII码值为65)。

# include & ltstdio & gt

无效乐趣(字符)

{ while(*s)

{ if(*s%2) printf("%c ",* s);

s++;

}

}

主()

{ char a[]= " BYTE ";

好玩(一);printf(" \ n ");

}

程序运行后的输出结果是

A)BY B)BT C)YT D) YE

(26)有以下程序段

# include & ltstdio & gt

主()

{ …

while( getchar()!= ' \ n ');

}

以下陈述中正确的是

a)该while语句将无限循环。

B) getchar()不能出现在while语句的条件表达式中。

c)当执行这个while语句时,程序只能通过按Enter键继续执行。

d)执行该while语句时,按任意键继续执行程序。

(27)有以下程序

# include & ltstdio & gt

主()

{ int x=1,y = 0;

如果(!x)y++;

else if(x==0)

如果(x)y+= 2;

否则y+= 3;

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

}

程序运行后的输出结果是

A)3 B)2 C)1 D) 0

(28)如果有定义的语句:char s[3][10],(*k)[3],* p;,下列赋值语句是正确的

a)p = s;b)p = k;c)p = s[0];d)k = s;

(29)有以下程序

# include & ltstdio & gt

无效资金(char *c)

{ while(*c)

{ if(* c & gt;= ' a ' & amp& amp* c & lt= ' z ')* c = * c-(' A '-' A ');

c++;

}

}

主()

{ char s[81];

获取;乐趣;看跌期权:

}

输入你好北京,程序的输出是

a)你好北京B)你好北京C)你好北京D)你好北京

(30)下面这个函数的作用是通过键盘输入数据,给数组中的所有元素赋值。

# include & ltstdio & gt

#定义编号10

void fun(int x[N])

{ int I = 0;

而(我& lt& gt

}

节目中下划线部分应该填的是

a)x+I B)& amp;x[i+1]

c)x+(i++)D)& amp;x[++i]

(31)有以下程序。

# include & ltstdio & gt

主()

{ char a[30],b[30];

scanf("%s ",a);

gets(b);

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

}

当程序运行时,如果您输入:

你好吗?我很好& lt输入>

那么输出结果是

你好吗?b)如何

我很好,你呢?我很好

你好吗?我很好。你好吗?

(32)提供了以下功能定义

int fun(int k)

{ if(k & lt;1)返回0;

else if(k==1)返回1;

else返回fun(k-1)+1;

}

如果执行调用语句:n = fun(3);,fun函数总是被调用的次数是* * *

A)2 B)3 C)4 D)5

(33)有以下程序

# include & ltstdio & gt

int fun (int x,int y)

{ if (x!=y)返回((x+y);2);

else返回(x);

}

主()

{ int a=4,b=5,c = 6;

printf("%d\n ",fun(2*a,fun(b,c)));

}

程序运行后的输出结果是

A)3 B)6 C)8 D)12

(34)有以下程序

# include & ltstdio & gt

int fun()

{ static int x = 1;

x * = 2;

返回x;

}

主()

{ int i,s = 1;

for(I = 1;我& lt=3;i++)s * = fun();

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

}

程序运行后的输出结果是

A)0 B)10 C)30 D)64

(35)有以下程序

# include & ltstdio & gt

#定义S(x) 4*(x)*x+1

主()

{ int k=5,j = 2;

printf("%d\n ",S(k+j));

}

程序运行后的输出结果是

A)197 B)143 C)33 D)28

(36)有一个定义:struct { char mark[12];int num 1;双num2} t1,T2;,如果变量已经被正确地赋予了初始值,下面的说法就是错误的。

a)t 1 = T2;b)T2 . num 1 = t 1 . num 1;

c)T2 . mark = t 1 . mark;d)T2 . num 2 = t 1 . num 2;

(37)有以下程序

# include & ltstdio & gt

结构顺序

{ int x,y;}dt[2]={1,2,3,4 };

主()

{

struct ord * p = dt

printf("%d,",++(p-& gt;x));printf(" % d \ n " ,++(p-& gt;y));

}

程序运行后的输出结果是

A)1,2 B)4,1 C)3,4 D)2,3

(38)有以下程序

# include & ltstdio & gt

结构S

{ int a,b;}data[2]={10,100,20,200 };

主()

{ struct S p = data[1];

printf(" % d \ n " ,++(p . a));

}

程序运行后的输出结果是

a)10 B)11 C)20D)21

(39)有以下程序

# include & ltstdio & gt

主()

{无符号字符a=8,c;

c = a & gt& gt3;

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

}

程序运行后的输出结果是

A)32 B)16 C)1 D)0

(40)设fp被定义,执行语句fp=fopen("file "," w ");,下列对文本文件文件操作的选项描述是正确的。

a)写操作后可以从头开始读;b)只能写不能读。

c)可以写在原内容之后d)可以随意读写。

第二,填空

(1)有序线性表可以进行二进制搜索的前提是线性表必须存储在1中。

(2)二叉树的中间遍历结果是DBEAFC,前面遍历结果是ABDECF,后面遍历结果是2。

(3)测试软件设计的最小单元(模块或程序单元)通常称为3测试。

(4)实体完整性约束要求关系数据库中元组4的属性值不能为空。

(5)在关系A(S,SN,D)和关系B(D,CN,NM)中,如果A的主关键字是S,B的主关键字是D,那么5就是关系A的外码..

(6)以下程序运行后的输出结果为6。

# include & ltstdio & gt

主()

{ int a;

a =(int)((double)(3/2)+0.5+(int)1.99 * 2);

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

}

(7)有以下程序

# include & ltstdio & gt

主()

{ int x;

scanf("%d ",& ampx);

if(x & gt;15) printf("%d ",x-5);

if(x & gt;10) printf("%d ",x);

if(x & gt;5) printf("%d\n ",x+5);

}

如果12,则输出结果为7。

(8)有以下程序(注:字符0的ASCII码值为48)

# include & ltstdio & gt

主()

{ char c1,C2;

scanf("%d ",& ampc 1);

C2 = c 1+9;

printf("%c%c\n ",c1,C2);

}

如果为48,则输出结果为8。

(9)具有以下功能

void prt(char ch,int n)

{ int I;

for(I = 1;我& lt= n;i++)

printf(i%6!=0?" %c":"%c\n ",ch);

}

执行call语句prt('* ',24);之后,函数* * *输出9行*。

(10)以下程序的输出是10。

# include & ltstdio & gt

主()

{ int x=10,y=20,t = 0;

if(x = = y)t = x;x = y;y = t;

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

}

(11)已知数组中有n个元素,用A表示..fun函数的作用是转换下标k(k >;0)开头的所有后续元素向前移动一个位置。请填空。

void fun(int a[N],int k)

{ int I;

for(I = k;我

}

(12)有以下程序。请在12处填写正确的语句,以便程序能够正常编译和运行。

# include & ltstdio & gt

12 ;

主()

{ double x,y,(* p)();

scanf("%lf%lf ",& ampx & amp;y);

p = avg

printf("%f\n ",(*p)(x,y));

}

双平均(双a,双b)

{ return((a+b)/2);}

(13)以下程序的输出是13。

# include & ltstdio & gt

主()

{ int i,n[5]= { 0 };

for(I = 1;我& lt=4;i++)

{ n[I]= = n[I-1]* 2+1;printf("%d ",n[I]);}

printf(" \ n ");

}

(14)以下程序的输出是14。

#包括

#包括

#包括

主()

{ char * p;int I;

p =(char *)malloc(sizeof(char)* 20);

strcpy(p,“欢迎”);

for(I = 6;我& gt=0;I-)putchar(*(p+I));

printf(" \ n-");免费(p);

}

(15)以下程序的输出是15。

# include & ltstdio & gt

主()

{ FILE * fpint x[6]={1,2,3,4,5,6},I;

fp=fopen("test.dat "," WB ");

fwrite(x,sizeof(int),3,FP);

倒带(FP);

fread(x,sizeof(int),3,FP);

for(I = 0;我& lt6;i++) printf("%d ",x[I]);

printf(" \ n ");

fclose(FP);

}