填空题请将每一个空的正确答案写在答题卡的[1]至[20]序号的横线上,答在试卷上不得 分。(1)栈的基本运算有三种:入栈、退栈和 [1] 。答案:[1]读栈顶[1]元素评析:栈的基本运算有三种:入栈、退栈和读栈项元素。入栈运算是指在栈项位置插入一个新元素。这个运算有两个基本操作:首先将栈顶指针进一(即top加1),然后将新元素插入到栈顶指针指向的位置。退栈运算是指取出栈顶元素并赋给一个指定的变量。这个运算有两个基本操作:首先将栈顶元素(栈项指针指向的元素)赋给一个指定的变量,然后将栈项指针退一(即top减1)。读栈顶元素是指将栈顶元素赋给一个指定的变量。这个运算不删除栈顶元素,只是将它的值赋给一个变量。(2)在面向对象方法中,信息隐蔽是通过对象的 [2] 性来实现的。答案:[2]封装评析:软件工程[2]的基本原则包括抽象、信息隐蔽、模块化[3]、局部化、确定性、一致性、完备性和可验证性。信息隐蔽是指采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。(3)数据流的类型有 [3] 和事务型。答案:[3]变换型评析:典型的数据流类型有两种:变换型和事务型。变换型:是指信息沿输入通路进入系统,同时由外部形式变换为内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。事务型:在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。(4)数据库系统中实现各种数据管理功能的核心软件称为 [4] 。答案:[4]数据库管理系统或DBMS评析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织[4]、数据操纵、数据维护、控制及保护和数据服务[5]等。数据库管理系统是数据库系统的核心。(5)关系模型的数据操纵即是建立在关系上的数据操纵,一般有 [5] 、增加、删除 和修改四种操作。答案:[5]查询评析:关系模型的数据操纵即是建立在关系上的数据操纵,一般有查询、增加、删除和修改四种操作。数据查询:用户可以查询关系数据库中的数据,它包括一个关系内的查询以及多个关系间的查询。数据删除的基本单位是一个关系内的元组[6],它的功能是将指定关系内的指定元组删除。数据插入仅对一个关系而言,在指定关系中插入一个或多个元组。数据修改是在一个关系中修改指定的元组和属性。(6)下列程序的输出结果是 [6] 。main()(int a=l,b=2;a=a+b;b=a-b;a=a-b;printf(”%d,%dn”,a,b);)答案:[6]2,1评析:本题中,执行a=a+b时,a=l,b=2,a=l+2=3;b=a-b时,a=3,b=2,b=3-2=1;a=a-b时,a=3,b=l,a=3.1=2;因此,本题的输出是2,1.(7)下列程序的输出结果是16.00,请填空;,main()(int a=9,b=2:float x= [7] ,y=1.1,z;z=a/2+b*x/y+l/2;printf(”%5.2tin”,z);)答案:[7]6.6评析:本题,已知结果z=16.00,即16.0=a/2+b*x/y+l/2,分别把a、b代入,得到16.0=9/2+2″x/1.1+1/2。因为a=9,a是整型,所以9/2的值在没有进行类型转换时,等于4,1/2同理,等于0。代入求一元一次方程,很容易就可以得出x=6.6。(8)用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间, 请填空。st=(chhr*) [8] ;答案:181 malloc(11)评析:malloc函数的格式是:void*(或char*)malloc(size),size表示应分配的存储区。此题要分配11字节的单元,把11代入即可。(9)下列程序段[7]的输出结果是 [9] 。main()(char b[]=”Hello,you”;b[5]=0;printf(”%sn”,b);)答案:[9]Hello评析:字符串中,数值0或符号‘O’表示字符串的结束。本题中,b[5]被赋了0值,表明字符串b的第六个字符就是结束标志。因此,只输出前五个字符,即Hello。(10)下列程序段的输出结果是 [10] 。int n=’c’:switch(n++)(default:printf(”error”);break;case。a’:case’A。:caseIb’:tase’B’:printf(”good”);break;case’c’:case’C’:printf(”pass”);case’d’:case’D’:printf(”warn”);)答案:[10]passwarn评析:n++是在执行完其所在的语句后再加l,因此,在执行case的时候,n的值依然为‘c’,执行case‘c’后面的语句,先打印出“pass”;在执行完case‘c’后,未遇到break跳出switch,便接着执行下面的语句,又打印出warn。所以此题输出结果是:passwarn。(11)以下程序通过函数指针p调用函数mn,请在填空栏内,写出定义变量p的语句。void fun(int‘x,int*y)( …… )main()( int a=lO,b=20;[11] :p=fun; p(&a,&b);……)答案:[11]void(*p)();评析:要定义p为指向函数的指针变量,需写成:void(*p)();注意+p两侧的括弧不可以省略,表示p先与*结合,是指针变量,再与后面的()结合,表示此指针变量指向函数,这个函数无返回值(同fun函数)。(12)以下程序的输出结果 [12] 。main()(int p[7]={ll,13,14,15,16,17,18);int i=0,J=0;while(1<7&&p[i]%2==1)j+=p[i++];printf(”%dn”J);}答案:[12]24评析:本题程序定义了一维数组p,有七个数组元素,整型变量i,.j初值分别为0,当while的条件表达式(i<7&&p[i]%2==1)的值为真时,执行语句j+=p[i++];,如:当i=0时,i<7为真,p[I]%2=11%2=1,表达式(p[i]%2:=1)的值为真,所以整个表达式(i<7&&p[i]%2==1)的值为真,执行j=j+p[i++]=0+11=11,i=l;依次类推可以得出答案24。(13)下列程序的输出结果是 [13] 。void fun(int *n)(while((*n)–);printf(”%d”,++(*n));)main()( int a=100;fun(&a);)答案:[13]0评析:在函数fun()中,while((*n)–)是先引用+n的值,再做(*n)–运算,所以循环结束时*n的值为O,再做(+n)–运算后,*n的值为-1;执行++(*n)后,*n的值是O。(14)以下程序的输出结果是 [14] 。main()(int arr[]={30,25,20,15,10,5),*p=arr;p++;printf(”%dn”,*(p+3));)答案:[14]10评析:整型指针最初被赋的值是数组art的头指针,即指向数组的第一个元素30,p++后,指针指向数组的下一个元素,即*p=arr[1]=25,在执行*(p+3)时,则相当于a[1+3],即10。因此,输出应为10。(15)以下程序运行后的输出结果是 [15] 。main()(char a[]=”Language”,b[]=”Programe”;char *p1,*p2;int k:pl=a,p2=b;for(k=0;k<=7;k++)if(*(pl+k)==*(p2+k))printf(”%c”,*(pl+k));)答案:[15]gae评析:本题定义了两个字符串数组a[],b[],字符型指针变量p1和p2,且分别指向字符串数组a和b,执行for循环,当if(*(pl+k)==*(p2+k))条件为真,执行输出*(pl+k)对应的字符。即当k=0时,*(pl+k)对应的字符串数组a.中的字符L,*(p2+k)对应的字符串数组b中的字符P,因此if(*(pl+k)==*(p2+k))条件为假,不执行printf语句,依次类推,将字符串数组a和b中对应位置上的字符一一比较,如果对应位置上的字符相同,则输出该字符。(16)下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文 件中,请填空。#include ”stdio.H”FILE *fp;main()( char ch;if((fp=fopen( [16] ))==NULL)exit(0);while((ch=getchar())!=’@’)fputc(ch,fp);fclose(fp);)答案:[l6]“bi.Dat”, “w”或“bi.dat”,“w+”或“bi.dat”,“r+”评析:本题的考点是fopen()函数,此函数的格式是fopen(文件名,使用文件方式),题目的要求是将从键盘读入的文本写到文件中,因此选择的打开方式应该是“w”(只写)。或者是读写“r+”或“w+”。(17)以下程序是从终端读入数据到数组中,统计其中正数的个数,并计算它们的和。请填空。main()(int i,a[20],sum,count;sum=count= [17] ;for(i=0;i<20;i++)scanf(”%d”, [18] );for(i=0;i<20;i++){if(a[I]>0){ count++;sum+= [19] ;)}printf(”sum=%d,count=%dn”,sum,count);}答案:[17]0[18]&a[i][19]a[i]评析:本题要求从终端读入数据到数组中,统计其中正数的个数,并计算它们的和。程序中首先要对存放正数个数的变量count及存放和值的变量sum初始化为0,所以第一空应填:0。接着要求从终端读入数据到数组中,可以通过scanf函数实现,因此第二空应填:&a[i]。最后通过sum+=a[i];语句累加正数a[i]的值到sum中,因此第三空应填:a[i]。(18)若变量n中的值为24,则pint函数共输出 [20] 行。void prnt(int n,int aa[])( int i;for(I=1;i<=n;i++){ printf(”%6d”,aa[I]);if(!(i%5,J)printf(“n”);)printf(”n”);}答案:[20]5评析:本题的关键在于if(!(i%5))printf(“n”);这句,即如果i可被5整除时,则换行。i值为24,可以被5整除4次,并余4,因此,prnt函数共输出5行,最后一行有4个

填空题(每空2分,共40分)请将每一个空的正确答案写在答题卡的[1]至[20]序号的横线上,答在试卷上不得 分。(1)栈的基本运算有三种:入栈、退栈和 [1] 。答案:[1]读栈顶[1]元素评析:栈的基本运算有三种:入栈、退栈和读栈项元素。入栈运算是指在栈项位置插入一个新元素。这个运算有两个基本操作:首先将栈顶指针进一(即top加1),然后将新元素插入到栈顶指针指向的位置。退栈运算是指取出栈顶元素并赋给一个指定的变量。这个运算有两个基本操作:首先将栈顶元素(栈项指针指向的元素)赋给一个指定的变量,然后将栈项指针退一(即top减1)。读栈顶元素是指将栈顶元素赋给一个指定的变量。这个运算不删除栈顶元素,只是将它的值赋给一个变量。(2)在面向对象方法中,信息隐蔽是通过对象的 [2] 性来实现的。答案:[2]封装评析:软件工程[2]的基本原则包括抽象、信息隐蔽、模块化[3]、局部化、确定性、一致性、完备性和可验证性。信息隐蔽是指采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。(3)数据流的类型有 [3] 和事务型。答案:[3]变换型评析:典型的数据流类型有两种:变换型和事务型。变换型:是指信息沿输入通路进入系统,同时由外部形式变换为内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。事务型:在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。(4)数据库系统中实现各种数据管理功能的核心软件称为 [4] 。答案:[4]数据库管理系统或DBMS评析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织[4]、数据操纵、数据维护、控制及保护和数据服务[5]等。数据库管理系统是数据库系统的核心。(5)关系模型的数据操纵即是建立在关系上的数据操纵,一般有 [5] 、增加、删除 和修改四种操作。答案:[5]查询评析:关系模型的数据操纵即是建立在关系上的数据操纵,一般有查询、增加、删除和修改四种操作。数据查询:用户可以查询关系数据库中的数据,它包括一个关系内的查询以及多个关系间的查询。数据删除的基本单位是一个关系内的元组[6],它的功能是将指定关系内的指定元组删除。数据插入仅对一个关系而言,在指定关系中插入一个或多个元组。数据修改是在一个关系中修改指定的元组和属性。(6)下列程序的输出结果是 [6] 。main(){int a=l,b=2;a=a+b;b=a-b;a=a-b;printf(”%d,%d\n”,a,b);}答案:[6]2,1评析:本题中,执行a=a+b时,a=l,b=2,a=l+2=3;b=a-b时,a=3,b=2,b=3-2=1;a=a-b时,a=3,b=l,a=3.1=2;因此,本题的输出是2,1.(7)下列程序的输出结果是16.00,请填空;,main(){int a=9,b=2:float x= [7] ,y=1.1,z;z=a/2+b*x/y+l/2;printf(”%5.2tin”,z);}答案:[7]6.6评析:本题,已知结果z=16.00,即16.0=a/2+b*x/y+l/2,分别把a、b代入,得到16.0=9/2+2″x/1.1+1/2。因为a=9,a是整型,所以9/2的值在没有进行类型转换时,等于4,1/2同理,等于0。代入求一元一次方程,很容易就可以得出x=6.6。(8)用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间, 请填空。st=(chhr*) [8] ;答案:181 malloc(11)评析:malloc函数的格式是:void*(或char*)malloc(size),size表示应分配的存储区。此题要分配11字节的单元,把11代入即可。(9)下列程序段[7]的输出结果是 [9] 。main(){char b[]=”Hello,you”;b[5]=0;printf(”%s\n”,b);}答案:[9]Hello评析:字符串中,数值0或符号‘\O’表示字符串的结束。本题中,b[5]被赋了0值,表明字符串b的第六个字符就是结束标志。因此,只输出前五个字符,即Hello。(10)下列程序段的输出结果是 [10] 。int n=’c’:switch(n++){default:printf(”error”);break;case。a’:case’A。:caseIb’:tase’B’:printf(”good”);break;case’c’:case’C’:printf(”pass”);case’d’:case’D’:printf(”warn”);}答案:[10]passwarn评析:n++是在执行完其所在的语句后再加l,因此,在执行case的时候,n的值依然为‘c’,执行case‘c’后面的语句,先打印出“pass”;在执行完case‘c’后,未遇到break跳出switch,便接着执行下面的语句,又打印出warn。所以此题输出结果是:passwarn。(11)以下程序通过函数指针p调用函数mn,请在填空栏内,写出定义变量p的语句。void fun(int‘x,int*y){ …… }main(){ int a=lO,b=20;[11] :p=fun; p(&a,&b);……}答案:[11]void(*p)();评析:要定义p为指向函数的指针变量,需写成:void(*p)();注意+p两侧的括弧不可以省略,表示p先与*结合,是指针变量,再与后面的()结合,表示此指针变量指向函数,这个函数无返回值(同fun函数)。(12)以下程序的输出结果 [12] 。main(){int p[7]={ll,13,14,15,16,17,18};int i=0,J=0;while(1<7&&p[i]%2==1)j+=p[i++];printf(”%d\n”J);}答案:[12]24评析:本题程序定义了一维数组p,有七个数组元素,整型变量i,.j初值分别为0,当while的条件表达式(i<7&&p[i]%2==1)的值为真时,执行语句j+=p[i++];,如:当i=0时,i<7为真,p[I]%2=11%2=1,表达式(p[i]%2:=1)的值为真,所以整个表达式(i<7&&p[i]%2==1)的值为真,执行j=j+p[i++]=0+11=11,i=l;依次类推可以得出答案24。(13)下列程序的输出结果是 [13] 。void fun(int *n){while((*n)–);printf(”%d”,++(*n));}main(){ int a=100;fun(&a);}答案:[13]0评析:在函数fun()中,while((*n)–)是先引用+n的值,再做(*n)–运算,所以循环结束时*n的值为O,再做(+n)–运算后,*n的值为-1;执行++(*n)后,*n的值是O。(14)以下程序的输出结果是 [14] 。main(){int arr[]={30,25,20,15,10,5},*p=arr;p++;printf(”%d\n”,*(p+3));)答案:[14]10评析:整型指针最初被赋的值是数组art的头指针,即指向数组的第一个元素30,p++后,指针指向数组的下一个元素,即*p=arr[1]=25,在执行*(p+3)时,则相当于a[1+3],即10。因此,输出应为10。(15)以下程序运行后的输出结果是 [15] 。main(){char a[]=”Language”,b[]=”Programe”;char *p1,*p2;int k:pl=a,p2=b;for(k=0;k<=7;k++)if(*(pl+k)==*(p2+k))printf(”%c”,*(pl+k));}答案:[15]gae评析:本题定义了两个字符串数组a[],b[],字符型指针变量p1和p2,且分别指向字符串数组a和b,执行for循环,当if(*(pl+k)==*(p2+k))条件为真,执行输出*(pl+k)对应的字符。即当k=0时,*(pl+k)对应的字符串数组a.中的字符L,*(p2+k)对应的字符串数组b中的字符P,因此if(*(pl+k)==*(p2+k))条件为假,不执行printf语句,依次类推,将字符串数组a和b中对应位置上的字符一一比较,如果对应位置上的字符相同,则输出该字符。(16)下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文 件中,请填空。#include ”stdio.H”FILE *fp;main(){ char ch;if((fp=fopen( [16] ))==NULL)exit(0);while((ch=getchar())!=’@’)fputc(ch,fp);fclose(fp);}答案:[l6]“bi.Dat”, “w”或“bi.dat”,“w+”或“bi.dat”,“r+”评析:本题的考点是fopen()函数,此函数的格式是fopen(文件名,使用文件方式),题目的要求是将从键盘读入的文本写到文件中,因此选择的打开方式应该是“w”(只写)。或者是读写“r+”或“w+”。(17)以下程序是从终端读入数据到数组中,统计其中正数的个数,并计算它们的和。请填空。main(){int i,a[20],sum,count;sum=count= [17] ;for(i=0;i<20;i++)scanf(”%d”, [18] );for(i=0;i<20;i++){if(a[I]>0){ count++;sum+= [19] ;}}printf(”sum=%d,count=%d\n”,sum,count);}答案:[17]0[18]&a[i][19]a[i]评析:本题要求从终端读入数据到数组中,统计其中正数的个数,并计算它们的和。程序中首先要对存放正数个数的变量count及存放和值的变量sum初始化为0,所以第一空应填:0。接着要求从终端读入数据到数组中,可以通过scanf函数实现,因此第二空应填:&a[i]。最后通过sum+=a[i];语句累加正数a[i]的值到sum中,因此第三空应填:a[i]。(18)若变量n中的值为24,则pint函数共输出 [20] 行。void prnt(int n,int aa[]){ int i;for(I=1;i<=n;i++){ printf(”%6d”,aa[I]);if(!(i%5,J)printf(“\n”);}printf(”\n”);}答案:[20]5评析:本题的关键在于if(!(i%5))printf(“\n”);这句,即如果i可被5整除时,则换行。i值为24,可以被5整除4次,并余4,因此,prnt函数共输出5行,最后一行有4个

参考答案与解析:

相关试题

栈的基本运算有三种:入栈、退栈和————

[主观题]栈的基本运算有三种:入栈、退栈和————

  • 查看答案
  • 栈的基本运算有三种:入栈、退栈和______。

    [主观题]栈的基本运算有三种:入栈、退栈和______。

  • 查看答案
  • 栈的基本运算有三种:入栈、退栈和( )。

    [主观题]栈的基本运算有三种:入栈、退栈和( )。

  • 查看答案
  • 请将每一个空的正确答案写在答题卡(1)~(20)序号的横线上,答在试卷上不得分。

    [试题]请将每一个空的正确答案写在答题卡(1)~(20)序号的横线上,答在试卷上不得分。1.计算并填写下表

  • 查看答案
  • 栈的3种基本运算是:入栈、退栈和________。

    [试题]栈的3种基本运算是:入栈、退栈和________。

  • 查看答案
  • (5)栈的3种基本运算是:入栈、退栈和。

    [主观题](5)栈的3种基本运算是:入栈、退栈和。

  • 查看答案
  • 若一个栈以向量V[1..n]存储,且空栈的栈顶指针top为n£«1,则将元素x入

    [单选题]若一个栈以向量V[1.n]存储,且空栈的栈顶指针top为n+1,则将元素x入栈的正确操作是(37)。A.top=top+1;V[top]=x;B.V[top]=x;top=top+1;C.top=top-1;V[top]=x;D.V[top]=x;top=top-1;

  • 查看答案
  • 若一个栈以向量V[1..n]存储,且空栈的栈顶指针top为n£«1,则将元素x入

    [单选题]若一个栈以向量V[1..n]存储,且空栈的栈顶指针top为n+1,则将元素x入栈的正确操作是______。A.top=top+1;V[top]=x;B.V[top]=x;top=top+1;C.top=top-1;V[top]=x;D.V[top]=x;top=top-1;A.B.C.D.

  • 查看答案
  • 以下( )不是栈的基本运算。A)删除栈顶元素 B)删除栈底元素 C)判断栈是否为

    [单选题]以下( )不是栈的基本运算。A.)删除栈顶元素B.)删除栈底元素C.)判断栈是否为空D.)将栈置为空栈

  • 查看答案
  • 【填空题】若栈采用顺序存储方式存储,现两栈共享空间S[1~N],top[i]代表第i个栈( i =1,2)栈顶。栈1的底在v[1],栈2的底在V[N],则栈满的条件是

    【填空题】若栈采用顺序存储方式存储,现两栈共享空间S[1~N],top[i]代表第i个栈( i =1,2)栈顶。栈1的底在v[1],栈2的底在V[N],则栈满的

  • 查看答案