1、二级 C 语言笔试-381 及答案解析(总分:94.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:70.00)1.以下叙述不正确的是(分数:2.00)A.一个 C 源程序可由一个或多个函数组成B.一个 C 源程序必须包含一个 main 函数C.C 程序的基本组成单位是函数D.在 C 程序中,注释说明只能位于一条语句的后面2.已知各变量的类型说明如下: int k,a,b; unsigned long w=5; double x=1.42; 则以下不符合C 语言语法的表达式是(分数:2.00)A.x%(-3)B.Wd+=-2C.k=(a=2,b=3,a+D.a+=9-=(b=
2、4)*(a=3)3.若运行以下程序时,从键盘输入 ADescriptorCR(CR表示回车),则下面程序的运行结果是 #includestdio.h main() char c; int v0=1,v1=0,v2=0; do switch(c=getchar() casea:caseA: casee:caseE: casei:caseI: caseo:caseO: caseu:caseU:v1+=1; default:v0+=1;v2+=1; while(c!=/n); pfintf(“v0=%d,v1=%d,v2=%d/n“,v0,v1,v2);(分数:2.00)A.v0=7,v1=4,v2
3、=7B.v0=8,v1=4,v2=8C.v0=11,v1=4,v2=11D.v0=13,v1=4,v2=124.若有以下函数首部 int fun(double x10,int *n) 则下面针对此函数的函数声明语句中正确的是(分数:2.00)A.int fun(double x,int *;B.int fun(double ,in;C.int fun(double *x,int ;D.int fun(double *,int *);5.数据库技术的根本目标是要解决数据的(分数:2.00)A.存储问题B.共享问题C.安全问题D.保护问题6.下列程序的输出结果是 #include“stdio.h“
4、 #define N3 #define M3 void fun(int aMN) printf(“%d/n“,*(a1+2); main() int aMN; int i,j; for(i=0;iM;i+) for(j=0;jN;j+) aij=i+j-(i-j); fun(a);(分数:2.00)A.3B.4C.5D.67.下列关于字符串的说法中错误的是(分数:2.00)A.在 C 语言中,字符串是借助于字符型一维数组来存放的,并规定以字符/0作为字符串结束标志B./0作为标志占用存储空间,计入串的实际长度C.在表示字符串常量的时候不需要人为在其末尾加入/0D.在 C 语言中,字符串常量隐含
5、处理成以/0结尾8.下列叙述中错误的是(分数:2.00)A.一个 C 语言程序只能实现一种算法B.C 程序可以由多个程序文件组成C.C 程序可以由一个或多个函数组成D.一个 C 函数可以单独作为一个 C 程序文件存在9.阅读以下程序及对程序功能的描述,其中正确的是 #includestdio.h main() FILE*in,*out; charch,infile10,outfile10; printf(“Enter the infile name:/n“); scanf(“%s“,infile);printf(“Enter the outfile name:/n“); scanf(“%s“,
6、outfile); if(in=foen(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);(分数:2.00)A.程序完成将磁盘文件的信息在屏幕上显示的功能B.程序完成将两个磁盘文件合二为一的功能C.程序完成将一个磁盘文件复制到另一个磁盘文件中D.程序完成将两个磁
7、盘文件合并并在屏幕上输出10.设 p1 和 p2 是指向一个血型一维数组的指针变量,k 为 int 型变量,则不能正确执行的语句是(分数:2.00)A.k=*p1+*p2B.p2=k;C.p1=p2;D.k=*p1*(*p2);11.在 16 位编译系统上,若有定义 int a=10,20,30,*p=&a;,当执行 p+;后,下列说法错误的是(分数:1.00)A.p 向高地址移了一个字节B.p 向高地址移了一个存储单元C.p 向高地址移了两个字节D.p 与 a+1 等价12.软件开发的结构化生命周期方法将软件生命周期划分成(分数:1.00)A.定义、开发、运行维护B.设计阶段、编程阶段、测试
8、阶段C.总体设计、详细设计、编程调试D.需求分析、功能定义、系统设计13.设有程序段 int k=10; while(k=0)k=k-1; 则下面描述中正确的是(分数:1.00)A.while 循环执行 10 次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次14.下面四个选项中,均是不正确的八进制数或十六进制数的选项是(分数:1.00)A.016 0x8f 018B.0abc 017 0xaC.010 -0x11 0x16D.0a12 7ff -12315.下列函数的运行结果是 main() int i=2,p; int j,k; j=i;k=+i;p=f(j,k); pr
9、intf(“%d“,p); intf(int a,int b) int c; if(ab)c=1; else if(a=b)c=0; else c=-1; return(c);(分数:1.00)A.-1B.1C.2D.编译出错,无法运行16.有以下程序 main() int i; for(i=1;i=40;i+) if(i+%5=0) if(+i%8=0) pfintf(“%d“,i); printf(“/n“); 执行后的输出结果是(分数:1.00)A.5B.24C.32D.4017.设有如下定义: struct Sk int n; float x; data,*p; 若要使 p 指向 da
10、ta 中的 n 域,正确的赋值语句是(分数:1.00)A.p=&datn;B.*p=datn;C.p=(struct sk*)&datn;D.p=(struct sk*)datn;18.下列叙述中正确的是(分数:1.00)A.一个算法的空间复杂度大,则其时间复杂度也必定大B.一个算法的空间复杂度大,则其时间复杂度必定小C.一个算法的时间复杂度大,则其空间复杂度必定小D.上述三种说法都不对19.下列程序段中,不能正确赋值的是(分数:1.00)A.char*p,ch; p=&ch; scanf(“%c,&p“)B.char*p; p=(char*)malloc(1); scanf(“%c“,;C.
11、char*p; *p=getchar();D.char*p,ch; p=缸 h; *p=getchar();20.对以下说明语句的正确理解是 int a10=6,7,8,9,10;(分数:1.00)A.将 5 个初值依次赋给 a1至 a5B.将 5 个初值依次赋给 a0至 a4C.将 5 个初值依次赋给 a6至 a10D.因为数组长度与初值的个数不相同,所以此语句不正确21.现有格式化输入语句,scanf(“x=%d ,sum y=%d,line (分数:2.00)A.12,34,45EnterB.x=12,y=34,z=45EnterC.x=12C,sumy=34,z=45EnterD.x=
12、12 ,sum y=34,line 2=45Enter 注:“22.设有以下说明语句 struct ex int x;float y;char z;example; 则下面的叙述中不正确的是(分数:2.00)A.struct 结构体类型的关键字B.example 是结构体类型名C.x,y,z 都是结构体成员名D.struct ex 是结构体类型名23.若有定义 int w35;,则以下不能正确表示该数组元素的表达式是(分数:2.00)A.*(*w+3)B.*(*w+1)4C.*(*(*w+1)D.*(&w00+1)24.软件开发模型包括 瀑布模型 扇形模型 快速原型法模型 螺旋模型(分数:2.
13、00)A.、B.、C.、D.、25.单个用户使用的数据视图的描述称为(分数:2.00)A.外模式B.概念模式C.内模式D.存储模式26.对下述程序的判断中,正确的是 #includestdio.h void main() char*p,s128; p=S; while(strcmp(s,“End“) printf(“Input a string:“);gets(s); while(*p) putchar(*p+);(分数:2.00)A.此程序循环接收字符串并输出,直到接收字符串“End“为止B.此程序循环接收字符串,接收到字符串“End“则输出,否则程序终止C.此程序循环接收字符串并输出,直到
14、接收字符串“End“为止,但因为代码有错误,程序不能正常工作D.此程序循环接收字符串并将其连接在一起,直到接收字符串“End“为止,输出连接在一起的字符串27.有以下程序 fun(int x) int p; if(x=0x=1) return(3); p=x-fun(x-2); return p; main() printf(“%d/n“,fun(7); 执行后的输出结果是(分数:2.00)A.7B.3C.2D.028.设 x,y 和 z 都是血型变量,且 x=3,y=4,z=5,则下面表达式中,值为 0 的表达式是(分数:2.00)A.x&yB.x=yC.x+y&y-zD.!(xy&!z1)
15、29.下列选项中不符合良好程序设计风格的是(分数:2.00)A.源程序要文档化B.数据说明的次序要规范化C.避免滥用 goto 语句D.模块设计要保证高耦合、高内聚30.有以下程序 main() int x,y,z; x=y=1;z=X+,y+,+y; printf(“%d,%d,%d/n“,x,y,z); 程序运行后的输出结果是(分数:2.00)A.2,3,3B.2,3,2C.2,3,1D.2,2,131.以下程序有错,错误原因是 main() int *p,i;char*q,ch;p=&i;q=&ch; *p=40;*p=*q; (分数:2.00)A.p 和 q 的类型不一致,不能执行*p
16、=*q;语句B.*p 中存放的是地址值,因此不能执行*p=40;语句C.q 没有指向具体的存储单元,所以*q 没有实际意义D.q 虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果32.设变量 a 是 int 型,f 是 float 型,i 是 double 型,则表达式 10+a+i*f 值的数据类型为(分数:2.00)A.intB.floatC.doubleD.不确定33.阅读下面程序,则执行后的结果是 #include“stdio.h“ main() char str=“tomeetme“,*p; for(p=str;pstr+7
17、;p+=2)putchar(*p); printf(“/n“);(分数:2.00)A.tomeetmeB.tmemC.oeteD.tome34.若要求定义具有 10 个 int 型元素的一维数组 a,则以下定义语句中错误的是(分数:2.00)A.#define N 10 int a;B.#define n 5 int a2*n;C.int a5+5;D.int n=10,a;35.函数的值通过 rerurn 语句返回,下面关于 return 语句的形式描述错误的是(分数:2.00)A.return 表达式;B.return(表达式);C.一个 return 语句可以返回多个函数值D.一个 re
18、turn 语句只能返回一个函数值36.有以下程序 int add(int a,int b)return(a+b); main() int k,(*f)(),a=5,b=10; f=add; 则以下函数调用语句错误的是(分数:2.00)A.k=(*(a,;B.k=add(a,;C.k=*f(a,;D.k=f(a,;37.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及(分数:2.00)A.数据的存储结构B.计算方法C.数据映象D.逻辑存储38.若某二叉树的前序遍历访问顺序是 abdgcefh,中序遍历访问顺序是 dgbaechf,则其后序遍历的结点访问顺序是(
19、分数:2.00)A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca39.对长度为 n 的线性表进行顺序查找,在最坏情况下所需要的比较次数为(分数:2.00)A.10g2nB.n/2C.nD.n+140.没有关系 R 和 S,关系代数表达式为 R-(R-S)表示的是(分数:2.00)A.RDSB.R-SC.RUSD.RS二、B填空题/B(总题数:12,分数:24.00)41.下列软件系统结构图的宽度为_。 (分数:2.00)填空项 1:_42.测试的目的是暴露错误,评价程序的可靠性;而 1 得目的是发现错误的位置并改正错误。(分数:2.00)填空项 1:_43.对于
20、图书管理数据库,将图书表中“人民邮电出版社”的图书的单价涨价 5%。请对下面的 SQL 语句填空: UPDATE 图书_WHERE 出版单位=“人民邮电出版社“(分数:2.00)填空项 1:_44.按“先进后出”原则组织数据的数据结构是 1。(分数:2.00)填空项 1:_45.长度为 n 的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为 1。(分数:2.00)填空项 1:_46.以下程序的功能是:将输入的正整数按逆序输出。例如:若输入 135 则输出 531。请填空。 #include stdio.h main() int n,s; print
21、f(“Enter a number:“);scanf(“%d“,&n); printf(“Output:“); do s=n%10;printf(“%d“,s);_; while(n! =0); printf(“/n“); (分数:2.00)填空项 1:_47.以下程序的运行结果是_。 #includestdio.h main() int fun();fun(); fun() static int a3=0,1,2; int i; for(i=0;i3;i+)ai+=ai; for(i=0;i3;i+)printf(“%d,“,ai); pfintf(“/n“,);(分数:2.00)填空项 1
22、:_48.以下函数用来求出数组的最大元素在数组中的下标并存放在 k 所指的存储单元中。请填空。 #includeconio.h #includestdio.h int fun(int *s,int t,int *k) int i; *k=0; U 8 /U if(s*ksi)*k=i; returnU 9 /U; main() int a10:876,675,896,101,301,401,980,431,451,777,k; fun(a,10,&k); pfintf(“%d,%d/n“,k,ak);(分数:2.00)填空项 1:_49.以下程序中,函数 fun 的功能是计算 x2-2x+6,
23、主函数中将调用 fun 函数计算:y1=(x+8)2-2(x+8)+6y2=sin2(x)-2sin(x)+6请填空。ginclude “math.h“double fun(double x)return(x*x-2*x+6);main()double x,y1,y2;pfintf(“Enterx:“);scanf(“%lf“&x);y1=fun(U 10 /U);y2=fun(U 11 /U);pintf(“y1=%lf,y2=%lf/n“,y1,y2);(分数:2.00)填空项 1:_50.以下程序运行后的输出结果是_。 main() int x,a=1,b=2,c=3,d=4; x=(a
24、b)? a:b;x=(xc)? x:c;x=(dx)? x:d; pfintf(“%d/n“,x); (分数:2.00)填空项 1:_51.下面程序的功能是将一个字符串 str 的内容颠倒过来,请填空。 #includestring.h main() infi,j,U 13 /U;char str=“1234567“; for(i=0,j=strlen(str)U 14 /U;ij;i+,j-) k=stri;stri=stri;strj=k; printf(“%s/n“,str);(分数:2.00)填空项 1:_52.以下定义的结构体类型拟包括两个成员,其中成员变量 info 用来存入整形数
25、据;成员变量 link 是指向自身结构体的指针,请将定义比冲完整 struct node int info; _link;(分数:2.00)填空项 1:_二级 C 语言笔试-381 答案解析(总分:94.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:70.00)1.以下叙述不正确的是(分数:2.00)A.一个 C 源程序可由一个或多个函数组成B.一个 C 源程序必须包含一个 main 函数C.C 程序的基本组成单位是函数D.在 C 程序中,注释说明只能位于一条语句的后面 解析:解析 本题考查 C 语言的基本基础知识。在 C 程序中,注释用符号“/*”开始,而以符号“*/”结
26、束。程序的注释可以放在程序的任何位置。通常将注释放在程序的开始,以说明本程序的功能;或者放在程序的某个语句后面,以对此语句的功能进行描述。无论将注释放有何处,在程序进行编译时,编译程序不会处理注释的内容;且注释内容也不会出现在目标程序中。2.已知各变量的类型说明如下: int k,a,b; unsigned long w=5; double x=1.42; 则以下不符合C 语言语法的表达式是(分数:2.00)A.x%(-3) B.Wd+=-2C.k=(a=2,b=3,a+D.a+=9-=(b=4)*(a=3)解析:解析 “%”是求余运算符或模运算符,“%”两侧均应为整型数据,选项 A)中的 x
27、 是 double 型数据。3.若运行以下程序时,从键盘输入 ADescriptorCR(CR表示回车),则下面程序的运行结果是 #includestdio.h main() char c; int v0=1,v1=0,v2=0; do switch(c=getchar() casea:caseA: casee:caseE: casei:caseI: caseo:caseO: caseu:caseU:v1+=1; default:v0+=1;v2+=1; while(c!=/n); pfintf(“v0=%d,v1=%d,v2=%d/n“,v0,v1,v2);(分数:2.00)A.v0=7,v
28、1=4,v2=7B.v0=8,v1=4,v2=8C.v0=11,v1=4,v2=11D.v0=13,v1=4,v2=12 解析:解析 本题考查 switch 语句的掌握。必须掌握以下内容:首先应该明白 switch 语句的语法格式:switch 语句的语法格式为: switch(表达式) case 常量表达式 1:语句组 1; case 常量表达式 2:语句组 2; case 常量表达式 n:语句组 n; default:语句组 n+1; 另外,以下几点关于 switch 语句的重点: 系统在执行时计算开关表达式的值;根据所得的值在各个 case 标号表达式中寻找匹配,直到发现与表达式匹配的标
29、号(本例中匹配的是 caseB:);找到匹配后执行后面相应的语句表,顺序往下执行;如果无相匹配的标号,若存在 de-fault 标号,则执行该语句标号后面的语句表 n+1;当不存在default 标号时,不执行 switch 中的任何一个语句表。 一般而言,在多分支结构中总会出现“意外”的情况,这时均可归入 default 程序段,作统一的处理。default 标号是可选性的,不必每次都有,视需要而定。switch 语句中还可以包含 switch 语句,形成 switch 的嵌套。4.若有以下函数首部 int fun(double x10,int *n) 则下面针对此函数的函数声明语句中正确的
30、是(分数:2.00)A.int fun(double x,int *;B.int fun(double ,in;C.int fun(double *x,int ; D.int fun(double *,int *);解析:解析 函数首部 int fun(double x10,int *n)表示这个函数的返回值是整型,其第一个形式参数是一个双精度型的一维数组,第二个参数是一个整型指针。在 C 语言中,一维数组的名字表示的是一维数组的地址,所以选项 C)是正确的。5.数据库技术的根本目标是要解决数据的(分数:2.00)A.存储问题B.共享问题 C.安全问题D.保护问题解析:解析 由于数据的集成性使
31、得数据可被多个应用程序共享,特别是在网络发达的今天,数据库与网络的结合扩大了数据库的应用范围,所以数据库技术的根本问题是解决数据的共享问题。6.下列程序的输出结果是 #include“stdio.h“ #define N3 #define M3 void fun(int aMN) printf(“%d/n“,*(a1+2); main() int aMN; int i,j; for(i=0;iM;i+) for(j=0;jN;j+) aij=i+j-(i-j); fun(a);(分数:2.00)A.3B.4 C.5D.6解析:解析 若有以下定义:int a34,i,j;且当 0=i3,0=j4
32、,则可以有以下几种方式来引用数组中的第 i 行,第 j 列的元素: aaj,*(ai+j),*(*(a+i)+j),(*(a+i)j,*(&a 00+4*i+j)”。7.下列关于字符串的说法中错误的是(分数:2.00)A.在 C 语言中,字符串是借助于字符型一维数组来存放的,并规定以字符/0作为字符串结束标志B./0作为标志占用存储空间,计入串的实际长度 C.在表示字符串常量的时候不需要人为在其末尾加入/0D.在 C 语言中,字符串常量隐含处理成以/0结尾解析:解析 /0作为标志占用存储空间,但是不计入串的实际长度。当给一个字符型指针赋值时,赋给这个指针的是这个字符串的地址。8.下列叙述中错误
33、的是(分数:2.00)A.一个 C 语言程序只能实现一种算法 B.C 程序可以由多个程序文件组成C.C 程序可以由一个或多个函数组成D.一个 C 函数可以单独作为一个 C 程序文件存在解析:解析 一个 C 程序可以有一个或多个程序文件,也可以有一个或多个函数,所以一个 C 语言程序可以实现多种算法。9.阅读以下程序及对程序功能的描述,其中正确的是 #includestdio.h main() FILE*in,*out; charch,infile10,outfile10; printf(“Enter the infile name:/n“); scanf(“%s“,infile);printf
34、(“Enter the outfile name:/n“); scanf(“%s“,outfile); if(in=foen(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);(分数:2.00)A.程序完成将磁盘文件的信息在屏幕上显示的功能B.程序完成将两个磁盘文
35、件合二为一的功能C.程序完成将一个磁盘文件复制到另一个磁盘文件中 D.程序完成将两个磁盘文件合并并在屏幕上输出解析:解析 本题中,最主要的是掌握几个有关文件的函数的应用。 函数名:fopen 功能:打开一个文件 调用方式 FILE*fp;fp=fopen(文件名,使用文件方式); 函数名:feof 功能:检查文件是否结束 调用方式:feof(FILE*fP); 函数名:fPutc 功能:把一个字符写到磁盘文件上去 调用方式:fputc(ch,fp)(ch 是要输出的字符,fp 是从指定的文件读入一个字符,该文件必须是以读或读写方式打开的调用方式:ch=fgetc(fp)(ch 是字符变量,fp
36、 是文件指针变量); 函数名:fclose 功能:关闭一个文件 调用方式:felose(文件指针)。10.设 p1 和 p2 是指向一个血型一维数组的指针变量,k 为 int 型变量,则不能正确执行的语句是(分数:2.00)A.k=*p1+*p2B.p2=k; C.p1=p2;D.k=*p1*(*p2);解析:解析 本题主要考查了一维数组指针的赋值和用指针引用数组元素进行运算。选项 B)中 p2 为指向 int 型变量的指针,而 k 为 int 型变量,不能将 int 型变量直接赋值给指向 int 型变量的指针,所以选项 B)错误。11.在 16 位编译系统上,若有定义 int a=10,20
37、,30,*p=&a;,当执行 p+;后,下列说法错误的是(分数:1.00)A.p 向高地址移了一个字节 B.p 向高地址移了一个存储单元C.p 向高地址移了两个字节D.p 与 a+1 等价解析:解析 在 16 位编译系统下,一个 int 型变量是用 16 位来存储的,其占用两个字节,当执行 p+之后,相当于 p 向高位移动了一个存储单元,也就是两个字节。因此,本题的答案为选项 A)。12.软件开发的结构化生命周期方法将软件生命周期划分成(分数:1.00)A.定义、开发、运行维护 B.设计阶段、编程阶段、测试阶段C.总体设计、详细设计、编程调试D.需求分析、功能定义、系统设计解析:解析 通常,将
38、软件产品从提出、实现、使用维护到停止使用的过程称为软件生命周期。它可以分为软件定义、软件开发及软件运行维护 3 个阶段。13.设有程序段 int k=10; while(k=0)k=k-1; 则下面描述中正确的是(分数:1.00)A.while 循环执行 10 次B.循环是无限循环C.循环体语句一次也不执行 D.循环体语句执行一次解析:解析 本题中,首先将 0 赋给 k,表达式变为 0,跳出循环,没有执行循环体语句。解答本题的关键是掌握 while 语句。14.下面四个选项中,均是不正确的八进制数或十六进制数的选项是(分数:1.00)A.016 0x8f 018B.0abc 017 0xaC.
39、010 -0x11 0x16D.0a12 7ff -123 解析:解析 八进制中,不可能包括 8 以上的数字,它的范围只在 07 之间,以 0 开头。同样,十六进制是以 0x 开头,数字在 09 和 AF 之间。15.下列函数的运行结果是 main() int i=2,p; int j,k; j=i;k=+i;p=f(j,k); printf(“%d“,p); intf(int a,int b) int c; if(ab)c=1; else if(a=b)c=0; else c=-1; return(c);(分数:1.00)A.-1 B.1C.2D.编译出错,无法运行解析:解析 函数调用相当于
40、 f(2,3),程序运算应得结果为“-1”。16.有以下程序 main() int i; for(i=1;i=40;i+) if(i+%5=0) if(+i%8=0) pfintf(“%d“,i); printf(“/n“); 执行后的输出结果是(分数:1.00)A.5B.24C.32 D.40解析:解析 当 for 循环执行到第 30 次时,i 的值为 30 能被 5 整除,然后继续执行两次 if 语句,i 经过两次自加 1 运算,值变为 32,能被 8 整除,故此时第一次执行“printf(“%d“,i);”语句,即输出32。17.设有如下定义: struct Sk int n; floa
41、t x; data,*p; 若要使 p 指向 data 中的 n 域,正确的赋值语句是(分数:1.00)A.p=&datn;B.*p=datn;C.p=(struct sk*)&datn; D.p=(struct sk*)datn;解析:解析 本题主要考查了结构体变量引用成员数据的方法,主要有以下几种:结构体变量名,成员名或结构体指针-,成员名的方法来引用结构体成员。18.下列叙述中正确的是(分数:1.00)A.一个算法的空间复杂度大,则其时间复杂度也必定大B.一个算法的空间复杂度大,则其时间复杂度必定小C.一个算法的时间复杂度大,则其空间复杂度必定小D.上述三种说法都不对 解析:解析 算法的
42、复杂度主要包括时间复杂度和空间复杂度。算法的时间复杂度是指执行算法所需要的计算工作量,可以用执行算法过程中所需基本运算的执行次数来度量;算法的空间复杂度是指执行这个算法所需要的内存空间。根据各自的定义可知,算法的时间复杂度与空间复杂度并不相关。19.下列程序段中,不能正确赋值的是(分数:1.00)A.char*p,ch; p=&ch; scanf(“%c,&p“)B.char*p; p=(char*)malloc(1); scanf(“%c“,;C.char*p; *p=getchar(); D.char*p,ch; p=缸 h; *p=getchar();解析:解析 本题考查了字符的输入函数
43、 getchax 和利用 scanf 函数输入一个字符。用 scanf 输入字符时,格式说明字符应该为%c。本题选项 C)因为指针 P 没有赋初值,所以是一个不定值,不能直接将getchar 读入的字符赋给指针 p 所指向的字符,所以选项 C 错误。20.对以下说明语句的正确理解是 int a10=6,7,8,9,10;(分数:1.00)A.将 5 个初值依次赋给 a1至 a5B.将 5 个初值依次赋给 a0至 a4 C.将 5 个初值依次赋给 a6至 a10D.因为数组长度与初值的个数不相同,所以此语句不正确解析:解析 本题中,表达式将 5 个初值赋给 a0至 a4,后面的部分,将自动被补零
44、。21.现有格式化输入语句,scanf(“x=%d ,sum y=%d,line (分数:2.00)A.12,34,45EnterB.x=12,y=34,z=45EnterC.x=12C,sumy=34,z=45EnterD.x=12 ,sum y=34,line 2=45Enter 注:“ 解析:解析 若在 scanf 的格式化控制串中插入了其他字符,则在输入时要求按一一对应的位置原样输入这些字符。格式化输入函数必须严格按照双引号里面的格式进行输入。在格式化输出函数中,格式控制串中除了合法的格式说明外,可以包含任意的合法字符。22.设有以下说明语句 struct ex int x;float
45、 y;char z;example; 则下面的叙述中不正确的是(分数:2.00)A.struct 结构体类型的关键字B.example 是结构体类型名 C.x,y,z 都是结构体成员名D.struct ex 是结构体类型名解析:解析 本题中,struct ex 是结构体类型名,ex-ample 是结构体变量名。23.若有定义 int w35;,则以下不能正确表示该数组元素的表达式是(分数:2.00)A.*(*w+3)B.*(*w+1)4C.*(*(*w+1) D.*(&w00+1)解析:解析 在 C 语言中,二维数组的名字表示的是二维数组的地址,表达式*(W+1)表示的是二维数组的第一行的第二
46、个元素。在其前面再加上*(*(w+1)就是错误的表达式。24.软件开发模型包括 瀑布模型 扇形模型 快速原型法模型 螺旋模型(分数:2.00)A.、B.、C.、 D.、解析:解析 软件开发模型包括瀑布模型、快速原型法模型和螺旋模型。25.单个用户使用的数据视图的描述称为(分数:2.00)A.外模式 B.概念模式C.内模式D.存储模式解析:解析 选项 A)正确,外模式是用户的数据视图,也就是用户所见到的数据模式;选项 B)不正确,全局数据视图的描述称为概念模式,即数据库中全部数据的整体逻辑结构的描述;选项 C)不正确,物理存储数据视图的描述称为内模式,即数据库在物理存储方面的描述;选项 D)不正确,存储模式即为内模式。26.对下述程序的判断中,正确的是 #includestdio.h void main() char*p,s128; p=S; while(strcmp(s,“End“) printf(“Input a string:“);gets(s); while(*p) putchar(*p+);(分数:2.00)A.此程序循环接收字符串并输出,直到接收字符串“End“为止B.此程序循环接收字符串,接收到字符串“End“则输出,否则程序终止 C.此程序循环接收字符串并输