1、二级 C 语言-131 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:100.00)1.三种基本结构中,能简化大量程序代码的是_。(分数:2.50)A.顺序结构B.分支结构C.选择结构D.重复结构2.VC 6.0 中 int 类型变量所占字节数是_。(分数:2.50)A.1B.2C.3D.43.概要设计中要完成的任务是_。(分数:2.50)A.系统结构和数据结构的设计B.系统结构和过程的设计C.过程和接口的设计D.数据结构和过程的设计4.在结构化分析方法中,数据字典的作用是_。(分数:2.50)A.存放所有需要处理的原始数据B.存放所有处理的结果C.存放
2、所有程序文件D.描述系统中所用到的全部数据和文件的有关信息5.一个关系中属性个数为 1 时,称此关系为_。(分数:2.50)A.对应关系B.单一关系C.一元关系D.二元关系6.若有以下定义: char a; int b; float c; double d; 则表达式 a*b+b-c 值的类型为_。(分数:2.50)A.floatB.intC.charD.double7.以下选项中不合法的用户标识符是_。(分数:2.50)A._123B.printfC.A$D.Dim8.设 x 为 int 型变量,则执行以下语句后,x 的值为_。 x=10; x=x-=x-x;(分数:2.50)A.10B.2
3、0C.40D.309.下列叙述中正确的是_。(分数:2.50)A.在面向对象的程序设计中,各个对象之间具有密切的关系B.在面向对象的程序设计中,各个对象都是公用的C.在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小D.上述 3 种说法都不对10.以下程序的输出结果是_。 main() int i; for(i=0; i3; i+) switch(i)case 0: printf(“%d“, i); case 2: printf(“%d“, i); default: printf(“%d“, i); (分数:2.50)A.000102B.000020C.000122D.00011111
4、.下列程序执行后的输出结果是_。 main() int x=“f“; printf(“%c/n“, “A“+(x-“a“+1); (分数:2.50)A.GB.HC.ID.J12.有以下程序: #includestdio.h main() int aa33=2, 4, 6, i, *p= for(i=0; i2; i+) if(i=0)aaii+1=*p+1; else+p; printf(“%d“, *p); printf(“/n“); 程序的输出结果是_。(分数:2.50)A.23B.26C.33D.3613.在 C 语言中,函数返回值的类型最终取决于_。(分数:2.50)A.函数定义时在函
5、数首部所说明的函数类型B.return 语句中表达式值的类型C.调用函数时主调函数所传递的实参类型D.函数定义时形参的类型14.以下程序的输出结果是_。 main() int i=0, s=0; for(;) if(i=3 i=5) continue; if(i=6) break; i+; s+=i; ; printf(“%d/n“, s); (分数:2.50)A.10B.13C.21D.程序陷入死循环15.假设 a 和 b 为 int 型变量,则执行以下语句后 b 的值为_。 a=1; b=10; do b-=a; a+; while(b-0);(分数:2.50)A.9B.-2C.-1D.8
6、16.下列程序执行后的输出结果是_。 main() int a33, *p, i; p= for(i=p; i9; i+)pi=i+1; printf(“%d/n“, a12); (分数:2.50)A.3B.6C.9D.随机数17.有以下程序: #includestdio.h main() int w=4, x=3, y=2, z=1; printf(“%d/n“, (wx? w:zy? z“x); 程序的输出结果是_。(分数:2.50)A.1B.2C.3D.418.s1 和 s2 已正确定义并分别指向两个字符串。若要求:当 s1 所指串大于 s2 所指串时,执行语句 S;则以下选项中正确的是
7、_。(分数:2.50)A.if(s1s2)S;B.if(strcmp(s1, s2)S;C.if(strcmp(s2, s1)0)S;D.if(strcmp(s1, s2)0)S;19.有以下函数: char fun(char *p) return p; 该函数的返回值是_。(分数:2.50)A.无确切的值B.形参 p 中存放的地址值C.一个临时存储单元的地址D.形参 p 自身的地址值20.以下程序的输出结果是_。 main() char str10=“china“, “beijing“, *p=str; printf(“%s/n“, p+10); (分数:2.50)A.ChinaB.Beij
8、ingC.ngD.ing21.合法的 main()函数命令参数形式是_。(分数:2.50)A.main(int a, char*c)B.main(int arc, char*arv)C.main(int argc, char*argv)D.main(int argv, char*argc)22.有以下结构体说明和变量的定义,且指针 p 指向变量 a,指针 q 指向变量 b,则不能把结点 b 连接到结点 a 之后的语句是_。 struct node char data; struct node *next; a, b, *p=(分数:2.50)A.a.next=q;B.p.next=C.p-ne
9、xt=D.(*p).next=q;23.有如下程序: #includestdio.h main() FILE*fp1; fp1=fopen(“f1.txt“, “w“); fprintf(fp1, “abc“); fclose(fp1); 若文本文件 f1.txt 中原有内容为:good,则运行以上程序后文件 f1.txt 中的内容为_。(分数:2.50)A.goodabcB.abcdC.abcD.abcgood24.与“y=(x0?1:x0?-1:0)”;的功能相同的 if 语句是_。(分数:2.50)A.if(x0)y=1;else if(x0)y=1;else y=0;B.if(x)if
10、(x0)y=1;else if(x0)y=-1;else y=0;C.y=-1if(x)if(x0)y=1;else if(x=0)y=0;else y=-1;D.y=0;if(x=0)if(x=0)y=1;else y=-1;25.下列运算符中优先级最高的算符是_。(分数:2.50)A.!B.%C.-=D. int a, b, c; a=(-x=y+)?x:+y; b=+x; c=y;(分数:2.50)A.a=5,b=5,c=5B.a=4,b=5,c=5C.a=5,b=6,c=5D.a=1,b=5,c=627.下列变量声明合法的是_。(分数:2.50)A.short a=1.4e-1;B.d
11、ouble b=1+3e2.8;C.long do=0xfdaL;D.float 2_aaa=1e-3;28.下列程序的输出结果是_。 #includestdio.h main() int i; for(i=1; i=10, i+) if(i*i=20) printf(“%d/n“, i*i); (分数:2.50)A.49B.36C.25D.6429.运行下列程序,若从键盘输入字母“a”,则输出结果是_。 char c; c=getchar(); if(c=“a“ else if(c=“g“ else printf(“input error!/n“); putchar(c);(分数:2.50)
12、A.fB.tC.eD.d30.有以下程序: #includestdio.h main() int x, i; for(i=1; i=100; i+) x=i; if(+x$2=0) if(+x%3=0) if(+x%7=0) printf(“%d“, x); printf(“/n“); 程序的输出结果是_。(分数:2.50)A.2870B.4284C.2668D.398131.若有定义“float a=25, b, *p=”,则下列对赋值语句“*p=a;”和“p=”的正确解释为_。(分数:2.50)A.两个语句都是将变量 a 的值赋予变量 pB.*p=a 是使 p 指向变量 a,而 p= ch
13、ar n=“1“, “2“, “3“, “4, “5“, “6“, “7“; 则下列叙述正确的是_。(分数:2.50)A.数组 m 与数组 n 完全相同B.数组 m 与数组 n 长度相同C.数组 m 比数组 n 长 1D.数组 m 与数组 n 中都存放字符串33.下列程序输出结果是_。 #includestdio.h main() char a=“a“, “b“, “c“, “d“, “e“, “f“, “/0“; int i, j; i=sizeof(a); j=strlen(a); printf(“%d, %d“, i, j); (分数:2.50)A.7,7B.7,6C.6,6D.6,73
14、4.软件生命周期是指_。(分数:2.50)A.软件产品从提出、实现、使用维护到停止使用退役的过程B.软件从需求分析、设计、实现到测试完成的过程C.软件的开发过程D.软件的运行维护过程35.若某二叉树的前序遍历访问顺序是 abdgcefh,中序遍历访问顺序是 dgbaechf,则其后序遍历的结点访问顺序是_。(分数:2.50)A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca36.下列程序的运行结果是_。 #includestdio.h #define ADD(x) x+x main() int m=1, n=2, k=3; int s=ADD(m+n)*k; pr
15、intf(“s=%d“, s); (分数:2.50)A.sum=18B.sum=10C.sum=9D.sum=2537.有以下程序: #includestdio.h main() int i; for(i=1; i=5; i+) if(i%2)printf(“*“); else continue; printf(“#“); printf(“$/n“); 程序的输出结果是_。(分数:2.50)A.*#*#*#$B.#*#*#*$C.*#*#$D.#*#*$38.设 x=011050,则 x=x if(x=0|x=1) retum(3); p=x-fun(x-2); return p; main(
16、) printf(“%d/n“, fun(7); 执行后的结果是_。(分数:2.50)A.7B.3C.2D.040.已知函数 fread 的调用形式为“fread(buffer, size, count, fp);”,其中 buffer 代表的是_。(分数:2.50)A.存放读入数据项的存储区B.一个指向所读文件的文件指针C.一个指针,是指向读入数据存放在内存中的起始地址D.一个整型变量,代表要读入的数据项总数二级 C 语言-131 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:100.00)1.三种基本结构中,能简化大量程序代码的是_。(分数:2.50)
17、A.顺序结构B.分支结构C.选择结构D.重复结构 解析:解析 重复结构也称为循环结构,它根据给定的条件,判断是否需要重复执行某一相同或类似的程序段,这种可以简化大量的程序行。2.VC 6.0 中 int 类型变量所占字节数是_。(分数:2.50)A.1B.2C.3D.4 解析:解析 VC6.0 中基本整型 int 占 4 个字节。3.概要设计中要完成的任务是_。(分数:2.50)A.系统结构和数据结构的设计 B.系统结构和过程的设计C.过程和接口的设计D.数据结构和过程的设计解析:解析 在 C 语言中软件概要设计的基本任务是设计软件系统结构、数据结构及数据库设计、编写概要设计文档和概要设计文档
18、评审。4.在结构化分析方法中,数据字典的作用是_。(分数:2.50)A.存放所有需要处理的原始数据B.存放所有处理的结果C.存放所有程序文件D.描述系统中所用到的全部数据和文件的有关信息 解析:解析 在 C 语言中,结构化分析方法中的数据字典的作用是描述系统中所用到的全部数据和文件的有关信息。5.一个关系中属性个数为 1 时,称此关系为_。(分数:2.50)A.对应关系B.单一关系C.一元关系 D.二元关系解析:解析 在关系模型数据库中,我们把构成基本结构的一维表称为关系。关系的列称为属性,具有N 个属性的关系称为 N 元关系。6.若有以下定义: char a; int b; float c;
19、 double d; 则表达式 a*b+b-c 值的类型为_。(分数:2.50)A.floatB.intC.charD.double 解析:解析 在表达式 a*b+b-c 中,double 的类型最高,C 语言中,由低类型自动向高类型转换,所以最后的结果一定是 double 型。7.以下选项中不合法的用户标识符是_。(分数:2.50)A._123B.printfC.A$ D.Dim解析:解析 C 语言规定标识符只能由字母、数字、下划线组成,并且只能由字母或下划线开头,不能以数字开头。C 项中包含$特殊符号,所以 C 项不合法。8.设 x 为 int 型变量,则执行以下语句后,x 的值为_。 x
20、=10; x=x-=x-x;(分数:2.50)A.10 B.20C.40D.30解析:解析 执行 x=x-=x-x 语句可写成 x=x-(x-x),可看出结果为 10,故 A 选项正确。9.下列叙述中正确的是_。(分数:2.50)A.在面向对象的程序设计中,各个对象之间具有密切的关系B.在面向对象的程序设计中,各个对象都是公用的C.在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小 D.上述 3 种说法都不对解析:解析 本题考查对面向对象的理解。面向对象的程序设计是对象模拟问题领域中的实体,各对象之间相对独立,相互依赖性小,通过消息来实现对象之间的相互联系。10.以下程序的输出结果是_
21、。 main() int i; for(i=0; i3; i+) switch(i)case 0: printf(“%d“, i); case 2: printf(“%d“, i); default: printf(“%d“, i); (分数:2.50)A.000102B.000020C.000122 D.000111解析:解析 当 i=0 时,执行 switch 语句,对应的执行 case 0,输出 0,因为没有 break,接着执行case 2 的语句,又输出一个 0,接着执行 default 语句,再输出一个 0,返回 i+;i=1 时,没有 case 语句,执行 default 语句,
22、输出一个 1,接着又返回 i+;当 i=2 时,执行 case 2 和 default 语句分别输出一个 2,此时又返回 i+,i 变为 3,for 循环不成立,终止,最后输出 000122。11.下列程序执行后的输出结果是_。 main() int x=“f“; printf(“%c/n“, “A“+(x-“a“+1); (分数:2.50)A.GB.HC.ID.J 解析:解析 因为 x=“f“,所以写成“A“+(x-“a“+1)=“A“+(“f“-“a“+1)=“A“+6=“J“,故选择 D 选项。12.有以下程序: #includestdio.h main() int aa33=2, 4,
23、 6, i, *p= for(i=0; i2; i+) if(i=0)aaii+1=*p+1; else+p; printf(“%d“, *p); printf(“/n“); 程序的输出结果是_。(分数:2.50)A.23 B.26C.33D.36解析:解析 for 循环 i=0; if(i=0) aaii+1=*p+1; |aa01=*p+1=aa00+1=2+=3; printf(“%d“, *p); |*p=aa00=2; i=1 else +p; |地址加 1, p= printf(“%d“, *p); |输出了13.在 C 语言中,函数返回值的类型最终取决于_。(分数:2.50)A.
24、函数定义时在函数首部所说明的函数类型 B.return 语句中表达式值的类型C.调用函数时主调函数所传递的实参类型D.函数定义时形参的类型解析:解析 在 C 语言中,函数返回的类型最终取决于函数定义时在函数首部所说明的函数类型,与调用函数时主调函数所传递的实参类型和函数定义时形参的类型无关,而 return 语句表达式的值将强制转换为函数定义时在函数首部所说明的函数类型返回。14.以下程序的输出结果是_。 main() int i=0, s=0; for(;) if(i=3 i=5) continue; if(i=6) break; i+; s+=i; ; printf(“%d/n“, s);
25、 (分数:2.50)A.10B.13C.21D.程序陷入死循环 解析:解析 当 i=0 时,两个 if 都不满足,所以都不执行,直接执行 i+语句,此时 i 为 1,s 为 1,返回 for 循环中;当 i=1 时,同样不执行两个 if 语句,执行 i+后,i=2,s=3,返回 for 循环中;i=2 时也不执行 if 语句,执行 i+后,i=3,s=6,接着又执行 for 循环,此时符合第一个 if 语句,执行到continue 时不再执行 i+了,continue 是跳出本次循环,接着下次循环。永远这样执行下去,i 的值永远为 3,故选择 D 选项。15.假设 a 和 b 为 int 型变
26、量,则执行以下语句后 b 的值为_。 a=1; b=10; do b-=a; a+; while(b-0);(分数:2.50)A.9B.-2C.-1D.8 解析:解析 当 b 为 10 时,执行 b-=a,此时 b 为 9,接着 b-表达式值为 9,b 的值为 8,大于0,while 不成立,退出循环,故选择 D 选项。16.下列程序执行后的输出结果是_。 main() int a33, *p, i; p= for(i=p; i9; i+)pi=i+1; printf(“%d/n“, a12); (分数:2.50)A.3B.6C.9D.随机数 解析:解析 程序执行到 for 循环,当 i=p
27、时,i 中放的是 p 的地址,类型不符合,因此输出随机数,故选择 D 选项。17.有以下程序: #includestdio.h main() int w=4, x=3, y=2, z=1; printf(“%d/n“, (wx? w:zy? z“x); 程序的输出结果是_。(分数:2.50)A.1 B.2C.3D.4解析:解析 条件运算符具有右结合性。当一个表达式中出现多个条件运算符时,应该将位于最右边的问号与离它最近的冒号配对,并按这一原则正确区分各条件运算符的运算对象。wx?w:zy?z:x=wx?w:(zy?z:x)=43?4:(12?1:2),所以正确答案为 1。18.s1 和 s2
28、已正确定义并分别指向两个字符串。若要求:当 s1 所指串大于 s2 所指串时,执行语句 S;则以下选项中正确的是_。(分数:2.50)A.if(s1s2)S;B.if(strcmp(s1, s2)S;C.if(strcmp(s2, s1)0)S;D.if(strcmp(s1, s2)0)S; 解析:解析 在 C 语言中,不能直接比较两个字符串的大小,必须用特定的函数来完成,选项 A 错误;选项 B 不管大于还是小于都执行 S,不符合题意;选项 C 正好相反,当 s2 大于 s1 时,执行语句 S,可知选项 D 正确。19.有以下函数: char fun(char *p) return p; 该
29、函数的返回值是_。(分数:2.50)A.无确切的值 B.形参 p 中存放的地址值C.一个临时存储单元的地址D.形参 p 自身的地址值解析:解析 在程序中因为 fun 函数的返回值为 char,而 p 是指向 char 的指针变量,因此类型不匹配,故选择 A 选项。20.以下程序的输出结果是_。 main() char str10=“china“, “beijing“, *p=str; printf(“%s/n“, p+10); (分数:2.50)A.ChinaB.Beijing C.ngD.ing解析:解析 本题考查指针,由*p=str 可知,指针 p 指向字符串数组的首地址。二维数组 str
30、 为每个字符串分配的存储空间是 10 个字节,因此 p+10 指向 str10,输出的字符串就是数组中的第 2 个字符串。21.合法的 main()函数命令参数形式是_。(分数:2.50)A.main(int a, char*c)B.main(int arc, char*arv)C.main(int argc, char*argv) D.main(int argv, char*argc)解析:解析 在 C 语言中,main()函数也可以有参数,例如,main(int argc,char*argv),argc 是指字符串的指针数组,而其他几项表达不正确。22.有以下结构体说明和变量的定义,且指针
31、 p 指向变量 a,指针 q 指向变量 b,则不能把结点 b 连接到结点 a 之后的语句是_。 struct node char data; struct node *next; a, b, *p=(分数:2.50)A.a.next=q;B.p.next= C.p-next=D.(*p).next=q;解析:解析 本题考查结构体指针变量的赋值方法,要把结点 b 连接到结点 a 的后面,必须把 b 的地址给 a 的 next 指针。故选项 B 正确。23.有如下程序: #includestdio.h main() FILE*fp1; fp1=fopen(“f1.txt“, “w“); fprin
32、tf(fp1, “abc“); fclose(fp1); 若文本文件 f1.txt 中原有内容为:good,则运行以上程序后文件 f1.txt 中的内容为_。(分数:2.50)A.goodabcB.abcdC.abc D.abcgood解析:解析 当用“w”打开时,已存在一个以该文件名命名的文件,则在打开时将该文件删除,再重新建立一个新文件,因此当输入时原来的内容已被覆盖,所以只有后输入的内容,故选择 C 选项。24.与“y=(x0?1:x0?-1:0)”;的功能相同的 if 语句是_。(分数:2.50)A.if(x0)y=1;else if(x0)y=1;else y=0;B.if(x)if
33、(x0)y=1;else if(x0)y=-1;else y=0; C.y=-1if(x)if(x0)y=1;else if(x=0)y=0;else y=-1;D.y=0;if(x=0)if(x=0)y=1;else y=-1;解析:解析 y=(x0?1:x0?-1:0)中有两个三目运算符,因此按从右到左的顺序运算,可写成y=(x0?1:(x0?-1:0),故选择 B 选项。25.下列运算符中优先级最高的算符是_。(分数:2.50)A.! B.%C.-=D. int a, b, c; a=(-x=y+)?x:+y; b=+x; c=y;(分数:2.50)A.a=5,b=5,c=5B.a=4,
34、b=5,c=5 C.a=5,b=6,c=5D.a=1,b=5,c=6解析:解析 本题考查自加(+)、自减(-)运算符的使用。“+x,-x”,在变量 x 前使用,先使 x 的值加 1 或者减 1,再使用此时的表达式的值参与运算;“x+,x-”,先把使用 x 的值参与运算,在使用x 之后,再使 x 的值加 1 或者减 1。 对于表达式-x=4,y+=4,两者相等,-x=y+为真,所以 a=x=4,执行完此语句后 y 的值是 5。第 2 个表达式 b=+x,x 的值先加 1,然后赋给 b,即 b=x+1=5;表达式 c=y=5。故选项 B 正确。27.下列变量声明合法的是_。(分数:2.50)A.s
35、hort a=1.4e-1; B.double b=1+3e2.8;C.long do=0xfdaL;D.float 2_aaa=1e-3;解析:解析 解答本题需了解 3 个知识点:标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线;do 是 C 语言的一个关键字,不能再用作变量名和函数名;C 语言规定指数形式的实型数量 e 或 E 后面的指数必须是整数。28.下列程序的输出结果是_。 #includestdio.h main() int i; for(i=1; i=10, i+) if(i*i=20) printf(“%d/n“, i*i); (分数:2.50)A.49
36、B.36C.25 D.64解析:解析 本题考查 for 循环及 if 语句。当执行到第一个满足(i*i=20) c=getchar(); if(c=“a“ else if(c=“g“ else printf(“input error!/n“); putchar(c);(分数:2.50)A.fB.tC.e D.d解析:解析 getchar 函数是读取键盘的输入函数,本题中输入字母“a”,则 c=“a“,判断 if 条件,发现“a“=“a“ for(i=1; i=100; i+) x=i; if(+x$2=0) if(+x%3=0) if(+x%7=0) printf(“%d“, x); prin
37、tf(“/n“); 程序的输出结果是_。(分数:2.50)A.2870 B.4284C.2668D.3981解析:解析 1-100 内打印出如下数,这个数,可以被 7 整除,前一个数可以被 3 整除,再前一个数可以被 2 整除,最终运行结果为 2870,因此正确答案为 A。31.若有定义“float a=25, b, *p=”,则下列对赋值语句“*p=a;”和“p=”的正确解释为_。(分数:2.50)A.两个语句都是将变量 a 的值赋予变量 pB.*p=a 是使 p 指向变量 a,而 p= char n=“1“, “2“, “3“, “4, “5“, “6“, “7“; 则下列叙述正确的是_。
38、(分数:2.50)A.数组 m 与数组 n 完全相同B.数组 m 与数组 n 长度相同C.数组 m 比数组 n 长 1 D.数组 m 与数组 n 中都存放字符串解析:解析 本题考查字符串数组和字符数组赋值的区别。“char m=“1234567“;”定义一个字符型数组并初始化,C 语言规定,在字符串的末尾自动加上串结束标记“/0“,因此数组 m 的长度是 8;而数组n 是按照字符方式对数组初始化,系统不加上串结束标记“/0“,因此数组 n 的长度是 7。33.下列程序输出结果是_。 #includestdio.h main() char a=“a“, “b“, “c“, “d“, “e“, “
39、f“, “/0“; int i, j; i=sizeof(a); j=strlen(a); printf(“%d, %d“, i, j); (分数:2.50)A.7,7B.7,6 C.6,6D.6,7解析:解析 本题要注意 sizeof()和 strlen()的区别,sizeof()函数的功能是返回字符串所占的字节数,strlen()函数的功能是返回字符串长度,“/0“是一个转义符,它占存储空间,但不计入串的长度。34.软件生命周期是指_。(分数:2.50)A.软件产品从提出、实现、使用维护到停止使用退役的过程 B.软件从需求分析、设计、实现到测试完成的过程C.软件的开发过程D.软件的运行维护
40、过程解析:解析 软件生命周期(Systems DevelopmentLife Cyele,SDLC)是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段。35.若某二叉树的前序遍历访问顺序是 abdgcefh,中序遍历访问顺序是 dgbaechf,则其后序遍历的结点访问顺序是_。(分数:2.50)A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca 解析:解析 后序遍历是指首先遍历左子树或左子结点,然后遍历右子树或右子结点,最后访问根结点。本题根据前序和中序遍历的结果确定,然后再对其进行
41、后序遍历,正确答案为选项 D。36.下列程序的运行结果是_。 #includestdio.h #define ADD(x) x+x main() int m=1, n=2, k=3; int s=ADD(m+n)*k; printf(“s=%d“, s); (分数:2.50)A.sum=18B.sum=10 C.sum=9D.sum=25解析:解析 本题考查带参数的宏的定义:“#defineADD(x)x+x”中 x 代表 m+n,故 s 写成s=m+n+m+n*k=1+2+1+2*3=10。37.有以下程序: #includestdio.h main() int i; for(i=1; i=
42、5; i+) if(i%2)printf(“*“); else continue; printf(“#“); printf(“$/n“); 程序的输出结果是_。(分数:2.50)A.*#*#*#$ B.#*#*#*$C.*#*#$D.#*#*$解析:解析 #includestdio.h int main() int i; for(i=1; i=5; i+) if(i%2) printf(“*“); else continue; printf(“#“); printf(“$/n“); /*i=1*# *i=3*# *i=5*# $ 所以输出为*#*#*#$和一个换行符*/,因此正确答案为 A。3
43、8.设 x=011050,则 x=x if(x=0|x=1) retum(3); p=x-fun(x-2); return p; main() printf(“%d/n“, fun(7); 执行后的结果是_。(分数:2.50)A.7B.3C.2 D.0解析:解析 调用函数 fun(7)时,由于 x 的值为 7,执行语句“p=x-fun(x-2);”,相当于执行 p=7-fun(5); 调用函数 fun(5)时,由于 x 的值为 5,执行语句“p=x-fun(x-2);”,相当于执行 p=7-fun(3); 调用函数 fun(3)时,由于 x 的值为 3,执行语句“p=x-fun(x-2);”,
44、相当于执行 p=7-fun(1); 调用函数 fun(1)时,由于 x 的值为 1,执行语句“return(3);”,函数的返回值为 3。 因此函数调用 fun(7)等价于 7-(5-fun(3),即 7-(5-(3-fun(1),即 7-(5-(3-3),所以函数 fun(7)的返回值为 2。40.已知函数 fread 的调用形式为“fread(buffer, size, count, fp);”,其中 buffer 代表的是_。(分数:2.50)A.存放读入数据项的存储区B.一个指向所读文件的文件指针C.一个指针,是指向读入数据存放在内存中的起始地址 D.一个整型变量,代表要读入的数据项总数解析:解析 本题考查数据块读取函数调用形式:fread(buffer,size,count,fp)。 fread 函数参数说明:“buffer”是一个指针,是读入数据的存放地址,对 fwrite 来说,是要输出数据的地址;“size”是要读写的字节数;“count”是要进行读写多少个 size 字节数据项;“fp”是指文件型指针。