07年4月等级考试二级C语言考前密卷(7)
(1)最简单的交换排序方法是
A)快速排序
B)选择排序
C)堆排序
D)冒泡排序
(2)栈通常采用的两种存储结构是
A)线性存储结构和链表存储结构
B)散列方式和索引方式
C)链表存储结构和数组
D)线性存储结构和非线性存储结构
(3)线性表的顺序存储结构和线性表的链式存储结构分别是
A)顺序存取的存储结构、顺序存取的存储结构
B)随机存取的存储结构、顺序存取的存储结构
C)随机存取的存储结构、随机存取的存储结构
D)任意存取的存储结构、任意存取的存储结构
(4)完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是
A)黑箱测试法 B)白箱测试法
C)错误推测法 D)安装测试法
(5)在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示
A)模块之间的调用关系 B)程序的组成成分
C)控制程序的执行顺序 D)数据的流向
(6)下列选项中,不属于模块间耦合的是
A)数据耦合 B)同构耦合
C)异构耦合 D)公用耦合
(7)一个关系中属性个数为1时,称此关系为
A)对应关系 B)单一关系
C)一元关系 D)二元关系
(8)为用户与数据库系统提供接口的语言是
A)高级语言
B)数据描述语言(DDL)
C)数据操纵语言(DML)
D)汇编语言
(9)相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和
A)可重用性差 B)安全性差
C)非持久性 D)冗余性
(10)需求分析阶段的任务是确定
A)软件开发方法 B)软件开发工具
C)软件开发费用 D)软件系统功能
(11)下列关于C语言的说法不正确的是
A)C语言既具有高级语言的一切功能,也具有低级语言的一些功能
B)C语言中的每一条执行语句都必须用分号结束,分号不是C语言的一部分,是语句之间的分隔符号
C)注释可以出现在程序中任意合适的地方
D)命令行后面不能加分号,命令行不是C语言的语句
(12)下列关于标识符的说法中错误的是
A)合法的标识符是由字母、数字和下划线组成
B)C语言的标识符中,大写字母和小写字母被认为是两个不同的字符
C)C语言的标识符可以分为三类,即关键字、预定义标识符和用户标识符
D)用户标识符与关键字不同时,程序在执行时将给出出错信息
(13)下列合法的整型常量的表示是
A)098
B)oXde
C)32767
D)0xDG
(14)现在有以下定义,int a;double b;float c;char k;则下面的表达式a/b+c-k值的类型为:
A)int
B)double
C)float
D)char
(15)假设整型变量a,b,c的值均为5,则表达式a+++b+++c++的值为
A)17
B)16
C)15
D)14
(16)下列关于复合语句和空语句的说法错误的是
A)复合语句是由“{”开头,由“}”结尾的
B)复合语句在语法上视为一条语句
C)复合语句内,可以有执行语句,不可以有定义语句部分
D)C程序中的所有语句都必须由一个分号作为结束
(17)关于printf()函数的返回值叙述正确的是
A)通常是本次调用中输出字符的个数
B)通常是输出的第一个数值
C)通常返回布尔值真
D)通常返回非零值
(18)现有格式化输入语句,scanf("x=%dц,sumцy=%d,lineцz=%dL",&x,&y,&z);,现在已知在输入数据后,x,y,z的值分别是12,34,45,则下列数据是正确的输入格式的是
A)12,34,45
B)x=12,y=34,z=45
C)x=12C,sumy=34,z=45
D)x=12],sum]y=34,line]z=45
[注]:“ц”表示空格,
(19)设x,y,z,t均为整型变量,现有如下语句x=y=z=1;t=++x||++y&&++z;则执行这个语句后t的值为
A)2
B)1
C)0
D)不定值
(20)现有如下程序段,此程序段编译有错误,则程序段的错误出在
#include
main()
{ int a=30,b=40,c=50,d;
d=a>30?b:c;
switch(d){case a:printf("%d,",a);
case b:printf("%d,",b);
case c:printf("%d,",c);
default:printf("#");}}
A)default:printf("#");这个语句
B)d=a>30?b:c;这个语句
C)case a:printf("%d,",a); case b:printf("%d,",b); case c:printf("%d,",c);这三个语句
D)switch(d)这个语句
(21)下列语句中,错误的是(x,y,a,b假设已经定义好)
A)while(x=y)5;
B)do x++ while(x==10);
C)while(0);
D)do 2;while(a==b);
(22)若i,j已经定义为整型,则以下程序段中,内循环体的执行次数是
for(i=6;i;i--)
for(j=0;j<5;j++){……}
A)40
B)35
C)30
D)25
(23)下列说法中错误的是
A)只能在循环体内使用break语句
B)在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环
C)在while和do…while循环中,continue语句并没有使整个循环终止
D)continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环判断
(24)阅读如下程序段
#include "stdio.h"
main()
{ int x,a,b;
scanf("%d",&x);
a=b=x;
for(;x!=0;)
{ if(xif(x>a)a=x;
scanf("%d",&x);}
printf("a=%d,b=%d\n",a,b);}
现输入如下。[注] :′ц′表示空格
34ц56ц23ц45ц5ц56ц7ц12ц365ц49ц48ц57ц87ц7ц6ц7569ц789ц0
输入后输出结果是
A)a=7569,b=789
B)a=5,b=365
C)a=7,b=789
D)a=7569,b=5
(25)下面关于字符常量的说法错误的是
A)一个字符常量代表ASCII字符集中的一个字符
B)单引号中的大写字母和小写字母代表不同的字符常量
C)字符常量只能包含一个字符
D)字符常量可以用单引号或双引号括起来
(26)现有如下程序
#include "stdio.h"
int fun(int x)
{printf("x=%d\n",++x);}
main()
{fun(12+5);}
则程序的输出结果是
A)12
B)13
C)17
D)18
(27)现有如下程序段
#include "stdio.h"
int aa(int x,int y);
main()
{int a=24,b=16,c;
c=aa(a,b);
printf("%d\n",c);}
int aa(int x,int y)
{int w;
while(y)
{w=x%y;
x=y;
y=w;}
return x;}
则程序段的输出结果是
A)8
B)7
C)6
D)5
(28)下列说法错误的是
A)函数调用时,函数名必须与所调用的函数名字完全相同
B)实参的个数必须与形式参数的个数一致
C)实参可以是表达式,在类型上必须与形参一一对应匹配
D)C语言规定,函数必须先定义,后调用(函数的返回值类型为int或char时除外)
(29)函数的值通过return语句返回,下面关于return语句的形式描述错误的是
A)return表达式;
B)return(表达式);
C)一个return语句可以返回多个函数值
D)一个return语句只能返回一个函数值
(30)现有如下定义:int a,b,*p,*q;,则下列赋值语句错误的是
A)p=&a;
B)q=&b;
C)p=q;
D)p=a;
(31)现有如下程序段
#include "stdio.h"
int *fun(int *a,int *b)
{int c;
c=*a%*b;
return &c;}
main()
{int a=5,b=19,*c;
c=fun(&a,&b);
printf("%d\n",++*c);}
则程序段执行后的结果为
A)8
B)7
C)6
D)5
(32)现有int a,*b;,b=&a;,则下列运算错误的是
A)*&a
B)&*a
C)*&b
D)&*b
(33)现有如下程序段
#include "stdio.h"
main()
{ int k[30]={12,324,45,6,768,98,21,34,453,456};
int count=0,i=0;
while(k[i])
{ if(k[i]%2==0‖k[i]%5==0)count++;
i++; }
printf("%d,%d\n",count,i);}
则程序段的输出结果为
A)7,8
B)8,8
C)7,10
D)8,10
(34)现有如下定义语句
int*p,s[20],i;
p=s;
表示数组元素s[i]的表达式不正确的是
A)*(s+i)
B)*(p+i)
C)*(s=s+i)
D)*(p=p+i)
(35)阅读如下程序段,这个程序在编译的时候会有一个警告,下列关于这个警告叙述正确的是
#include "stdio.h"
#define N 10
int *fun(int a[N],int n)
{ int i,b[N];
for(i=0;i
return(b);}
main()
{ int a[N]={12,34,45,5,6,34,4,655,2};
int *k;
k=fun(a[N],5);
printf("%d\n",*k);}
A)指针k没有指向任何对象而成为“无向指针”,所以这里会产生警告
B)return语句不应该有括号,所以在这里会有警告
C)return语句的返回值类型与指针k的基类型不一致,这里会产生警告
D)数组赋值的时候没有把数组全部都赋初值,所以在这里会有警告
(36)有如下定义语句:int aa[][3]={12,23,34,4,5,6,78,89,45};,则45在数组aa中的行列坐标各为
A)3,2
B)3,1
C)2,2
D)2,1
(37)现有如下程序段
#include "stdio.h"
main()
{int a[5][6]={23,3,65,21,6,78,28,5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};
int i=0,j=5;
printf("%d\n",*(&a[0][0]+2*i+j-2));}
则程序的输出结果为
A)21
B)78
C)23
D)28
(38)下列程序的输出结果是
#include "stdio.h"
#define N 3
#define M 3
void fun(int a[M][N])
{printf("%d\n",*(a[1]+2));}
main()
{int a[M][N];
int i,j;
for(i=0;i
fun(a);}
A)3
B)4
C)5
D)6
(39)下列关于字符串的说法中错误的是
A)在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符′\0′作为字符串结束标志
B)′\0′作为标志占用存储空间,计入串的实际长度
C)在表示字符串常量的时候不需要人为在其末尾加入′\0′
D)在C语言中,字符串常量隐含处理成以′\0′结尾首页 1 2 尾页