2012年9月计算机等级考试二级C考前全真模拟试卷(十)
-
数据库管理系统常见的数据模型有层次模型、网状模型和3种。
-
设一棵完全二叉树共有700个结点,则在该二叉树中有个叶子结点
-
算法复杂度主要包括时间复杂度和复杂度
-
一棵二叉树第六层(根结点为第一层)的结点数最多为个
-
软件工程包括3个要素,分别为方法、工具和。
-
以下程序运行后的输出结果是。
void main()
{int a=1,b=2,c=3;
if(c=a,b
else printf("%d\n",b)
}
-
下列程序的输出结果是。
void main()
{int a=1,b=2;
a=a+b;b=a-b;a=a-b;
printf("%d,%d\n",a,b);
}
-
有以下程序:
void main()
{int t=1,i=5;
for( ;i=0;) i--;t*=i;
printf("%d\n",t);
}
执行后输出结果是。
-
mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回,请填空。
int mystrlen(char *str)
{ int i;
for(i=0;!=’\0’;i++);
return();
}
-
以下程序的运行结果是。
void main()
{int a=4,b=8,c;
c=(a/b= =a)&&(a+b!=20);
printf("%d,%d\n",a,b,c);
}
-
有以下程序:
int sub(int n) { return(n/10+n%10); }
void main()
{ int x,y;
scanf("%d",&x);
y=sub(sub(sub(x)));
printf("%d\n",y);
}
若运行时输入:4321<回车>,程序的输出结果是。
-
以下函数用来求出两整数之和,并通过形参将结果传回,请填空。
Void func(int x,int y,z)
{ *z-x+y; },
-
以下函数的功能是删除字符串s中的所有数字字符,请填空。
void dele(char *s)
{ int n=0,i;
for(i=0;s[i];i++)
if()
s[n++]=s[i];
s[n]=;
}
-
函数sstrcmp()的功能是对两个字符串进行比较。当s所指字符串和t所指字符串相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp()),请填空。
#include
int sstrcmp(char *s,char *t)
{ while(*s&&*t&&*s= =)
{s++;t++; }
return;
}
-
若有定义语句:char s[100],d[100];int j=0,i=0;且s中已赋字符串,请填空以实现拷贝。(注:不使用逗号表达式)
while(s[i]){d[j]=;j++;}
d[j]=0;
-
为用户与数据库系统提供接口的语言是( )。
- A.高级语言
- B.数据描述语言(DDL)
- C.数据操纵语言(DML)
- D.汇编语言
-
以下程序中,select函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标,请填空。
#define N 3
#define M 3
select(int a[N][M],int *n)
{int i,j,row=0,colum=0;
for(i=0;i
for(j=0;j
if(a[i][j]>a[row][colum]){row=i;colum=j;}
*n=;
return();
}
-
在下列关于二叉树的叙述中,选出正确的一项( )。
- A.在二叉树中,任何一个结点的度都是2
- B.二叉树的度为2
- C.在二叉树中至少有一个结点的度是2
- D.一棵二叉树的度可以小于2
-
为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为( )。
- A.PAD图 B.N—S图 C.结构图 D.数据流图
-
程序设计方法要求在程序设计过程中( )。
- A.先编制出程序,经调试使程序运行结果正确后再画出程序的流程图
- B.先编制出程序,经调试使程序运行结果正确后再在程序中的适当位置处加注释
- C.先画出流程图,再根据流程图编制出程序,最后经调试使程序运行结果正确后再在程序中的适当位置处加注释
- D.以上三种说法都不对
-
在E-R图中,用来表示实体的图形是( )。
- A.矩形 B.椭圆形 C.菱形 D.三角形
-
假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为( )。
- A.log2n B.n2 C.n/2 D.n(n-1)/2
-
在单链表中,增加头结点的目的是( )。
- A.方便运算的实现
- B.使单链表至少有一个结点
- C.标识表结点中首结点的位置
- D.说明单链表是线性表的链式存储实现
-
用黑盒技术测试用例的方法之一为( )。
- A.因果图 B.逻辑覆盖 C.循环覆盖 D.基本路径测试
-
以下叙述中正确的是( )。
- A.C语言中的全部数据类型都是基本类型
- B.C语言中的全部数据类型都是构造类型
- C.C语言中的数据类型只有两种,即基本类型和构造类型
- D.以上都不对
-
串的长度是( )。
- A.串中不同字符的个数
- B.串中不同字母的个数
- C.串中所含字符的个数且字符个数大于零
- D.串中所含字符的个数
-
“商品”与“顾客”两个实体集之间的联系一般是( )。
- A.一对一 B.一对多 C.多对一 D.多对多
-
下列不可作为C语言赋值语句的是( )。
- A.x=3,y=5 B.a=b=6 C.i- - D.y=6
-
以下变量x、y、z均为double类型且已正确赋值,不能正确表示x/(y*z)的C语言表达式是( )。
- A.x/y*z B.x*(1/(y*z)) C.x/y*1/z D.x/y/z
-
若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是( )。
- A.-3 B.9 C.-12 D.6
-
有以下程序:
void main()
{ int a=1,b=2,m=0,n=0,k;
k=((n=b>a)+b)‖(m=a printf("%d,%d\n",k,m);
}
程序运行后的输出结果是( )。
- A.0,0 B.0,1 C.1,0 D.1,1
-
以下选项中合法的表达式是( )。
- A.a=a+7=c+b
- B.(3+x)++
- C.3+x++
- D.x+1=x+1
-
以下叙述中错误的是( )。
- A.C语言中对二进制文件的访问速度比文本文件快
- B.C语言中,随机文件以二进制代码形式存储数据
- C.语句FILE fp;定义了一个名为fp的文件指针
- D.C语言中的文本文件以ASCII码形式存储数据
-
当把以下四个表达式用作if语句的控制表达式时,有一个选项与表达式(k%2)!=0含义相同,这个选项是( )。
- A.k%2= =0 B.k%2= =1 C.!k%2= = 1 D.都不同
-
已知字母A的ASCII码为十进制的65,下面程序的输出为( )。
void main()
{ char ch1,ch2;
ch1=’A’+’5’-’3’;
ch2=’A’+6-3;
printf("%d,%c\n",ch1,ch2);
}
- A.67,D B.B,C C.C,D D.不确定的值
-
下面函数的功能是( )。
int func(char*x)
{ char*y=x;
while(*y++);
return(y-x-1);
}
- A.求字符串的长度
- B.比较两个字符串的大小
- C.将字符串x复制到字符串y
- D.将字符串x连接到字符串y后面
-
设int i=2,j=1,k=3,则表达式i&&(i+j)&k | i+j的值是( )。
- A.0 B.2 C.1 D.3
-
有以下程序:
void main()
{ int k=10,n=0;
for(;n
{ //n++;
if(n++%3!=0)continue;
k--; }
printf("%d,%d\n",k,n);
}
程序运行后的输出结果是( )。
- A.7,7 B.6,6 C.3,3 D.4,4
-
以下程序的输出结果是( )。
#include
void main()
{int a,b,d=241;
- a=d/100%9;
- b=(-1)&&(-1); printf("%d,%d\n",a,b);}
- A.6,1 B.2,1 C.6,0 D.2,0
-
如果在C程序中要用到库函数中的字符串比较函数strcmp(),那么在程序前面应该添加的头文件是( )。
- A.stdio.h B.string,h C.alloc.h D.math.H
-
有以下程序:
#define N 20
fun(int a[],int n,int m)
{ int i;
for(i=m;i>n;i--)a[i+1]=a[i];
return m;
}
void main()
{ int i,a[N]={1,2,3,4,5,6,7,8,9,10};
fun(a,0,N/2);
for(i=0;i<5;i++)printf("%d",a[i]);
}
程序运行后的输出结果是( )。
- A.10234 B.12344 C.12334 D.12234
-
若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( )。
- A.函数调用可以嵌套和递归
- B.函数调用可以作为一个函数的实参
- C.函数调用可以出现在表达式中
- D.函数调用可以作为一个函数的形参
-
若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是( )。
- A.p=q B.*p=*q C.n=*q D.p=*n
-
已定义以下函数:
fun(char*p2,char*p1)
{while((*p2=*p1)!=’\0’){p1++;p2++;}}
函数的功能是( )。
- A.将p1所指字符串复制到p2所指向内存空间
- B.将p1所指字符串的地址赋给指针p2
- C.对p1和p2两个指针所指字符串进行比较
- D.检查p1和p2两个指针所指字符串中是否有’\0’
-
有以下程序:
void main()
{
int y=10;
while(y>>1){printf("y=%d\n",y);}
}
程序执行后的输出结果是( )。
- A.y=0
- B.y=-1
- C.y=1
- D.while构成无限循环
-
有以下程序:
#include
void main()
{
char c1,c2,c3,c4,c5,c6;
c5=getchar();c6=getchar();
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
putchar(c1);putchar(c2);
printf("%c%c\n",c5,c6);
}
程序运行后,若从键盘输入(从第1列开始),则输出结果是( )。
123<回车>
45678<回车>
- A.3 B.1 C.3 D.3456 12 23 &n
-
设有以下定义:
int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int(*ptr)[3]=a,*p=a[0];
则下列能够正确表示数组元素a【1】【2】的表达式是( )。
- A.*((*ptr+1)[2])
- B.*(*(p+5))
- C.(*ptr+1)+2
- D.*(*(a+1)+2)
-
下面程序段的输出结果是( )。
#include
void main()
{
char strl[10]={’s’,’t’,’u’,’d’,’e’,’n’,’t’};
printf("%d\n",strlen(strl));
}
- A.7 B.8 C.10 D.存在语法错误
-
有以下程序:
fun(int a[],int m,int n)
{int i;
for(i=m;i
- a[i+1]=a[i]+3; return a[i+1]; } void main() {
- int i,a[6]={2,4,6,8,10,12};
- fun(a,2,5);
- for(i=0;i<6;i++) printf("%d",a[i]); } 程序运行后输出的结果是( )。
- A.24691315 B.24691215 C.249121518 D.249121415
-
若有以下说明:
int a[10]={1,2,3,4,5,6,7,8,9,10},,*p=a;
则值为6的表达式是( )。
- A.*p+6 B.*(p+6) C.*p+=5 D.p+5
-
下列与char*pa[3][5]={"a","bb","ccc"}等价的是( )。
- A.char (*pa)[][5]={"a","bb","ccc"}
- B.char*pa[3][]={"a","bb","ccc"}
- C.char pa[3][]={"a","bb","ccc"}
- D.都不等价
-
已定义以下函数:
fun(int *p)
{ return &p; }
该函数的返回值是( )。
- A.不确定的值
- B.形参p中存放的值
- C.形参p所指存储单元中的值
- D.形参p的地址值
-
以下叙述中错误的是( )。
- A.预处理命令行必须位于源文件的开头
- B.宏替换可以出现在任何一行的开始部位
- C.宏替换的作用一直持续到源文件结尾
- D.宏替换不占有程序的运行时间
-
若有以下说明和定义,以下叙述中错误的是( )。
union dt
{ int a;char b;double c;}data;
- A.两个共用体变量之间可以相互赋值
- B.变量data所占内存字节数与成员c所占字节数相等
- C.程序段:data.a=5;printf("%f\n",data.c);输出结果为5.000000
- D.共用体在初始化时只能用第一个成员的类型进行初始化
-
下面叙述中正确的是( )。
- A.全局变量的作用域一定比局部变量的作用域范围大
- B.静态类型变量的生存期贯穿于整个程序的运行期间
- C.函数的形参都属于全局变量
- D.未在定义语句中赋值的auto变量和static变量的初值都是随机值
-
以下程序的输出结果是( )。
f(int b[],int m,int n)
{int i,s=0;
for(i=m;i
return s;
}
void main()
{int x,a[]={1,2,3,4,5,6,7,8,9};
x=f(a,3,7);
printf("%d\n",x);
}
- A.10
- B.18
- C.8
- D.15
-
有以下程序:
void main()
{char s[]="159",*p;
p=s;
printf("%c",*p++);printf("%c",*p++);
}
程序运行后的输出结果是( )。
- A.15 B.16 C.12 D.59
-
当执行下面的程序时,如果输入ABC,则输出结果是( )。
#include
#include
void main()
{char ss[10]="12345",
gets(ss);strcat(ss,"6789");
printf("%s\n",ss);
}
- A.ABC6789 B.ABC67 C.12345ABC6 D.ABC456789
-
有以下程序:
void main()
{int a=1,b;
for(b=1;b<1;b++)
{ if(a>=8)break;
if(a%2= =1){a+5;continue;}
- a-=3; } printf("%d\n",b); } 程序运行后的输出结果是( )。
- A.3 B.1 C.5 D.6
-
有以下程序:
void main()
{int a=15,b=21,m=0;
switch(a%3)
{case0:m++;break;
case 1:m++;
switch(b%2)
{defaule:m++;
case 0:m++;break;
}
}
printf("%d\n",m);
}
程序运行后的输出结果是( )。
- A.1 B.2 C.3 D.4
-
有以下程序,其输出结果是( )。
void main()
{
floar x=1;
int y;
x++;
y=x+1;
printf("x=%d,y=%f",x,y);
}
- A.x=2,y=3
- B.x=2,y=3.0
- C.x=2.0,y=3
- D.x=0,y=0.000000
-
程序中若有如下说明和定义语句:
char fun(char *);
main()
{ char *s="one",a[5]={0},(*f1)()=fun,ch;
...
}
以下选项中对函数fun的正确调用语句是( )。
- A.(*f1)(a) B.*f1(*s) C.fun(&a) D.ch=*f1(s)
-
有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向此链表中的3个连续结点。
struct node
{ int data;struct node *next; }*p,*q,*r;
现要将这个链表构成一个环,以下( )操作是正确的。
- A.p->next=q->next
- B.r->next=p
- C.p->next=r
- D.r->next=q->next->next
-
整型变量X和Y的值相等,且为非0值,则以下选项中结果为0的表达式是( )。
- A.X‖Y B.X | Y C.X&Y D.X^Y
-
C语言中,组成数据文件的成分是( )。
- A.记录
- B.数据行
- C.数据块
- D.字符(字节)序列
-
有以下程序:
#include
void main()
{ fILE*fp; int i,a[4]={1,2,3,4},b;
fp=fopen("data.dat","wb");
for(i=0;i<4;i++) fwrite(&a[i],sizeof(int),1,fp);
fclose(fp)
fp=fopen("data.dat","rb");
fseek(fp,-2L*sizeof(int),1,fp);/*文件中读取sizeof(int)字节的数据到变量b中*/
fclose(fp);
printf("%d\n",b);
}
程序中fseek(fp,-2L*sizeof(int),SEEK_END);语句的作用是( )。
- A.使位置指针从文件末尾向前移2*sizeof(int)字节
- B.使位置指针从文件末尾向前移2字节
- C.使位置指针向文件末尾向前移懂2*sizeof(int)字节
- D.使位置指针向文件末尾移动2字节