1、二级 C 语言笔试-131 及答案解析(总分:110.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.有以下程序:main()int a=2,4,6,8,10),y=0,x,*P;P=a1;for(x=1;x3;x+)y+=px;printf(“%d/n“,y);程序运行后的输出结果是_。(分数:2.00)A.10B.11C.14D.152.下列关于栈的描述正确的是_。(分数:2.00)A.在栈中只能插入元素而不能删除元素B.在栈中只能删除元素而不能插入元素C.栈是特殊的线性表,只能在一端插入或删除元素D.栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素3.
2、若有说明语句:double*P,a;则能通过 scanf 语句正确给输入项读入数据的程序段是_。(分数:2.00)A.*p=a;scanf(“%lf“,p);B.*p=scanf(“%f“,p);C.p=scanf(“%lf“,*p);D.p=a;scanf(“%lf“,p);4.有以下计算公式:(分数:2.00)A.B.C.D.5.软件设计中模块划分应遵循的准则是_。(分数:2.00)A.低内聚、低耦合B.高内聚、低耦合C.低内聚、高耦合D.高内聚、高耦合6.数据库技术的根本目标是要解决数据的_。(分数:2.00)A.存储问题B.共享问题C.安全问题D.保护问题7.有以下程序:#inlucd
3、estdio.hmain()D) 2 3 3int n,*P=NULL;*p=n;printf(“input n:“);scanf(“%d“,p);printf(“output n:“);printf(“%d/n“,p);该程序试图通过指针 P 为变量 n 读入数据并输出,但程序有多处错误,以下语句正确的是_。(分数:2.00)A.int n,*P=NULL;B.*P=n;C.scanf(“%d“,p)D.printf(“%d/n“,p);8.以下合法的字符型常量是_。(分数:2.00)A./x13B./081C.65D.“/n“9.若有定义 int x,y;,并已正确给变量赋值,则以下选项中
4、与表达式(x-y)?(x+):(y+)中的条件表达式(x-y)等价的是_。(分数:2.00)A.(xy0)B.(x-y0)C.(x-y0|x-y0)D.(x-Y=0)10.若有定义语句:int a23,*p33;,则以下语句中正确的是_。(分数:2.00)A.p=a;B.p0=a;c)p0=a12;D) p1=a11.有以下程序:#define f(x)(x*x)main()int i1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf(“%d,%d/n“,i1,i2);程序运行后的输出结果是_。(分数:2.00)A.64,28B.4,4C.4,3D.64,641
5、2.以下结构体类型说明和变量定义中正确的是_。(分数:2.00)A.typedef structB.struct REC;int n;char c;REC; int n;char c;REC t1,t2; REC t1,t2;C.typedef struct REC;D.structint n=0;char c=A;t1,t2; int n;char c;REC;REC t1,t2;13.下列描述中正确的是_。(分数:2.00)A.程序就是软件B.软件开发不受计算机系统的限制C.软件既是逻辑实体,又是物理实体D.软件是程序、数据与相关文档的集合14.有以下程序:main()int k=5;wh
6、ile(-k)printf(“%d“,k-=3);printf(“/n“);执行后的输出结果是_。(分数:2.00)A.1B.2C.4D.死循环15.以下选项中可作为 C 语言合法常量的是_。(分数:2.00)A.-80B.-080C.-8e1.0D.-80.0e16.有以下程序:main()int i=1,j=2,k=3;if(i+=1(+j=3|k+=3)printf(“%d%d%d/n“,i,j,k);程序运行后的输出结果是_。(分数:2.00)A.1 2 3B.2 3 4C.2 2 3D.2 3 317.读取二进制文件的函数调用形式为:fread(buffer,size,count,p
7、f);,其中 buffer 代表的是_。(分数:2.00)A.一个文件指针,指向待读取的文件B.一个整型变量,代表待读取的数据的字节数C.一个内存块的首地址,代表读入数据存放的地址D.一个内存块的字节数18.有以下程序:int fun(int n)if(n=1)return 1;else return(n+fun(n-1);main()int x;scanf(“%if“,x);x=fun(x);printf(“%d/n“,x);执行程序时,给变量 X 输入 10,程序的输出结果是_。(分数:2.00)A.55B.54C.65D.4519.以下定义语句中正确的是_。(分数:2.00)A.int
8、a=b=0;B.char A=65+1,b=b;C.float a=1,*b=a,*c=b;D.double a=0.0;b=1.1;20.以下程序的功能是进行位运算:main()unsigned char a,b;a=73;b=43;printf(“%d%d/n“,a,b);程序运行后的输出结果是_。(分数:2.00)A.4 3B.7 3C.7 0D.4 021.算法的有穷性是指_。(分数:2.00)A.算法程序的运行时间是有限的B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用22.有以下程序:#includestdio.hvoid fun(char*
9、p)+P;printf(“%s/n“,*p);main()char*a=“Morning“,“Afternoon“,“Evening“,“Night“;fun((分数:2.00)A.;程序23.软件是指_。(分数:2.00)A.程序B.程序和文档C.算法加数据结构D.程序、数据与相关文档的完整集合24.有以下程序:struct STUchar name10;int num;float TotalScore;void f(struct STU*P)struct STU s2=“SunDan“,20044,550,“Penghua“,20045,537,*q=s;+P;+q;*P=*q;main(
10、)struct STU s3=“YangSan“,20041,703),“LiSiGuo“,20042,580;f(s);printf(“%s%d%3.0f/n“,s1.name,s1.num,s1.TotalScore);程序运行后的输出结果是_。(分数:2.00)A.SunDan 20044 550B.Penghua 20045 537C.LiSiGuo 20042 580D.SunDan 20041 70325.下列叙述中正确的是_。(分数:2.00)A.程序的执行效率与数据的存储结构密切相关B.程序的执行效率只取决于程序的控制结构C.程序的执行效率只取决于所处理的数据量D.以上三种说法
11、都不对26.“商品”与“顾客”两个实体集之间的联系一般是_。(分数:2.00)A.一对一B.一对多C.多对一D.多对多27.有以下程序:#includestring.hmain()char p20=a,b,c,d),q=“abc“,r=“abcde“strcat(p,r);strcpy(p+strlen(q),q);printf(“%d/n“,sizeof(p);程序运行后的输出结果是_。(分数:2.00)_28.以下语句或语句组中,能正确进行字符串赋值的是_。(分数:2.00)A.char*sp;*sp=“right!“;B.char s10;s=“right!“;C.char s10;*s
12、=“right!“;D.char*sp=“right!“;29.下列叙述中正确的是_。(分数:2.00)A.为了建立一个关系,首先要构造数据的逻辑关系B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项C.一个关系的属性名表称为关系模式D.一个关系可以包括多个二维表30.有以下程序:#includestdio.hmain()int i,j;for(i=3;i=1;i-)for(j=1;j=2;j+)printf(“%d“,i+j);printf(“/n“);程序运行的结果是_。(分数:2.00)A.2 3 4B.4 3 2C.2 3D.4 53 4 5 5 4 3 3 4 3 44 5
13、 2 331.以下关于函数的叙述中正确的是_。(分数:2.00)A.每个函数都可以被其他函数调用(包括 main 函数)B.每个函数都可以被单独编译C.每个函数都可以单独运行D.在一个函数内部可以定义另一个函数32.有以下程序:#includestdio.hmain()int y=9;for(;y0;y-)f(y%3=0)printf(“%d“,-y);程序的运行结果是_。(分数:2.00)A.741B.963C.852D.87542133.有以下程序:void f(int*q)int i=0;for(;i5;i+)(*q)+;main()int a5=1,2,3,4,5,i;f((分数:2.
14、00)A.;for(i=0;i5;i+)printf(“%d,“,34.有以下程序:void fun2(char a,char b)printf(“%c%c“,a,b);char a=A,b=B;void funl()a=C;b=D;main()funl();printf(“%c%c“,a,b);un2(E,F);程序的运行结果是_。(分数:2.00)A.C D E FB.A B E FC.A B C DD.C D A B35.有以下程序:main(int argc,char*argv)int n=0,i;for(i=1;iargc;i+)n=n*10+argvi-0;printf(“%d/n
15、“,n);编绎连接后生成可执行文件 tt.exe.若运行时输入以下命令行tt 12 345 678程序运行后的输出结果是_。(分数:2.00)A.12B.12345C.12345678D.13636.有以下程序:#includestdio.hmain()int x=1,y=0,a=0,b=0;switch(x)case 1:switch(y)case 0:a+;break;case 1: b+;break;case 2:a+;b+;break;case 3:a+;b+;printf(“a=%d,b=%d/n“,a,b);程序的运行结果是_。(分数:2.00)A.a=1,b=0B.a=2,b=2
16、C.a=1,b=1D.a=2,b=137.以下叙述中正确的是_。(分数:2.00)A.用 C 语言实现的算法必须要有输入和输出操作B.用 C 语言实现的算法可以没有输出但必须要有输入C.用 C 语言程序实现的算法可以没有输入但必须要有输出D.用 C 语言程序实现的算法可以既没有输入也没有输出38.某二叉树中有 n 个度为 2 的节点,则该二叉树中的叶子节点为_。(分数:2.00)A.n+1B.n-1C.2nD.n/239.有以下程序:main()int i,t3=9,8,7,6,5,4,3,2,1;for(i=0;i3;i+)printf(“%“,t2-ii);程序执行后的输出结果是_。(分数
17、:2.00)A.7 5 3B.3 5 7C.3 6 9D.7 5 140.在 C 语言中,函数返回值的类型最终取决于_。(分数:2.00)A.函数定义时的函数首部所说明的函数类型B.return 语句中表达式值的类型C.调用函数时主调函数所传递的实参类型D.函数定义时形参的类型二、填空题(总题数:14,分数:30.00)41.线性表的存储结构主要分为顺序存储结构和链式存储结构,队列是一种特殊的线性表,循环队列是队列的 1 存储结构。(分数:2.00)填空项 1:_42.在面向对象方法中,类的实例称为 1。(分数:2.00)填空项 1:_43.两种基本测试方法中, 1 测试的原因之一是保证所测试
18、模块中每一个独立路径至少要执行一次。(分数:2.00)填空项 1:_44.在关系模型中,把数据看成是二维表,每一个二维表称为一个 1。(分数:2.00)填空项 1:_45.E-R 图中,矩形表示 1。(分数:2.00)填空项 1:_46.执行以下程序后的输出结果是_。main()int a=10;a=(3*5,a+4);printf(“a=%d/n“,a);(分数:2.00)填空项 1:_47.以下程序运行后的输出结果是_。main()char c;int n=100;loat f=10;double x;x=f*=n/=(c=50);printf(“%d%f/n“,n,x);(分数:2.00
19、)填空项 1:_48.以下程序运行后的输出结果是_。main()int a=1,b=2,c=3;if(c=a)printf(“%d/n“,c);else printf(“%d/n“,b);(分数:2.00)填空项 1:_49.有以下程序,若运行时从键盘输入:18,11回车,则程序的输出结果是_。main()int a,b;printf(“Enter a,b:“);scanf(“%d,%d“,a,b);while(a!=b)while(ab)a-=b;while(ba)b-=a;printf(“%3d%3d“,a,b);(分数:2.00)填空项 1:_50.以下程序的功能是:求出数组 x 中各相
20、邻两个元素的和,依次存放到 a 数组中,然后输出,请填空。main()int x10,a9,I;for(i=0;i10;i+)scanf(“%d“,xi);for(i=1;i10;i+)ai-1=xi+_;for(i=0;i9;i+)printf(“%d“,ai);printf(“/n“);(分数:2.00)填空项 1:_下面程序的功能是:将 N 行 N 列二维数组中每一行的元素进行排序,第 0 行从小到大排序,第 1 行从大到小排序,第 2 行从小到大排序,第 3 行从大到小排序,例如:(分数:4.00)填空项 1:_填空项 1:_51.以下程序运行后的输出结果是_。#includechar
21、*ss(char*s)char*p,t;P=s+1;t=*s;while(*p) *(P-1)=*P;P+;*(P-1)=t;return s;main()char*p,str10=“abcdefgh“;p=ss(str);printf(“%s/n“,p);(分数:2.00)填空项 1:_52.执行以下程序的输出结果是_。#includestdio.h#define M 5#define N M+Mmain()int k;k=N*N*5;printf(”%d/n“ ,k);(分数:2.00)填空项 1:_53.以下程序中函数 fun 的功能是:统计 person 所指结构体数组中所有性别(se
22、x)为 M 的记录的个数,存入变量 n 中,并作为函数值返回。请填空:#includestdio.h#define N 3typedef structint mum,char name10;char sex;SS;int fun(SS person)int i,n=0;for(i=0;iN;i+)if(_=M)n+;return n;main()SS WN=1,AA,F,2,BB,M,3,CC,M;int n;n=fun(W);printf(“n=%d/n“,n);(分数:2.00)填空项 1:_二级 C 语言笔试-131 答案解析(总分:110.00,做题时间:90 分钟)一、选择题(总题数
23、:40,分数:80.00)1.有以下程序:main()int a=2,4,6,8,10),y=0,x,*P;P=a1;for(x=1;x3;x+)y+=px;printf(“%d/n“,y);程序运行后的输出结果是_。(分数:2.00)A.10B.11C.14 D.15解析:解析 指针变量 p 指向数组元素 a1,则 p1即为 a2,p2即为 a3,执行第一次 for 循环时,y=y+p1=0+a2=6,第二次执行 for 循环,y=y+p2=6+a3=14,此时 x 为 3,for 循环条件不满足,退出循环,输出 y 的值为 14。2.下列关于栈的描述正确的是_。(分数:2.00)A.在栈中
24、只能插入元素而不能删除元素B.在栈中只能删除元素而不能插入元素C.栈是特殊的线性表,只能在一端插入或删除元素 D.栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素解析:解析 栈是特殊的线性表,只能在栈顶插入或删除元素。3.若有说明语句:double*P,a;则能通过 scanf 语句正确给输入项读入数据的程序段是_。(分数:2.00)A.*p=a;scanf(“%lf“,p);B.*p=scanf(“%f“,p);C.p=scanf(“%lf“,*p);D.p=a;scanf(“%lf“,p); 解析:解析 *p 间接引用指针指向的变量,因此“(*p)=a”不对。scanf()的输入变
25、量必须为地址,因此 C 是错误的。4.有以下计算公式:(分数:2.00)A.B. C.D.解析:解析 本题考查的重点是分段数学公式的求解。选项 D 是正确的,它是用问号表达式“exp1? exp2:exp3”来代替 if-else 语句,其运算过程是:先对 expl 求值,如果 expl 值为真时,对 exp2 求值并将所求结果作为整个问号表达式的值。若 expl 的值为假时,对 exp3 求值并将结果作为整个问号表达式的值。因而程序“y=sqrt(x=0:-x)”是先判断 x=0,若为真,则计算结果为 sqrt(X),否则计算结果为 sqrt(-X),且该函数包含于 math.h 头文件中。
26、选项 A 和 B 也是对的,只有选项 B 不能正确计算上述功能。5.软件设计中模块划分应遵循的准则是_。(分数:2.00)A.低内聚、低耦合B.高内聚、低耦合 C.低内聚、高耦合D.高内聚、高耦合解析:解析 耦合性和内聚性足模块独立性的两个定性标准。内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量,作为软件结构设计的设计原则,要求每个模块的内部都具有很强的内聚性;耦合性是指模块间相互连接的紧密程度的度量,一个模块与其他模块的耦合性越强则该模块的独立性越弱。一般优秀的软件设计应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。6.数据库技术的根本目
27、标是要解决数据的_。(分数:2.00)A.存储问题B.共享问题 C.安全问题D.保护问题解析:解析 数据库技术的根本目标是解决数据的共享问题。7.有以下程序:#inlucdestdio.hmain()D) 2 3 3int n,*P=NULL;*p=n;printf(“input n:“);scanf(“%d“,p);printf(“output n:“);printf(“%d/n“,p);该程序试图通过指针 P 为变量 n 读入数据并输出,但程序有多处错误,以下语句正确的是_。(分数:2.00)A.int n,*P=NULL; B.*P=n;C.scanf(“%d“,p)D.printf(“
28、%d/n“,p);解析:解析 *p 代表存储单元的值,而n 代表变量 n 的地址,将一个地址赋给一个值是不正确的,所以选项 B 是错误的;指针 p 代表存储单元的地址,前面不需要加,所以选项 C 错误;选项 D 是将一个地址输出,所以也是错误的。除了给指针变量赋地址值以外,还可以给指针变量赋 NULL 值,所以选项 A 正确。8.以下合法的字符型常量是_。(分数:2.00)A./x13 B./081C.65D.“/n“解析:解析 字符常量只能包含一个字符,因此 C 选项错误。字符常量只能用单引号括起来,不能用双引号,因此 D 选项错误。转义字符常量是一个反斜线开头后跟一个特定的字符,用来代表某
29、个特定的ASC字符,反斜线后面直接跟数字表示八进制(八进制不用 0 开头),所以 B 错误。反斜线后面以小写字母 x 开头的用来表示十六进制数。9.若有定义 int x,y;,并已正确给变量赋值,则以下选项中与表达式(x-y)?(x+):(y+)中的条件表达式(x-y)等价的是_。(分数:2.00)A.(xy0)B.(x-y0)C.(x-y0|x-y0) D.(x-Y=0)解析:解析 条件运算表达式:“表达式 17 表达式 2:表达式 3”,但表达式 1 的值为非 0 时,此时表达式 2 的值就是整个条件表达式的值,反之为表达式 3 的值。故其等价于选项 C 中的逻辑或表达式。10.若有定义语
30、句:int a23,*p33;,则以下语句中正确的是_。(分数:2.00)A.p=a;B.p0=a;c)p0=a12;D) p1=a 解析:解析 本题考查的重点是指针数组与二维数组的关系。因为*p3定义成指针数组,从而指针数组中的任何元素都是一个地址,因此,选项 B 是正确的。11.有以下程序:#define f(x)(x*x)main()int i1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf(“%d,%d/n“,i1,i2);程序运行后的输出结果是_。(分数:2.00)A.64,28B.4,4C.4,3 D.64,64解析:解析 根据题意,il=f(8)
31、/f(4)进行宏替换后i1=(8*8)/(4*4)=4,i2=f(4+4)/f(2+2)=(4+4*4+4)/(2+2*2+2)=24/8=3。所以输出结果为 4、3。12.以下结构体类型说明和变量定义中正确的是_。(分数:2.00)A.typedef struct B.struct REC;int n;char c;REC; int n;char c;REC t1,t2; REC t1,t2;C.typedef struct REC;D.structint n=0;char c=A;t1,t2; int n;char c;REC;REC t1,t2;解析:解析 选项 A 中用 typedef
32、 定义结构体类型名 REC 后,REC 能够唯一地标识这种结构体类型,可以用 REC 定义变量,这是正确的结构体类型变量的定义,选项 C 是错误的。选项 B 中“struct REC;”后面不应该加分号。选项 D 中的结构体是一个无名结构体类型,REC 是结构体变量,不是结构体类型,因此不能用来定义结构体变量。13.下列描述中正确的是_。(分数:2.00)A.程序就是软件B.软件开发不受计算机系统的限制C.软件既是逻辑实体,又是物理实体D.软件是程序、数据与相关文档的集合 解析:解析 计算机软件是包括程序、数据及相关文档的完整集合,软件是一种逻辑实体,软件的开发、运行对计算机系统具有依赖性,受
33、计算机系统的限制。14.有以下程序:main()int k=5;while(-k)printf(“%d“,k-=3);printf(“/n“);执行后的输出结果是_。(分数:2.00)A.1 B.2C.4D.死循环解析:解析 while(-k)执行后 k=4,k-=3 等价于 k=k-3。15.以下选项中可作为 C 语言合法常量的是_。(分数:2.00)A.-80 B.-080C.-8e1.0D.-80.0e解析:解析C 语言中实数常数的科学表示法规定格式为:“实数 e 整数”或“实数 E 整数”,其中幂是整数,不能写成实数。e(或 E)前后的实数和整数都不能省略掉,因此选项 C 和 D 都是
34、错误的。选项 B 的一 080,由于 C 语言规定。开头的是八进制数,0x(0x)开头的是十六进制数。而八进制数数字是 07,出现 8 是错误的,因此选项 B 也是错误的。只有选项 A 是正确的。实数的小数点前后的数字都可以不写。16.有以下程序:main()int i=1,j=2,k=3;if(i+=1(+j=3|k+=3)printf(“%d%d%d/n“,i,j,k);程序运行后的输出结果是_。(分数:2.00)A.1 2 3B.2 3 4C.2 2 3D.2 3 3 解析:解析 本题的考点是关于 C 语言的逻辑表达式的计算规则。对于逻辑表达式“i+=1(+j=3|k+=3)”,首先判断
35、“i+=1”,由于 i 初值为 1,“i+=1”为真,同时 i 加1 值为 2。由于第一项为真,对于“”运算符,结果取决于后一项“(+j=3|k+=3)”。而逻辑表达式“(+j=3|k+=3)”计算时,首先判断“+j=3”,由于 j 初值为 2,+j 后 j 值为3,“+j=3”为真,对于“|”运算符不需要判断后一项表达式的结果就可以断定此逻辑表达式结果为真,因此“k+=3”并没有进行判断,k+也未执行,k 仍是初值 3,输出结果应该是:2 3 3。正确选项是D。17.读取二进制文件的函数调用形式为:fread(buffer,size,count,pf);,其中 buffer 代表的是_。(分
36、数:2.00)A.一个文件指针,指向待读取的文件B.一个整型变量,代表待读取的数据的字节数C.一个内存块的首地址,代表读入数据存放的地址 D.一个内存块的字节数解析:解析 本题考查的重点是对 fread 函数的理解。fread 函数中,buffer 是接收读入数据的内存区域的指针,因此选项 C 是正确的。18.有以下程序:int fun(int n)if(n=1)return 1;else return(n+fun(n-1);main()int x;scanf(“%if“,x);x=fun(x);printf(“%d/n“,x);执行程序时,给变量 X 输入 10,程序的输出结果是_。(分数:
37、2.00)A.55 B.54C.65D.45解析:解析 函数 fun()通过递归调用实现的功能为 n+(n-1)+1,故程序的输出结果为 55。19.以下定义语句中正确的是_。(分数:2.00)A.int a=b=0;B.char A=65+1,b=b; C.float a=1,*b=a,*c=b;D.double a=0.0;b=1.1;解析:解析 变量定义的时候不能用连等,故 A 选项错误。C 选项中变量 C 和b 的类型不匹配。D 选项中,变量前为分号“;”表示前面的语句定义完毕,并没有为变量 b 定义,可将分号“;”改为逗号“,”即可。20.以下程序的功能是进行位运算:main()un
38、signed char a,b;a=73;b=43;printf(“%d%d/n“,a,b);程序运行后的输出结果是_。(分数:2.00)A.4 3 B.7 3C.7 0D.4 0解析:解析 本题考查位运算。位运算的对象应为二进制的形式。7 的二进制表示为 00000111,3 的二进制表示为 00000011,7 与 3 相异或得 00000100,即十进制数 4,表达式“43”先进行位反操作,再进行位与,即 1111101100000011=00000011,即十进制数 3。所以应输出为 4 和 3。21.算法的有穷性是指_。(分数:2.00)A.算法程序的运行时间是有限的 B.算法程序所
39、处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用解析:解析 算法的基本特征包括可行性、确定性、有穷性、拥有足够的情报,其中算法的有穷性是指算法必须能在有限的时间内做完执行有限个步骤之后终止,即算法程序的运行时间是有限的。22.有以下程序:#includestdio.hvoid fun(char*p)+P;printf(“%s/n“,*p);main()char*a=“Morning“,“Afternoon“,“Evening“,“Night“;fun((分数:2.00)A.;程序 解析:解析 本题考查的重点是二级指针的用法。函数 fun(char*p)定义了一个二级指
40、针,而实参 a 为一个指针数组,当执行+p 时,实际上指向指针数组的第二个元素,因此,输出的是 Afternoon。23.软件是指_。(分数:2.00)A.程序B.程序和文档C.算法加数据结构D.程序、数据与相关文档的完整集合 解析:解析 计算机软件是包括程序、数据及相关文档的完整集合。24.有以下程序:struct STUchar name10;int num;float TotalScore;void f(struct STU*P)struct STU s2=“SunDan“,20044,550,“Penghua“,20045,537,*q=s;+P;+q;*P=*q;main()stru
41、ct STU s3=“YangSan“,20041,703),“LiSiGuo“,20042,580;f(s);printf(“%s%d%3.0f/n“,s1.name,s1.num,s1.TotalScore);程序运行后的输出结果是_。(分数:2.00)A.SunDan 20044 550B.Penghua 20045 537 C.LiSiGuo 20042 580D.SunDan 20041 703解析:解析 本题将结构体数组 s 的首地址传给了结构体指针变量 p,并在函数 f 中改变了指针变量 p所指向的第二个结构体中的成员变量,这一改变,也就改变了主函数中 s1的成员变量。25.下列
42、叙述中正确的是_。(分数:2.00)A.程序的执行效率与数据的存储结构密切相关 B.程序的执行效率只取决于程序的控制结构C.程序的执行效率只取决于所处理的数据量D.以上三种说法都不对解析:解析 程序的执行效率是与数据的存储结构密切联系的。26.“商品”与“顾客”两个实体集之间的联系一般是_。(分数:2.00)A.一对一B.一对多C.多对一 D.多对多解析:解析 一件“商品”只能被一名“顾客”购买,而一名“顾客”可以买多件“商品”,所以“商品”与“顾客”两个实体集之间的联系是多对一关系。27.有以下程序:#includestring.hmain()char p20=a,b,c,d),q=“abc
43、“,r=“abcde“strcat(p,r);strcpy(p+strlen(q),q);printf(“%d/n“,sizeof(p);程序运行后的输出结果是_。(分数:2.00)_解析:解析 题目中首先通过 strcat(p,r)函数将 r 所指字符串内容连接到 p 所指的字符串后面,p20=a,b,c,d,a,b,c,d,e,然后通过 strcpy(p+strlen(q),q),首先在 p0地址的基础上向后移动三位,然后将 q 所指字符串的内容复制到 p 所指的存储空间中,从字符 d 往后全部覆盖,p20=a,b,c,a,b,c28.以下语句或语句组中,能正确进行字符串赋值的是_。(分数
44、:2.00)A.char*sp;*sp=“right!“;B.char s10;s=“right!“;C.char s10;*s=“right!“;D.char*sp=“right!“; 解析:解析 本题的考点是 C 语言的数组和指针。C 的数组名是一个特殊类型的指针,固定指向数组第一个元素的位置,运行过程中不能再改变其指向。因此选项 B、C 都是错误的。指针可以指向任何单元,但选项 A 是错误的,因为赋值语句“*sp=”right!”;”是错误的,正确写法是“sp=”right!”;”。而对于选项 D,由于“char*sp=“right!“;”是定义指针同时赋初值,因此是正确的。29.下列叙
45、述中正确的是_。(分数:2.00)A.为了建立一个关系,首先要构造数据的逻辑关系 B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项C.一个关系的属性名表称为关系模式D.一个关系可以包括多个二维表解析:解析 关系中的每一个属性都是不可分解的,所以表示关系的二维表中各元组的每一个分量不能分成若干数据项。关系模式是命名的属性集合。一个关系就是一张二维表。为了建立一个关系,首先需要构造数据的逻辑关系。30.有以下程序:#includestdio.hmain()int i,j;for(i=3;i=1;i-)for(j=1;j=2;j+)printf(“%d“,i+j);printf(“/n“);程序运行的结果是_。(分数:2.00)A.2 3 4B.4 3 2C.2 3D.4 53 4 5 5 4 3 3 4 3 44 5 2 3 解析:解析 本题主要考查 for 循环语句的嵌套。外层主循环执行了 3 次,嵌套的循环语句每轮执行 2次,每次输出 i+j 的值,推出嵌套循环语句后换行。31.