一 、选择题 (1)最简单的交换排序方法是 A)快速排序 B)选择排序 C)堆排序 D)冒泡排序 正确答案: D
(2)栈通常采用的两种存储结构是 A)线性存储结构和链表存储结构 B)散列方式和索引方式 C)链表存储结构和数组 D)线性存储结构和非线性存储结构 正确答案: A
(3)线性表的顺序存储结构和线性表的链式存储结构分别是 A)顺序存取的存储结构、顺序存取的存储结构 B)随机存取的存储结构、顺序存取的存储结构 C)随机存取的存储结构、随机存取的存储结构 D)任意存取的存储结构、任意存取的存储结构 正确答案: B
(4)完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是 A)黑箱测试法 B)白箱测试法 C)错误推测法 D)安装测试法 正确答案: A
(5)在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示 A)模块之间的调用关系 B)程序的组成成分 C)控制程序的执行顺序 )数据的流向 正确答案: A
(6)下列选项中,不属于模块间耦合的是 A)数据耦合 B)同构耦合 C)异构耦合 D)公用耦合 正确答案: C
(7)一个关系中属性个数为1时,称此关系为 A)对应关系 B)单一关系 C)一元关系 D)二元关系 正确答案: C
(8)为用户与数据库系统提供接口的语言是 A)高级语言 B)数据描述语言(DDL) C)数据操纵语言(DML) D)汇编语言 正确答案: C
(9)相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和 A)可重用性差 B)安全性差 C)非持久性 D)冗余性 正确答案: D
(10)需求分析阶段的任务是确定 A)软件开发方法 B)软件开发工具 C)软件开发费用 D)软件系统功能 正确答案: D
(11)下列关于C语言的说法不正确的是 A)C语言既具有高级语言的一切功能,也具有低级语言的一些功能 B)C语言中的每一条执行语句都必须用分号结束,分号不是C语言的一部分,是语句之间的分隔符号 C)注释可以出现在程序中任意合适的地方 D)命令行后面不能加分号,命令行不是C语言的语句 正确答案: B
(12)下列关于标识符的说法中错误的是 A)合法的标识符是由字母、数字和下划线组成 B)C语言的标识符中,大写字母和小写字母被认为是两个不同的字符 C)C语言的标识符可以分为三类,即关键字、预定义标识符和用户标识符 D)用户标识符与关键字不同时,程序在执行时将给出出错信息 正确答案: D
(13)下列合法的整型常量的表示是 A)098 B)oXde C)32767 D)0xDG 正确答案: C
(14)现在有以下定义,int a;double b;float c;char k;则下面的表达式a/b+c-k值的类型为: A)int B)double C)float D)char 正确答案: B
(15)假设整型变量a,b,c的值均为5,则表达式a+++b+++c++的值为 A)17 B)16 C)15 D)14 正确答案: C
(16)下列关于复合语句和空语句的说法错误的是 A)复合语句是由"{"开头,由"}"结尾的 B)复合语句在语法上视为一条语句 C)复合语句内,可以有执行语句,不可以有定义语句部分 D)C程序中的所有语句都必须由一个分号作为结束 正确答案: C
(17)关于printf()函数的返回值叙述正确的是 A)通常是本次调用中输出字符的个数 B)通常是输出的第一个数值 C)通常返回布尔值真 D)通常返回非零值 正确答案: A
(18)现有格式化输入语句,scanf("x=%dц,sumцy=%d,lineцz=%dL",&x,&y,&z);,现在已知在输入数据后,x,y,z的值分别是12,34,45,则下列数据是正确的输入格式的是 A)12,34,45<Enter> B)x=12,y=34,z=45<Enter> C)x=12C,sumy=34,z=45<Enter> D)x=12],sum]y=34,line]z=45<Enter> [注]:"ц"表示空格, <Enter>表示回车 正确答案: D
(19)设x,y,z,t均为整型变量,现有如下语句x=y=z=1;t=++x||++y&&++z;则执行这个语句后t的值为 A)2 B)1 C)0 D)不定值 正确答案: B
(20)现有如下程序段,此程序段编译有错误,则程序段的错误出在 #include <stdio.h> 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)这个语句 正确答案: C
(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); 正确答案: B
(22)若i,j已经定义为整型,则以下程序段中,内循环体的执行次数是 for(i=6;i;i--) for(j=0;j<5;j++){……} A)40 B)35 C)30 D)25 正确答案: C
(23)下列说法中错误的是 A)只能在循环体内使用break语句 B)在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环 C)在while和do…while循环中,continue语句并没有使整个循环终止 D)continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环判断 正确答案: A
(24)阅读如下程序段 #include "stdio.h" main() { int x,a,b; scanf("%d",&x); a=b=x; for(;x!=0;) { if(x<b)b=x; if(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<Enter> 输入后输出结果是 A)a=7569,b=789 B)a=5,b=365 C)a=7,b=789 D)a=7569,b=5 正确答案: D
(25)下面关于字符常量的说法错误的是 A)一个字符常量代表ASCII字符集中的一个字符 B)单引号中的大写字母和小写字母代表不同的字符常量 C)字符常量只能包含一个字符 D)字符常量可以用单引号或双引号括起来 正确答案: 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 正确答案: D
(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 正确答案: A
(28)下列说法错误的是 A)函数调用时,函数名必须与所调用的函数名字完全相同 B)实参的个数必须与形式参数的个数一致 C)实参可以是表达式,在类型上必须与形参一一对应匹配 D)C语言规定,函数必须先定义,后调用(函数的返回值类型为int或char时除外) 正确答案: C
(29)函数的值通过return语句返回,下面关于return语句的形式描述错误的是 A)return表达式; B)return(表达式); C)一个return语句可以返回多个函数值 D)一个return语句只能返回一个函数值 正确答案: C
(30)现有如下定义:int a,b,*p,*q;,则下列赋值语句错误的是 A)p=&a; B)q=&b; C)p=q; D)p=a; 正确答案: D
(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 正确答案: C
(32)现有int a,*b;,b=&a;,则下列运算错误的是 A)*&a B)&*a C)*&b D)&*b 正确答案: 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 正确答案: D
(34)现有如下定义语句 int*p,s[20],i; p=s; 表示数组元素s[i]的表达式不正确的是 A)*(s+i) B)*(p+i) C)*(s=s+i) D)*(p=p+i) 正确答案: C
(35)阅读如下程序段,这个程序在编译的时候会有一个警告,下列关于这个警告叙述正确的是 #include "stdio.h" #define N 10 int *fun(int a[N],int n) { int i,b[N]; for(i=0;i<n;i++) b[i]=a[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)数组赋值的时候没有把数组全部都赋初值,所以在这里会有警告 正确答案: A
(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 正确答案: C
(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 正确答案: A
(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<M;i++) for(j=0;j<N;j++) a[i][j]=i+j-(i-j); fun(a);} A)3 B)4 C)5 D)6 正确答案: B
(39)下列关于字符串的说法中错误的是 A)在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符′\0′作为字符串结束标志 B)′\0′作为标志占用存储空间,计入串的实际长度 C)在表示字符串常量的时候不需要人为在其末尾加入′\0′ D)在C语言中,字符串常量隐含处理成以′\0′结尾 正确答案: B
(40)有下面程序段 #include "stdio.h" #include "string.h" main() {char a[3][20]={{"china"},{"isa"},{"bigcountry!"}}; char k[100]={0},*p=k; int i; for(i=0;i<3;i++) { p=strcat(p,a[i]);} i=strlen(p); printf("%d\n",i);} 则程序段的输出结果是 A)18 B)19 C)20 D)21 正确答案: B
while(a[i]!=′\0′ && b[j]==′\0′) c[k++]=a[i++]; c[k]=′\0′; puts(c);} 则输出结果是 A)acfijkbefijklqswz B)abceffiijjkklqswz C)befijklqswz acfijk D)abcefijklqswz 正确答案: D
(42)现在有如下程序 #include "stdio.h" main() {char s[80]; int i,j; gets(s); for(i=j=0;s[i]!=′\0′;i++) if(s[i]!=′H′______) s[j]=′\0′; puts(s);} 这个程序段的功能是删除输入的字符串中字符′H′,则空线上应当添入的是 A)s[j++]=s[i];j++; B)s[j]=s[i++];j++; C)s[j++]=s[i]; D)s[j]=s[i]; 正确答案: C
(43)下列说法中错误的是 A)静态局部变量的初值是在编译时赋予的,在程序执行期间不再赋予初值 B)若全局变量和某一函数中的局部变量同名,则在该函数中,此全局变量被屏蔽 C)静态全局变量可以被其他的编辑单位所引用 D)所有自动类局部变量的存储单元都是在进入这些局部变量所在的函数体(或复合语 句)时生成,退出其所在的函数体(或复合语句)时消失 正确答案: C
(44)阅读下列程序段,则程序的输出结果为 #include "stdio.h" #define M(X,Y)(X)*(Y) #define N(X,Y)(X)/(Y) main() {int a=5,b=6,c=8,k; k=N(M(a,b),c); printf("%d\n",k);} A)3 B)5 C)6 D)8 正确答案: A
(45)若有以下定义和语句 struct a { int n,m;}; struct a st[3]={{1,20},{2,19},{3,21}}; struct a *p=st; 则以下错误的引用是 A)(p++)->n; B)st[0].n; C)(*p).n; D)p=&st.m; 正确答案: D
(46)假设有如下定义:struct a{int n;float k;}data,*p;若要使p指向data中的成员n,正确的赋值语句是 A)p=&data.n; B)*p=data.n; C)p=(struct a *)&data.n; D)p=(struct a *)data.n; 正确答案: C
(47)下面函数的功能是将指针t2所指向的线性链表,链接到t1所指向的链表的末端。假定t1所指向的链表非空 struct node{ float x;struct node *next;}; connect(struct node *t1, struct node *t2) { if(t1->next==NULL)t1->next=t2; else connect(______ ,t2); } 要实现此功能则应该添入的选项是 A)t1.next B)++t1.next C)t1->next D)++t1->next 正确答案: C
(48)C语言结构体类型变量在程序运行期间 A)TC环境在内存中仅仅开辟一个存放结构体变量地址的单元 B)所有的成员一直驻留在内存中 C)只有最开始的成员驻留在内存中 D)部分成员驻留在内存中 正确答案: B
(49)有下列运算符:~,&,<<,>>, |,^,则运算的优先顺序是 A)~,&, |,<<,>>,^ B)~,<<,>>,&, |,^ C)~,<<,>>,^, &,| D)~,<<,>>,&,^, | 正确答案: D
(50)最简单的交换排序方法是 A)快速排序 B)选择排序 C)堆排序 D)冒泡排序 正确答案: D
二 、填空题 (1)栈和队列通常采用的存储结构是 【1】 。 正确答案: 1.(链式存储和顺序存储)
(2)在程序设计阶段应该采取 【2】 和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。 正确答案: 1.(自顶而下)
(3)软件结构是以 【3】 为基础而组成的一种控制层次结构。 正确答案: 1.(模块)
(4)数据库系统阶段的数据具有较高独立性,数据独立性包括物理独立性和 【4】 两个含义。 正确答案: 1.(逻辑独立性)
(5)数据库保护分为:安全性控制、 【5】 、并发性控制和数据的恢复。 正确答案: 1.(完整性控制)
(6)语句printf("%f\n",13.0*(1/5));的输出结果为 【6】 。 正确答案: 1.(0.000000)
(7)阅读下面语句,则程序的执行结果是 【7】 。 #include "stdio.h" main() { int a=-1,b=1,k; if((++a<0)&&!(b--<=0)) printf("%d,%d\n",a,b); else printf("%d,%d\n",b,a);} 正确答案: 1.(1,0)
(8)阅读下面语句,则执行后的输出结果为 【8】 #include "stdio.h" main() {char a,b; for(a=′0′,b=′9′;a<b;a++,b--) printf("%c%c",a,b); printf("\n");} 正确答案: 1.(0918273645)
(9)阅读下面程序,则执行后程序的结果为 【9】 #include "stdio.h" main() { int a=0,b=0; while(a<15)a++; while(b++<15); printf("%d,%d\n",a,b);} 正确答案: 1.(15,16)
(10)在使用putchar和getchar函数处理字符时,必须在程序的开头出现包含头文件的命令行是 【10】 。 正确答案: 1.(#include "stdio.h")
(11)下列程序的输出结果是 【11】 , 【12】 。 #include <math.h> main() { float a=-1.3;b=1.3; printf("%f,%f",fabs(a),fabs(b);} 正确答案: 1.(1.300 000) 2.(1.300 000)
(12)设有以下定义和语句,则*(*(p+2)+1)的值为 【13】 。 int a[3][2]={10,20,30,40,50,60},(*p)[2]; p=a; 正确答案: 1.(60)
(13)有下列程序,功能是把输入的十进制长整型数以十六进制的形式输出,完成程序 #include "stdio.h" main() {char b[17]={"0123456789ABCDEF"}; int c[50],d,i=0,base=16; long n; scanf("%ld",&n); do{c[i]=n%base;i++;n= 【14】 ;} while(n!=0); for(--i;i>=0;--i) {d= 【15】 ;printf("%c",b[d]);} printf("H\n");} 正确答案: 1.(n/base或n/16) 2.(c[I])
(14)现有如下程序段,则程序段的输出结果为 【16】 。 #include "stdio.h" int fun() {static int k; return k;} main() {int m; m=fun(); printf("%d\n",m);} 正确答案: 1.(0)
(15)现有如下定义:struct aa{int a;float b;char c;}*p;现需用malloc函数动态的申请一个struct aa类型大小的空间(由p指向),则定义的语句为: 【17】 。 正确答案: 1.(p=(struct aa *) malloc (sizeof(struct aa));)
(16)有如图所示的双链表结构,请根据图示完成结构体的定义:

{ int data; 【18】 } node; 正确答案: 1.(struct aa *lhead,*rchild;)
(17)当调函数frend从磁盘文件中读取数据时,若函数数的返回时为5,则表明 【19】 ;若函数的返回值为0,则表明 【20】 。 正确答案: 1.(读取的数据项做为5) 2.(文件结束或出错) |