1、二级 C语言笔试-63 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.以下函数返回 a所指数组中最小的值所在的下标值fun(int *a,int n)int i,j=0,p;p=j;for(i=j;in;i+)if(aiap) _;return(p);在横线处应填入的是A)i=p B)ap=ai C)p=j D)p=i(分数:2.00)A.B.C.D.2.检查软件产品是否符合需求定义的过程称为(分数:2.00)A.确认测试B.集成测试C.验证测试D.验收测试3.有以下程序#include stdio.hvoid fun(int *a,in
2、t n)/*fun函数的功能是将 a所指数组元素从大到小排序*/int t,i,j;for(i=0;in-1;j+)for(j=i+1;jn;j+)if(aiaj) t=ai;ai=aj;aj=t;main( )int c10=1,2,3,4,5,6,7,8,9,0,i;fun(c+4,6);for(i=0;i10;i+) printf(“%d,“,ci);printf(“/n“);程序的运行结果是A)1,2,3,4,5,6,7,8,9,0, B)0,9,8,7,6,5,1,2,3,4, C)0,9,8,7,6,5,4,3,2,1, D)1,2,3,4,9,8,7,6,5,0,(分数:2.00
3、)_4.假设线性表的长度为 n,则在最坏情况下,冒泡排序需要的比较次数为(分数:2.00)A.log2nB.n2C.O(n1.5)D.n(n-1)/25.以下程序的运行结果是int k=0;void fun(int m) m+=k;k+=m;printf(“m=%d k=%d“,m,k+);main( )int i=4;fun(i+);printf(“i=%d k=%d/n“,i,k);(分数:2.00)A.m=4 k=5 i=5 k=5B.m=4 k=4 i=5 k=5C.m=4 k=4 i=4 k=5D.m=4 k=5 i=4 k=56.以下对 C语言函数的有关描述中,正确的是(分数:2.
4、00)A.在 C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参B.C函数既可以嵌套定义又可以递归调用C.函数必须有返回值,否则不能使用函数D.函数必须有返回值,返回值类型不定7.有以下程序#include stdio.hmain( )FILE *fp;int i,a6=1,2,3,4,5,6;fp=fopen(“d3.dat“,“w+b“);fwrite(a,sizeof(int),6,fp);fseek(fp,sizeof(int)*3,SEEK_SET);/*该语句使读文件的位置指针从文件头向后移动 3个 int型数据*/fread(a,sizeof(int),3,fp)
5、;fclose(fp);for(i=0;i6;i+)printf(“%d,“,ai);程序运行后的输出结果是A)4,5,6,4,5,6, B)1,2,3,4,5,6, C)4,5,6,1,2,3, D)6,5,4,3,2,1,(分数:2.00)_8.设变量已正确定义并赋值,以下正确的表达式是(分数:2.00)A.x=y*5=x+zB.int(15.8%5)C.x=y+z+5,+yD.x=25%5.09.以下叙述中错误的是(分数:2.00)A.改变函数形参的值,不会改变对应实参的值B.函数可以返回地址值C.可以给指针变量赋一个整数作为地址值D.当在程序的开头包含头文件 stdio.h时,可以给指
6、针变量赋 NULL10.软件生命周期中花费费用最多的阶段是(分数:2.00)A.详细设计B.软件编码C.软件测试D.软件维护11.若有定义:int a23;,以下选项中对 a数组元素正确引用的是(分数:1.00)A.a2!1B.a23C.a03D.a12!112.以下不是面向对象思想中的主要特征的是(分数:1.00)A.多态B.继承C.封装D.垃圾回收13.下面四个选项中,均是不合法的用户标识符的选项是(分数:1.00)A.A P_0 doB.float la0 _AC.b-a goto intD._123 temp int14.若有以下程序#include stdio.hint a =2,4
7、,6,8;main( )int i;int *p=a;for(i=0;i4;i+) ai=*p;printf(“%d/n“,a2);上面程序的输出结果是A)6 B)8 C)4 D)2(分数:1.00)A.B.C.D.15.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指(分数:1.00)A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程16.有以下程序段int j;float y;char name50;scanf(“%2d%f%s“,j,当执行上述程序段,从键盘上输入 55566 7777abe后,y 的值为(分数:1.00)A.55566
8、.0B.566.0C.7777.0D.566777.017.数据结构中,与所使用的计算机无关的是数据的(分数:1.00)A.存储结构B.物理结构C.逻辑结构D.物理和存储结构18.下面各选项中,均是 C语言合法标识符的选项组是(分数:1.00)A.33 we autoB._23 me _3ewC._43 3e_ elseD.ER -DF 3219.若有定义:float x=1.5;int a=1,b=3,c=2;,则正确的 switch语句是A)switch(x)case 1.0:printf(“*/n“);case 2.0:printf(“*/n“);B)switch(int)x);case
9、 1:printf(“*/n“);case 2:printf(“*/n“);C)switch(a+b)case 1:printf(“*/n“);case 2+1:printf(“*/n“);D)switch(a+b)case 1:printf(“*/n“);case c:printf(“*/n“);(分数:1.00)A.B.C.D.20.有以下程序#include stdio.h#include string.htypedef stmct char name9;char sex;float score2;STU;void f(STU a)STU b=“Zhao“,m,85.0,90.0; in
10、t i;strcpy((分数:1.00)A.name,B.name) ;a.sex=b.sex;for(i=0;i2;i+)a.scorei=b.scorei;main( )STU c=“Qian“,f,95.0,92.0;f(c);printf(“%s,%c,%2.0f,%2.0f/n“,C.name,c.sex,c.score0,c.score1) ;程序的运行结果是A)Qian,f,95,92 B)Qian,m,85,90 C)Zhao,f,95,92 D)Zhao,m,85,9021.有下面程序段#include “stdio.h“#include “string.h“main( )c
11、har a320=“china“,“isa“,“bigcountry!“;char k100=0,*p=k;int i;for(i=0;i3;i+)p=strcat(p,ai);i=strlen(p) ;printf(“%d/n“,i);则程序段的输出结果是A)18 B)19 C)20 D)21(分数:2.00)A.B.C.D.22.以下描述中正确的是(分数:2.00)A.由于 do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句B.do-while循环由 d。开始,用 while结束,在 while(表达式)后面不能写分号C.在 do-while循环体中,是先执
12、行一次循环,再进行判断D.do-while循环中,根据情况可以省略 while23.已知 int a=1,b=3则 ab 的值为(分数:2.00)A.3B.1C.2D.424.树是结点的集合,它的根结点数目是(分数:2.00)A.有且只有 1B.1或多于 1C.0或 1D.至少 225.数据库、数据库系统和数据库管理系统之间的关系是(分数:2.00)A.数据库包括数据库系统和数据库管理系统B.数据库系统包括数据库和数据库管理系统C.数据库管理系统包括数据库和数据库系统D.三者没有明显的包含关系26.阅读下列程序段,则程序的输出结果为#include “stdio.h“#define M(X,Y
13、)(X)*(Y)#define N(X,Y)(X)/(Y)main( )int a=5,b=6,c=8,k;k=N(M(a,b),c);printf(“%d/n“,k);A)3 B)5 C)6 D)8(分数:2.00)A.B.C.D.27.设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=ab) char *argv ;int i;printf(“%d/n“,argc);A)3 B)4 C)2 D)以上答案都不正确(分数:2.00)A.B.C.D.29.以下程序的输出结果是main( )int a,i;a=0;for(i=1;i5;i+) switch(i)case 0:
14、case 3:a+=2;case 1:case 2:a+=3;default:a+=5;printf(“%d/n“,a);A)31 B)13 C)10 D)20(分数:2.00)_30.下列程序的运行结果是#include “stdio.h“main( )int x=-9,y=5,z=8;if(xy)if(y0) z=0;else z+=1;printf(“%d/n“,z);(分数:2.00)A.6B.7C.8D.931.以下数组定义中错误的是(分数:2.00)A.int x 3=0;B.int x23=1,2,3,4,5,6;C.int x 3=1,2,3,4,5,6;D.int x23=1
15、,2,3,4,5,6;32.下列程序的输出结果是#include “stdio.h“#define M(x,y) x%ymain( )int a,m=12,n=100;a=M(n,m);printf(“%d/n“,a-);A)2 B)3 C)4 D)5(分数:2.00)A.B.C.D.33.已知字符A的 ASCII码值是 65,字符变量 c1的值是A,c2 的值是D。执行语句printf(“%d,%d“,c1,c2-2) ;后,输出结果是(分数:2.00)A.A,BB.A,68C.65,66D.65,6834.有以下程序#include stdio.hint fun(char s ) int
16、n=0;while(*s=9s+;retum(n);main( )char s10=6,1,*,4,*,9,*,0,*;printf(“%d/n“,fun(s);程序的运行结果是A)9 B)61490 C)61 D)5(分数:2.00)A.B.C.D.35.现有定义 int a;double b;float c;char k;,则表达式 a/b+c-k值的类型为(分数:2.00)A.intB.doubleC.floatD.char36.下列选项中错误的说明语句是(分数:2.00)A.char a =t,o,y,o,u,/0;B.char a =“toyou/0“;C.char a =“toyo
17、u/0“;D.char a =toyou/0;37.有以下函数int aaa(char *s)char *t=s;while(*t+);t-;return(t-s);以下关于 aaa函数的功能的叙述正确的是A)求字符串 s的长度 B)比较两个串的大小 C)将串 s复制到串 t D)求字符串 s所占字节数(分数:2.00)A.B.C.D.38.在设计程序时,应采纳的原则之一是(分数:2.00)A.不限制 goto语句的使用B.减少或取消注解行C.程序越短越好D.程序结构应有助于读者理解39.有以下程序#include stdio.hvoid fun(char *t,char *s)while(*
18、t!=0) t+;while(*t+=*s+)!=0);main( )char ss10=“acc“,aa10=“bbxxyy“;fun(ss,aa); printf(“%s,%s/n“,ss,aa);程序的运行结果是A)accxyy,bbxxyy B)acc,bbxxyy C)accxxyy,bbxxyy D)accbbxxyy,bbxxyy(分数:2.00)A.B.C.D.40.数据库系统的核心是(分数:2.00)A.数据库B.数据库管理系统C.模拟模型D.软件工程二、填空题(总题数:14,分数:30.00)41.软件定义时期主要包括 1 和需求分析两个阶段。(分数:2.00)填空项 1:
19、_42.为了便于对照检查,测试用例应由输入数据和预期的 1 两部分组成。(分数:2.00)填空项 1:_43.数据的逻辑结构有线性结构和 1 两大类。(分数:2.00)填空项 1:_44.某二叉树中度为 2的结点有 18个,则该二叉树中有 1 个叶子结点。(分数:2.00)填空项 1:_45.在 E-R图中,矩形表示 1。(分数:2.00)填空项 1:_46.已有定义:char c= ;int a=1,b;(此处 c的初值为空格字符),执行 b=!c后 b的值为 1。(分数:2.00)填空项 1:_47.以下程序的输出结果是_。main( )int y=9;for(;y0;y-)if(y%3=
20、0)printf(“%d“,-y);continue;(分数:2.00)填空项 1:_48.下面程序的功能是:计算 110 之间的奇数之和与偶数之和,请填空。#include stdio.hmain( )int a,b,c,i;a=c=0;for(i=0;i=10;i+=2) a+=i;_;c+=b;printf(“偶数之和=%d/n“,a);printf(“奇数之和=%d/n“,c-11);(分数:2.00)填空项 1:_49.设有以下定义和语句,则*(*(p+2) +1) 的值为_。int a32=10,20,30,40,50,60,(*p) 2;p=a;(分数:2.00)填空项 1:_5
21、0.以下程序的输出结果是_。#include stdio.hvoid swap(int *a, int *b)int *t;t=a;a=b;b=t;main( )int i=3,j=5,*p=i,*q=j;swap(p,q); printf(“%d %d/n“,*p,*q);(分数:2.00)填空项 1:_51.以下程序中函数 f的功能是在数组 x的 n个数(假定 n个数互不相同)中找出最大最小数,将其中最小的数语第一个数兑换,把最大的数语最后一个数对换。请填空。#include stdio.hvoid f(int x ,int n)int p0,p1,i,j,t,m;i=j=x0; p0=p
22、1=0;for(m=0;mn;m+)if(xmi) i=xm;p0=m;else if(xmj) j=xm;p1=m;t=xp0;xp0=xn-1;xn-1=t;t=xp1;xp1= 11 ; 12 =t;main( )int a10,u;for(u=0;u10;u+) scanf(“%d“,f(a,10);for(u=0;u10;u+) printf(“%d“,au);printf(“/n“);(分数:4.00)填空项 1:_52.以下程序的输出结果是_。#include stdio.hmain( )int a5=2,4,6,8,10,*p;p=a;p+;printf(“%d“,*p);(分
23、数:2.00)填空项 1:_53.阅读下列程序,则程序的输出结果为_。#include “stdio.h“struet tyint data;char c;main( )street ty a=30,x;fun(a);printf(“%d%c“,a.data,a.c);fun(struct ty b)b.data=20;b.c=y;(分数:2.00)填空项 1:_54.以下程序的运行结果是_。#include stdio.hmain( )FILE *fp;int a10=1,2,3,0,0,i;fp=fopen(“d2.dat“,“wb“);fwtite(a,sizeof(int) ,5,fp
24、);fwrite(a,sizeof(int) ,5,fp);fclose(fp);fp=fopen(“d2.dat“,“rb“);fread(a,sizeof(int) ,10,fp);fclose(fp);for(i=0;i10;i+)printf(“%d“,ai);(分数:2.00)_二级 C语言笔试-63 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.以下函数返回 a所指数组中最小的值所在的下标值fun(int *a,int n)int i,j=0,p;p=j;for(i=j;in;i+)if(aiap) _;return(p);在横
25、线处应填入的是A)i=p B)ap=ai C)p=j D)p=i(分数:2.00)A.B.C.D. 解析:解析 该程序先判断 aiap,如果条件为真,则 ai比当前设定的最小值小(p 保留的当前最小元素的下标),那么将 i赋给 p,即将比较过的最小元素下标保留在 p中,作为下面判断的标准。2.检查软件产品是否符合需求定义的过程称为(分数:2.00)A.确认测试 B.集成测试C.验证测试D.验收测试解析:解析 确认测试的任务是验证软件的功能和性能,以及其他特性是否满足需求规格说明中确定的各种需求;集成测试的主要目的是发现与接口有关的错误。3.有以下程序#include stdio.hvoid f
26、un(int *a,int n)/*fun函数的功能是将 a所指数组元素从大到小排序*/int t,i,j;for(i=0;in-1;j+)for(j=i+1;jn;j+)if(aiaj) t=ai;ai=aj;aj=t;main( )int c10=1,2,3,4,5,6,7,8,9,0,i;fun(c+4,6);for(i=0;i10;i+) printf(“%d,“,ci);printf(“/n“);程序的运行结果是A)1,2,3,4,5,6,7,8,9,0, B)0,9,8,7,6,5,1,2,3,4, C)0,9,8,7,6,5,4,3,2,1, D)1,2,3,4,9,8,7,6,
27、5,0,(分数:2.00)_解析:解析 在本题中,主函数在调用 fun( )函数进行排序时,传递的参数是 c+4和 6,fun( )函数实现的功能是将数组 c的第 5个元素开始的 6个元素依次进行从大到小的顺序排列。排序之后,数组 c的内容变为1,2,3,4,9,8,7,6,5,04.假设线性表的长度为 n,则在最坏情况下,冒泡排序需要的比较次数为(分数:2.00)A.log2nB.n2C.O(n1.5)D.n(n-1)/2 解析:解析 假设线性表的长度为 n,则在最坏情况下,冒泡排序要经过 n/2遍的从前往后的扫描和 n/2遍的从后往前的扫描,需要的比较次数为 n(n-1)/2。5.以下程序
28、的运行结果是int k=0;void fun(int m) m+=k;k+=m;printf(“m=%d k=%d“,m,k+);main( )int i=4;fun(i+);printf(“i=%d k=%d/n“,i,k);(分数:2.00)A.m=4 k=5 i=5 k=5B.m=4 k=4 i=5 k=5 C.m=4 k=4 i=4 k=5D.m=4 k=5 i=4 k=5解析:解析 由于在 main( )函数中,变量 i=4,所以就调用 fun(4),则输出“m=4 k=4”。然后变量 k增 1等于 5,变量 i增 1等于 5,所以 main( )函数的“printf(“i=%dk=
29、%d/n“,i,k);”语句输出“i=5 k=5”。6.以下对 C语言函数的有关描述中,正确的是(分数:2.00)A.在 C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参 B.C函数既可以嵌套定义又可以递归调用C.函数必须有返回值,否则不能使用函数D.函数必须有返回值,返回值类型不定解析:解析 C 语言中的函数可以进行递归调用,但是不能在函数中定义函数,函数可以没有返回值,若有返回值,则返回值类型必确定。7.有以下程序#include stdio.hmain( )FILE *fp;int i,a6=1,2,3,4,5,6;fp=fopen(“d3.dat“,“w+b“);fw
30、rite(a,sizeof(int),6,fp);fseek(fp,sizeof(int)*3,SEEK_SET);/*该语句使读文件的位置指针从文件头向后移动 3个 int型数据*/fread(a,sizeof(int),3,fp);fclose(fp);for(i=0;i6;i+)printf(“%d,“,ai);程序运行后的输出结果是A)4,5,6,4,5,6, B)1,2,3,4,5,6, C)4,5,6,1,2,3, D)6,5,4,3,2,1,(分数:2.00)_解析:解析 首先利用 fwrite函数将数组 a中的数据写到文件中,接着 fseek函数的功能是读文件的位置,指针从文件
31、头向后移动 3个 int型数据,这时文件位置指针指向的是文件中的第 4个 int数据“4”,然后 fread函数将文件 fp中的后 3个数据 4,5,6读到数组 a中,这样就覆盖了数组中原来的前 3项数据。最后数组中的数据就成了4,5,6,4,5,68.设变量已正确定义并赋值,以下正确的表达式是(分数:2.00)A.x=y*5=x+zB.int(15.8%5)C.x=y+z+5,+y D.x=25%5.0解析:解析 求余运算符“%”两边的运算对象必须是整型;而选项 B)和 D)中“%”两边的运算对象有浮点整数据,所以选项 B)和 D)是错误的表达式。在选项 A)中赋值表达式的两边出现相同的变量
32、 x,也是错误的;选项 C)是一个逗号表达式,所以正确答案为 C)。9.以下叙述中错误的是(分数:2.00)A.改变函数形参的值,不会改变对应实参的值B.函数可以返回地址值C.可以给指针变量赋一个整数作为地址值 D.当在程序的开头包含头文件 stdio.h时,可以给指针变量赋 NULL解析:解析 函数形参和实参分别占用不同的内存单元,改变形参的值不会影响对应实参的值,选项 A) 正确。指针类型的函数可以返回地址值,选项 B)正确。在文件 stdio.h中,NULL 被定义为 void型的指针,选项 D)也正确。指针变量的值只能是存储单元地址,而不能是一个整数,选项 C)错误。10.软件生命周期
33、中花费费用最多的阶段是(分数:2.00)A.详细设计B.软件编码C.软件测试D.软件维护 解析:解析 软件生命周期分为软件定义、软件开发及软件运行维护 3个阶段。本题中,详细设计、软件编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。11.若有定义:int a23;,以下选项中对 a数组元素正确引用的是(分数:1.00)A.a2!1B.a23C.a03D.a12!1 解析:解析 C 语言中数组下标是从 0开始的,所以二维数组 a23的第一维下标取值为 0、1;第二维的下标取值
34、为 0、1、2,因而选项 A)、B)、C)都是错误的,选项 D)表示数组元素 a00。12.以下不是面向对象思想中的主要特征的是(分数:1.00)A.多态B.继承C.封装D.垃圾回收 解析:解析 面向对象思想中的三个主要特征是:封装性、继承性和多态性。13.下面四个选项中,均是不合法的用户标识符的选项是(分数:1.00)A.A P_0 doB.float la0 _AC.b-a goto int D._123 temp int解析:解析 C 语言规定的标识符只能由字母、数字和下画线 3种字符组成,第一个字符必须为字母或下画线,并且不能使用 C语言中的关键字作为标识符。选项 C)中 goto和
35、int是关键字,b-a 中“-”不是组成标识符的 3种字符之一;选项 D)中 int是关键字,所以,均是不合法用户标识符的选项是 C)。14.若有以下程序#include stdio.hint a =2,4,6,8;main( )int i;int *p=a;for(i=0;i4;i+) ai=*p;printf(“%d/n“,a2);上面程序的输出结果是A)6 B)8 C)4 D)2(分数:1.00)A.B.C.D. 解析:解析 在 C语言中,数组元素下标是从 0开始的;指针变量 p指向数组的首地址。for 循环语句中,指针变量 p 始终指向数组的首地址,因而执行循环赋值语句后数组各元素的值
36、均变为 2。15.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指(分数:1.00)A.模块间的关系B.系统结构部件转换成软件的过程描述 C.软件层次结构D.软件开发过程解析:解析 软件设计包括软件结构设计、数据设计、接口设计和过程设计。其中,结构设计是定义软件系统各主要部件之间的关系;数据设计将分析时创建的模型转化为数据结构的定义;接口设计是描述软件内部、软件和操作系统之间及软件与人之间如何通信;过程设计则是把系统结构部件转换成软件的过程性描述。16.有以下程序段int j;float y;char name50;scanf(“%2d%f%s“,j,当执行上述程序段,从键盘
37、上输入 55566 7777abe后,y 的值为(分数:1.00)A.55566.0B.566.0 C.7777.0D.566777.0解析:解析 本题考查通过 scanf函数输入数据时的格式控制问题。变量 j的格式控制为“%2d”,即只接收输入数据的前两位,从第三位开始直到空格之间的输入都会被保存到变量 y中,因为 y为浮点型数据,所以输出结果为选项 B)。17.数据结构中,与所使用的计算机无关的是数据的(分数:1.00)A.存储结构B.物理结构C.逻辑结构 D.物理和存储结构解析:解析 数据结构概念一般包括数据的逻辑结构、存储结构及数据上的运算集合等。数据的逻辑结构只抽象地反映数据元素之间
38、的逻辑关系,而不管它在计算机中的存储形式。18.下面各选项中,均是 C语言合法标识符的选项组是(分数:1.00)A.33 we autoB._23 me _3ew C._43 3e_ elseD.ER -DF 32解析:解析 合法的标识符是由字母、数字和下画线组成,并且第一个字符必须为字母或下画线,用户定义的标识符不能与关键字相同。选项 A),数字不能为第一个字母,auto 为关键字;选项 C)中,也是数字不能为第一个字母,else 为关键字;选项 D)中负号不合法。19.若有定义:float x=1.5;int a=1,b=3,c=2;,则正确的 switch语句是A)switch(x)ca
39、se 1.0:printf(“*/n“);case 2.0:printf(“*/n“);B)switch(int)x);case 1:printf(“*/n“);case 2:printf(“*/n“);C)switch(a+b)case 1:printf(“*/n“);case 2+1:printf(“*/n“);D)switch(a+b)case 1:printf(“*/n“);case c:printf(“*/n“);(分数:1.00)A.B.C. D.解析:解析 C 语言中,switch 语句专用于实现多分支结构程序,其特点是各分支清晰而直观。switch后面括号中可以是任何表达式,取
40、其整数部分与各常量表达式进行比较。常量表达式中不能出现变量,且类型必须是整型、字符型或枚举型,各常量表达式各不相同。20.有以下程序#include stdio.h#include string.htypedef stmct char name9;char sex;float score2;STU;void f(STU a)STU b=“Zhao“,m,85.0,90.0; int i;strcpy((分数:1.00)A.name, B.name) ;a.sex=b.sex;for(i=0;i2;i+)a.scorei=b.scorei;main( )STU c=“Qian“,f,95.0,9
41、2.0;f(c);printf(“%s,%c,%2.0f,%2.0f/n“,C.name,c.sex,c.score0,c.score1) ;程序的运行结果是A)Qian,f,95,92 B)Qian,m,85,90 C)Zhao,f,95,92 D)Zhao,m,85,90解析:解析 本题考查的是函数调用时的参数传递问题。程序在调用函数 f时,传给函数 f的参数只是结构变量 c在栈中的一个副本,函数 f的所有操作只是针对这个数据副本进行的修改,这些都不会影响变量 c的值。21.有下面程序段#include “stdio.h“#include “string.h“main( )char a32
42、0=“china“,“isa“,“bigcountry!“;char k100=0,*p=k;int i;for(i=0;i3;i+)p=strcat(p,ai);i=strlen(p) ;printf(“%d/n“,i);则程序段的输出结果是A)18 B)19 C)20 D)21(分数:2.00)A.B. C.D.解析:解析 字符串连接函数 strcat的调用形式如下:strcat(s1,s2)。此函数将 s2所指字符串的内容连接到 s1所指的字符串后面,并自动覆盖 s1串末尾的尾标,函数返回 s1的地址值。22.以下描述中正确的是(分数:2.00)A.由于 do-while循环中循环体语句
43、只能是一条可执行语句,所以循环体内不能使用复合语句B.do-while循环由 d。开始,用 while结束,在 while(表达式)后面不能写分号C.在 do-while循环体中,是先执行一次循环,再进行判断 D.do-while循环中,根据情况可以省略 while解析:解析 do-while 语句的一般形式为:do 循环体语句 while(表达式);,其中循环体语句可以是复合型语句,但必须用花括号括起来。while 后必须要有分号作为语句的结束,在 do-while循环中,不可以省略 while。23.已知 int a=1,b=3则 ab 的值为(分数:2.00)A.3B.1C.2 D.4解
44、析:解析 是按位异或运算,如果对应位不同则结果为 1,相同则为 0。24.树是结点的集合,它的根结点数目是(分数:2.00)A.有且只有 1B.1或多于 1C.0或 1 D.至少 2解析:解析 树是 N(N0)个结点的有限集合,当 N=0时称为空树,对于空树没有根结点,即根结点的个数为 0,对于非空树有且只有一个根结点,所以树的根结点数目为 0或 1。25.数据库、数据库系统和数据库管理系统之间的关系是(分数:2.00)A.数据库包括数据库系统和数据库管理系统B.数据库系统包括数据库和数据库管理系统 C.数据库管理系统包括数据库和数据库系统D.三者没有明显的包含关系解析:解析 数据库系统(Da
45、tabase System,简称 DBS)包括数据库(Database,简称 DB)和数据库管理系统(Database Management System,简称 DBMS)。26.阅读下列程序段,则程序的输出结果为#include “stdio.h“#define M(X,Y)(X)*(Y)#define N(X,Y)(X)/(Y)main( )int a=5,b=6,c=8,k;k=N(M(a,b),c);printf(“%d/n“,k);A)3 B)5 C)6 D)8(分数:2.00)A. B.C.D.解析:解析 带参数的宏定义命令行形式如下:#define 宏名(形参表) 替换文本。首先进行 M的宏替换,之后再进行 N的宏替换,替换后的表达式为(a)*(b)/(C)。27.设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=ab) char *argv ;int i;printf(“%d/n“,argc);A)3 B)4 C)2 D)以上答案都不正确(分数:2.00)A.B. C.D.解析:解析 argc 中存入的是命令行中字符串的个数。