二级C语言真题2015年03月-(1)
一、选择题
1、下列关于算法复杂度叙述正确的是______。
A.最坏情况下的时间复杂度一定高于平均情况的时间复杂度
B.时间复杂度与所用的计算工具无关
C.对同一个问题,采用不同的算法,则它们的时间复杂度是相同的
D.时间复杂度与采用的算法描述语言有关
2、设有栈S和队列Q,初始状态均为空。首先依次将A,B,C,D,E,F入栈,然后从栈中退出3个元素依次入队,再将X,Y,Z入栈后,将栈中所有元素退出并依次入队,最后将队列中所有元素退出,则退队元素的顺序为______。
A.DEFXYZABC    B.FEDZYXCBA    C.FEDXYZCBA    D.DEFZYXABC
3、下列叙述中正确的是______。
A.有两个指针域的链表称为二叉链表
B.循环链表是循环队列的链式存储结构
C.带链的栈有栈顶指针和栈底指针,因此又称为双重链表
D.节点中具有多个指针域的链表称为多重链表
4、某二叉树共有845个节点,其中叶子节点有45个,则度为1的节点数为______。
A.400    B.754    C.756    D.不确定
5、软件需求分析阶段的主要任务是______。
A.确定软件开发方法 B.确定软件开发工具  C.确定软件开发计划  D.确定软件系统的功能
6、下面对软件测试描述错误的是______。
A.严格执行测试计划,排除测试的随意性 B.随机地选取测试数据
C.软件测试的目的是发现错误 D.软件测试是保证软件质量的重要手段
7、结构化程序的3种基本控制结构是______。
A.顺序、选择和重复(循环)    B.过程、子程序和分程序
C.顺序、选择和调用 D.调用、返回和转移
8、数据库中对概念模式内容进行说明的语言是______。
A.数据定义语言  B.数据操纵语言  C.数据控制语言  D.数据宿主型语言
9、某个工厂有若干个仓库,每个仓库存放有不同的零件,相同零件可能放在不同的仓库中。则实体仓库和零件间的联系是______。
A.多对多  B.一对多  C.多对一  D.一对一
10、有3个关系R、S和T如下:
则由关系R和S得到关系T的操作是______。
A.交  B.差  C.并    D.选择
11、以下叙述正确的是______。
A.计算机只接收由0和1代码组成的二进制指令或数据
B.计算机只接收由0和1代码组成的十进制指令或数据
C.计算机可直接接收并运行C源程序
D.计算机可直接接收并运行任意高级语言编写的源程序
12、若有C语言表达式2+3*4+7/3,以下选项中叙述正确的执行顺序是______。
A.先执行3*4得12,再执行7/3得2.5,最后执行2+12+2.5得16.5
B.先执行3*4得12,再执行2+12得14,再执行7/3得2,最后执行14+2得16
C.先执行7/3得2,再执行3*4得12,再执行12+2得14,最后执行2+14得16
D.先执行2+3得5,再执行5*4得20,再执行20+7得27,最后执行27/3得9
13、若有定义:char c;int d;程序运行时输入:c=1,d=2<回车>,能把字符1输入给变量e、整数2输入给变量d的输入语句是______。
A.scanf("c=%d d=%d",&c,&d);    B.scanf("c=%c d=%d",&c,&d);
C.scanf("c=%d,d=%d",&c,&d);    D.scanf("c=%c,d=%d",&c,&d);
14、以下选项中,与n=i++完全等价的表达式是______。
A.n=i,i:i+1    B.n+=i+1    C.i=i+1,n=i    D.n=++i
15、设有定义:
int n=1234;double x=3.1415;则语句
printf("%3d,%1.3f\n",n,x);
的输出结果是______。
A.1234,3.142    B.123,3.142    C.1234,3.141    D.123,3.141
16、有以下程序:
#include<stdio.h>
main()
{  int a,b;
for(a=0;a<3;a++)
{  seanf("%d",&b);
switch(b)
{  default: printf("%d,",++b);
case 1: printf("%d,",++b);
case 2: printf("%d,",++b);
}
}
}
执行时输入:1 2 3<回车>,则输出结果是______。
A.2,2,3,4,4,4,    B.2,3,4,
C.2,3,3,4,5,6,    D.2,3,4,3,4,4,
17、设变量m为float类型,变量n为int类型,则以下能实现将m中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是______。
A.m=(m*100+0.5)/100.0    B.n=m*100+0.5,m=n/100.0
C.n=m/100+0.5,m=n*100.0    D.m=m*100+0.5/100.0
18、有以下程序:
#include<stdio.h>
main()
{  int a=1,b=1;
for(;a--;)
b--;
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是______。
A.-1,0    B.0,0    C.-1,-1    D.1,1
19、若有定义:
char s[30]={0};
运行时输入:
This is a string.<回车>
则以下不能正确读入整个字符串:
This is a string.
到字符数组s中的语句组是______。
A.i=0;while((c=getchar())!='\n')s[i++]=c;
B.gets(s);
C.for(i=0;(c=getchar())!='\n';i++)s[i]=c;
D.scanf("%s",s);
20、有如下程序:
#include<stdio.h>
main()
{
int a=0,b=1;
if(a++&&b++)
printf("TRUE");
else
printf("FALSE");
printf("_OUT:a=%d,b=%d\n",a,b);
}
程序运行后的输出结果是______。
A.FALSE_OUT:a=1,b=1    B.FALSE_OUT:a=0,b=2
C.TRUE_OUT:a=1,b=2    D.TRUE_OUT:a=0,b=1
21、有如下程序:关于printf函数正确的是
#include<stdio.h>
main()
{
int i,data;
scanf("%d",&data);
for(i=0;i<5;i++)
{
if(i<data)continue;
printf("%d-",i);
}
}
程序运行时,从键盘输入:3<回车>后,程序输出结果为______。
A.3-4-    B.1-2-3-    C.0-1-2-    D.0-1-2-3-
22、有以下程序:
#include<stdio.h>
main()
{
int a=0,b=1;
if(++a:=b++)
printf("1");
else
printf("0");
printf("a=%d,b=%d\n",a,b);
}
程序运行后的输出结果是______。
A.1a=0,b=1    B.0a=1,b=2    C.1a=1,b=2    D.0a=0,b=2
23、有如下程序段:
for(i=0;i<10;i++)
if(i<=5)break;
则循环结束后i的值为______。
A.1    B.0    C.5    D.10
24、设有定义:int a=0,b=1;,以下表达式中,会产生“短路”现象,致使变量b的值不变的是______。    A.a++ &&b++    B.a++||++b    C.++a&&b++    D.+a ||  ++b
25、有如下程序段:
for(i=0;i<10;i++)
if(i>5)break;
则循环结束后i的值为______。
A.10    B.5    C.9    D.6
26、有以下程序段:
int x,i;
for(i=1;i<=100;i++)
{  scanf("%d",&x);
if(x<0)continue;
printf("%4d\n",x);
}
下面针对上述程序段的描述正确的是______。
A.最多可以输出100个非负整数  B.当x<0时结束整个循环
C.当x>=0时没有任何输出  D.printf函数调用语句总是被跳过
27、关于地址和指针,以下说法正确的是______。
A.通过强制类型转换可以将一种类型的指针变量赋值给另一种类型的指针变量
B.可以取一个常数的地址赋值给同类型的指针变量
C.可以取一个表达式的地址赋值给同类型的指针变量
D.可以取一个指针变量的地址赋值给基类型相同的指针变量
28、有以下程序:
#include<stdio.h>
#define N 4
void fun(int a[][N])
{
int i:
for(i=0;i<N;i++)
a[0][i]+=a[N-1][N-1-i];
}
main()
{  int x[N][N]={{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}},i;
fun(x);
for(i=0;i<N;i++)printf("%d,",x[i][i]);
printf("\n");
}
程序运行后的输出结果是______。
A.4,7,10,13    B.1,6,11,16    C.17,6,11,16    D.5,13,21,29
29、关于C语言函数说明的位置,以下叙述正确的是______。
A.在函数说明之后对该函数进行调用,编译时不会出现错误信息
B.函数说明可以出现在源程序的任意位置,在程序的所有位置对该函数的调用,编译时都不会出现错误信息
C.函数说明只能出现在源程序的开头位置,否则编译时会出现错误信息
D.函数说明只是为了美观和编译时检查参数类型是否一致,可以写也可以不写
30、以下叙述正确的是______。
A.不能在数组说明符的一对方括号中使用表达式
B.char c1,*c2,**c3,c4[2];是C语言的合法语句
C.数组下标的最小值可以是负值
D.若有数组定义int array[5];则语句printf("%d",array[1.23]);是合法的
31、有以下程序:
#include<stdio.h>
main()
{
int a=2,  *ptr;
ptr=&a;
*ptr=8;
a=(*ptr)  ++;
printf("%d,%d\n",a,*ptr);
}
程序运行后的输出结果是______。
A.9,9    B.8,9    C.2,4    D.0,4