一 、选择题 (1)算法的空间复杂度是指 A)算法程序的长度 B)算法程序中的指令条数 C)算法程序所占的存储空间 D)执行过程中所需要的存储空间 正确答案: D
(2)用链表表示线性表的优点是 A)便于随机存取 B)花费的存储空间较顺序存储少 C)便于插入和删除操作 D)数据元素的物理顺序与逻辑顺序相同 正确答案: C
(3)数据结构中,与所使用的计算机无关的是数据的 A)存储结构 B)物理结构 C)逻辑结构 D)物理和存储结构 正确答案: C
(4)结构化程序设计主要强调的是 A)程序的规模 B)程序的效率 C)程序设计语言的先进性 D)程序易读性 正确答案: D
(5)软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指 A)模块间的关系 B)系统结构部件转换成软件的过程描述 C)软件层次结构 D)软件开发过程 正确答案: B
(6)检查软件产品是否符合需求定义的过程称为 A)确认测试 B)集成测试 C)验证测试 D)验收测试 正确答案: A
(7)数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是 A)控制流 B)加工 C)数据存储 D)源和潭 正确答案: A
(8)应用数据库的主要目的是 A)解决数据保密问题 B)解决数据完整性问题 C)解决数据共享问题 D)解决数据量大的问题 正确答案: C
(9)在数据库设计中,将E-R图转换成关系数据模型的过程属于 A)需求分析阶段 B)逻辑设计阶段 C)概念设计阶段 D)物理设计阶段 正确答案: B
(10)在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是 A)数据库系统 B)文件系统 C)人工管理 D)数据项管理 正确答案: A
(11)以下叙述中正确的是 A)构成C程序的基本单位是函数 B)可以在一个函数中定义另一个函数 C)main()函数必须放在其他函数之前 D)C函数定义的格式是K&R格式 正确答案: A
(12)结构化程序所规定的三种最基本控制结构是 A)输入、处理、输出 B)树形、网形、环形 C)顺序、选择、循环 D)主程序、子程序、函数 正确答案: C
(13)一个C语言程序是由 A)一个主程序和若干子程序组成 B)函数组成 C)若干过程组成 D)若干子程序组成
正确答案: B
(14)请选出可用作C语言用户标识符的是 A)void,define,WORD B)a3_b3,_123,IF C)FOR,--abc,Case D)2a,Do,Sizeof 正确答案: B
(15)下列各数据类型不属于构造类型的是 A)枚举型 B)共用型 C)结构型 D)数组型 正确答案: A
(16)在16位C编译系统上,若定义long a;,则能给a赋40000的正确语句是 A)a=20000+20000; B)a=4000*10; C)a=30000+10000; D)a=4000L*10L 正确答案: D
(17)以下不正确的叙述是 A)在C程序中,逗号运算符的优先级最低 B)在C程序中,APH和aph是两个不同的变量 C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变 D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值 正确答案: D
(18)sizeof(float)是 A)一个双精度型表达式 B)一个整型表达式 C)一种函数调用 D)一个不合法的表达式 正确答案: B
(19)若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为 A)4 B)16 C)32 D)52 正确答案: C
(20)下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空。 #include <stdio.h> main() { int i=0,j,k; do{i++;k=316-13*i;}while(______); j=k/11; printf("316=13*%d+11*%d",i,j); } A)k/11 B)k%11 C)k/11==0 D)k%11==0 正确答案: B
(21)设有定义:int n=0,*p=&n,**q=&p,则下列选项中正确的赋值语句是 A)p=1; B)*q=2; C)q=p; D)*p=5; 正确答案: D
(22)下面程序的运行结果是 #include <stdio.h> main() { int y=10; do{y--;}while(--y); printf("%d\n",y--); } A)-1 B)1 C)8 D)0 正确答案: D
(23)下面程序的输出结果是 main() { int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; printf("%d\n",*(p+2));} A)3 B)4 C)1 D)2 正确答案: A
(24)有如下程序 int a[10]={1,2,3,4,5,6,7,8,9,10}; int *p=&a[3],b;b=p[5]; 则b的值是 A)5 B)6 C)9 D)8 正确答案: C
(25)设有int x=11;则表达式(x++*1/3)的值是 A)3 B)4 C)11 D)12 正确答案: A
(26)请选出以下语句的输出结果 printf("%d\n",strlen("\t\"\065\xff\n")); A)5 B)14 C)8 D)输出项不合法,无正常输出 正确答案: A
(27)下列程序的输出结果是 main() { double d=3.2; int x,y; x=1.2; y=(x+3.8)/5.0; printf("%d\n", d*y); } A)3 B)3.2 C)0 D)3.07 正确答案: C
(28)下列程序的输出结果是 int b=2; int func(int *a) { b += *a; return(b);} main() { int a=2, res=2; res += func(&a); printf("%d\n",res); } A)4 B)6 C)8 D)10 正确答案: B
(29)下面能正确进行字符串赋值操作的是 A)char s[5]={"ABCDE"}; B)char s[5]={ ′A′, ′B′, ′C′, ′D′, ′E′}; C)char *s;s="ABCDE"; D)char *s;char a; scanf("%s",&s); 正确答案: C
(30)执行以下程序后,a,b的值分别为 main() { int a,b,k=4,m=6,*p1=&k,*p2=&m; a=p1==&m; b=(*p1)/(*p2)+7; printf("a=%d\n",a); printf("b=%d\n",b); } A)-1,5 B)1,6 C)0,7 D)4,10 正确答案: C
(31)设有数组定义: char array[]="China"; 则数组 array所占的空间为 A)4个字节 B)5个字节 C)6个字节 D)7个字节 正确答案: C
(32)若已定义: int a[]={0,1,2,3,4,5,6,7,8,9}, *p=a,i; 其中 0≤i≤9, 则对a数组元素不正确的引用是 A)a[p-a] B)*(&a[i]) C)p[i] D)a[10] 正确答案: D
(33)以下不正确的定义语句是 A)double x[5]={2.0,4.0,6.0,8.0,10.0}; B)int y[5]={0,1,3,5,7,9}; C)char c1[]={′1′,′2′,′3′,′4′,′5′}; D)char c2[]={′\x10′,′\xa′,′\x8′}; 正确答案: B
(34)若有以下程序 #include <stdio.h> int a[]={2,4,6,8}; main() { int i; int *p=a; for(i=0;i<4;i++)a[i]=*p; printf("%d\n",a[2]); } 上面程序输出结果是 A)6 B)8 C)4 D)2 正确答案: D
(35)下面程序段的运行结果是 char *format="%s,a=%d,b=%d\n"; int a=11,b=10; a+=b; printf(format,"a+=b",a,b); A)for,"a+=b",ab B)format,"a+=b" C)a+=b,a=21,b=10 D)以上结果都不对 正确答案: C
(36)C语言允许函数类型缺省定义,此时函数值隐含的类型是 A)float B)int C)long D)double 正确答案: B
(37)以下程序有语法错误,有关错误原因的正确说法是 main() { int G=5,k; void prt_char(); ... k=prt_char(G); ... } A)语句 void prt_char();有错,它是函数调用语句,不能用void说明 B)变量名不能使用大写字母 C)函数说明和函数调用语句之间有矛盾 D)函数名不能使用下划线 正确答案: C
(38)以下叙述中不正确的是 A)在不同的函数中可以使用相同的名字的变量 B)函数中的形式参数是局部变量 C)在一个函数内定义的变量只在本函数范围内有效 D)在一个函数内的复合语句中定义的变量在本函数范围内有效 正确答案: D
(39)有以下程序: #include <stdio.h> union pw { int i; char ch[2];}a; main() {a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);} 程序的输出结果是 A)13 B)14 C)208 D)209 正确答案: A
(40)在16位IBM-PC机上使用C语言,若有如下定义 struct data { int i; char ch; double f; } b; 则结构变量b占用内存的字节数是 A)1 B)2 C)7 D)11 正确答案: D
(41)下面程序的运行结果是 #include <stdio.h> main() { int a=1,b=10; do {b-=a;a++;}while(b--<0); printf("a=%d,b=%d\n",a,b); } A)a=3,b=11 B)a=2,b=8 C)a=1,b=-1 D)a=4,b=9 正确答案: B
(42)以下程序的输出结果是 void reverse(int a[],int n) { int i,t; for(i=0;i<n/2;i++) { t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;} } main() { int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0; reverse(b,8); for(i=6;i<10;i++)s+=b[i]; printf(" %d\n ",s); } A)22 B)10 C)34 D)30 正确答案: A
(43)有如下程序: long fib(int n) { if(n>2)return(fib(n-1)+fib(n-2)); else return(2); } main() { printf("%d\n",fib(3));} 该程序的输出结果是 A)2 B)4 C)6 D)8 正确答案: B
(44)假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入: PROG ABCDEFGH IJKL<回车>,则输出结果为 main( int argc, char *argv[]) { while(--argc>0) printf("%s",argv[argc]); printf("\n"); } A)ABCDEFG B)IJHL C)ABCDEFGHIJKL D)IJKLABCDEFGH 正确答案: D
(45)以下程序有错,错误原因是 main() { int *p,i;char *q,ch; p=&i; q=&ch; *p=40; *p=*q; ...... } A)p和q的类型不一致,不能执行*p=*q;语句 B)*p中存放的是地址值,因此不能执行*p=40;语句 C)q没有指向具体的存储单元,所以*q没有实际意义 D)q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果 正确答案: D
(46)函数 rewind 的作用是 A)使文件位置指针重新返回文件的开始位置 B)将文件位置指针指向文件中所要求的特定位置 C)使文件位置指针指向文件的末尾 D)使文件位置指针自动移至下一个字符位置 正确答案: A
(47)设有以下说明语句 struct ex { int x ; float y; char z ;} example; 则下面的叙述中不正确的是 A)struct结构体类型的关键字 B)example是结构体类型名 C)x,y,z都是结构体成员名 D)struct ex是结构体类型名 正确答案: B
(48)设有以下语句: char x=3,y=6,z; z=x^y<<2; 则z的二进制值是 A)00010100 B)00011011 C)00011100 D)00011000 正确答案: B
(49)阅读以下程序及对程序功能的描述,其中正确的描述是 #include <stdio.h> main() { FILE *in,*out; char ch,infile[10],outfile[10]; printf("Enter the infile name:\n"); scanf("%s",infile); printf("Enter the outfile name:\n"); scanf("%s",outfile); if((in=fopen(infile,"r"))==NULL) { printf("cannot open infile\n"); exit(0); } if((out=fopen(outfile,"w"))==NULL) { printf("cannot open outfile\n"); exit(0); } while(! feof(in))fputc(fgetc(in),out); fclose(in); fclose(out); } A)程序完成将磁盘文件的信息在屏幕上显示的功能 B)程序完成将两个磁盘文件合二为一的功能 C)程序完成将一个磁盘文件复制到另一个磁盘文件中 D)程序完成将两个磁盘文件合并并在屏幕上输出 正确答案: C
(50)C语言中,能识别处理的文件为 A)文本文件和数据块文件 B)文本文件和二进制文件 C)流文件和文本文件 D)数据文件和二进制文件 正确答案: B
二 、填空题 (1)数据的逻辑结构有线性结构和 【1】 两大类。 正确答案: 1.(非线性结构)
(2)顺序存储方法是把逻辑上相邻的结点存储在物理位置 【2】 的存储单元中。 正确答案: 1.(相邻)
(3)一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的 【3】 。 正确答案: 1.(可重用性)
(4)软件工程研究的内容主要包括: 【4】 技术和软件工程管理。 正确答案: 1.(软件开发)
(5)关系操作的特点是 【5】 操作。 正确答案: 1.(集合)
(6)下面程序是指从终端读入的20个字符放入字符数组中,然后利用指针变量输出上述字符串,请填空。 #include <stdio.h> main () { int i; char s[21],*p; for (i=0;i<20;i++) s[i]=getchar (); s[i]=【6】; p =【7】 while (*p)putchar (【8】); } 正确答案: 1.('\0') 2.(s) 3.(*p++)
(7)以下程序将数组a的4个元素和数组b的6个元素写到名为lett.dat的二进制文件中,请填空。 #include <stdio.h> main () { FILE *fp; char a[4]="1234",b[6]="abcedf"; if((fp=fopen("【9】","wb"))=NULL)exit(0); fwrite(a,sizeof(char),4,fp); fwrite(b,【10】,1,fp); fclose(fp); } 正确答案: 1.(lett.dat) 2.(6*sizeof(char))
(8)在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为4;一个double型数据在内存中所占的字节数为【11】。 正确答案: 1.(8)
(9) 以下程序输出的结果是【12】。 main() { int a=5,b=4,c=3,d; d=(a>b>c); printf("%d\n",d); } 正确答案: 1.(0)
(10)以下函数的功能是求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。 例如,若x中的值为30,则有4个数符合要求,它们是1,3,5,15。 请按题意,完成填空。 试题程序: #include <conio.h> #include <stdio.h> void fun (int x, int pp[], int *n) { int i,j=0; 【13】 if(x%i==0)pp[j++]=i; 【14】; } main () { int x,aa[1000], n, i ; clrscr(); printf("\nPlease enter an integer number : \n "); scanf ("%d ", &x); fun (x, aa, &n); for (i=0 ; i<n ; i++) printf ("%d ", aa [i]); printf ("\n "); } 正确答案: 1.(for(i=1;i<x;i+=2)) 2.(*n=j)
(11) #include <conio.h> #include <stdio.h> int fun(int *s, int t, int *k) { int i; *k=0; 【15】 if(s[*k]<s[i])*k=i; return【16】; } main() { int a[10]={ 876,675,896,101,301,401,980,431,451,777},k; clrscr(); fun(a, 10, &k); printf("%d, %d\n ", k, a[k]); } 正确答案: 1.(for(i=0;i<t;i++)) 2.(0)
(12)mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。 int mystrlen(char *str) { int i; for(i=0;【17】!= ′\0′;i++); return(i); } 正确答案: 1.(*(str+i)或str[i])
(13)以下程序的输出结果为【18】。 #define JFT(x)x*x main() { int a, k=3; a=++JFT(k+1); printf("%d",a); } 正确答案: 1.(9)
(14)以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完整。 struct node { int info; 【19】link; }; 正确答案: 1.(struct node *)
(15)设有以下结构体类型: struct st { char name[8]; int num; float s[4]; }student[50]; 并且结构体数组student中的元素都已有值,若要将这些元素写到硬盘文件fp中,请将以下fwrite语句补充完整: fwrite(student,【20】,1,fp); 正确答案: 1.(sizeof(struct st)*50) |