一 、选择题 (1)循环链表的主要优点是 A)不再需要头指针了 B)从表中任一结点出发都能访问到整个链表 C)在进行插入、删除运算时,能更好的保证链表不断开 D)已知某个结点的位置后,能够容易的找到它的直接前件 正确答案: B
(2)栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是 A)ABCED B)DCBEA C)DBCEA D)CDABE 正确答案: B
(3)n个顶点的强连通图的边数至少有 A)n-1 B)n(n-1) C)n D)n+1 正确答案: C
(4)在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率,现在,与程序的效率相比,人们更重视程序的 A)安全性 B)一致性 C)可理解性 D)合理性 正确答案: C
(5)模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准则是模块的 A)抽象和信息隐蔽 B)局部化和封装化 C)内聚性和耦合性 D)激活机制和控制方法 正确答案: C
(6)软件开发的结构化生命周期方法将软件生命周期划分成 A)定义、开发、运行维护 B)设计阶段、编程阶段、测试阶段 C)总体设计、详细设计、编程调试 D)需求分析、功能定义、系统设计 正确答案: A
(7)在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序看做是 A)路径的集合 B)循环的集合 C)目标的集合 D)地址的集合 正确答案: A
(8)在数据管理技术发展过程中,文件系统与数据库系统的主要区别是数据库系统具有 A)特定的数据模型 B)数据无冗余 C)数据可共享 D)专门的数据管理软件 正确答案: A
(9)数据库设计包括两个方面的设计内容,它们是 A)概念设计和逻辑设计 B)模式设计和内模式设计 C)内模式设计和物理设计 D)结构特性设计和行为特性设计 正确答案: A
(10)实体是信息世界中广泛使用的一个术语,它用于表示 A)有生命的事物 B)无生命的事物 C)实际存在的事物 D)一切事物 正确答案: C
(11)以下说法错误的是 A)一个算法应包含有限个步骤 B)在计算机上实现的算法是用来处理数据对象的 C)算法中指定的操作,不能通过已经实现的基本运算执行有限次后实现 D)算法的目的是为了求解 正确答案: C
(12)下列选项中不是结构化程序基本结构的是 A)顺序结构 B)跳转分支结构 C)选择结构 D)循环结构 正确答案: B
(13)已知int k,m=1;执行语句k=-m++;后,k的值是 A)-1 B)0 C)1 D)2 正确答案: A
(14)已知int m;float k;正确的语句是 A)(int k)%m B)int(k)%m C)int(k%m) D)(int)k%m 正确答案: D
(15)下面各选项中,均是C语言标识符的选项组是 A)33 we auto B)_23 me _3ew C)_43 3e_ else D)ER -DF 32 正确答案: B
(16)已知int k;float m=-3;执行语句k=m%2;后,变量k的值是 A)-1 B)0 C)1 D)语句有错误 正确答案: D
(17)不能进行++和--运算的数据类型为 A)指针 B)整型 C)长整型 D)常量 正确答案: D
(18)已知int k=10,m=3,n;则下列语句输出结果是 printf("%d\n",n=(k%m,k/m)); A)2 B)3 C)4 D)5 正确答案: B
(19)已知int a;float b;所用的scanf调用语句格式为: scanf("a//%d,b=%f",&a,&b); 为了将数据3和25.08分别赋给x和y,正确的输入应当是 A)3,25.08 B)a=3,b=25.08 C)a//3,b=25.08 D)a//3b=25.08 正确答案: C
(20)当k的值不为0时,在下列选项中能够将k的值赋给变量m,n的是 A)m=k=n B)(m=k)&&(n=k) C)(m=k)||(n=k) D)(k=m)&&(n=k) 正确答案: B
(21)下列程序的运行结果是 #include "stdio.h" main() { int x=-9,y=5,z=8; if(xif(y<0)z=0; else z+=1; printf("%d\n",z);} A)6 B)7 C)8 D)9 正确答案: D
(22)现有定义int k=1;则执行语句while(++k<4);后,k的值为 A)4 B)5 C)6 D)8 正确答案: A
(23)以下程序的运行结果为 #include "stdio.h" main() {int m,n; for(m=0,n=10;mprintf("%d,%d\n",m,n);} A)6,7 B)7,6 C)9,7 D)7,9 正确答案: C
(24)阅读下列程序,程序的输出结果是 #include "stdio.h" main() { int m,n; float k; for(m=6;m>2;m--) { k=0; for(n=m;n>1;n--) k=k+m*n; } printf("%f\n",k); } A)5.000000 B)15.000000 C)25.000000 D)35.000000 正确答案: B
(25)下列程序的输出结果是 #include "stdio.h" main() {int i,a=0,b=0; for(i=1;i<10;i++) {if(i%2==0) {a++; continue;} b++;} printf("a=%d,b=%d",a,b);} A)a=4,b=4 B)a=4,b=5 C)a=5,b=4 D)a=5,b=5 正确答案: B
(26)下列选项可以正确表示字符型常量的是 A)′\r′ B)"a" C)"\897" D)296 正确答案: A
(27)下面对C语言的描述中,正确的是 A)函数一定有返回值,否则无法使用函数 B)C语言函数既可以嵌套定义又可以递归调用 C)在C语言中,调用函数时,只能将实参的值传递给形参 D)C语言程序中有调用关系的所有函数都必须放在同一源程序文件中 正确答案: C
(28)阅读下面程序段,则执行后的结果为 #include "stdio.h" main() {int m=4,n=2,k; k=fun(m,n); printf("%d\n",k);} fun(int m,int n) {return(m*m*m-n*n*n);} A)64 B)8 C)56 D)0 正确答案: C
(29)阅读下面程序段,则执行后输出的结果是 #include "stdio.h" main() { char fun(char,int); char a=′A′; int b=13; a=fun(a,b); putchar(a);} char fun(char a,int b) {char k; k=a+b; return k;} A)A B)M C)N D)L 正确答案: C
(30)编写求两个双精度数之和的函数,选项中正确的是 A)double add(double a,double b) {double s; s=a+b; return s; } B)double add(double a,b) {double s; s=a+b; return (s);} C)double add(double a double b) {double s; s=a+b; returns;} D)double add(a,b) {double a,b,s; s=a+b; return (s);} 正确答案: A
(31)已知int a;则下面的说明指针变量p的语句正确的是 A)int p=&a B)int *p=a C)int *p=&a D)int *p=*a 正确答案: C
(32)已知char **t;则变量t是 A)指向char变量的指针 B)指向指针的char变量 C)指向指针的指针 D)以上说法都不对 正确答案: C
(33)阅读下面程序,执行后的结果为 #include "stdio.h" void fun(int *a,int *b) { int k; k=5; *a=k; *b=*a+k;} main() { int *a,*b,x=10,y=15; a=&x; b=&y; fun(a,b); printf("%d,%d\n",*a,*b);} A)10,15 B)5,15 C)5,10 D)15,10 正确答案: C
(34)阅读下面程序,在程序执行后的结果为 #include "stdio.h" int *fun(int *a,int *b) { int m; m=*a; m+=*b-3; return(&m);} main() {int x=21,y=35,*a=&x,*b=&y; int *k; k=fun(a,b); printf("%d\n",*k);} A)53 B)21 C)35 D)14 正确答案: A
(35)已知int a[10];则对a数组元素的正确引用是 A)a[10] B)a C)a+5 D)a[10-10] 正确答案: D
(36)在C语言中,一维数组的定义方法为 类型说明符 数组名 A)[常量表达式] B)[整型常量] C)[整型变量] D)[整型常量]或[整型表达式] 正确答案: A
(37)阅读下列程序,则运行结果为 #include "stdio.h" fun() { static int x=5; x++; return x;} main() { int i,x; for(i=0;i<3;i++) x=fun(); printf("%d\n",x);} A)5 B)6 C)7 D)8 正确答案: D
(38)下列程序的输出结果是 #include "stdio.h" #defineM(x,y)x%y main() { int a,m=12,n=100; a=M(n,m); printf("%d\n",a--);} A)2 B)3 C)4 D)5 正确答案: C
(39)阅读下面程序,则程序段的功能是 #include "stdio.h" main() { int c[]={23,1,56,234,7,0,34},i,j,t; for(i=1;i<7;i++) { t=c[i];j=i-1; while(j>=0 && t>c[j]) {c[j+1]=c[j];j--;} c[j+1]=t;} for(i=0;i<7;i++) printf("%d ",c[i]); putchar(′\n′);} A)对数组元素的升序排列 B)对数组元素的降序排列 C)对数组元素的倒序排列 D)对数组元素的随机排列 正确答案: B
(40)阅读下列程序,则执行后的结果为 #include "stdio.h" main() { int c[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56}; printf("%x,%x\n",c[2][2],*(*(c+1)+1));} A)3e,6 B)62,5 C)56,5 D)3E,6 正确答案: A
(41)下列选项中错误的说明语句是 A)char a[]={′t′,′o′,′y′,′o′,′u′,′\0′}; B)char a[]={"toyou\0"}; C)char a[]="toyou\0"; D)char a[]=′toyou\0′; 正确答案: D
(42)下述对C语言字符数组的描述中错误的是 A)字符数组的下标从0开始 B)字符数组中的字符串可以进行整体输入/输出 C)可以在赋值语句中通过赋值运算符"="对字符数组整体赋值 D)字符数组可以存放字符串 正确答案: C
(43)阅读下列程序,则在执行后,程序的运行结果为 #include "stdio.h" #include "string.h" main() {char a[30]="nice to meet you!"; strcpy(a+strlen(a)/2,"you"); printf("%s\n",a);} A)nice to meet you you B)nice to C)meet you you D)nice to you 正确答案: D
(44)阅读下面程序,则执行后的结果是 #include "stdio.h" main() {char str[]="tomeetme",*p; for(p=str;pprintf("\n");} A)tomeetme B)tmem C)oete D)tome 正确答案: B
(45)下面程序的文件名为t.exe,在DOS下输入的命令行参数如下:t to meet me<回车> 则程序输出的结果是 #include "stdio.h" main(argc,argv) int argc;char *argv[]; {int i; printf("%d\n",argc);} A)3 B)4 C)2 D)以上答案都不正确 正确答案: B
(46)阅读下面程序,则执行后的结果为 #include "stdio.h" long fun(int n) {if(n>2) return(fun(n-1)+fun(n-2)); else return(2);} main() {printf("%ld\n",fun(5));} A)10 B)15 C)20 D)以上3个答案都不正确 正确答案: A
(47)已知如下定义,则sizeof(a)的值是 struct{int i; char c; double a; } a; A)8 B)9 C)10 D)11 正确答案: D
(48)已知函数的原形如下,其中结构体a为已经定义过的结构,且有下列变量定义 struct a *f(int t1,int *t2,strcut a t3,struct a *t4) struct a p,*p1;int i; 则正确的函数调用语句为 A)&p=f(10,&i,p,p1); B)p1=f(i++,(int *)p1,p,&p); C)p=f(i+1,&(i+2),*p,p); D)f(i+1,&i,p,p); 正确答案: B
(49)下面程序段的输出为 #include "stdio.h" main() { printf("%d\n",12<<2);} A)0 B)47 C)48 D)24 正确答案: C
(50)假定当前盘符下有两个文本文件,如下 文件名 a1.txt a2.txt 内容 123# 321# 则下面程序段执行后的结果为 #include "stdio.h" void fc(FILE *p) { char c; while((c=fgetc(p))!=′#′)putchar(c);} main() { FILE *fp; fp=fopen("a1.txt","r"); fc(fp); fclose(fp); fp=fopen("a2.txt","r"); fc(fp); fclose(fp); putchar(′\n′);} A)123321 B)123 C)321 D)以上答案都不正确 正确答案: A
二 、填空题 (1)常用的黑箱测试有等价分类法、 【1】 、因果图法和错误推测法4种。 正确答案: 1.(边值分析法)
(2)测试的目的是暴露错误,评价程序的可靠性;而 【2】 的目的是发现错误的位置并改正错误。 正确答案: 1.(调试)
(3)软件维护活动包括以下几类:改正性维护、适应性维护、 【3】 维护和预防性维护。 正确答案: 1.(完善性)
(4)在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为【4】 。 正确答案: 1.(消息)
(5)关键字ASC和DESC分别表示 【5】 的含义。 正确答案: 1.(升序排列和降序排列)
(6)定义int a=5,b;,则执行表达式b=++a*--a之后,变量b的值为 【6】 。 正确答案: 1.(25)
(7)以下程序的输出结果是 【7】 。 #include "stdio.h" main() {int a=065; printf("%d\n",--a); } 正确答案: 1.(52)
(8)阅读下面程序,则执行后的输出结果是 【8】 。 #include "stdio.h" main() {int x,y,z; x=1;y=2;z=3; if(x>y)if(x>z)printf("%d",x); else printf("%d",y); printf("%d\n",z); } 正确答案: 1.(3)
(9)如下语句printf("%c\n",′B′+40);在执行后的输出结果是 【9】 。 正确答案: 1.(j)
(10)阅读下面程序,则程序的执行结果为 【10】 。 #include "stdio.h" main() {int a=30,b=20,z; z=fun(a+b,a-b); printf("%d\n",z); } fun(int a,int b) {int z; z=a/b; return z; } 正确答案: 1.(5)
(11)下面的程序实现的是指针p所指向的地址的n个数中,求出最大的和最小的数据,请填空。 fun(int *p,int n) {int *q; int max,min; max=min=*p; for(q=p; 【11】 ;q++) if( 【12】 )max=*q; else if( 【13】 )min=*q; } 正确答案: 1.(q max) 3.(*q(12)下面的函数fun的功能是将形参x的值转换成二进制数,所得二进制数的每一位放在一维数组中返回,二进制的最低位放在下标为0的元素中,其他依次类推,请填空。 fun(int x,int b[]) { int k=0,r; do{ r=x% 【14】 ; b[ 【15】 ]=r; x/= 【16】 ; }while(x); } 正确答案: 1.(2) 2.(k++) 3.(2)
(13)下面函数的功能是将一个字符串的内容颠倒过来,请填空。 void fun(char str[]) {int i,j, 【17】 ; for(i=0,j= 【18】 ;i { k=str[i]; str[i]=str[j]; str[j]=k; } } 正确答案: 1.(k) 2.(strlen(str)-1)
(14)阅读下面程序,则程序的执行结果为【19】。 #include "stdio.h" fun(int k,int *p) { int a,b; if(k==1||k==2) *p=1; else{ fun(k-1,&a); fun(k-2,&b); *p=a+b; } } main() { int x; fun(6,&x); printf("%d\n",x); } 正确答案: 1.(8)
(15)阅读下列程序,则程序的输出结果为【20】。 #include "stdio.h" struct ty {int data; char c; }; main() { struct ty a={30,′x′}; fun(a); printf("%d%c",a.data,a.c); } fun(struct ty b) { b.data=20; b.c=′y′; } 正确答案: 1.(30x)
|