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语言集成开发环境的机器上运行。
& gt(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)有以下步骤。
#包括
主()
{ int x = 011;
printf("%d\n ",++ x);
}
程序运行后的输出结果是
a)12 B)11 C)10D)9
(19)有以下步骤。
#包括
主()
{ 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);打破;
案例二:
案例四:printf("%d\n ",n);继续;
案例0:出口(0);
}
printf("%d\n ",n);
}
下列关于程序段执行的说法是正确的。
a)for循环语句执行了8次。
b)当生成的随机数n为4时,结束循环操作。
c)当生成的随机数n为1和2时什么都不做。
d)当生成的随机数n为0时,结束编程操作。
(21)有以下程序。
#包括
主()
{ 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)有以下程序
#包括
主()
{ 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)。
#包括
无效乐趣(字符)
{ while(*s)
{ if(*s%2) printf("%c ",* s);
s++;
}
}
主()
{ char a[]= " BYTE ";
好玩(一);printf(" \ n ");
}
程序运行后的输出结果是
A)BY B)BT C)YT D) YE
(26)有以下程序段
#包括
主()
{ …
while( getchar()
!= ' \ n ');
…
}
以下陈述中正确的是
a)该while语句将无限循环。
B) getchar()不能出现在while语句的条件表达式中。
c)当执行这个while语句时,程序只能通过按Enter键继续执行。
d)执行该while语句时,按任意键继续执行程序。
(27)有以下程序
#包括
主()
{ 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)有以下程序
#包括
无效资金(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)下面这个函数的作用是通过键盘输入数据,给数组中的所有元素赋值。
#包括
#定义编号10
void fun(int x[N])
{ int I = 0;
而(我
}
节目中下划线部分应该填的是
a)x+I B)& amp;x[i+1]
c)x+(i++)D)& amp;x[++i]
(31)有以下程序。
#包括
主()
{ char a[30],b[30];
scanf("%s ",a);
gets(b);
printf("%s\n %s\n ",a,b);
}
当程序运行时,如果您输入:
你好吗?我很好& lt输入>
那么输出结果是
你好吗?b)如何
我很好,你呢?我很好
你好吗?我很好
d)你是第几排?
(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)有以下程序
#包括
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)有以下程序
#包括
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)有以下程序
#包括
#定义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)有以下程序
#包括
结构顺序
{ 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)有以下程序
#我
nclude
结构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)有以下程序
#包括
主()
{无符号字符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。
#包括
主()
{ int a;
a =(int)((double)(3/2)+0.5+(int)1.99 * 2);
printf("%d\n ",a);
}
(7)有以下程序
#包括
主()
{ 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)
#包括
主()
{ 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。
#包括
主()
{ 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处填写正确的语句,以便程序能够正常编译和运行。
#包括
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。
#包括
主()
{ 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。
#包括
主()
{ 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);
}
2011三月计算机二级C答案:
一、选择题
01-10:ABDDB ACDCB
11-20:ADBAA ADCAD
21-30:BDBCD CDCCC
31-40:BBBDB CDDCB
第二,填空
1.订购了2。DEBFCA 3。第四单元。主要5。d 6.3 7.1217 8.09 9.4 10.20 0。
11 . I-1 12 . double avg(双a,双b);13.13715 14