【计算机类职业资格】二级C语言-115及答案解析.doc

上传人:eventdump275 文档编号:1324865 上传时间:2019-10-17 格式:DOC 页数:23 大小:105.50KB
下载 相关 举报
【计算机类职业资格】二级C语言-115及答案解析.doc_第1页
第1页 / 共23页
【计算机类职业资格】二级C语言-115及答案解析.doc_第2页
第2页 / 共23页
【计算机类职业资格】二级C语言-115及答案解析.doc_第3页
第3页 / 共23页
【计算机类职业资格】二级C语言-115及答案解析.doc_第4页
第4页 / 共23页
【计算机类职业资格】二级C语言-115及答案解析.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

1、二级 C 语言-115 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.下列数据结构中,属于非线性结构的是_。(分数:1.00)A.循环队列B.带链队列C.二叉树D.带链栈2.在面向对象方法中,实现信息隐蔽是依靠_。(分数:1.00)A.对象的继承B.对象的多态C.对象的封装D.对象的分类3.软件设计中划分模块的一个准则是_。(分数:1.00)A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合4.C 语言中,下列不合法的字符常量是_。(分数:1.00)A.“/xff“B.“/65“C.“ float printF; print

2、f(“请输入 2 个数: “); scanf(“%d%f“, printf(“%d%f/n“, case, printF); 该程序在编译时产生错误,其出错原因是_。(分数:1.00)A.定义语句出错,case 是关键字,不能用作用户自定义标识符B.定义语句出错,printF 不能用作用户自定义标识符C.定义语句无错,scanf 不能作为输入函数使用D.定义语句无错,printf 不能输出 case 的值14.表达式:(int)(double)9/2)-(9)%2 的值是_。(分数:1.00)A.0B.3C.4D.515.若有定义语句:“int x=10;”,则表达式 x-=x+x 的值为_。

3、(分数:1.00)A.-20B.-10C.0D.1016.下面是有关 C 语言字符数组的描述,其中错误的是_。(分数:1.00)A.不可以用赋值语句给字符数组名赋字符串B.可以用输入语句把字符串整体输入给字符数组C.字符数组中的内容不一定是字符串D.字符数组只能存放字符串17.下面结构体的定义语句中,错误的是_。(分数:1.00)A.struct ordint x; int y; int z; ; struct ord a;B.struct ordint x; int y; int z; struct ord a;C.struct ordint x; int y; int z; a;D.str

4、uctint x; int y; int z; a;18.有以下程序: #includestdio.h main() int c=0, k; for(k=1; k3; k+) switch(k) default: c+=k; case2: c+; break; case4: c+=2; break; printf(“%d/n“, c); 程序运行后的输出结果是_。(分数:1.00)A.3B.5C.7D.919.以下程序段中,与语句“k=ab?(bc?1:0):0;”功能相同的是_。(分数:1.00)A.if(ab)else k=0;B.if(ab)|(bc)k=1;else k=0;C.if(

5、a=b)k=0;else if(bD.if(ab)k=1;else if(bc)k=1;else k=0;20.有以下程序 #includestdio.h #includestring.h main() char a10=“abcd“; printf(“%d, %d/n“, strlen(a), sizeof(a); 程序运行后的输出结果是_。(分数:1.00)A.7,4B.4,10C.8,8D.10,1021.有以下程序 #includestdio.h main() int n=2, k=0; while(k+ printf(“%d%d/n“, k, n); 程序运行后的输出结果是_。(分数

6、:1.00)A.02B.13C.57D.1222.有以下定义语句,编译时会出现编译错误的是_。(分数:1.00)A.char a=“a“;B.char a=“/n“C.char a=“aa“;D.char a=“/x2d“;23.有以下程序 #includestdio.h main() char c1, c2; c1=“A“+“8“-“4“; c2=“A“+“8“-“5“; printf(“%c, %d/n“, c1, c2); 已知字母 A 的 ASCII 码为 65,程序运行后的输出结果是_。(分数:1.00)A.E,69B.D,69C.E,DD.输出无定值24.有以下程序 #includ

7、estdio.h void fun(int p) int d=2; p=d+; printf(“%d“, p); main() int a=1; fun(a); printf(“%d/n“, a); 程序运行后的输出结果是_。(分数:1.00)A.32B.12C.21D.2225.下列函数的功能是_。 fun(char*a, char*b) while(*b=*a)!=“/0“)a+; b+; (分数:1.00)A.将 a 所指字符串赋给 b 所指空间B.使指针 b 指向 a 所指字符串C.将 a 所指字符串和 b 所指字符串进行比较D.检查 a 和 b 所指字符串中是否有“/0“26.有以下

8、程序: #includestdio.h main() int m=1, n=2, *p= r=p; p=q; q=r; printf(“%d, %d, %d, %d/n“, m, n, *p, *q); 程序运行后的输出结果是_。(分数:1.00)A.1,2,1,2B.1,2,2,1C.2,1,2,1D.2,1,1,227.若有定义语句:“int a410, *p, *q4;”且 0i4,则错误的赋值是_。(分数:1.00)A.p=aB.qi=aiC.p=aiD.p= prinft(“%d, “, strlen(p); printf(“%s/n“, p); 程序运行后的输出结果是_。(分数:1

9、.00)A.9, One*WorldB.9, One*Dream!C.10, One*Dream!D.10, One*World29.有以下程序 #includestdio.h main() int a=2, 3, 5, 4, i; for(i=0; i4; i+) switch(i%2) case 0: switch(ai%2) case 0: ai+; break; case 1: ai-; break; case 1: ai=0; for(i=0; i4; i+)printf(“%d“, ai); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.3344B.2

10、050C.3040D.030430.有以下程序: #includedstdio.h main() char s=“012xy“; int i, n=0; for(i=0; si!=0; i+) if(si=“a“ printf(“%d/n“, n); 程序运行后的输出结果是_。(分数:1.00)A.0B.2C.3D.531.有以下程序: #includestdio.h main() int a=1, b=0; printf(“%d, “, b=a+b); printf(“%d/n“m a=2+b); 程序运行后的输出结果是_。(分数:1.00)A.0,0B.1,0C.3,2D.1,232.以下

11、函数 findmax 拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。 #define MIN-2147483647 int findmax(int x, int n) int i, max; for(i=0; in; i+) max=MIN; if(maxxi)max=xi; return max; 造成错误的原因是_。(分数:1.00)A.定义语句“int i, max;”中 max 未赋初值B.赋值语句“max=MIN;”中,不应给 max 赋 MIN 值C.语句“if(maxxi)max=xi;”中判断条件设置错误D.赋值语句“max=MIN;”放错了位置3

12、3.设有以下函数: void fun(int n, char*s) 则下面对函数指针的定义和赋值均正确的是_。(分数:1.00)A.void(*pf)(); pf=fun;B.void*pf(); pf=funC.void*pf(); *pf=fun;D.void(*pf)(int, char); pf=34.有以下程序: #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; 程序运行后

13、的输出结果是_。(分数:1.00)A.7B.8C.9D.1035.有以下程序: #includestdio.h #define f(x)x*x*X main() int a=3, s, t; s=f(a+1); t=f(a+1); printf(“%d, %d/n“, s, t); 程序运行后的输出结果是_。(分数:1.00)A.10,64B.10,10C.64,10D.64,6436.设有定义:“int a=1, b=2, c=3;”,以下语句中执行效果与其他三个不同的是_。(分数:1.00)A.if(ab)c=a, a=b, b=c;B.if(ab)c=a, a=b, b=c;C.if(a

14、b)c=a; a=b; b=c;D.if(ab)c=a; a=b; b=c;37.设有定义:“char*c;”,以下选项中能够使字符型指针 c 正确指向一个字符串的是_。(分数:1.00)A.char str=“string“; c=str;B.scanf(%s, c);C.c=getchar();D.*c=“string“;38.有以下程序: #includestdio.h #includestring.h struct A int a; char b10; double c; ; struct A f(struct A t); main() struct A a=1001, “ZhangD

15、a“, 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.039.若有以下程序段: int r=8; print(“%d/n“, r1); 输出结果是

16、_。(分数:1.00)A.16B.8C.4D.240.以下叙述中正确的是_。(分数:1.00)A.程序设计的任务就是编写程序代码并上机调试B.程序设计的八种就是确定所用数据结构C.程序设计的任务就是确定所用算法D.以上三种说法都不完整二、程序填空题(总题数:1,分数:18.00)41.str 是一个由数字和字母字符组成的字符串,由变量 num 传入字符串长度。请补充函数 proc(),该函数的功能是:把字符串 str 中的数字字符转换成数字并存放到整型数组 bb 中,函数返回数组 bb 的长度。 例如,str=“abc123de45fg67“,结果为:1234567。 注意:部分源程序给出如下

17、。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的横线上填入所编写的若干表达式或语句。 试题程序: #includestdio.h #define M 80 int bbM; int proc(char str, int bb, int num) int i, n=0; for(i=0; inum; i+) if( 1) bbn= 2; n+; return 3; void main() char strM; int num=0, n, i; printf(“Enter a string:n“); gets(str); while(strnum) num+; n=p

18、roc(str, bb, num); printf(“/nbb=“); for(i=0; in; i+) printf(“%d“, bbi); (分数:18.00)三、程序改错题(总题数:1,分数:24.00)42.下列给定程序中,函数 proc()的功能是:读入一个字符串(长度20),将该字符串中的所有字符按ASCII 码升序排序后输出。 例如,输入 opdye,则应输出 deopy。 请修改程序中的错误,使它能得到正确结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestring.h #includestdlib.h #inclu

19、deconio.h #includestdio.h /*found* int proc(char str) char c; unsigned i, j; for(i=0; istrlen(str)-1; i+) for(j=i+1; jstrlen(str); j+) if(stristrj) c=strj; /*found* strj=stri+; stri=c; void main() char str81; system(“CLS“); printf(“/nPlease enter a character string:“); gets(str); printf(“/n/nBefore

20、sorting:/n%s“, str); proc(str); printf(“/nAfter sorting decendingly:n %s“, str); (分数:24.00)_四、程序设计题(总题数:1,分数:18.00)43.请编写函数 proc(),它的功能是计算: s=(ln(1)+ln(2)+ln(3)+ln(m)0.5 在 C 语言中可调用 log(n)函数求 ln(n)。 例如,若 m 的值为 30,则 proc()函数值为 8.640500。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的花括号中填入所编写的若干语句

21、。 试题程序: #includestdlib.h #includeconio.h #includestdio.h #includemath.h double proc(int m) void main() system(“CLS“); printf(“%f/n“, proc(30); (分数:18.00)_二级 C 语言-115 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.下列数据结构中,属于非线性结构的是_。(分数:1.00)A.循环队列B.带链队列C.二叉树 D.带链栈解析:解析 线性结构是指数据元素只有一个直接前驱和直接后驱,线性表

22、是线性结构,循环队列、带链队列和栈是指对插入和删除有特殊要求的线性表,是线性结构。而二叉树是非线性结构。2.在面向对象方法中,实现信息隐蔽是依靠_。(分数:1.00)A.对象的继承B.对象的多态C.对象的封装 D.对象的分类解析:解析 对象的封装性是指从外部看只能看到对象的外部特征,即只需知道数据的取值范围和可以对该数据施加的操作,而不需要知道数据的具体结构以及实现操作的算法。3.软件设计中划分模块的一个准则是_。(分数:1.00)A.低内聚低耦合B.高内聚低耦合 C.低内聚高耦合D.高内聚高耦合解析:解析 耦合性和内聚性是模块独立性的两个定性标准,是互相关联的。在软件设计中,各模块间的内聚性

23、越强,则耦合性越弱。一般优秀的软件设计,应尽量做到高内聚,低耦合,有利于提高模块的独立性。4.C 语言中,下列不合法的字符常量是_。(分数:1.00)A.“/xff“B.“/65“C.“ float printF; printf(“请输入 2 个数: “); scanf(“%d%f“, printf(“%d%f/n“, case, printF); 该程序在编译时产生错误,其出错原因是_。(分数:1.00)A.定义语句出错,case 是关键字,不能用作用户自定义标识符 B.定义语句出错,printF 不能用作用户自定义标识符C.定义语句无错,scanf 不能作为输入函数使用D.定义语句无错,p

24、rintf 不能输出 case 的值解析:解析 本题中定义了整形变量 case,但 case 是关键字,关键字不能用作标识符。单精度 printF不是关键字,因为标识符区分大小写。所以选项 A 不正确。14.表达式:(int)(double)9/2)-(9)%2 的值是_。(分数:1.00)A.0B.3 C.4D.5解析:解析 本题考查了强制类型转换。9/2 为 double 型,所以结果为 4.5,又强制转换为整型,所以结果为 4。9%2 为取余运算,结果为 1。最终结果 4-1=3。15.若有定义语句:“int x=10;”,则表达式 x-=x+x 的值为_。(分数:1.00)A.-20B

25、.-10 C.0D.10解析:解析 表达式 x=-x+x 可以写成 x=x-(x+x),所以 x 的值为-10。16.下面是有关 C 语言字符数组的描述,其中错误的是_。(分数:1.00)A.不可以用赋值语句给字符数组名赋字符串B.可以用输入语句把字符串整体输入给字符数组C.字符数组中的内容不一定是字符串D.字符数组只能存放字符串 解析:解析 用来存放字符量的数组称为字符数组。字符数组也可以是二维或多维数组,对一个字符数组,如果不做初始化赋值,则必须说明数组长度,还可用 printf 函数和 scanf 函数一次性输出/输入一个字符数组中的字符串,而不必使用循环语句逐个地输入/输出每个字符。通

26、常用一个字符数组来存放一个字符串。所以 D 选项不正确。17.下面结构体的定义语句中,错误的是_。(分数:1.00)A.struct ordint x; int y; int z; ; struct ord a;B.struct ordint x; int y; int z; struct ord a; C.struct ordint x; int y; int z; a;D.structint x; int y; int z; a;解析:解析 结构体定义的类型说明的一般形式为:struct 结构体标识名类型名 1 结构成员名表 1;类型名 2 结构成员名表 2;。注意:结构体说明同样要以分号

27、结尾;紧跟在结构体类型说明之后进行定义;在说明一个无名结构体类型的同时,直接进行定义;先说明结构体类型,再单独进行变量定义等。所以 B 选项错误。18.有以下程序: #includestdio.h main() int c=0, k; for(k=1; k3; k+) switch(k) default: c+=k; case2: c+; break; case4: c+=2; break; printf(“%d/n“, c); 程序运行后的输出结果是_。(分数:1.00)A.3 B.5C.7D.9解析:解析 本题考查了 switch 开关语句,当表达式与某一个 case 后面的常量表达式相等

28、时,就执行case 后面的语句,若没有匹配,则执行 default 后面的语句,各个 case 和 default 的出现次序不影响结果,执行完一个 case 语句,流程就转移到下一个 case 并继续执行。因此在 case 的分支后,加 break 语句来跳出 switch 语句。当 k=1 时,switch 语句中没有相对应的 case,所以执行 default 语句,此时 c为 1,没有遇到 break 语句,则执行 case2,c+,此时 c 的值在下次使用前加 1 等于 2,break 跳出。继续 for 循环,当 k=2 时,执行 case2,c 再次自加值为 3,遇到 break

29、 跳出。当 k=3 时,不符合循环,则输出 c 的结果,答案为 3。19.以下程序段中,与语句“k=ab?(bc?1:0):0;”功能相同的是_。(分数:1.00)A.if(ab)else k=0; B.if(ab)|(bc)k=1;else k=0;C.if(a=b)k=0;else if(bD.if(ab)k=1;else if(bc)k=1;else k=0;解析:解析 本题考查了双重三目运算符的用法。例如:表达式 ab?c:d 可以看成,当 ab 时取 c 的值,否则取 d 的值。在本题中 k=ab?(bc?1:0):0 可以看做:当 bc 时为真,则 k=ab?1:0。当bc 时则

30、k=ab?0:0。也就是说,当 ab 并且 bc 时,k=1,否则 k=0。所以 A 选项符合题意。20.有以下程序 #includestdio.h #includestring.h main() char a10=“abcd“; printf(“%d, %d/n“, strlen(a), sizeof(a); 程序运行后的输出结果是_。(分数:1.00)A.7,4B.4,10 C.8,8D.10,10解析:解析 strlen 是求字符串的长度,结果为 4,sizeof 是求数组的长度,而数据在定义时已给出长度为 10。21.有以下程序 #includestdio.h main() int n

31、=2, k=0; while(k+ printf(“%d%d/n“, k, n); 程序运行后的输出结果是_。(分数:1.00)A.02B.13C.57D.12 解析:解析 本题判断 while 语句中的逻辑关系的真假。“B.char a=“/n“C.char a=“aa“; D.char a=“/x2d“;解析:解析 char 类型用于存储单个字符的简单变量类型,它可以被指定为一个字符常量或一个整数。23.有以下程序 #includestdio.h main() char c1, c2; c1=“A“+“8“-“4“; c2=“A“+“8“-“5“; printf(“%c, %d/n“, c

32、1, c2); 已知字母 A 的 ASCII 码为 65,程序运行后的输出结果是_。(分数:1.00)A.E,69 B.D,69C.E,DD.输出无定值解析:解析 本题输出两个值,%c 为输出一个字母,%d 为输出一个数字。“A”的 ASCII 码为 65,再加4 之后为 69,也就是字母 E,所以本题 A 选项正确。24.有以下程序 #includestdio.h void fun(int p) int d=2; p=d+; printf(“%d“, p); main() int a=1; fun(a); printf(“%d/n“, a); 程序运行后的输出结果是_。(分数:1.00)A.

33、32B.12C.21 D.22解析:解析 本题考查函数调用。主函数中调用 fun()函数,p=d+,d=2,选取 d 的值,再加 1,所以输出 p 的值为 2,再回到主函数中,直接输出 a 的值为 1。25.下列函数的功能是_。 fun(char*a, char*b) while(*b=*a)!=“/0“)a+; b+; (分数:1.00)A.将 a 所指字符串赋给 b 所指空间 B.使指针 b 指向 a 所指字符串C.将 a 所指字符串和 b 所指字符串进行比较D.检查 a 和 b 所指字符串中是否有“/0“解析:解析 本题函数的功能是将 a 所指向的字符串赋给 b 所指向的空间。26.有以

34、下程序: #includestdio.h main() int m=1, n=2, *p= r=p; p=q; q=r; printf(“%d, %d, %d, %d/n“, m, n, *p, *q); 程序运行后的输出结果是_。(分数:1.00)A.1,2,1,2B.1,2,2,1 C.2,1,2,1D.2,1,1,2解析:解析 本题进行了交换,输出的 4 个值,前两个为 m 和 n 的值,*p 取 m 的值,*q 取 n 的值,分别为 1 和 2;而“r=p; p=q; q=r;”语句是进行 p 和 q 的交换。所以本题输出结果为 1,2,2,1。27.若有定义语句:“int a410,

35、 *p, *q4;”且 0i4,则错误的赋值是_。(分数:1.00)A.p=a B.qi=aiC.p=aiD.p= prinft(“%d, “, strlen(p); printf(“%s/n“, p); 程序运行后的输出结果是_。(分数:1.00)A.9, One*WorldB.9, One*Dream!C.10, One*Dream! D.10, One*World解析:解析 本题输出两个结果:第一个是求字符串的长度;第二个是输出的字符串,数组的下标是从0 开始的,所以当 str 取 1 的时候,应为“One*Dream!”。29.有以下程序 #includestdio.h main()

36、int a=2, 3, 5, 4, i; for(i=0; i4; i+) switch(i%2) case 0: switch(ai%2) case 0: ai+; break; case 1: ai-; break; case 1: ai=0; for(i=0; i4; i+)printf(“%d“, ai); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.3344B.2050C.3040 D.0304解析:解析 本题考查嵌套分支语句。共输出 4 个值:当 i=0 时,i%2 取余后还是 0,则执行 case 0 语句,继续 switch 语句,此时 i 为

37、0,数据的下标是从 0 开始的,a0的值为 2,则 a0%2=0,继续执行case 0,数组 a0+,值变为 3,执行 break 跳出第二重开关语句。出来后继续执行 break,跳出第一重开关语句,继续循环;输出第一个值为 3。i+后值为 1,i%2=1%2 取余后值为 1,执行 case 1,将 0 赋给a1,退出开关语句,输出第二个值为 0。i+后值为 2,i%2=2%2 取余后值为 0,a2的值为 5,则 a2%2=1,继续执行 case 1,数组 a2-,值变为 4,执行 break 跳出第二重开关语句。出来后继续执行break,跳出第一重开关语句,继续循环;输出第三个值为 4。i+

38、后值为 3,i%2=3%2 取余后值为 1,执行case 1,将 0 赋给 a3,退出开关语句,输出第四个值为 0。结果为 3 0 4 0。30.有以下程序: #includedstdio.h main() char s=“012xy“; int i, n=0; for(i=0; si!=0; i+) if(si=“a“ printf(“%d/n“, n); 程序运行后的输出结果是_。(分数:1.00)A.0B.2 C.3D.5解析:解析 本题考查 for 循环。当 i=0 时,开始 for 循环,因为数组的下标是从 0 开始的,所以 s0=0,不符合 for 循环,不执行下边的语句,当 i=

39、1 时,继续执行 if 语句,if 语句的功能是如果在小写字母 az,则记数 n 加 1。所以本题结果为 2。31.有以下程序: #includestdio.h main() int a=1, b=0; printf(“%d, “, b=a+b); printf(“%d/n“m a=2+b); 程序运行后的输出结果是_。(分数:1.00)A.0,0B.1,0C.3,2D.1,2 解析:解析 本题输出两个值:第一个 printf 语句输出 b 的值,b=a+b=1;第二个 printf 语句输出了 a的值,a=2+b,此时 b 的值为 1,所以 a 的值为 2。32.以下函数 findmax 拟

40、实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。 #define MIN-2147483647 int findmax(int x, int n) int i, max; for(i=0; in; i+) max=MIN; if(maxxi)max=xi; return max; 造成错误的原因是_。(分数:1.00)A.定义语句“int i, max;”中 max 未赋初值B.赋值语句“max=MIN;”中,不应给 max 赋 MIN 值C.语句“if(maxxi)max=xi;”中判断条件设置错误D.赋值语句“max=MIN;”放错了位置 解析:解析 “max=M

41、IN;”语句应放在 for 循环之前,否则每次循环时都重新赋值,值没有变化。33.设有以下函数: void fun(int n, char*s) 则下面对函数指针的定义和赋值均正确的是_。(分数:1.00)A.void(*pf)(); pf=fun; B.void*pf(); pf=funC.void*pf(); *pf=fun;D.void(*pf)(int, char); pf=解析:解析 函数指针的定义格式为函数类型(*指针变量名)(形参列表);函数名和数组名一样代表了函数代码的首地址,因此在赋值时,直接将函数指针指向函数名就行了。所以选项 A 正确。34.有以下程序: #include

42、stdio.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; 程序运行后的输出结果是_。(分数:1.00)A.7B.8C.9 D.10解析:解析 本题考查函数的调用。当执行 s=f(a)时,进入 fun 函数,n=n+(a+),n 的值为 3,a 的值为 1,a+的意思是先用 a 的值,再将 a 加 1 为 2,所以 n 的结果为 4,也就是主函数中 f(a)的结果为 4;返回主函数,执行 s=s+f(a),s

43、 为 4,再次调用函数,此时 n 仍为 3,a 的值刚才已经自加 2,所以计算后n 的值为 5,a 自加 1 为 3。返回主函数,f(a)的结果为 5,所以 s=4+5=9。35.有以下程序: #includestdio.h #define f(x)x*x*X main() int a=3, s, t; s=f(a+1); t=f(a+1); printf(“%d, %d/n“, s, t); 程序运行后的输出结果是_。(分数:1.00)A.10,64 B.10,10C.64,10D.64,64解析:解析 本题考查带参数的宏定义。第一次函数调用求 s 的值,x=a+1,所以 x*x*x 应写成

44、a+1*a+1*a+1,没有括号优先级,结果为 10,第二次函数调用 x*x*x 可写成(a+1)*(a+1)*(a+1),所以结果为 64。36.设有定义:“int a=1, b=2, c=3;”,以下语句中执行效果与其他三个不同的是_。(分数:1.00)A.if(ab)c=a, a=b, b=c;B.if(ab)c=a, a=b, b=c;C.if(ab)c=a; a=b; b=c; D.if(ab)c=a; a=b; b=c;解析:解析 本题判断结果。选项 A 中,如果(ab),则执行“c=a,a=b,b=c”这个语句(注意分号的位置,如果条件成立,将会执行第一个分号前的语句),显然 i

45、f 不成立,则 a,b,c 原样输出。选项 B 和选项 D 是同理,而选项 C 因为条件不成立,则不执行第一条语句“c=a”,接着执行“a=b”,将 b 的值赋给 a,a 的值为 2;“b=c”,b 的值为 3,c 的值原样输出,结果为 2,3,3。37.设有定义:“char*c;”,以下选项中能够使字符型指针 c 正确指向一个字符串的是_。(分数:1.00)A.char str=“string“; c=str; B.scanf(%s, c);C.c=getchar();D.*c=“string“;解析:解析 选项 B 是从键盘上输入字符串,选项 C 是接收字符,选项 D 不正确。38.有以下

46、程序: #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 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,Zhan

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1