- 上一篇 2004年4月二级试卷 [2005-11-19 22:11:06]
| 微软MCSE2003:Security | 微软MCSE2003+MCDBA |
| Cisco网络工程师CCNA | 华为认证网络工程师(HCNE) |
| CorelDRAW 12 官方认证 | Adobe平面设计师(ACCD) |
| AutoCAD(2006)认证专家 | Adobe网络设计师(ACCD) |
| 软件加密与解密工程师培训 | 网络应用工程师 |
| 国家信息化网络安全工程师 | CEAC网络应用工程师 |
{
f(p,q);
p++;
q--;
}
for(i=0;i<8;i++)
printf("%d,",a[i]);
}
程序运行后的输出结果是
A)8,2,3,4,5,6,7,1,
B)5,6,7,8,1,2,3,4,
C)1,2,3,4,5,6,7,8,
D)8,7,6,5,4,3,2,1,
(29)有以下程序
main()
{
int a[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++)
p[i]=i;
for(i=0;i<3;i++)
printf("%d ",a[1][i]);
}
程序运行后的输出结果是
A)0 1 2 B)1 2 3 C)2 3 4 D)3 4 5
(30)以下叙述中错误的是
A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B)数组名代表的是数组所占存储区的首地址,其值不可改变
C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
D)可以通过赋初值的方式确定数组元素的个数
(31)有以下程序
#define N 20
fun(int a[],int n,int m)
{ int i,j;
for(i=m;i>=n;i--)
a[i+1]=a[i];
}
main()
{
int i,a[N]={1,2,3,4,5,6,7,8,9,10};
fun(a,2,9);
for(i=0;i<5;i++)
printf("%d",a[i]);
}
程序运行后的输出结果是
A)10234 B)12344 C)12334 D)12234
(32)有以下程序
main()
{ int a[3][2]={0},(*ptr)[2],i,j;
for(i=0;i<2;i++)
{ ptr=a+i;
scanf("%d",ptr);
ptr++;
}
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
printf("%2d",a[i][j]);
printf("\n");
}
}
若运行时输入:1 2 3<回车>,则输出结果为
A)产生错误信息
B)1 0
2 0
0 0
C)1 2
3 0
0 0
D)1 0
2 0
3 0
(33)有以下程序
prt(int *m,int n)
{
int i;
for(i=0;im[i]++;
}
main()
{
int a[]={1,2,3,4,5},i;
prt(a,5);
for(i=0;i<5;i++)
printf("%d,",a[i]);
}
程序运行后的输出结果是:
A)1,2,3,4,5,
B)2,3,4,5,6,
C)3,4,5,6,7,
D)2,3,4,5,1,
(34)有以下程序
main()
{ int a[]={1,2,3,4,5,6,7,8,9,0},*p;
for(p=a;p printf("%d,",*p);
}
程序运行后的输出结果是
A)1,2,3,4,5,6,7,8,9,0,
B)2,3,4,5,6,7,8,9,10,1,
C)0,1,2,3,4,5,6,7,8,9,
D)1,1,1,1,1,1,1,1,1,,1,
(35)有以下程序
#define P 3
#define F(int x) { return (P*x*x);}
main()
{
printf("%d\n",F(3+5));
}
程序运行后的输出结果是
A)192 B)29 C)25 D)编译出错
(36)有以下程序
main()
{
int c=35; printf("%d\n",c&c);
}
程序运行后的输出结果是
A) 0 B) 70 C) 35 D) 1
(37)以下叙述中正确的是
A)预处理命令行必须位于源文件的开头
B)在源文件的一行上可以有多条预处理命令
C)宏名必须用大写字母表示
D)宏替换不占用程序的运行时间
(38)若有以下说明和定义
union dt
{
int a; char b; double c;
}data;
以下叙述中错误的是
A)data的每个成员起始地址都相同
B)变量data所占内存字节数与成员c所占字节数相等
C)程序段:data.a=5;printf("%f\n",data.c);输出结果为5.000000
D)data可以作为函数的实参
(39)以下语句或语句组中,能正确进行字符串赋值的是
A)char *sp; *sp="right!";
B)char s[10]; s="right!";
C)char s[10]; *s="right!";
D)char *sp="right!";
(40)设有如下说明
typedef struct ST
{
long a;
int b;
char c[2];
} NEW;
则下面叙述中正确的是
A)以上的说明形式非法
B)ST是一个结构体类型
C)NEW是一个结构体类型
D)NEW是一个结构体变量
(41)有以下程序
main()
{
int a=1,b;
for(b=1;b<=10;b++)
{
if(a>=8) break;
if(a%2==1) { a+=5; continue;}
a-=3;
}
printf("%d\n",b);
}
程序运行后的输出结果是
A)3 B)4 C)5 D)6
(42)有以下程序
main()
{
char s[]="159",*p;
p=s;
printf("%c",*p++);
printf("%c",*p++);
}
程序运行后的输出结果是
A)15 B)16 C)12 D)59
(43)有以下函数
fun(char *a,char *b)
{
while((*a!='\0')&&(*b!='\0')&&(*a==*b))
{ a++; b++;}
return (*a-*b);
}
该函数的功能是
A)计算a和b所指字符串的长度之差
B)将b所指字符串复制到a所指字符串中
C)将b所指字符串连接到a所指字符串后面
D)比较a和b所指字符串的大小
(44)有以下程序
main()
{
int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;
for(i=0;i<4;i++)
{
for(j=1;j<=i;j++) printf("%c",' ');
for(j= j<4;j++) printf("%4d",num[i][j]);
printf("\n");
}
}
若要按以下形式输出数组右上半三角
1 2 3 4
6 7 8
11 12
16
则在程序下划线处应填入的是
A) i-1 B) i C) i+1 D) 4-i
45)有以下程序
point(char *p)
{
p+=3;
}
main()
{ char b[4]={'a','b','c','d'},*p=b;
point(p); printf("%c\n",*p);
}
程序运行后的输出结果是
A)a B)b C)c D)d
(46)程序中若有如下的说明和定义语句
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)
(47)有以下结构体说明和变量定义,如图所示,指针pqr分别指向此链表中三个连续结点。
struct node
{
int data;
struct node *next;
} *p,*q,*r;
现要将q所指结点从链表中删除,同时保持链表的连续,以下不能完成指定操作的语句是
A)p->next=q->next;
B)p->next=p->next->next;
C)p->next=r;
D)p=q->next;
(48)以下对结构体类型变量td的定义中,错误的是
A)typedef struct aa
{
int n;
float m;
}AA;
AA td;
B)struct aa
{
int n;
float m;
} td;
struct aa td;
C)struct
{
int n;
float m;
}aa;
struct aa td;
D)struct
{
int n;
float m;
}td;
(49)以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是
A)feof(fp)
B)ftell(fp)
C)fgetc(fp)
D)rewind(fp)
(50)有以下程序
#include "stdio.h"
void WriteStr(char *fn,char *str)
{
FILE *fp;
fp=fopen(fn,"W");
fputs(str,fp);
fclose(fp);
}
main()
{
WriteStr("t1.dat","start");
WriteStr("t1.dat","end");
}
程序运行后,文件t1.dat中的内容是
A)start B)end C)startend D)endrt
二、填空题(每空2分,共40分)
(1)某二*树中,度为2的结点有18个,则该二*树中有_____个叶子
结点。
(2)在面向对象的方法中,类的______称为对象。
(3)诊断和改正程序中错误的工作通常称为______。
(4)在关系数据库中,把数据表示成二维表,每一个二维表称为
________。
(5)问题处理方案的正确而完整的描述称为算法_______.
(6)以下程序运行时若从键盘输入:_______________ ,输出结果是 _______.
#include
main()
{ int i=0,j=0,k=0;
scanf("%d%*d%d",&i,&j,&k);
printf("%d%d%d\n",i,j,k);
}
(7)以下程序运行后的输出结果是______.
#define S(x) 4*x*x+1
main()
{
int i=6,j=8;
printf("%d\n",S(i+j));
}
(8)以下程序运行后的输出结果是________
main()
{
int a=3,b=4,c=5,t=99;
if(b if(aprintf("%d%d%d\n",a,b,c);
}
(9)以下程序运行后的输出结果是_______
main()
{
int a,b,c
a=10;b=20;c=(a%b<1)||(a/b>1);
printf("%d %d %d\n",a,b,c);
}
(10)以下程序运行后的输出结果是__________
main()
{
char c1,c2;
for(c1='0',c2='9';c1printf("%c%c",c1,c2);
printf("\n");
}
(11)已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>.输出结果是______
#include "stdio.h"
main()
{
char a,b;
a=getchar(); scanf("%d",&b);
a=a-'A'+'0';
b=b*2;
printf("%c %c\n",a,b);
}
(12)以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值.请填空.
void fun(int, int, int (*)[4],int *)
main()
{
int a[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;
fun(3,4,a,b);
for(i=0;i<3;i++)
printf("%4d",b[i]);
printf("\n");
}
void fun(int m,int n,int ar[][4],int *br)
{
int i,j,x;
for(i=0;i{ x=ar[i][0];
for(j=0;jif(x _______ =x;
}
(13)以下程序运行后的输出结果是______
void swap(int x,int y)
{ int t;
t=x;x=y;y=t;
printf("%d %d ",x,y);
}
main()
{ int a=3,b=4;
swap(a,b);
printf("%d %d\n",a,b);
}
(14)以下程序运行后的输出结果是______
#include "string.h"
void fun(char *s,int p,int k)
{ int i;
for(i=p;is[i]=s[i+2];
}
main()
{ char s[]="abcdefg";
fun(s,3,strlen(s));
puts(s);
}
(15)以下程序运行后的输出结果是______
#include "string.h"
main()
{
char ch[]="abc",x[3][4]; int i;
for(i=0;i<3;i++) strcpy(x[i],ch);
for(i=0;i<3;i++) printf("%s",&x[i][i]);
printf("\n");
}
(16)以下程序运行后的输出结果是_______
fun(int a)
{
int b=0;static int c=3;
b++; c++;
return (a+b+c);
}
main()
{
int i,a=5;
for(i=0;i<3;i++)
printf("%d %d ",i,fun(a));
printf("\n");
}
(17)以下程序运行后的输出结果是_______
struct NODE
{ int k;
struct NODE *link;
};
main()
{
struct NODE m[5],*p=m,*q=m+4;
int i=0;
while(p!=q)
{ p->k=++i; p++;
q->k=i++; q--;
}
q->k=i;
for(i=0;i<5;i++)
printf("%d",m[i].k);
printf("\n");
}
(18)以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes yes!,否则函数返回字符串:no!,并在主函数中输出.所谓回文即正向与反向的拼写都一样,例如:adgda.请填空.
#include "string.h"
char *huiwen(char *str)
{
char *p1,*p2; int i,t=0;
p1=str; p2=_____
for(i=0;i<=strlen(str)/2;i++)
if(*p1++!=*p2--)
{ t=1; break; }
if(_____) return ("yes!");
else return ("no!");
}
main()
{
char str[50];
printf("Input:"); scanf("%s",str);
printf("%s\n", ______ );
}
全国计算机等级考试二级vfp笔试真题
(考试时间:90分钟,满分100分)
一、选择题( (1)~(35) 每题2分,共70分) 下列各题A) 、B) 、C) 、D) 四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)数据的存储结构是指
A) 存储在外存中的数据
B) 数据所占的存储空间量
C) 数据在计算机中的顺序存储方式
D) 数据的逻辑结构在计算机中的表示
(2)下列关于栈的描述中错误的是
A) 栈是先进后出的线性表
B) 栈只能顺序存储
C) 栈具有记忆作用
D) 对栈的插入与删除操作中,不需要改变栈底指针
(3)对于长度为n的线性表,在最坏的情况下,下列各排序法所对应的比较次数中正确的是
A) 冒泡排序为n/2 B) 冒泡排序为n
C) 快速排序为n D) 快速排序为n(n-1)/2
(4)对于长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为
A) log2n B) n/2 C) n D) n+1
(5)下列对于线性链表的描述中正确的是
A) 存储空间不一定是连续,且各元素的存储顺序是任意的
B) 存储空间不一定是连续,且前件元素一定存储在后件元素的前面
C) 存储空间必须是连续,且前件元素一定存储在后件元素的前面
D) 存储空间必须是连续,且各元素的存储顺序是任意的
(6)下列对软件测试的描述中正确的是
A) 软件测试的目的是证明程序是否正确
B) 软件测试的目的是使程序运行结果正确
C) 软件测试的目的是尽可能多地发现程序中的错误
D) 软件测试的目的是使程序符合结构化原则
(7)为了使模块尽可能独立,要求
A) 模块的内聚程度要尽量高,且各模块间的藕合程度要尽量强
B) 模块的内聚程度要尽量高,且各模块间的藕合程度要尽量弱
C) 模块的内聚程度要尽量低,且各模块间的藕合程度要尽量弱
D) 模块的内聚程度要尽量低,且各模块间的藕合程度要尽量强
(8)下列描述中正确的是
A) 程序就是软件
B) 软件开发不受计算机系统的限制
C) 软件既是逻辑实体,又是物理实体
D) 软件是程序、数据与相关文档的集合
(9)数据独立性是数据库技术的重要特点之一,所谓数据独立性是指
A) 数据与程序独立存放
B) 不同的数据被存放在不同的文件中
C) 不同的数据只能被对应的应用程序所使用
D) 以上三种说法都不对
(10)用树型结构表示实体之间联系的模型是
A) 关系模型 B) 网络模型
C) 层次模型 D) 以上三个都是
(11)在创建数据库表结构时,给该表指定了主索引,这属于数据完整性中的
A) 参照完整性 B) 实体完整性
C) 域完整性 D) 用户定义完整性
(12) 在创建数据库表结构时,为该表中一些字段建立普通索引,其目的是
A) 改变表中记录的物理顺序 B) 为了对表进行实体完整性的约束
C) 加快数据库表的更新速度 D) 加快数据库表的查询速度
(13) 数据库系统中对数据库进行管理的核心软件是
A) DBMS B) DB C) OS D) DBS
(14)设有两个数据库表,父表和子表之间是一对多的联系,为控制子表和父表的关联,可以设置“参照完整性规则”,为此要求这两个表
A) 在父表连接字段上建立普通索引,在子表连续字段上建立主索引
B) 在父表连接字段上建立主索引,在子表连续字段上建立普通索引
C) 在父表连接字段上不需要建立任何索引,在子表连接字段上建立普通索引
D) 在父表和子表的连接字段上都要建立主索引
(15) 关系运算中的选择运算是
A) 从关系中找出满足给定条件的元组的操作
B) 从关系中选择若干个属性组成新的关系的操作
C) 从关系中选择满足给定条件的属性的操作
D) A和B都对
(16) 在指定字段或表达式中不允许出现重复值的索引是
A) 惟一索引 B) 惟一索引和候选索引
C) 惟一索引主索引 D) 主索引候选索引
(17) 在Visual FoxPro中,以下关于删除记录的描述中,正确的是
A) SQL的DELETE命令在删除数据库表中的记录之前,不需要用USE命令打开表
B) SQL的DELETE命令和传统Visual FoxPro的DELETE命令在删除数据库表中的记录之前,都需要用USE命令打开表
C) SQL的DELETE命令可以物理的删除数据库表中的记录,而传统Visual FoxPro的DELETE命令只能逻辑删除数据库表中的记录
D) 传统Visual FoxPro的DELETE命令在删除数据库表中的记录之前不需要用USE命令打开表
(18)在Visual FoxPro中,如果希望跳出SCAN…ENDSCAN循环体、执行ENDSCAN后面的语句,应使用
A) LOOP语句 B) EXIT语句
C) BREAK语句 D) RETURN语句
(19)打开数据库abc的正确命令是
A) OPEN DATABASE abc B) USE abc
C) USE DATABASE abc D) OPEN abc
(20)在Visual FoxPro中,下列关于表的叙述正确的是
A) 在数据库表和自由表中,都能给字段定义有效性规则和默认值
B) 在自由表中,能给表中的字段定义有效性规则和默认值
C) 在数据库表中,能给表中的字段定义有效性规则和默认值
D) 在数据库表和自由表中,都不能给字段定义有效性规则和默认值
(21)Visual FoxPro的“参照完整性”中“插入规则“包括的选择是
A) 级联和忽略 B) 级联和删除
C) 级联和限制 D) 限制和忽略
(22) 在Visual FoxPro中,关于查询和视图的正确描述是
A) 查询是一个预先定义好的SQL SELECT语句文件
B) 视图是一个预先定义好的SQL SELECT语句文件
C) 查询和视图都是同一种文件,只是名称不同
D) 查询和视图都是一个存储数据的表
(23)在Visual FoxPro中,以下关于视图描述中错误的是
A) 通过视图可以对表进行查询 B) 通过视图可以对表进行更新
C) 视图是一个虚表 D) 视图就是一种查询
(24)使用SQL语句将学生表S中年龄(AGE)大于30岁的记录删除,正确的命令是
A) DELETE FOR AGE > 30
B) DELETE FROM S WHERE AGE > 30
C) DELETE S FOR AGE > 30
D) DELETE S WHERE AGE > 30
(25) 在Visual FoxPro中,使用LOCATE FOR命令按条件查找记录,当查找到满足条件的第一条记录后,如果还需要查找下一条满足条件的记录,应使用
A) 再次使用LOCATE FOR命令 B) SKIP命令
C) CONTINUE 命令 D) GO命令
(26) 在Visual FoxPro中,删除数据库表S的SQL命令是
A) DROP TABLE S B) DELETE TABLE S
C) DELETE TABLE S.DBF D) ERASE TABLE S
(27)下列表达式中,表达式返回结果为的是.F.的是
A) AT(“A”,“BCD”) B) “[信息]”$“管理信息系统”
C) ISNULL(.NULL.) D) SUBSTR(“计算机技术”,3,2)
(28) 使用SQL语句向学生表S(SNO,SN,AGE,SEX)中添加一条新记录,字段学号(SNO)、姓名(SN)、性别(SEX)、年龄(AGE)的值分别为0401、王芳、女、18,正确命令是
A) APPEND INTO S (SNO,SN,SEX,AGE)VALUES(‘0401’,‘王芳’,‘女’,18)
B) APPEND S VALUES(‘0401’,‘王芳’,18,‘女’)
C) INSERT INTO S(SNO,SN,SEX,AGE)VALUES(‘0401’,‘王芳’,‘女’,18)
D) INSERT S VALUES(‘0401’,‘王芳’,18,‘女’)
(29) 假设某个表单中有一个命令按钮cmdClose,为了实现当用户单击此按钮时能够关闭该表单的功能,应在该按钮的Click事件中写入语句
A) ThisForm.Close B) ThisForm.Erase
C) ThisForm.Release D) ThisForm.Return
(30) 在SQL的SELECT查询结果中,消除重复记录的方法是
A) 通过指定主关系键 B) 通过指定惟一索引
C) 使用DISTINCT子句 D) 使用HAVING子句
(31) 在Visual FoxPro中,以下有关SQL的SELECT语句的叙述中,错误的是
A) SELECT子句中可以包含表中的列和表达式
B) SELECT子句中可以使用别名
C) SELECT子句规定了结果集中的列顺序
D) SELECT子句中列的顺序应该与表中列的顺序一致
(32) 下列关于SQL中HAVING子句的描述,错误的是
A) HAVING子句必须与GROUP BY子句同时使用
B) HAVING子句与GROUP BY子句无关
C) 使用WHERE子句的同时可以使用HAVING子句
D) 使用HAVING子句的作用是限定分组的条件
(33) 在Visual FoxPro中,如果在表之间的联系中设置了参照完整性规则,并在删除规则中选择了“限制”,则当删除父表中的记录时,系统反应是
A) 不做参照完整性检查
B) 不准删除父表中的记录
C) 自动删除子表中所有相关的记录
D) 若子表中有相关记录,则禁止删除父表中记录
第(34)-(35)题使用如下三个数据库表:
学生表:S(学号,姓名,性别,出生日期,院系)
课程表:C(课程号,课程名,学时)
选课成绩表:SC(学号,课程号,成绩)
在上述表中,出生日期数据类型为日期型,学时和成绩为数值型,其他均为字符型。
(34) 用SQL命令查询选修的每门课程的成绩都高于或等于85分的学生的学号和姓名,正确的命令是
A) SELECT 学号,姓名 FROM S WHERE NOT EXISTS;
(SELECT * FROM SC WHERE SC.学号 = S.学号 AND成绩 < 85)
B) SELECT 学号,姓名 FROM S WHERE NOT EXISTS;
(SELECT * FROM SC WHERE SC.学号= S.学号 AND >= 85)
C) SELECT 学号,姓名 FROM S,SC
WHERE S.学号= SC.学号 AND成绩 >= 85
D) SELECT 学号,姓名 FROM S,SC
WHERE S.学号 = SC.学号 AND ALL成绩 >= 85
(35) 用SQL语言检索选修课程在5门以上(含5门)的学生的学号、姓名和平均成绩,并按平均成绩降序排列,正确的命令是
A) SELECT S.学号,姓名 平均成绩 FROM S,SC;
WHERE S.学号 = SC.学号;
GROUP BY S.学号 HAVING COUNT(*)>=5 ORDER BY平均成绩 DESC
B) SELECT 学号,姓名,AVG(成绩) FROM S,SC;
WHERE S.学号 = SC.学号 AND COUNT(*)>=5;
GROUP BY 学号 ORDER BY 3 DESC
C) SELECT S.学号,姓名 AVG(成绩) 平均成绩FROM S,SC;
WHERE S.学号 = SC.学号 AND COUNT(*)>=5;
GROUP BY S.学号 ORDER BY平均成绩 DESC
D) SELECT S.学号,姓名 AVG(成绩)平均成绩 FROM S,SC;
WHERE S.学号 = SC.学号;
GROUP BY S.学号 HAVING COUNT(*)>=5 ORDER BY 3 DESC
二、填空题( 每空2分,共30分) 请将每一个空的正确答案写在答题卡【1】~【15】序号的横线上,答在试卷上不得分。
注意:以命令关键字填空的必须拼写完整。
(1)某二叉树中度为2的结点有18个,则该二叉树中有【1】 个叶子结点。
(2)在面向对象方法中,类的实例称为 【2】 。
(3)诊断和改正程序中错误的工作通常称为 【3】 。
(4)在关系数据库中,把数据表示成二维表,每一个二维表称为
【4】 。
(5)问题处理方案的正确而完整的描述称为 【5】 。
(6)在奥运会游泳比赛中,一个游泳运动员可以参加多项比赛,一个
游泳比赛项目可以有多个运动员参加,游泳运动员与游泳比赛项目两
个实体之间的联系是 【6】 联系。
(7)执行命令A=2005/4/2之后,内存变量A的数据类型是 【7】 型。
(8)如下程序显示的结果是 【8】 。
s=1
i=0
do while i<8
s=s+i
i=i+2
enddo
?s
(9)在Visual FoxPro 的中,可以在表设计器中为字段设置默认值的
表是 【9】 表。
(10)Visual FoxPro 中数据库文件的扩展名(后缀)是 【10】 。
(11)-(13)题使用如下三个数据库表:
金牌榜.DBF 国家代码C(3), 金牌数I, 银牌数I, 铜牌数I
获奖牌情况.DBF 国家代码C(3), 运动员名称C(20), 项目名称C(30), 名次I
国家.DBF 国家代码 C(3), 国家名称C(20)
“金牌榜”表中一个国家一条记录:“获奖牌情况”表中每个项目中的各个名次都有一条记录,名次只取前3名,例如:
国家代码 运动员名称 项目名称 名次
001刘翔男子110米栏1
001李小鹏男子双杠3
002非尔普斯游泳男子200米自由泳3
002非尔普斯游泳男子400米个人混合泳1
001郭晶晶女子三米板跳板1
001李婷/孙甜甜网球女子双打1
(11) 为表“金牌榜”增加一个字段“奖牌总数”,同时为该字段设
置有效性规则:奖牌总数>=0,应使用SQL语句
ALTER TABLE金牌榜 【11】 奖牌总数I 【12】 奖牌总数>=0
(12) 使用“获奖牌情况”和“国家”两个表查询“中国”所获金牌
(名次为1)的数量,应使用SQL语句
SELECT COUNT(*) FROM 国家 INNER JOIN 获奖牌情况;
【13】 国家.国家代码 = 获奖牌情况.国家代码;
WHERE 国家.国家名称 = “中国” AND 名次 = 1
(13) 将金牌榜.DBF中新增加的字段奖牌总数设置为金牌数、银牌
数、铜牌数三项的和,应使用SQL语句
【14】 金牌榜 【15】 奖牌总数 = 金牌总数+银牌数+铜牌数
2005年4月全国计算机等级考试C++真题
(考试时间90分钟,满分100分)
一、 选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。
(1)数据的存储结构是指
A) 存储在外存中的数据[KG8][WB]
B) 数据所占的存储空间量
C) 数据在计算机中的顺序存储方式
D)数据的逻辑结构在计算机中的表示[HT]
(2)下列关于栈的描述中错误的是
A) 栈是先进后出的线性表
B) 栈只能顺序存储
C) 栈具有记忆作用
D) 对栈的插入与删除操作中,不需要改变栈底指针
(3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是
A) 冒泡排序为n/2 B) 冒泡排序为n
C) 快速排序为n D) 快速排序为n(n-1)/2
(4)对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为
A) log2n B) n/2 C) n D) n+1
(5)下列对于线性链表的描述中正确的是
A) 存储空间不一定是连续,且各元素的存储顺序是任意的
B) 存储空间不一定是连续,且前件元素一定存储在后件元素的前面
C) 存储空间必须连续,且前件元素一定存储在后件元素的前面
D) 存储空间必须连续,且各元素的存储顺序是任意的
(6)下列对于软件测试的描述中正确的是
A) 软件测试的目的是证明程序是否正确
B) 软件测度的目的是使程序运行结果正确
C) 软件测试的目的是尽可能多地发现程序中的错误
D) 软件测试的目的是使程序符合结构化原则
(7)为了使模块尽可能独立,要求
A) 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强
B) 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱
C) 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱
D) 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强
(8)下列描述中正确的是
A) 程序就是软件
B) 软件开发不受计算机系统的限制
C) 软件既是逻辑实体,又是物理实体
D) 软件是程序、数据与相关文档的集合
(9)数据独立性是数据库技术的重要特点之一。所谓数据独立性是指
A) 数据与程序独立存放
B) 不同的数据被存放在不同的文件中
C) 不同的数据只能被对应的应用程序所使用
D) 以上三种说法都不对
(10)用树形结构表示实体之间联系的模型是
A) 关系模型 B) 网状模型
C) 层次模型 D) 以上三个都是
(11)要定义数组A,使得其中每个元素的数据依粢 :3、9、4、8、0、0、0,错误的定义语句是
A) int A[]={3,9,4,8,0,0,0,};
B) int A [7]={3,9,4,8,0,0,0};
C) int A[]={3,9,4,8};
D) int A[7]={3,9,4,8};
(12)在C++中,实现封装性需借助于
A) 枚举 B) 类 C) 数组 D) 函数
(13)下列关于虚函数的描述中,正确的是
A) 虚函数是一个static类型的成员函数
B) 虚函数是一个非成员函数
C) 基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明 ]
D) 派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型
(14)下列关于运算符重载的描述中,正确的是
A) 运算符重载可以改变操作的个数
B) 运算符重载可以改变运算符的优先级
C) 运算符重载可以改变运算符的结合性
D) 运算符重载可以使运算符实现特殊功能
(15)有如下函数模板声明:
template
T Max(T a,T b){ retun(a>=b)?a∶b;}
下列对函数模板Max的调用中错误是
A) Max(3.5,4.5) B) Max(3.5,4)
C) Max(3.5,4.5) D) Max (3.5,4)
(16)若语句:
cout<')< 是程序中第一个输出语句,则输出结果是
A) 3141512>>OK! B) 3141512OK!>>
C) 3141512OK!>> D) 31415>>OK!
(17)有如下语句序列:
int=0;
do{k+=5;cout<<'$';} while(k<19);
while(k-->0)cout<<'*';
执行上面的语句序列输出字符$和*的个数分别是
A) 4和20 B) 5和20
C) 4和21 D) 5和21
(18)针对数组定义int data[10]; ,下列表述中错误的是
A) 用*data可访问到数组的首元素
B) 用data[9]可访问到数组的末元素
C) 用data[10]访问数组元素会超出数组边界
D) data共有10个元素,其首元素是data[1]
(19)已知n是一个int型变量,下列语句中错误的是
A) long *p=new long[n]; B) long p[n];
C) long *p=new long(n); D) long p[10];
(20)下列函数中对调用它的函数没有起到任何作用的是
A) void f1(double &x){--x}
B) double f2(double x){ return x-1.5;}
C) void f3(double x){--x;}
D) double f4(double *x){--*x; return *x;}
(21)在下面的类定义中,模线处应填入的内容是
A.B.C.D.class Fred
{
public:[KG*2]
void print(){cout<void setData(double d){data=d;}
static int count; ]
private:
double data; ]
};
[CD#5]count=0; //静态数据成员的定义
A) int B) static int
C) int Fred:: D) static int Fred::
(22)有如下程序:
include
using namespace std;
class Base
{ protected: int i;
public: int j;
};
class Derived:public Base
{ int m;
public: int n;
};
int main()
{ Derived d;
d.i=0; //[1]
d.j=0; //[2]
d.m=0; //[3]
d.n=0; //[4]
return 0;
}
其中主函数中有两个赋值语句有错,这两个错误的赋值语句是
A) [1]和[2] B) [1]和[3]
C) [2]和[3] D) [2]和[4]
(23)在表达式x-y中,“-”是作为非成员函数重载的运算符。若使用显式的函数调用代替直接使用运算符“-”,这个表达式还可表示为
A) x.operator-(y) B) operator-(y,x)
C) y.operator-(x) D) operator-(x,y)
(24)下面的函数模板定义中错误的是
A) template
Q F(Q x) {RETURN Q+x;} ]
B) template
Q F(Q x) {return x+x;} ]
C) template
T F(T x) { return x*x;} ]
D) template
bool F(T x) {return x>1;} ]
(25)已知outifile是一个输出流对象,要想将outfile的文件指针定位到当前位置之前321字节处,正确的函数调用语句是
A) outfile.seekp(321,ios_base::cur);
B) outifile.seekp(321,ios_base::beg);;
C) outfile.seekp(-321,ios_base::beg);
D) outifile.seekp(-321,ios_base::cur);
(26)有如下的程序:
#include
#include
using namespace std;
class MyString
{
public[WB] :
MyString(const char*s);
~MyString(){ delete[]data;} ]
protected:
unsigned len;
char*data;
};
MyString::MyString(const char *s)
{
len=strlen(s);
data=new char[len+1]
strcpy(data,s);
}
int main()
{
MyString a("C++Programing");
MyString b(a);
return 0;
}
在运行上面的程序时出错,出错的原因是
A) 构造函数的实参不允许是本类的对象
B) 没有定义实现深层复制(深拷贝)的拷贝构造函数
C) 构造对象a时实参与形参类型不符
D) 系统不能生成缺省的拷贝构造函数
(27)有如下程序:
#include
using namespace std;
class Demo
{
public:
Demo (){ cout<<"default constructor\n" }
Demo (const Demo &x){ cout<<"copy constructor\n";}
};
Demo userCode(Demo b){ Demo c(b); return c;}
int main()
{
Demo a,d;
cout<<"calling userCode()\n";
d=userCode(a)
return 0;
}
[JP3]执行上面程序的过程中,构造函数Demo()和Demo(const Demo &x)被调用的次数分别是[JP]
A) 1和1[KG15][WB] B) 1和2 C) 2和3 D)2和4
(28)已知在函数func中语句this->ff=0;与语句ff=0;的效果完全相同。对于这一现象,下列表述中错误的是
A) ff是某个类的数据成员,func是该类的友元函数
B) ff是某个类的数据成员,func是该类的成员涵数
C) this->ff和ff是同一个变量
D) func不是一个静态成员函数
(29)有如下程序:
#include
using namespace std;
class Base
{
public :
Base(){ cout<<"BB"; f(); }
void f(){ cout<<"Bf";}
}; ]
class Derived:public Base
{
public :
Derived(){ cout<<"DD";}
void f() { cout<<"Df";} ]
};
int main(){ Derived d; return 0;}
执行上面的程序将输出
A) BBBfDD B) BBDfDDDf C) DD D) DDBBBf
(30)下列说法中错误的是
A) 公有继承时基类中的public成员在派生类中仍是public成员
B) 私有继承时基类中的protected成员在派生类中仍是protected成员
C) 私有继承时基类中的public成员在派生类中是private成员
D) 保护继承时基类中的public成员在派生类中是protected成员
(31)下面是关于派生类声明的开始部分,其中正确的是
A) class virtual B: publice A
B) virtual class B: publice A
C) class B: public A virtal
D) class B: virtual public A
(32)在重载一个运算符为成员函数时,其参数表中没有任何参数,这说明该运算符是
A) 后缀一元运算符 B) 前缀一元运算符
C) 无操作数的运算符 D)二元运算符
(33)关于关键字class和typename,下列表述正确的是
A) 程序中所有的typename都可以替换为class
B) 程序中所有的class都可以替换为typename
C) A)和 B)都正确
D) A)和 B)都不正确
(34)有如下程序:
#include
#include
using namespace std;
class CSum
{ int x,y;
public :
CSum(int x0,int y0):x(x0),y(y0){}
friend ostream& operator<<(ostream& os, const CSum& xa)
{ os<} ]
};
int ma in(){
CSum y(3,5);
cout<cout< return 0; ]
}
执行上面程序的输出是
A) 88 B) ****88 C) ****8****8 D) 8****8
(35)有如下程序:
#include
using namespace std;
class Stack {
public :
Stack(unsigned n=10): size(n){ rep_=new int[size]; top=0;}
Stack(Stack& s): size(s.size)
{
rep_=new int[size];
for(int i=0;itop=s.top;
}
~Stack (){ delete[]rep_;}
void push (int a) {rep_[top]=a; top++;}
int pop(){ --top; return rep_[top];}
bool isEmpty() const {return top= =0;} ]
privat[WB] e:
int*rep_;
unsigned size, top; ]
};
int main()
{
Stack s1;
for(int i=1;i<5;i++) s1.push(i);
Stack s2(s1);
for(i=1;i<3;i++) cout<s2.push(6);
s1.push(7);
while(!s2.isEmpty()) cout<return 0;
}
执行上面程序的输出是
A) 4,3,2,1,[KG13][WB] B) 4,3,6,7,2,1,
C) 4,3,6,2,1, D) 1,2,3,4,
二、 填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡【1】~【15】序号的横线上,答在试卷上不得分。注意:以命令关键字填空的必须拼写完整。
(1)某二叉树中度为2的结点有18个,则该二叉树中有[ZZ(Z]
______[ZZ)]个叶子结点。
(2)在面向对象方法中,类的实例称为[ZZ(Z]_____[ZZ)]。
(3)诊断和改正程序中错误的工作通常称为[ZZ(Z] _____
[ZZ)]。
(4)在关系数据库中,把数据表示成二维表,每一个二维表称为[ZZ
(Z]_____[ZZ)]。
(5)问题处理方案的正确而完整的描述称为[ZZ(Z]_____[ZZ)]。
(6)在下面函数的横线处填上适当的内容,使该函数能够利用递归
方法求解字符串str的长度(不得使用系统提供的字符串处理函
数)。
int GetLen(char*str)
{
if([ZZ(Z]______[ZZ)])return[ZZ(Z]_____[ZZ)];
else return 1+GetLen(str+1);
}
(7)下列程序的输出结果是[ZZ(Z]______[ZZ)]。
#include
#include
using namespace std;
void fun(const char*s, char &c){ c=s[strlen(s)/2];}
int main()
{
char str[]="ABCDE";
char ch= str[1];
fun(str,ch);
cout<return 0;
}
(8)在下面程序的横线处填上适当的内容,使程序执行后的输出结果为1/2005。
#include
using namespace std;
class Date
{
public:[WB]
Date(int m=1,int y=0):month(m),year(y) {}
void Print() { cout<[ZZ(Z] ______[ZZ)]operator+(const Date & dl,const Date & d2); ]
private:
int month,year;
};
[ZZ(Z]_____[ZZ)]operator+(const Date & d1,const Date & d2)
{
int year,month;
year=d1.year+d2.month;
year+=(month-1)/12;
month=(month-1)%12+1;
return Date(month,year);
}
void main()
{
Date d1(3,2004),d2,d3(10);
d2=d3+d1;
d2.Print();
}
(9)在下面程序的横线处填上适当的内容,使程序执行后的输出结果为ABCD。
#include
using namespace std;
class A
{
public: A(){ cout<<'A';}
};
class B:[ZZ(Z]______[ZZ)]
{
public: B(){ cout<<'B';}
};
class C:[ZZ(Z]______[ZZ)]
{
public: C(){ cout<<'C';}
};
class D:public B,public C
{
public: D() { cout<<'D';}
};
void main() {D obj;}
(10)Staff类含有int型数据成员ID,两个Staff对象相等是指它们的ID相同。下面的函数重载了运算符 == ,它用来判断两个Staff对象是否相等,相等时返回true,否则返回false。请将横线处缺失部分补充完整。
bool Staff:: Staff ==(const Staff *s)
{
return ([ZZ(Z]______[ZZ)]);
}
(11)以下函数模板max的功能是:返回数组a中最大元素的值。请将横线处缺失部分补充完整。
templateT max(T a[],int n)
{ T m=a[0];
for (int i=1; iif(a[i]>m)[ZZ(Z]______[ZZ)];
return m;
}
(12)下面程序的执行结果是[ZZ(Z]______[ZZ)]。
#include
#include
using namespace std;
void main()
{
cout<cout<<"Hello"< }
站内检索: |
|