20109月全国计算机等级考试二级C语言笔试试题及答案
一、选择题((1-10)每题2分,(11-50)每题1.60分))
1)下列选项中不属于软件生命周期开发阶段任务的是
    A)详细设计    B)概要设计   C)软件维护  D)软件测试
2树是结点的集合,它的根结点数目是
A)有且只有1  B1或多于1  C01    D)至少2
3)在面向对象方法中,实现信息隐蔽是依靠
A)对象的继承  B)对象的多态  C)对象的封装 D)对象的分类
4程序设计语言的基本成分是数据成分、运算成分、控制成分和
A)语句成分    B)变量成分    C)对象成分  D)传输成分
5)冒泡排序在最坏情况下的比较次数是
An/2        Bnlog2n      Cnn-1/2  Dnn+1/2
6)下列叙述中,不属于软件需求规格说明书的作用的是
A)作为确认测试和验收的依据
B)反映出用户问题的结构,可以作为软件开发工作的基础和依据
C)便于用户、开发人员进行理解和交流
D)便于开发人员进行需求分析
7)下列叙述中错误的是
    A)一个C语言程序只能实现一种算法 BC程序可以由多个程序文件组成
CC程序可以由一个或多个函数组成 D)一个函数可单独作为一个C程序文件存在
8)下列不属于软件工程的3个要素的是
A)方法        B)过程        C)工具        D)环境
9)下列叙述中正确的是
A)数据库系统是一个独立的系统,不需要操作系统的支持
B)数据库技术的根本目标是要解决数据的共享问题
C)数据库管理系统就是数据库系统
D)以上三种说法都不对
10)下列叙述中正确的是
A)每个C程序文件中都必须有一个main()函数
B)在C程序的函数中不能定义另一个函数
    CC程序可以由一个或多个函数组成
    D)在C程序中main()函数的位置是固定的
11)将E-R图转换到关系模式时,实体与联系都可以表示成
A)属性      B)关系        C)键          D)域
12)下列定义变量的语句中错误的是
    Adouble int_; Bint _int;    Cchar For    Dfloat USS
13)下列叙述中正确的是
AC语言编译时不检查语法  BC语言的子程序有过程和函数两种
CC语言的函数可以嵌套定义 DC语言的函数可以嵌套调用
14)以下选项中,合法的一组C语言数值常量是
A) 0x8A      B)12    C).177      D) 028
15)以下叙述中正确的是
A)构成C程序的基本单位是函数
B)可以在一个函数中定义另一个函数
Cmain()函数必须放在其他函数之前
D)所有被调用的函数一定要在调用之前进行定义
16)若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是
Ascanf("%d",&p);            B)scanf("%d%d%d",a,b,c);
C)scanf("%d",p);              D) scanf("%d",a,b,c);
17) 有以下程序
main()
{int x,y,z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z);
}
程序运行后的输出结果是
A2,2,3          B2,2,2        C2,3,1            D2,1,1
18) 若已定义:int a=25,b=14,c=19;以下三目运算符(?:)所构成语句的执行后a<=25&&b--<=2&&c?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf("###a=%d,b=%d,c=%dn"a,b,c);程序输出的结果是
  A***a=25,b=13,c=19          B***a=26,b=14,c=19
  C### a=25,b=13,c=19        D### a=26,b=14,c=19
19)下列程序段的输出结果是
int a=1234;
float b=123.456;
double c=12345.54321;
printf"-,%2.1f,%2.1f",a,b,c;
  A)无输出  B12123.5,12345.5  C1234,123.5,12345.5  D1234,123.4,1234.5
20)有以下程序
main()
{int a=0,b=0;
a=10; /*a赋值
b=20; b赋值 */
printf("a+b=%d\n",a+b); /* 输出计算结果 */
}
  程序运行后输出结果是
A30      Ba+b=30    Ca+b=0        D)出错
21)若运行以下程序时,从键盘输入 ADescriptor(表示回车),则下面程序的运行结果是
#include
main()
{ char c;
int v0=1,v1=0,v2=0;
do{ switchc=getchar())
{ case ′a′:case ′A′:
case ′e′:case ′E′:
case ′i′:case ′I′:
case ′o′:case ′O′:
case ′u′:case ′U′:v1+=1;
default:v0+=1;v2+=1;
}
} whilec!=′n′;
printf"v0=%d,v1=%d,v2=%dn",v0,v1,v2;
}
  Av0=11,v1=4,v2=11        Bv0=8,v1=4,v2=8
  Cv0=7,v1=4,v2=7          Dv0=13,v1=4,v2=12
(22) 有以下程序
#include
main()
{int y=9;
for( y>0;y--)
if(y%3= =0) printf("%d",--y);
}
程序的运行结果是
A732      B433      C852        D874
(23) 设有以下程序段
int x=0,s=0;
while!x!=0s+=++x;
printf"%d",s;

A)运行程序段后输出0                B)运行程序段后输出1
C)程序段中的控制表达式是非法的      D)程序段执行无限次
24)有以下程序
fun(int x,int y){return(x+y);}
main()
{int a=1,b=2,c=3,sum;
sum=fun((a++,b++b,a+b),c++);
printf("%d\n",sum);
}
执行后的输出结果是
    A5        B7        C8            D3
25)执行下面的程序段后,变量k中的值为
int k=3, s2;
s0=k; k=s1*10;
A)不定值      B35        C31        D20
26)以下叙述中错误的是
A)改变函数形参的值,不会改变对应实参的值
B)函数可以返回地址值
C)可以给指针变量赋一个整数作为地址值
D)当在程序的开头包含文件stdio.h时,可以给指针变量赋NULL
27)以下程序段的描述,正确的是
x=-1;
do
{x=x*x;} while!x;
A)是死循环  B)循环执行两次  C)循环执行一次  D)有语法错误
28)有以下程序
fun(int x,int y)
{static int m=0,i=2;
i+=m+1;m=i+x+y; return m;
}
main()
{int j=1,m=I,k;
k=fun(j,m); printf("%d",k);
k=fun(j,m); printf("%d\n",k)
}
执行后的输出结果是
A5,5      B5,11     C11,11      D全国计算机二级考试报名入口11,5
29)有以下程序
fun(int x)
{int p;
if(x==0║x= =1) return(3);
p=x-fun(x=2);
retum p;
}main()
{ prinf("%d\n",fun(7));}
执行后的输出结果是
A7      B3      C3        D0
30)在16位编译系统上,右有定义int a[ ]={10,20,30},*p=&a;,当执行p++;后,下列说法错误的是
    Ap向高地址移了一个字节  Bp抽高地址移了一个存储单元
Cp向高地址移了两个字节  Dpa+1等价
31)有以下程序
main()
{int a=1,b=3,c=5;
int *p1=&a,*p2=&b,*p=&c;
*p=*p1*(*p2);
printf("%d\n",c);
}
执行后的输出结果是
A1    B2      C3      D4
32)下列程序执行后的输出结果是
void func1int i;
void func2int i;
char st[]="hello,friend!";
void func1int i
{ printf"%c",sti]);
ifi<3{i+=2;func2i;}
}
void func2int i
{ printf"%c",sti]);
ifi<3{i+=2;func1i;}
}
main()
{ int i=0; func1i; printf"n";}
Ahello    Bhel    Chlo    Dhlm
33)在下述程序中,判断i>j共执行的次数是
main()
{ int i=0, j=10, k=2, s=0;
for ;;
{ i+=k;
ifi>j
{ printf"%d",s);
break;
} s+=i;
}
}
A4      B7      C5        D6
34)以下函数返回a所指数组中最大值所在的下标值
funint *a,int n
{ int i,j=0,p;
p=j;
fori=j;iifai>ap]);
returnp;
}
在下划线处应填入的内容是
Ai=p    Bap=ai    Cp=j    Dp=i