1、二级 C 语言笔试-191 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:60.00)1.有以下程序void sort(int a,int n)int i,j,t;for(i=0;in-1;i+2)for(j=i+2;jn;j+=2)if(aiaj)t=ai;ai=aj;aj=t;main()int aa10=1,2,3,4,5,6,7,8,9,10,i;sort(aa,10);for(i=0;i10;i+)printf(“%d,“,aai);printf(“/n“);其输出结果是:(分数:1.00)A.1,2,3,4,5,6,7,8,9,10,B.10
2、,9,8,7,6,5,4,3,2,1,C.9,2,7,4,5,6,3,8,1,10,D.1,10,3,8,5,6,7,4,9,2,2.下列关于队列的叙述中,正确的是(分数:1.00)A.在队列中只能插入数据B.在队列中只能删除数据C.队列是先进先出的线性表D.队列是先进后出的线性表3.实体一联系模型中,实体与实体之间的联系不可能是(分数:1.00)A.一对一B.多对多C.一对多D.一对零4.下面描述中,不符合结构化程序设计风格的是(分数:1.00)A.使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑B.注重提高程序的可读性C.模块只有一个人口和一个出口D.使用 goto 语句5.
3、设有定义:int n=0,*p=,则以下选项中,正确的赋值语句是(分数:1.00)A.p=1;B.*q=2;C.q=p;D.*p=5;6.有以下程序main()char a=“abcdefg“,b10=“abedefg“;pfintf(“%d%d/n“,sizeof((分数:1.00)A.,sizeof(B.);7.若以下选项中的变量已正确定义,则正确的赋值语句是(分数:1.00)A.x1=26.8%3;B.1+2=x2;C.x3=0x12;D.x4=1+2=3;8.软件需求分析阶段的工作可以分为 4 个方面:需求获取、需求分析、编写需求分析说明书和(分数:1.00)A.阶段性报告B.需求评审
4、C.总结D.都不正确9.有以下程序void sum(int *(分数:1.00)A.并将其放在调用语句之后,则在调用之前应该对函数进行说明,以下选项中错误的说明是(分数:1.00)A.double myadd(double a,b) ;B.double myadd(double,double);C.double myadd(double b,doublea) ;D.double myadd(double x,double y);13.有以下程序void f(int a,int i,int j)int t;if(ij) t=ai;ai=aj;aj=t;f(a,i+1,j-1);main()int
5、 i,aa5=1,2,3,4,5;f(aa,0,4);for(i=0;i5;i+)printf(“%d,“,aai;printf(“/n“);执行后输出结果是(分数:1.00)A.5,4,3,2,1B.5,2,3,4,1,C.1,2,3,4,5D.1,5,4,3,2,14.设有以下定义int a=0; double b=1.25; charc c=A;#define d 2则下面语句中错误的是(分数:1.00)A.a+;B.b+;C.c+;D.d+;15.关系数据库的数据及更新操作必须遵循()等完整性规则。(分数:1.00)A.实体完整性和参照完整性B.参照完整性和用户定义的完整性C.实体完整
6、性和用户定义的完整性D.实体完整性、参照完整性和用户定义的完整性16.有以下程序(提示:程序中 fseek(fp,-2L*sizeof(int),SEEK_END) ;语句的作用是使位置指针从文件末尾向前移 2*sizeof(int)字节)#include stdiohmain()FILE*fp;int i,a4=1,2,3,4,b;fp=fopen(“data.dat“,“wb“);for(i=0;i4;i+)fwrite(/*从文件中读取 sizeof(int)字节的数据到变量 b 中*/felose(fp);printf(“%d/n“,b) ;执行后输出结果是(分数:1.00)A.2B.
7、1C.4D.317.有以下程序段int a 10=1,2,3,4,5,6,7,8,9,10,*P=b=p5;b 中的值是(分数:1.00)A.5B.6C.8D.918.以下程序中与语句 k=ab?(bc?1:0):0;功能等价的是(分数:1.00)A.if(ab) int i;for(i=1;i3;i+)scanf(“%c“,t=c0;c0=c1;c1=t;void swap2(int c0,int c1)int t;t=c0;c0=c1;c1=t;main()int a2=3,5,b2=3,5;swapl((分数:1.00)A.;swap2(b0,b1);23.有以下程序#inGludest
8、dlibhstruct NODE int num;struct NODE *next;main()struct NODE *p,*q,*r;int sum=0;p=(struct NODE*)malloc(sizeof(struct NODE);q=(struct NODE*)malloc(sizeof(struct NODE);r=(stnlct NODE*)malloc(sizeof(struct NODE);p-num=1;q-num=2;r-num=3;p-next=q;q-next;r;r-next=NULL;sum+=q-next-Num,sum+=p-num;printf(“%d
9、/n“,sum);执行后输出结果是(分数:1.00)A.3B.4C.5D.624.设有以下语句typedef struct sint g;char h;T则下面叙述中正确的是(分数:1.00)A.可用 S 定义结构体变量B.可以用 T 定义结构体变量C.S 是 struct 类型的变量D.T 是 structS 类型的变量25.算法执行过程中,所需要的存储空间称为算法的(分数:1.00)A.时间复杂度B.计算工作量C.空间复杂度D.工作空间26.有以下程序struct STUchar name10;int num;int Score;main()struct Stu s5=“YangSan“,
10、20041,703,“LiSiGuo“,20042,580,“WangYin“,20043,680,“SunDan“,20044,550,“Penghua“,20045;537,*p5,*t;int i,j;for(i=0;i5;i+)pi=i4;i+)for(j=i+1;j5;j+)if(pi-Scorepj-Score)t=pi;pi=pj;pi=t;printf(“%d%d/n“,s1.Score,p1-Score);执行后输出结果是(分数:1.00)A.550550B.680680C.580550D.58068027.在面向对象设计中,对象有很多基本特点,其中“从外面看只能看到对象的外
11、部特性,而对象的内部对外是不可见的。”这一性质指的是对象的(分数:1.00)A.分类性B.标识惟一性C.多态性D.封装性28.有以下程序main()int i,n=0;for(i=2;i5;i+)doif(i%3)continue;n+;while(!i);n+;printf(“n=%d/n“,n);程序执行后输出结果是(分数:1.00)A.n=5B.n=2C.n=3D.n=429.有以下程序char fun(char x,char y)if(xy)return x;return y;main()int a=9,b=8,c=;printf(“%c/n“,fun(fun(a,b) ,fun(b,
12、c) );程序的执行结果是(分数:1.00)A.函数调用出错B.8C.9D.730.以下叙述中正确的是(分数:1.00)A.C 语言的源程序不必通过编译就可以直接运行B.C 语言中的每条可执行语句最终都将被转换成二进制的机器指令C.C 源程序经编译形成的二进制代码可以直接运行D.C 语言中的函数不可以单独进行编译31.有以下程序struct STUchar name10;int num;void f1(struct STU C) struct STU b=“LiSiGuo“,2042;c=b;void f2(struct STU*C) struct STU b=“SunDan“,2044;*c
13、=b;main()struct STU a=“YangSan“,2041,b=“Wang Yin“,2043;f1((分数:1.00)A.;f2(printf(“%d%d/n32.有以下程序main()int i,s=0;for(i=1;i10;i+=2)s+=i+1,printf(“%d/n“,s);程序执行后的输出结果是(分数:1.00)A.自然数 19 的累加和B.自然数 110 的累加和C.自然数 19 中奇数之和D.自然数 110 中偶数之和33.有以下程序main()char*p10=“abc“,aabdfg“,“dedbe“,“abbd“,“cd“;printf(“%d/n“,s
14、txlen (p4);执行后输出结果是(分数:1.00)A.2B.3C.4D.534.有以下程序void f(int v,int w)int t;t=v;v=w;w=tmain()int x=1,y=3,z=2;if(xy) f(x,y);else if(yz) f(y,z);else f(x,z);pfintf(“%d,%d,%d/n“,x,y,2);执行后输出结果是(分数:1.00)A.1,2,3B.3,1,2C.1,3,2D.2,3,135.在数据库管理系统提供的数据语言中,负责数据的查询及增、删、改等操作的是(分数:1.00)A.数据定义语言B.数据转换语言C.数据操纵语言D.数据控制
15、语言36.设有定义:float a=2,b=4,h=3;以下 C 语言表达式中与代数式 (分数:1.00)A.B.C.D.37.设有下列二叉树:(分数:1.00)A.B.C.D.38.下面程序的功能是输出以下形式的金字塔图案:* * * * * * * * * * * * *main()int i,j;for(i=1;i=4;i+)ror(j=1;j4-i;j+)printf(“);for(j=1;j_;j+)printf(“*“);printf(“/n“);在下划线处应填入的是(分数:1.00)A.iB.2*i-1C.2*i+1D.i+239.有以下程序#include stdiohmain
16、()FILE *fp;int i,k=0,n=0;fp=fopen(“d1.dat“,“w“);for(i=1;i4;i+)fprintf(fp,“%d“,i);fclose(fp);fp=fopen(“d1.dat“,“r“);fscanf(fp,“%d%d“,j4;j+)i=j;if(i2)i=3-j;s+=bij;return s;main()int a44=1,2,3,4,0,2,4,6,3,6,9,12,3,2,1,0;printf(“%d/n,f((分数:2.00)A.);iargc;i+=2)len+=strlen(argvi);printf(“%d/n“,len);经编译连接后
17、生成的可执行文件是 exexe,若运行时输入以下带参数的命令行ex abcd efg h3 k44执行后输出结果是(分数:2.00)A.14B.12C.8D.644.一个算法应该具有“确定性”等 5 个特性,下面对另外 4 个特性的描述中错误的是(分数:2.00)A.有零个或多个输入B.有零个或多个输出C.有穷性D.可行性45.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是:(分数:2.00)A.char s10=“abcdefg“;B.char t=“abcdefg“,*s=t;C.char s10;s=“abcdefg“;D.char s10;strcpy(s,“abcdefg
18、“);46.用黑盒技术测试用例的方法之一为(分数:2.00)A.因果图B.逻辑覆盖C.循环覆盖D.基本路径测试47.有以下程序#define f(x) x*x main() int i;i=f(4+4)/f(2+2);printf(“%d/n“,i);执行后输出结果是(分数:2.00)A.28B.22C.16D.448.设有定义:int a,*pa=B.a=0,b=0,c=0;C.if(a0);D.if(b=0)m=1;n=2;二、填空题(总题数:19,分数:40.00)51.一般来说,算法可以用顺序、选择和 【1】 三种基本控制结构组合而成。(分数:2.00)填空项 1:_52.按照逻辑结构
19、分类,数据结构可分为线性结构和非线性结构,队列属于 【2】 。(分数:2.00)填空项 1:_53.按数据流的类型,结构化设计方法有两种设计策略,它们是变换分析设计和 【3】 。(分数:2.00)填空项 1:_54.数据库系统在其内部分为三级模式,即概念模式、内模式和外模式。其中, 【4】 是用户的数据视图,也就是用户所见到的数据模式。(分数:2.00)填空项 1:_55.在关系模型中,把数据看成一个二维表,每一个二维表称为一个 【5】 。(分数:2.00)填空项 1:_56.已知字符 A 的 ASCII 码值为 65,以下语句的输出结果是 【6】 。char ch=b;printf(“%c%
20、d/n“,ch,ch);(分数:2.00)填空项 1:_57.有以下语句段int n1=10,n2=20;printf(“ 【7】 “,n1,n2);要求按以下格式输出 n1 和 n2 的值,每个输出行从第一列开始,请填空。n1=10n2=20(分数:2.00)填空项 1:_58.有以下程序main()int t=1,i=5;for(;i0;i-)t*=i;printf(“%d/n“,t);执行后输出结果是 【8】 。(分数:2.00)填空项 1:_59.有以下程序main()int n=0,m=1,x=2;if(!n)x-=1;if(m)x-=2;if(x)x-=3;printf(“%d/n
21、“,x);执行后输出结果是 【9】 。(分数:2.00)填空项 1:_60.有以下程序#includestdiohmain()char ch1,ch2;int n1,n2;ch1=getchar();ch2=getchar();n1=ch1-();n2=n1*10+(ch2-();printf(“%d/n“,n2);程序运行时输入:12回车,执行后输出结果是 【10】 。(分数:2.00)填空项 1:_61.有以下程序void f(int y,int*x)y=y+ *x; *x=*x+y;main()int x=2,y=4;f(y,double y=1;for(i=1;in;i+)y=y*x;
22、return y;主函数中已正确定义 m、a、b 变量并赋值,并调用 fun 函数计算:m=a 4+b4-(a+b)3。实现这一计算的函数调用语句为 【12】 。(分数:2.00)填空项 1:_63.下面 rotate 函数的功能是:将 n 行 n 列的矩阵 A 转置为 A,例如:(分数:4.00)填空项 1:_64.以下 sstrcpy()函数实现字符串复制,即将 t 所指字符串复制到 s 所指内存空间中,形成一个新字符串 s。请填空。void sstrcpy(char*s,char*t)while(*s+= 【15】 );main()char strl100,str2=“abcdefgh“
23、;sstrcpy(strl,str2);printf(“%s/n“,strl);(分数:2.00)填空项 1:_65.下列程序的运行结果是: 【16】 。#includestringhchar*ss(char*s)return s+strlen(s)/2;main()char*p,*str=“abcdefgh“;p=ss(str);printf(“%s/n“,p);(分数:2.00)填空项 1:_66.下面程序的运行结果是: 【17】 。int f(int a,int n)if(n1)return a0+f(p1=2.5;p2=3.5;printf(“%f%f%f/n“,p0,p1,p2);(
24、分数:2.00)填空项 1:_68.以下程序的运行结果是 【19】 。#includestringhtypeaef struct studentchar name10;long sno;float score;STU;main()STUa=“zhangsan“,2001,95,b=“Shangxian“,2002,90,c=“Anhua“,2003,95,d,*p=for(i=0;in-1;i+2)for(j=i+2;jn;j+=2)if(aiaj)t=ai;ai=aj;aj=t;main()int aa10=1,2,3,4,5,6,7,8,9,10,i;sort(aa,10);for(i=0
25、;i10;i+)printf(“%d,“,aai);printf(“/n“);其输出结果是:(分数:1.00)A.1,2,3,4,5,6,7,8,9,10,B.10,9,8,7,6,5,4,3,2,1,C.9,2,7,4,5,6,3,8,1,10, D.1,10,3,8,5,6,7,4,9,2,解析:解析sort()函数作用是将数组 aa 中伪下标为偶数的元素按大到小排序。主函数中首先定义了一个长度为 10 的数组并赋值,然后调用 sort()函数,将数组 aa 中奇数个元素的值按大到小排序,因此执行完该函数后,数组中奇数个元素的值为 9、7、5、3 和 1,故主函数中最后通过一个 for 循
26、环输出数组aa 各元素的值为 9、2、7、4、5、6、3、8、1 和 10。2.下列关于队列的叙述中,正确的是(分数:1.00)A.在队列中只能插入数据B.在队列中只能删除数据C.队列是先进先出的线性表 D.队列是先进后出的线性表解析:解析对队列可以进行插入和删除数据的操作,只是插入数据只能在队尾,删除数据只能在队头。所以队列是先进先出的线性表。3.实体一联系模型中,实体与实体之间的联系不可能是(分数:1.00)A.一对一B.多对多C.一对多D.一对零 解析:解析实体联系模型中实体与实体之间的联系有一对一(1:1),一对多或多对一(1:m 或 m:1),多对多(m:n)其中一对一是最常用的关系
27、。4.下面描述中,不符合结构化程序设计风格的是(分数:1.00)A.使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑B.注重提高程序的可读性C.模块只有一个人口和一个出口D.使用 goto 语句 解析:解析在结构化程序设计中,应严格控制使用 GOTO 语句,必要时才可以使用。5.设有定义:int n=0,*p=,则以下选项中,正确的赋值语句是(分数:1.00)A.p=1;B.*q=2;C.q=p;D.*p=5; 解析:解析指针变量定义和赋值语句的基本应用,在使用一个指针变量之前,先要用声明语句对其进行定义,在定义了一个指针变量之后,系统就为这个指针变量分配了一个存储单元,用它来存
28、放地址。在 C语言中有两个有关指针的运算符:并将其放在调用语句之后,则在调用之前应该对函数进行说明,以下选项中错误的说明是(分数:1.00)A.double myadd(double a,b) ; B.double myadd(double,double);C.double myadd(double b,doublea) ;D.double myadd(double x,double y);解析:解析函数声明是对所用到的函数的特征进行必要的声明,编译系统以函数声明中给出的信息为依据,对调用表达式进行检测,以保证调用表达式与函数之间的参数正确传递。函数声明的一般格式为:类型标识符 函数名(类型标
29、识符 形参,);这些信息就是函数定义中的第一行的内容。这里形参的名字是不重要的,重要的是类型标识符,函数声明中也可以不写形参名只写该形参的声明类型,但不能只写形参名而不写该形参的类型。本题中,选项 A中 double myadd(double a,b) ,没写出形参 b 的类型。13.有以下程序void f(int a,int i,int j)int t;if(ij) t=ai;ai=aj;aj=t;f(a,i+1,j-1);main()int i,aa5=1,2,3,4,5;f(aa,0,4);for(i=0;i5;i+)printf(“%d,“,aai;printf(“/n“);执行后输出
30、结果是(分数:1.00)A.5,4,3,2,1 B.5,2,3,4,1,C.1,2,3,4,5D.1,5,4,3,2,解析:解析在 C 语言中所谓函数的递归是指在调用一个函数的过程中,又出现了直接或间接地调用该函数本身,直接调用该函数本身的称为函数递归,而间接调用该函数称为函数的间接递归调用。由程序可以看出函数 f(a,i,j)为一递归函数,其功能是当 ij 时,将数组中的元素 ai和 aj交换,然后再调用函数 f(a,i+1,j-1),将数组中 ai+1和 aj-交换,这样一直递归到数组下标 i=j,可见该递归函数的作用是使数组中首尾元素依次互换。主函数中定义了个长度为 5 的数组 aa 并
31、初始化,然后调用f(a,0, 4),将数组 a 中的元素依次互换,故最后 for 循环输出的数组 aa 中各元素的值为5、4、3、2、1。14.设有以下定义int a=0; double b=1.25; charc c=A;#define d 2则下面语句中错误的是(分数:1.00)A.a+;B.b+;C.c+;D.d+; 解析:解析自加运算对象可以是整型变量也可以是实型变量,但不能是表达式和常量。本题中,#define d 2 定义了 d 为常数 2,不能再对 d 进行自加运算。15.关系数据库的数据及更新操作必须遵循()等完整性规则。(分数:1.00)A.实体完整性和参照完整性B.参照完整
32、性和用户定义的完整性C.实体完整性和用户定义的完整性D.实体完整性、参照完整性和用户定义的完整性 解析:解析关系模型中包括关系的数据结构、关系的操纵和关系中的数据约束。关系完整性约束即数据完整性,包括实体完整性、参照完整性和用户自定义完整性。16.有以下程序(提示:程序中 fseek(fp,-2L*sizeof(int),SEEK_END) ;语句的作用是使位置指针从文件末尾向前移 2*sizeof(int)字节)#include stdiohmain()FILE*fp;int i,a4=1,2,3,4,b;fp=fopen(“data.dat“,“wb“);for(i=0;i4;i+)fwr
33、ite(/*从文件中读取 sizeof(int)字节的数据到变量 b 中*/felose(fp);printf(“%d/n“,b) ;执行后输出结果是(分数:1.00)A.2B.1C.4D.3 解析:解析函数 fopen(eonst char*filename,cortst char*mode)的功能是以 mode 指定的模式打开filename 指定的磁盘文件;fclose(FILE*fp)的功能是关闭文件指针 fp 指向的文件;函数fscanf(FILE*fp,const char*formataddress,-)的功能是根据 for- mat 中的格式从 fp 指向的文件中读取数据,并存
34、入到相应的 address 指向的变量中。函数 fprintf(FILE*fp,const char * format,argument,-)的功能是把 argument 列表中的表达式值写到 fp 所指向的文件中;函数fwrlte(void*ptr,int size,int n,FILE*fP)的功能是把 ptr 指向的缓冲区中的 sizen 个字节写到文件指针 fP 指向的文件中。本题中首先定义了一个文件指针 fp,然后通过函数 fopen 以“wb”的方式打开文件“datadat”,直接通过一个 for 循环,每循环一次调用函数 fwrite 将数组中的元素 ai的值写进 fp 所指的文
35、件中,该循环共循环 4 次,循环完后 fp 所指文件的内容为 123,然后通过 fclose 函数关闭 fp 所指文件。接着通过函数 fopen 以“rb”的方式打开文件“datadat”,通过 fseek 函数让指针fp 从文件末尾向前移动 2 个 int 型大小字节的,然后通过函数 fread 从 fp 所指的文件中读取一个 int 型大小的数据到变量 b 中,故此时 b 的值为 3,因此最后输出的 b 的值为 3。17.有以下程序段int a 10=1,2,3,4,5,6,7,8,9,10,*P=b=p5;b 中的值是(分数:1.00)A.5B.6C.8D.9 解析:解析C 语言中规定:
36、一个数组名代表它的起始地址。本题中,定义了一个长度为 10 的数组 a 并赋初值,数组名 a 就是数组的起始地址,由于数组下标是从 0 开始,因此 a0的地址也是 a 的值,a1的地址可以用 a+1 表示,也就是说 a+1 指向数组 a 中下标为 1 的元素,同样 a+i 是 ai的地址,*p=int i;for(i=1;i3;i+)scanf(“%c“,t=c0;c0=c1;c1=t;void swap2(int c0,int c1)int t;t=c0;c0=c1;c1=t;main()int a2=3,5,b2=3,5;swapl((分数:1.00)A.;swap2(b0,b1);解析:
37、解析函数间的参数的传递有两种情况,第一种情况变量作为形参时的参数传递,变量作为形参时,要求对应的实参应为变量或表达式,变量作为函数的参数其传递方式是“值传递”,该种情况下,形参被赋值为实参的值,然后实参与形参再无联系。也就是说对形参的改变将不再影响实参;第二种情况是地址或数组名作为形参时的参数传递,该种情况下对形参的改变将对实参产生影响。本题中函数 swapl()是传递的地址。所以对该形参 c 的改变将影响实参,分析可知该函数的作用,是使数组 c 的第一个元素和第二个元素的值互换。主函数中调用该函数将 a 作为实参传递给形参 c,故执行该函数后 a 的第一个元素和第二个元素的值将交换。分别为
38、5 和 2。函数 swap2()是值传递的,所以该函数执行后对数组 b 将没有任何改变,此时该数组的第一个和第二个元素依然为 3 和 5,因此最后的输出为 5、3、3 和 5。23.有以下程序#inGludestdlibhstruct NODE int num;struct NODE *next;main()struct NODE *p,*q,*r;int sum=0;p=(struct NODE*)malloc(sizeof(struct NODE);q=(struct NODE*)malloc(sizeof(struct NODE);r=(stnlct NODE*)malloc(sizeo
39、f(struct NODE);p-num=1;q-num=2;r-num=3;p-next=q;q-next;r;r-next=NULL;sum+=q-next-Num,sum+=p-num;printf(“%d/n“,sum);执行后输出结果是(分数:1.00)A.3B.4 C.5D.6解析:解析本题中定义了一个结点 struct NODE,在主函数中定义了三个结点变量指针 p、q 和 r,接着通过 malloc 函数分配了三个结点并让 p、q 和 r 分别指向他们,再接着给 p、q 和 r 所指向的结点的 num域赋值为 1、2、3,然后让结点 p 指向 q,让 q 指向 r,r 指向 N
40、ULL。显然 q-next-num 的值为指针 r所指向结点的 num 域的值为 3,p-hum 的值为指针 P 所指向结点的 num 域的值为 1,故最后输出 s 的值为 3+1=4。24.设有以下语句typedef struct sint g;char h;T则下面叙述中正确的是(分数:1.00)A.可用 S 定义结构体变量B.可以用 T 定义结构体变量 C.S 是 struct 类型的变量D.T 是 structS 类型的变量解析:解析结构体类型的定义格式为struct 结构体名成员说明列表;结构体变量的定义有 3 种形式:第一种:定义结构体类型的同时定义结构体变量如: street 结
41、构体名成员说明列表变量;第二种先定义一个结构体类型,然后使用该类型来定义结构体变量,如:struct student成员说明列表;student 变量;第三种:定义一个无名称的结构体类型的同时定义结构体变量,如:struct student成员说明列表变量。25.算法执行过程中,所需要的存储空间称为算法的(分数:1.00)A.时间复杂度B.计算工作量C.空间复杂度 D.工作空间解析:解析算法执行时所需要的存储空间,包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间,其中额外空间还包括算法程序执行过程的工作单元以及某种数据结构所需要的附加存储空间。这些存储空间
42、共称为算法的空间复杂度。26.有以下程序struct STUchar name10;int num;int Score;main()struct Stu s5=“YangSan“,20041,703,“LiSiGuo“,20042,580,“WangYin“,20043,680,“SunDan“,20044,550,“Penghua“,20045;537,*p5,*t;int i,j;for(i=0;i5;i+)pi=i4;i+)for(j=i+1;j5;j+)if(pi-Scorepj-Score)t=pi;pi=pj;pi=t;printf(“%d%d/n“,s1.Score,p1-Sco
43、re);执行后输出结果是(分数:1.00)A.550550B.680680C.580550 D.580680解析:解析本题中首先定义了结构体类型 STU,该结构体由一个长度为 10 的字符数组、两个整型变量num 和 Score 组成。在主函数中,定义了一个长度为 5 的结构体数组 s 并赋初值,一个指针数组 p 和一个指针变量 t,接着将数组 s 中各元素的地址依次赋给指针数组 p 中的各成员。然后通过两个 for 循环将数组 p 按 Score 的值从小到大的顺序排列。因此最后输出的 p1-Score 的值为 550,而数组 s1Score的值为 580。27.在面向对象设计中,对象有很多
44、基本特点,其中“从外面看只能看到对象的外部特性,而对象的内部对外是不可见的。”这一性质指的是对象的(分数:1.00)A.分类性B.标识惟一性C.多态性D.封装性 解析:解析从外面看只能看到对象的外部特性,而对象的内部,即处理能力的实行和内部状态,指的是对象的封装性。28.有以下程序main()int i,n=0;for(i=2;i5;i+)doif(i%3)continue;n+;while(!i);n+;printf(“n=%d/n“,n);程序执行后输出结果是(分数:1.00)A.n=5B.n=2C.n=3D.n=4 解析:解析dowhile 的结构形式为:do 循环体,while(条件表
45、达式),当程序执行到 do 后,先执行循环体一次,然后才对条件表达式进行计算、判断。若条件表达式的值为真,则重复执行一次循环体;否则退出,与 while 结构相比,dowhile 结构至少要执行一次循环体;运算符%是求模运算,即求两个数相除的余数。continue 语句的作用时结束本次循环,即跳过本次循环中余下尚未执行的语句,接着再一次进行循环的条件判定。本题中,当 i=2 时,执行 do 循环。由于 if 表达式的条件为真,执行 continue 语句,结束本次循环,判断 while 循环条件为假,故退出 while 循环,执行 n+,此时 n 的值为 1,当 i=3时,执行 do 循环。由
46、于 if(3%3)为假,执行下面的 n+语句,此时 n 的值为 2,结束本次循环,继续判断while 循环条件为假,故退出 while 循环,执行 n+语句,此时 n 的值为 3;当 i=4 时,执行 do 循环。由于 if(4%3)为真,执行 continue 语句,结束本次循环,继续判断 while 循环条件为假,故退出 while 循环,执行 n+,此时 n 的值为 4;当 i=5 时,退出 for 循环,因此最后输出的 n 的值为 4。29.有以下程序char fun(char x,char y)if(xy)return x;return y;main()int a=9,b=8,c=;
47、printf(“%c/n“,fun(fun(a,b) ,fun(b,c) );程序的执行结果是(分数:1.00)A.函数调用出错B.8C.9D.7 解析:解析经过分析得出函数 fun()的功能是比较形参 x 和形参 y 的大小,返回较小的一个。函数 fun()有两个参数。本题中,首先定义了三个整型变量 a、b 和 c,分别赋初值为 9、8 和 7。然后执行函数fun(fun(a,b) ,fun(b,c) )。在该函数中分别将 fun(a, b) 和 fun(b,c) 函数的返回值作为该函数的两个实参。在函数 fun(a,b) 中,由于 ab,故返回较小值 b 即 8,在函数 fun(b,c) 中,由于bc,故返回较小值 c 即为 7,因此调用函数 fun(fun(a,b) ,fun(b,c) )相当于执行函数 fun(8,7),返回较小值即 7。30.以下叙述中正确的是(分数:1.00)A.C 语言的源程序不必通过编译就可以直接运行B.C 语言中的每条可执行语句最终都将被转换成