1、二级 C语言分类模拟题 544及答案解析(总分:60.50,做题时间:90 分钟)一、选择题(总题数:40,分数:60.50)1.若变量已正确定义,有以下程序段 i=0; do printf(“%d,“,i);while(i+); printf(“%d/n“,i); 其输出结果是_。(分数:2.00)A.0,1B.0,0C.1,1D.程序进入无限循环2.有以下程序 #include stdio.h int fun(int (*s)4,int n,int k) int m,i; m=s0k; for(i=1;in:i+) if(sikm) m=sik; return m; main() int
2、a44=1,2,3,4, 11,12,13,14, 21,22,23,24, 31,32,33,34; printf(“%d/n“,fun(a,4,0); 程序的运行结果是_。(分数:1.00)A.31B.34C.4D.323.有如下程序段: int x=12; double y=3.141593; printf(“%d%8.6f“,x,y); 其输出结果是_。(分数:1.00)A.123.141593B.12 3.141593C.12,3.141593D.123.14159304.在数据库管理技术的发展中,数据独立性最高的是_。(分数:2.50)A.人工管理B.文件系统C.数据库系统D.数据
3、模型5.C语言中允许用外部说明来指定变量、函数和其他标识符的特征,这里所说的外部指的是_。(分数:2.00)A.冠以关键字 externB.位置在函数体外部C.作用范围是全程的D.位置在函数的外部6.假设有语句 sizeof(double),则它是_。(分数:2.50)A.一个整型表达式B.一个双精度浮点型表达式C.一种函数调用D.一种函数定义7.有以下程序: #includestdio.h main() int s12=1,2,3,4,4,3,2,1,1,1,2,3,c5=0,i; for(i=0;i12;i+) csi+; for(i=1;i5;i+) printf(“%d“,ci); p
4、rintf(“/n“); 程序的运行结果是_。(分数:2.00)A.2 3 4 4B.4 3 3 2C.1 2 3 4D.1 1 2 38.下列选项中不属于结构化程序设计方法的是 _ 。(分数:2.00)A.自顶向下B.逐步求精C.模块化D.可复用9.在关系数据库模型中,通常可以把( )称为属性,其值称为属性值。(分数:1.00)A.记录B.基本表C.模式D.字段10.下列程序的运行结果是_。 #includestdio.h void sub(int*s,int*y) static int m=4; *y=sm; m-; void main() int a=1,2,3,4,5,k; int x
5、; printf(“/n“); for(k=0;k=4;k+) sub(a, printf(“%d,“,x); (分数:2.00)A.5,4,3,2,1B.1,2,3,4,5C.0,0,0,0,0D.4,4,4,4,411.有一堆零件(个数在 100到 200之间),如果分成 4个零件一组,则多 2个零件;若分成 7个零件一组,则多 3个零件;若分成 9个零件一组,则多 5个零件。下面的程序是求这堆零件的总数,请选择填空。 #includestdioh main() int i; for(i=100; i200;i+) if(i-2)%4=0) if(! (i-3)%7) if(_) prin
6、tf(“%d“,i); (分数:1.00)A.i%9=5B.i%9!=5C.(i-5)%9!=0D.(i-5)%9= =012.下列叙述中错误的是_。(分数:2.00)A.用户定义的函数中可以没有 return语句B.用户定义的函数中可以有多个 return语句,以便可以调用一次返回多个函数值C.用户定义的函数中若没有 return语句,则应当定义函数为 void类型D.函数的 return语句中可以没有表达式13.以下程序运行后的输出结果是 #includestdio.h int f(int n); main() int a=3, s; s=f(a); s=s+f(a); printf(“%
7、d/n“, s); int f(int n) static int a=1; n+=a+; return n; (分数:2.00)A.7B.8C.9D.1014.设有定义: int x=0, *p; 紧接着的赋值语句正确的是_。(分数:2.00)A.*p=x;B.*p=NULL;C.p=x;D.p=NULL;15.下列选项中非法的字符常量是 _ 。(分数:2.00)A.“/t“B.“/039“C.“,“D.“/n“16.设有如下函数定义 #includestdio.h int fun(int k) if(k1)return 0; else if(k=1) return 1; else retu
8、rn fun(k-1)+1; 若执行调用语句:n=fun(3);,则函数 fun总共被调用的次数是_。(分数:1.00)A.3B.2C.4D.517.以下程序不用第 3个变量,实现将两个数进行对调的操作,请填空。 #include stdio.h main() int a, b; scanf(“% d% d“, printf(“a=% db=% d“, a, b); a=a+b; b=a-b; a=_; printf(“a=% db=% d/n“, a, b); (分数:1.00)A.a+bB.a-bC.b*aD.a/b18.有以下程序: #includestdio.h void fun(in
9、t a, int n) int i, t; for(i=0; in/2; i+) t=ai; ai=an-1-i; nn-1-i=t; main() int k10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, i; fun(k, 5); for(i=2;i8;i+)printf(“%d“, ki); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.321678B.876543C.1098765D.34567819.有如下程序: #include stdio.h main() int x=0x13; printf(“%d/n“,x+1); 程序运行后
10、的输出结果是_。(分数:1.00)A.12B.14C.20D.1320.若变量已正确定义并赋值,符合 C语言语法的表达式是(分数:2.00)A.a=a+7;B.a=7+b+c,a+C.int(12.3%4)D.a=a+7=c+b21.if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是_。(分数:1.00)A.必须是正数B.必须是整数值C.可以是任意合法的数值D.必须是逻辑值22.不合法的 main函数命令行参数表示形式是 _(分数:1.00)A.main(int a, char *c)B.main(int arc,char *arv)C.main(int argc,
11、char *argv)D.main(int argv,char*argc)23.SQL语言又称为_。(分数:2.00)A.结构化定义语言B.结构化控制语言C.结构化查询语言D.结构化操纵语言24.以下数据库除 _外,均为严格意义上的 DBMS系统。(分数:2.00)A.OracleB.AccessC.Sybase的 PowerBuilderD.SQL Server25.有以下程序: # includestdio.h # includestring.h struct A int a;char b10; double c; struct A f(struct A t); main() struct
12、 A a=1001,“ZhangDa“,1098.0; a=f(a); printf(“%d,%s,%6.1f/n“,a.a,a.b,a.c); struct A f(struct A t) t.a=1002; strcpy(t.b,“ChangRong“);t.c=1202.0;return t; 程序运行后的输出结果是_。(分数:1.00)A.1001,ZhangDa,1098.0B.1002,ZhangDa,1202.0C.1001,ChangRong,1098.0D.1002,ChangRong,1202.026.在 C语言中,只有在使用时才占用内存单元的变量,其存储类型是_。(分数:
13、2.50)A.auto和 staticB.extern和 registerC.auto和 registerD.static和 register27.有以下程序: #includestdio.h void fun(int a,int n,int flag) int i=0,j,t; for(i=0;in-1;i+) for(j=i+1;jn;j+) if(flag) if(aiaj) t=ai;ai=aj;aj=t; else if(aiaj) t=ai;ai=aj;aj=t; main() int c10=7,9,10,8,3,5,1,6,2,4,i; fun(c,4,1); fun(c+4,
14、6,0); for(i=0;i10;i+)printf(“%d,“,ci); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.7,8,9,10,6,5,4,3,2,1,B.10,9,8,7,6,5,4,3,2,1,C.10,9,8,7,1,2,3,4,5,6,D.1,2,3,4,5,6,7,8,9,10,28.有以下程序: matin() char * s=“one“, “two“, “three“, *p; p=s1; printf(“% c, % s/n“, *(p+1),so); 执行后的输出结果是_。(分数:2.00)A.n, twoB.t, oneC.w,
15、 oneD.o, two29.若有以下说明和定义: #includestdio.h main() int(*a)(int*), *b(), w10, c; int fun(int*c) 则以下选项中能正确调用 fun函数是(分数:1.00)A.a=fun; a(w);B.a=fun; (*a)(C.b=fun; *b(w);D.fun(b);30.有以下程序; main() int y3,x3,z=1; printf(“%d %d/n“,(+x,y+),z+2); 执行后的输出结果是 _(分数:1.00)A.3 4B.4 2C.4 3D.3 331.下列数据模型中,具有坚实理论基础的是(分数:
16、2.00)A.层次模型B.网状模型C.关系模型D.以上 3个都是32.若有定义语句: char*s1=“OK“,*s2=“ok“; 以下选项中,能够输出“OK”的语句是_。(分数:1.00)A.if(strcmp(s1,s2)!=0)puts(s2);B.if(strcmp(s1,s2)!=0)puts(s1);C.if(strcmp(s1,s2)=1)puts(s1);D.if(strcmp(s1,s2)=0)puts(s1);33.以下叙述中正确的是_。(分数:1.00)A.结构体数组名不能作为实参传给函数B.结构体变量的地址不能作为实参传给函数C.结构体中可以含有指向本结构体的指针成员D
17、.即使是同类型的结构体变量,也不能进行整体赋值34.以下关于宏的叙述中正确的是_。(分数:1.00)A.宏替换没有数据类型限制B.宏定义必须位于源程序中所有语句之前C.宏名必须用大写字母表示D.宏调用比函数调用耗费时间35.有以下程序 #includestdio.h main() int a=1,b=0; printf(“%d,“,b=a+b); printf(“%d/n“,a=2*b); 程序运行后的输出结果是_。(分数:1.00)A.1,2B.1,0C.3,2D.0,036.若有定义语句:int x=10;,则表达式 x-=x+x的值为_。(分数:2.00)A.0B.-20C.-10D.1
18、037.有以下程序 #includestdio.h main() int x32=0, i; for(i=0; i3; i+)scanf(“%d“, xi); printf(“%3d%3d%3d/n“, x00, x01, x10); 若运行时输入:2 4 6回车,则输出结果为_。(分数:2.00)A.2 0 4B.2 0 0C.2 4 0D.2 4 638.表达式“5“-“1“的值是 _ 。(分数:1.00)A.整数 4B.字符 4C.表达式不合法D.字符 639.以下叙述中正确的是_。(分数:1.00)A.C程序书写格式严格,要求一行内只能写一个语句B.C程序书写格式自由,一个语句可以写在
19、多行上C.C程序中的注释只能出现在程序的开始位置和语句的后面D.用 C语言编写的程序只能放在一个程序文件中40.有以下程序: #includestdio.h main() int m=1,n=2,*p=m,*q=n,*r; r=p;p=q;q=r; printf(“%d,%d,%d,%d/n“,m,n,*p,*q); 程序运行后的输出结果是_。(分数:1.00)A.2,1,1,2B.1,2,1,2C.2,1,2,1D.1,2,2,1二级 C语言分类模拟题 544答案解析(总分:60.50,做题时间:90 分钟)一、选择题(总题数:40,分数:60.50)1.若变量已正确定义,有以下程序段 i=
20、0; do printf(“%d,“,i);while(i+); printf(“%d/n“,i); 其输出结果是_。(分数:2.00)A.0,1 B.0,0C.1,1D.程序进入无限循环解析:解析 循环语句中输出 0,i 为 0循环结束,执行循环条件后 i为 1,输出 1,所以选择为 A。2.有以下程序 #include stdio.h int fun(int (*s)4,int n,int k) int m,i; m=s0k; for(i=1;in:i+) if(sikm) m=sik; return m; main() int a44=1,2,3,4, 11,12,13,14, 21,2
21、2,23,24, 31,32,33,34; printf(“%d/n“,fun(a,4,0); 程序的运行结果是_。(分数:1.00)A.31 B.34C.4D.32解析:解析 本题考查的是二维数组的定义、赋初值和对二维数组元素的引用。在 fun()函数中,首先将 s0k的值赋给 m,然后通过 for循环,遍历 s1ksn-1k之中的数,将遇到的比 m大的数保存到 m中。很显然,这是搜索最大值的算法,搜索的是 s0ksn-1k之间的最大值。所以,主函数中 fun(a,4,0)的功能就是搜索 a00a30之间的最大值,这 4个值分别是 1、11、21、31,所以最终输出结果是 31,应该选择 A
22、。3.有如下程序段: int x=12; double y=3.141593; printf(“%d%8.6f“,x,y); 其输出结果是_。(分数:1.00)A.123.141593 B.12 3.141593C.12,3.141593D.123.1415930解析:解析 printf 函数中格式字符“%8.6”的含义是:变量 y的输出宽度为 8(包括小数点),小数点后面保留 6位小数,且右对齐。所以选择 A。4.在数据库管理技术的发展中,数据独立性最高的是_。(分数:2.50)A.人工管理B.文件系统C.数据库系统 D.数据模型解析:解析 在人工管理阶段,数据无法共享,冗余度大,不独立,完
23、全依赖程序;在文件系统阶段,数据共享性差;在数据库系统阶段,共享性好,独立性高。5.C语言中允许用外部说明来指定变量、函数和其他标识符的特征,这里所说的外部指的是_。(分数:2.00)A.冠以关键字 externB.位置在函数体外部C.作用范围是全程的D.位置在函数的外部 解析:6.假设有语句 sizeof(double),则它是_。(分数:2.50)A.一个整型表达式 B.一个双精度浮点型表达式C.一种函数调用D.一种函数定义解析:解析 sizeof(double)是 C语言内部规定的一个计算参数(double)在计算机的内存中所占用的字节数量的函数,它返回一个整数值。7.有以下程序: #i
24、ncludestdio.h main() int s12=1,2,3,4,4,3,2,1,1,1,2,3,c5=0,i; for(i=0;i12;i+) csi+; for(i=1;i5;i+) printf(“%d“,ci); printf(“/n“); 程序的运行结果是_。(分数:2.00)A.2 3 4 4B.4 3 3 2 C.1 2 3 4D.1 1 2 3解析:解析 在 for(i=0;i12;i+)csi+中,数组元素 si的值作为数组 c的下标,当退出循环时,数组 c的 4个元素的值分别为 4、3、3、2,因此 B选项正确。8.下列选项中不属于结构化程序设计方法的是 _ 。(分
25、数:2.00)A.自顶向下B.逐步求精C.模块化D.可复用 解析:解析 结构化程序设计的主要原则概括为自顶向下、逐步求精和限制使用 GOTO语句。9.在关系数据库模型中,通常可以把( )称为属性,其值称为属性值。(分数:1.00)A.记录B.基本表C.模式D.字段 解析:解析 数据库表中字段转化为属性,把记录的类型转化为关系模式。10.下列程序的运行结果是_。 #includestdio.h void sub(int*s,int*y) static int m=4; *y=sm; m-; void main() int a=1,2,3,4,5,k; int x; printf(“/n“); f
26、or(k=0;k=4;k+) sub(a, printf(“%d,“,x); (分数:2.00)A.5,4,3,2,1 B.1,2,3,4,5C.0,0,0,0,0D.4,4,4,4,4解析:11.有一堆零件(个数在 100到 200之间),如果分成 4个零件一组,则多 2个零件;若分成 7个零件一组,则多 3个零件;若分成 9个零件一组,则多 5个零件。下面的程序是求这堆零件的总数,请选择填空。 #includestdioh main() int i; for(i=100; i200;i+) if(i-2)%4=0) if(! (i-3)%7) if(_) printf(“%d“,i); (
27、分数:1.00)A.i%9=5B.i%9!=5C.(i-5)%9!=0D.(i-5)%9= =0 解析:解析 本题中需要填空的是第三个条件,即“若分成 9个零件一组,则多 5个零件”,当总零件数减去 5后,并与 9取余为 0即可满足本题的条件。12.下列叙述中错误的是_。(分数:2.00)A.用户定义的函数中可以没有 return语句B.用户定义的函数中可以有多个 return语句,以便可以调用一次返回多个函数值 C.用户定义的函数中若没有 return语句,则应当定义函数为 void类型D.函数的 return语句中可以没有表达式解析:解析 本题重点考查函数返回值的相关知识。函数的值只能通过
28、 return语句返回主调函数,在函数中允许有多个 return语句,但每次调用只能有一个 return语句被执行,因此只能返回一个函数值。不返回函数值的函数,可以明确定义为“空类型”,类型说明符为 void。因此选择 B选项。13.以下程序运行后的输出结果是 #includestdio.h int f(int n); main() int a=3, s; s=f(a); s=s+f(a); printf(“%d/n“, s); int f(int n) static int a=1; n+=a+; return n; (分数:2.00)A.7B.8C.9 D.10解析:解析 本题考查静态局部
29、变量。第一次调用 f函数时,将实参 a值 3传给形参变量 n,此时,静态局部变量 a的值为 1,经过 n+=a+运算后,n 为 4,a 为 2,return 语句将 4带回到 main函数赋给 s;第二次调用 f函数时,将实参 a值 3(注意,实参 a的值并未改变)传给变量 n,此时,静态局部变量 a的值为 2,经过 n+=a+运算后,n 为 5,a 为 3,return 语句将 5带回到 main函数,s=s+f(a)=4+5=9。14.设有定义: int x=0, *p; 紧接着的赋值语句正确的是_。(分数:2.00)A.*p=x;B.*p=NULL;C.p=x;D.p=NULL; 解析:
30、解析 p=NULL 合法,使指针指向空。所以答案选择 D。15.下列选项中非法的字符常量是 _ 。(分数:2.00)A.“/t“B.“/039“ C.“,“D.“/n“解析:解析 选项 A)中,“t“表示的是横向跳若干格;选项 B)中,“/039“错误,“/039“是八进制形式表示的字符,但其中出现了“9“,所以错误;选项 C)中,“,“是字符逗号:选项 D 中,“/n“表示的是回车换行。16.设有如下函数定义 #includestdio.h int fun(int k) if(k1)return 0; else if(k=1) return 1; else return fun(k-1)+1
31、; 若执行调用语句:n=fun(3);,则函数 fun总共被调用的次数是_。(分数:1.00)A.3 B.2C.4D.5解析:解析 首先 n=fun(3),3 被当作参数传递进去,进行了第一次调用,3 被当作参数传进去后,程序会执行语句 else return fun(k-1)+1;进行第二次调用,而参数是 3-1也就是 2。2 被当作参数传进去后,程序会执行语句 else return fun(k-1)+1;进行第三次调用,而参数是 2-1也就是 1。1 被当作参数传进去后,程序会执行语句 else if(k=1)return 1;不再递归调用,因此最终结果为 3次,选项 A正确。17.以下
32、程序不用第 3个变量,实现将两个数进行对调的操作,请填空。 #include stdio.h main() int a, b; scanf(“% d% d“, printf(“a=% db=% d“, a, b); a=a+b; b=a-b; a=_; printf(“a=% db=% d/n“, a, b); (分数:1.00)A.a+bB.a-b C.b*aD.a/b解析:18.有以下程序: #includestdio.h void fun(int a, int n) int i, t; for(i=0; in/2; i+) t=ai; ai=an-1-i; nn-1-i=t; main(
33、) int k10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, i; fun(k, 5); for(i=2;i8;i+)printf(“%d“, ki); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.321678 B.876543C.1098765D.345678解析:解析 本题中的函数 fun()的功能是将数组 k中前 5个元素倒序,所以返回后数组 k中的元素排序是 5,4,3,2,1,6,7,8,9,10。所以打印输出 k2到 k7元素的值,即 321678,所以选择 A选项。19.有如下程序: #include stdio.h main(
34、) int x=0x13; printf(“%d/n“,x+1); 程序运行后的输出结果是_。(分数:1.00)A.12B.14C.20 D.13解析:解析 整型常量有 3种表示方法,分别是十进制数表示法、八进制数表示法和十六进制数表示法。十进制整常量没有前缀,输出格式控制符为%d;八进制整常量以 0作为前缀,输出格式控制符为%o;十六进制整常量以 0X或 0x作为前缀,输出格式控制符为%x。十六进制数 0x13表示成十进制数为 19,以十进制格式输出 x+1=19+1=20,故 C选项正确。20.若变量已正确定义并赋值,符合 C语言语法的表达式是(分数:2.00)A.a=a+7;B.a=7+
35、b+c,a+ C.int(12.3%4)D.a=a+7=c+b解析:21.if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是_。(分数:1.00)A.必须是正数B.必须是整数值C.可以是任意合法的数值 D.必须是逻辑值解析:解析 “表达式”的值类型可以是合法的数值,但是都分为两类,0 是假,非 0是真。22.不合法的 main函数命令行参数表示形式是 _(分数:1.00)A.main(int a, char *c)B.main(int arc,char *arv)C.main(int argc,char *argv) D.main(int argv,char*arg
36、c)解析:23.SQL语言又称为_。(分数:2.00)A.结构化定义语言B.结构化控制语言C.结构化查询语言 D.结构化操纵语言解析:解析 结构化查询语言(Structured Query Language,简称 SQL)是集数据定义、数据操纵和数据控制功能于一体的数据库语言。24.以下数据库除 _外,均为严格意义上的 DBMS系统。(分数:2.00)A.OracleB.Access C.Sybase的 PowerBuilderD.SQL Server解析:解析 目前流行的 DBMS均为关系数据库系统,如 ORACLE、Sybase 的 Power Builder及 IBM的DB2、微软的 S
37、QL Server等,它们均为严格意义上的 DBMS系统。另外有一些小型的数据库,如微软的Visual FoxPro和 Access等,它们只具备数据库管理系统的一些简单功能,不是严格意义上的 DBMS系统。25.有以下程序: # includestdio.h # includestring.h struct A int a;char b10; double c; struct A f(struct A t); main() struct A a=1001,“ZhangDa“,1098.0; a=f(a); printf(“%d,%s,%6.1f/n“,a.a,a.b,a.c); struct
38、 A f(struct A t) t.a=1002; strcpy(t.b,“ChangRong“);t.c=1202.0;return t; 程序运行后的输出结果是_。(分数:1.00)A.1001,ZhangDa,1098.0B.1002,ZhangDa,1202.0C.1001,ChangRong,1098.0D.1002,ChangRong,1202.0 解析:解析 本题考查了结构体函数的调用。定义了结构体 A,A 含有三个参数分别是整型、字符型和双精度型。主函数中调用了 fun(),转到 struct A f(struct A t)函数中,内容分别变成了1002,ChangRong,
39、1202.2),函数调用后,仍为 struct A a= 1001,“ZhangDa“,1098.0;的格式。所以D选项为正确答案。26.在 C语言中,只有在使用时才占用内存单元的变量,其存储类型是_。(分数:2.50)A.auto和 staticB.extern和 registerC.auto和 register D.static和 register解析:解析 auto:函数中的局部变量,动态地分配存储空间,数据存储在动态存储区中,在调用该函数时,系统会给它们分配存储空间,在函数调用结束后自动释放这些存储空间。register:为了提高效率,C语言允许将局部变量的值放在 CPU中的寄存器中,
40、这种变量叫“寄存器变量”,只有局部自动变量和形参可以作为寄存器变量。extern:外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。static:静态局部变量,属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放。27.有以下程序: #includestdio.h void fun(int a,int n,int flag) int i=0,j,t; for(i=0;in-1;i+) for(j=i+1;jn;j+) if(flag) if(aiaj) t=a
41、i;ai=aj;aj=t; else if(aiaj) t=ai;ai=aj;aj=t; main() int c10=7,9,10,8,3,5,1,6,2,4,i; fun(c,4,1); fun(c+4,6,0); for(i=0;i10;i+)printf(“%d,“,ci); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.7,8,9,10,6,5,4,3,2,1,B.10,9,8,7,6,5,4,3,2,1,C.10,9,8,7,1,2,3,4,5,6, D.1,2,3,4,5,6,7,8,9,10,解析:解析 fun()函数的作用是定义了冒泡法排序,fl
42、ag 控制升序(0)或者降序(1),n 为参与排序的元素个数,a 为数组的起始地址。因此,fun(a,4,1)函数即将数组的前 4个数据降序排序,fun(a+4,6,0)函数是对数组的第 4项后的 6个元素进行升序排序。故结果为 10,9,8,7,1,2,3,4,5,6。答案为 C选项。28.有以下程序: matin() char * s=“one“, “two“, “three“, *p; p=s1; printf(“% c, % s/n“, *(p+1),so); 执行后的输出结果是_。(分数:2.00)A.n, twoB.t, oneC.w, one D.o, two解析:解析 程序定义
43、了一个指针数组 s和一个字符型指针变量 p。s 有 3个元素,其中 s0指向字符串“one,s1指向字符串“two“,s2指向字符串“three“,执行 p=s1后 p指向字符串“two“,所以*(p+1)=w。29.若有以下说明和定义: #includestdio.h main() int(*a)(int*), *b(), w10, c; int fun(int*c) 则以下选项中能正确调用 fun函数是(分数:1.00)A.a=fun; a(w);B.a=fun; (*a)( C.b=fun; *b(w);D.fun(b);解析:30.有以下程序; main() int y3,x3,z=1
44、; printf(“%d %d/n“,(+x,y+),z+2); 执行后的输出结果是 _(分数:1.00)A.3 4B.4 2C.4 3D.3 3 解析:31.下列数据模型中,具有坚实理论基础的是(分数:2.00)A.层次模型B.网状模型C.关系模型 D.以上 3个都是解析:解析 本题考查了数据模型。 解题要点 关系模型较之格式化模型(网状模型和层次模型)有以下几方面的优点,即数据结构比较简单、具有很高的数据独立性、可以直接处理多对多的联系,以及有坚实的理论基础。 考点链接 E-R 模型。32.若有定义语句: char*s1=“OK“,*s2=“ok“; 以下选项中,能够输出“OK”的语句是_
45、。(分数:1.00)A.if(strcmp(s1,s2)!=0)puts(s2);B.if(strcmp(s1,s2)!=0)puts(s1); C.if(strcmp(s1,s2)=1)puts(s1);D.if(strcmp(s1,s2)=0)puts(s1);解析:解析 strcmp(s1,s2)是字符串比较函数,比较规则是两个字符串自左向右逐个字符相比(按照ASCII码值大小),以第一个不相同的字符的大小作为比较结果。因为“0“。“,所以 strcmp(s1,s2)为负值,只有 B选项正确。33.以下叙述中正确的是_。(分数:1.00)A.结构体数组名不能作为实参传给函数B.结构体变量
46、的地址不能作为实参传给函数C.结构体中可以含有指向本结构体的指针成员 D.即使是同类型的结构体变量,也不能进行整体赋值解析:解析 本题考查结构体变量作为函数参数,结构体变量的地址可以作为参数传给函数,结构体数组名就是一个地址,可以传给函数,如果是同类型的结构体变量,可以整体赋值。34.以下关于宏的叙述中正确的是_。(分数:1.00)A.宏替换没有数据类型限制 B.宏定义必须位于源程序中所有语句之前C.宏名必须用大写字母表示D.宏调用比函数调用耗费时间解析:解析 宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头,所以 B选项错误;宏名一般用大写,但不是必须用大写,所以 C选项错误;宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值),所以 D选项错误。所以选择 A选项。35.有以下程序 #includestdio.h main() int a=1,b=0; printf(“%d,“,b=a+b); printf(“%d/n