07年4月等级考试二级C语言考前密卷(5)

全国等级考试资料网 2019-01-23 14:13:07 92

一、选择题
(1)假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为
A)log2n
B)n2
C)O(n1.5)
D)n(n-1)/2
(2)算法分析的目的是
A)找出数据结构的合理性
B)找出算法中输入和输出之间的关系
C)分析算法的易懂性和可靠性
D)分析算法的效率以求改进
(3)线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是
A)每个元素都有一个直接前件和直接后件
B)线性表中至少要有一个元素
C)表中诸元素的排列顺序必须是由小到大或由大到小
D)除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件
(4)在单链表中,增加头结点的目的是
A)方便运算的实现
B)使单链表至少有一个结点
C)标识表结点中首结点的位置
D)说明单链表是线性表的链式存储实现
(5)软件工程的出现是由于
A)程序设计方法学的影响
B)软件产业化的需要
C)软件危机的出现
D)计算机的发展
(6)软件开发离不开系统环境资源的支持,其中必要的测试数据属于
A)硬件资源
B)通信资源
C)支持软件
D)辅助资源
(7)在数据流图(DFD)中,带有名字的箭头表示
A)模块之间的调用关系
B)程序的组成成分
C)控制程序的执行顺序
D)数据的流向
(8)分布式数据库系统不具有的特点是
A)数据分布性和逻辑整体性
B)位置透明性和复制透明性
C)分布性
D)数据冗余
(9)关系表中的每一横行称为一个
A)元组
B)字段
C)属性
D)码
(10)下列数据模型中,具有坚实理论基础的是
A)层次模型
B)网状模型
C)关系模型
D)以上3个都是
(11)以下叙述不正确的是
A)一个C源程序可由一个或多个函数组成
B)一个C源程序必须包含一个main函数
C)C程序的基本组成单位是函数
D)在C程序中,注释说明只能位于一条语句的后面
(12)在C语言中,int,char和short三种类型数据在内存中所占用的字节数
A)由用户自己定义
B)均为2个字节
C)是任意的
D)由所用机器的机器字长决定
(13)以下叙述正确的是
A)在C程序中,每行中只能写一条语句
B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C)在C程序中,无论是整数还是实数,都能被准确无误地表示
D)在C程序中,%是只能用于整数运算的运算符
(14)C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符
A)必须为字母
B)必须为下划线
C)必须为字母或下划线
D)可以是字母,数字和下划线中任一字符
(15)已知各变量的类型说明如下:
int k,a,b;
unsigned long w=5;
double x=1.42;
则以下不符合C语言语法的表达式是
A)x%(-3)
B)w+=-2
C)k=(a=2,b=3,a+b)
D)a+=a-=(b=4)*(a=3)
(16)x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是
A)INPUT x、y、z;
B)scanf("%d%d%d",&x,&y,&z);
C)scanf("%d%d%d",x,y,z);
D)read("%d%d%d",&x,&y,&z);
(17)设x、y均为整型变量,且x=10 y=3,则以下语句的输出结果是
printf("%d,%d\n",x--,--y);
A)10,3
B)9,3
C)9,2
D)10,2
(18)以下程序的输出结果是
main()
{ int a=4,b=5,c=0,d;
d=!a&&!b||!c;
printf("%d\n",d);}
A)1
B)0
C)非0的数
D)-1
(19)执行下列程序时输入:123<空格>456<空格>789<回车> 输出结果是
main()
{ char s[100]; int c, i;
scanf("%c",&c); scanf("%d",&i); scanf("%s",s);
printf("%c,%d,%s\n",c,i,s);}
A)123,456,789
B)1,456,789
C)1,23,456,789
D)1,23,456
(20)下面有关for循环的正确描述是
A)for循环只能用于循环次数已经确定的情况
B)for循环是先执行循环体语句,后判断表达式
C)在for循环中,不能用break语句跳出循环体
D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
(21)以下程序的输出结果是
main()
{ int i,j,x=0;
for(i=0;i<2;i++)
{ x++;
for(j=0;j<3;j++)
{ if(j%2)continue;
x++;
}
x++;
}
printf("x=%d\n",x);
}
A)x=4
B)x=8
C)x=6
D)x=12
(22)设有以下程序段
int x=0,s=0;
while(!x!=0)s+=++x;
printf("%d",s);

A)运行程序段后输出0
B)运行程序段后输出1
C)程序段中的控制表达式是非法的
D)程序段执行无限次
(23)对下Ⅰ,Ⅱ两个语句描述正确的是
Ⅰ.while(1)Ⅱ.for(;;)
A)都是无限循环
B)Ⅰ是无限循环,Ⅱ错误
C)Ⅰ循环一次,Ⅱ错误
D)以上答案都错
(24)若有以下定义,则能使值为3的表达式是
int k=7,x=12;
A)x%=(k%=5)
B)x%=(k-k%5)
C)x%=k-k%5
D)(x%=k)-(k%=5)
(25)设有:
int a=1,b=2,c=3,d=4,m=2,n=2;
执行 (m=a>b)&&(n=c>d)后n的值是
A)1
B)2
C)3
D)4
(26)以下描述中正确的是
A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C)在do-while循环体中,是先执行一次循环,再进行判断
D)do-while循环中,根据情况可以省略while
(27)以下函数返回a所指数组中最小的值所在的下标值
fun(int *a, int n)
{ int i,j=0,p;
p=j;
for(i=j;iif(a[i]return(p);}
在下划线处应填入的是
A)i=p
B)a[p]=a[i]
C)p=j
D)p=I
(28)以下叙述正确的是
A)函数可以嵌套定义但不能嵌套调用
B)函数既可以嵌套调用也可以嵌套定义
C)函数既不可以嵌套定义也不可以嵌套调用
D)函数可以嵌套调用但不可以嵌套定义
(29)若有说明语句
char a[]="It is mine";
char *p="It is mine";
则以下不正确的叙述是
A)a+1表示的是字符t的地址
B)p指向另外的字符串时,字符串的长度不受限制
C)p变量中存放的地址值可以改变
D)a中只能存放10个字符
(30)以下程序的运行结果是
sub(int x,int y,int *z)
{*z=y-x;}
main()
{ int a,b,c;
sub(10,5,&a);
sub(7,a,&b);
sub(a,b,&c);
printf("%4d,%4d,%4d\n",a,b,c);}
A)5,2,3
B)-5,-12,-7
C)-5,-12,-17
D)5,-2,-7
(31)若二维数组a有m列,则计算任一元素a[i][j]在数组中相对位置的公式为 (假设a[0][0]位于数组的第一个位置上)
A)i*m+j
B)j*m+i
C)i*m+j-1
D)i*m+j+1
(32)下列说法正确的是
int i,x;
for(i=0,x=0;i<=9 &&x!=876;i++)scanf("%d",x);
A)最多的执行10次
B)最多执行9次
C)是无限循环
D)循环体一次也不执行
(33)若有下面的程序片段:
int[12]={0},*p[3],**pp,i;
for(i=0;i<3;i)
p[i]=&a[i*4];
pp=p;
则对数组元素的错误引用是
A)pp[0][1]
B)a[10]
C)p[3][1]
D)*(*(p+2)+2)
(34)若有说明:int a[3][4]={0};则下面正确的叙述是
A)只有元素a[0][0]可得到初值0
B)此说明语句不正确
C)数组a中各元素都可得到初值,但其值不一定为0
D)数组a中每个元素均可得到初值0
(35)对下面程序描述正确的一项是 (每行程序前面的数字表示行号)
1   main()
2   {
3   float a[3]={0.0};
4   int i;
5   for(i=0;i<3;i++)scanf("%d",&a[i]);
6   for(i=1;i<3;i++)a[0]=a[0]+a[i];
7   printf("%f\n",a[0]);
8   }
A)没有错误
B)第3行有错误
C)第5行有错误
D)第7行有错误
(36)以下不正确的说法是
C语言规定:
A)实参可以是常量,变量或表达式
B)形参可以是常量,变量或表达式
C)实参可以为任何类型
D)形参应与其对应的实参类型一致
(37)已有如下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的正确定义方式为
int a[3][4];
f(a);
A)f(array[3][4])
B)f(int array[3][])
C)f(int array[][4])
D)f(int array[][])
(38)下面程序的输出结果为
main()
{ int a,b;b=(a=3*5,a*4,a*5);
printf("%d",b);}
A)60
B)75
C)65
D)无确定值
(39)在位运算中,操作数右移一位,其结果相当于
A)操作数乘以2
B)操作数除以2
C)操作数乘以4
D)操作数除以4
(40)有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是
struct node
{ char data;
struct node *next;
} a,b,*p=&a,*q=&b;
A)a.next=q;
B)p.next=&b;
C)p->next=&b;
D)(*p).next=q;首页 1 2 尾页 相关资料

相关阅读