1、二级 C 语言分类模拟题 543 及答案解析(总分:64.00,做题时间:90 分钟)一、选择题(总题数:40,分数:64.00)1.有以下程序: #includestdio.h #includestdlib.h void fun(double*p1,double*p2,double*s) s=(double*)calloc(1,sizeof( double); *s=*p1+*(p2+1); main() double a2=1.1,2.2,b2=10.0,20.0,*s=a; fun(a,b,s); printf(“%5.2f/n“,*s); 程序运行后的输出结果是_。(分数:1.00)A
2、.21.10B.11.10C.12.10D.1.102.以下关于 C 语言函数参数传递方式的叙述正确的是_。(分数:1.00)A.数据只能从实参单向传递给形参B.数据可以在实参和形参之间双向传递C.数据只能从形参单向传递给实参D.C 语言的函数,参数既可以从实参单向传递给形参,也可以在实参和形参之间双向传递,可视情况选择使用3.以下选项中关于 C 语言常量的叙述错误的是_。(分数:1.00)A.所谓常量,是指在程序运行过程中,其值不能被改变的量B.常量分为整型常量、实型常量、字符常量和字符串常量C.常量可分为数值型常量和非数值常量D.经常被使用的变量可以定义成常量4.有以下程序: #inclu
3、destdio.h void f(int x,int n) if(n1) printf(“%d,“,x0); f( printf(“%d,“,x0); else printf(“%d,“,x0); main() int z3=4,5,6; f(z,3); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.6,5,4,6,5,4,B.4,5,6,5,4,C.4,5,6,4,5,6,D.6,5,4,5,6,5.以下不合法的数值常量是_。(分数:1.00)A.011B.le1C.8.0E0.5D.0xabcd6.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是_。(分数:
4、4.00)A.一对一B.一对多C.多对一D.多对多7.以下选项中不能用作 C 程序合法常量的是_。(分数:1.00)A.1.234B.“/123“C.123D.“/x7D“8.以下 C 语言用户标识符中,不合法的是_。(分数:2.00)A._1B.AaBcC.a_bD.a-b9.有以下程序: #include stdio.h #include math.h main() int a=1, b=4, c=2; double x=10.5, y=4.0, z; z = (a+b)/c + sqrt(y) * 1.2/c + x; printf(“%f/n“, z); 程序运行后的输出结果是_。(分
5、数:1.00)A.13.700000B.14.000000C.15.400000D.14.90000010.若整型变量 a、b、c、d 中的值依次为:1、4、3、2。则条件表达式 ab?a:cd?c:d 的值是 _ 。(分数:1.00)A.1B.2C.3D.411.下面的程序在编泽时产生错误,其出错原因是 _ 。 #includestdio.h main() int 1_case;float printF; printf(“请输入 2 个数:“); scanf (“%d%f“, -p;y=*p;printf(“y=%d/n“,y); 程序的运行结果是_。(分数:2.50)A.y=0B.y=1C
6、.y=2D.y=315.下述程序的输出结果是_。 #includestdio.h void main() char a=1,b=2; char c=ab2; printf(“/n%d“,c);(分数:4.00)A.9B.10C.12D.216.有以下程序: #includestdio.h #includestring.h main( ) char str =“Hello,Beijing“; printf(“%d,%d/n“,strlen(str),sizeof(str); 程序的运行结果是_。(分数:1.00)A.13,13B.13,14C.13,15D.14,1517.设 x,y,z 均为实
7、型变量,代数式 (分数:2.00)A.x/y*zB.x%y%zC.x/y/zD.x*z/y18.下列数据结构中,能用二分法进行查找的是_。(分数:1.00)A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序线性链表19.阅读下面程序,程序执行后的结果为_。 #include “stdio.h“ main() char *str=“abcdefghijklmnopq“; while(*str+!=“e“);printf(“%c/n“,*str);(分数:2.00)AfBaCeDq20.软件生命周期中的活动不包括_。(分数:1.50)A.市场调研B.需求分析C.软件测试D.软件维护21.下列
8、叙述中正确的是_。(分数:2.00)A.调用 printf 函数时,必须要有输出项B.使用 putchar 函数时,必须在之前包含头文件 stdio.hC.在 C 语言中,整数可以以二进制、八进制或十六进制的形式输出D.调节 getchar 函数读入字符时,可以从键盘上输入字符所对应的 ASCII 码22.有以下程序 #includestdio.h main() int i;j; for(i=1;i4;i+) for(j=i;j4;j+)printf(“%d*%d=%d“,i,j,i*j); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.1*1=1 1*2=2 1
9、*3=32*2=4 2*3=63*3=9B.1*1=1 1*2=2 1*3=32*1=2 2*2=43*1=3C.1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=9D.1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=923.下面描述中,不属于软件危机表现的是_。(分数:2.50)A.软件过程不规范B.软件开发生产率低C.软件质量难以控制D.软件成本不断提高24.有以下程序 #includestdio.h #includestring.h struct A int a; char b10; double c; ; void f(struct A t); main(
10、) struct A a=1001,“ZhangDa“,1098.0; f(a); printf(“%d,%s,%6.1f/n“,a.a,a.b,a.c); void f(struct A t) t.a=1002; strcpy(t.b,“ChangRong“); t.c=1202.0; 程序运行后的输出结果是_。(分数:1.00)A.1002,ChangRong,1202.0B.1001,ZhangDa,1098.0C.1001,ChangRong,1098.0D.1002,ZhangDa,1202.025.以下程序的输出结果是_。 main() int i,j,m=0; for (i=1;
11、i=15;i+=4) for(j=3; j=19; j+=4) m+; printf(“%d/n“,m); (分数:1.00)A.12B.15C.20D.2526.有以下程序 #define F(X,Y)(X)*(Y) main() int a=3,b=4; printf(“%d/n“,F(a+,b+); 程序运行后的输出结果是_。(分数:2.50)A.12B.15C.16D.2027.有以下程序: #includestdio.h main() int a5=1, 2, 3, 4, 5, b5=0, 2, 1, 3, 0, i, s=0; for(i=0; i5; i+) s=s+abi; p
12、rintf(“%d/n“, s); 程序运行后的输出结果是_。(分数:1.00)A.6B.10C.11D.1528.以下不能将 s 所指字符串正确复制到 t 所指存储空间的是_。(分数:4.00)A.do*t+=*s+;while(*s);B.for(i=0; ti=si; i+);C.while(*t=*s)t+; s+;D.for(i=0, j=0; ti+=sj+; );29.下列叙述中错误的是_。(分数:2.00)A.可以给指针变量赋一个整数作为地址值B.函数可以返回地址值C.改变函数形参的值,不会改变对应实参的值D.当在程序的开头包含头文件 stdio.h 时,可以给指针变量赋 NU
13、LL 值30.下列叙述中正确的是_。(分数:1.00)A.算法就是程序B.设计算法时只需要考虑数据结构的设计C.设计算法时只需要考虑结果的可靠性D.以上三种说法都不对31.有以下程序: #include stdio.h main() char c; do c=getchar(); putchar(c); while(c !=“#“); printf(“/n“); 执行时如输入:abcdefg#回车,则输出结果是_。(分数:1.00)A.abcdefg#B.abcdefgC.abcdefg#D.#32.以下关于宏的叙述中正确的是_。(分数:3.00)A.宏名必须用大写字母表示B.宏定义必须位于源
14、程序中所有语句之前C.宏替换没有数据类型限制D.宏调用比函数调用耗费时间33.有定义语句:int b;char c10;,则正确的输入语句是_。(分数:2.00)A.scanf(“%d%s“,B.scanf(“%d%s“,C.scanf(“%d%s“,b,c);D.scanf(“%d%s“,b,34.有下列程序: #includestdio.h main() int a=-1,b=2; for(;a+ ) printf(“%d,%d,“,a,b); printf(“%d,%d“,a,b); 程序执行后的输出结果是_。(分数:1.00)A.0,1,1,0,1,0B.0,1,1,0C.0,1,1,
15、1D.0,1,1,1,1,135.有以下程序 #includestdio.h main() int i, j, m=1; for(i=1; i3; i+) for(j=3; j0; j-) if(i*j3)break; m*=i*j; printf(“m=%d/n“, m); 程序运行后的输出结果是_。(分数:2.00)A.m=6B.m=2C.m=4D.m=536.有以下程序: #includestdio.h main() int a,b; for(a=0;a3;a+) scanf(“%d“, switch(b) default:printf(“%d,“,b+1);continue; case
16、 1:printf(“%d,“,b+1); case 2:pfintf(“%d,“,b+1);continue; 执行时输入:1 2 3回车,则输出结果是_。(分数:1.00)A.2,2,3,4,4,4,B.2,3,4,C.2,2,3,4,D.2,3,3,4,5,6,37.有以下程序: #includestdio.h main() int y=10; while(y-);printf(“y=%d/n“,y); 程序执行后的输出结果是_。(分数:1.00)A.y=0B.y=-1C.y=1D.while 构成无限循环38.计算机软件的构成是_。(分数:1.00)A.源代码B.程序和数据C.程序和文
17、档D.程序、数据及相关文档39.以下叙述中错误的是_。(分数:1.00)A.在一个程序中,每个模块均可以独立编译运行B.程序“模块化”有利于任务的分解简化C.允许对函数单独进行编译,是 C 语言实现“模块化”的基础D.采用模块化结构,可以提高编程效率40.有以下程序: #includestdio.h main() int findmax(int,int,int),m; m=findmax(a,b,c); (分数:1.00)A.在 main 函数中声明了 findmax 函数B.在 main 函数中定义了 findmax 函数C.在 main 函数中两次调用了 findmax 函数D.在 mai
18、n 函数内、外重复定义了 findmax 函数二级 C 语言分类模拟题 543 答案解析(总分:64.00,做题时间:90 分钟)一、选择题(总题数:40,分数:64.00)1.有以下程序: #includestdio.h #includestdlib.h void fun(double*p1,double*p2,double*s) s=(double*)calloc(1,sizeof( double); *s=*p1+*(p2+1); main() double a2=1.1,2.2,b2=10.0,20.0,*s=a; fun(a,b,s); printf(“%5.2f/n“,*s); 程
19、序运行后的输出结果是_。(分数:1.00)A.21.10B.11.10C.12.10D.1.10 解析:解析 本题考查把数组名作为函数参数,执行 fun 函数后,s 的值并没有发生变化,仍然是指向a,所以输出结果为 1.10,选项 D 正确。2.以下关于 C 语言函数参数传递方式的叙述正确的是_。(分数:1.00)A.数据只能从实参单向传递给形参 B.数据可以在实参和形参之间双向传递C.数据只能从形参单向传递给实参D.C 语言的函数,参数既可以从实参单向传递给形参,也可以在实参和形参之间双向传递,可视情况选择使用解析:解析 数据只能由实参单向传递给形参称为“值传递”,而不能由形参传给实参,A
20、选项正确;数组名、指针等作参数,实参传递给形参的是地址值,这样形参和实参就指向同一段内存单元,在函数体内对形参数据的改变也将影响到实参。实参和形参之间不可双向传递,B、D 选项错误。数据不能从形参传递给实参,故 C 选项错误。3.以下选项中关于 C 语言常量的叙述错误的是_。(分数:1.00)A.所谓常量,是指在程序运行过程中,其值不能被改变的量B.常量分为整型常量、实型常量、字符常量和字符串常量C.常量可分为数值型常量和非数值常量D.经常被使用的变量可以定义成常量 解析:解析 此题考查的是常量和变量的定义,常量不是经常使用的变量,而是一个确定的数值,所以答案选择 D。4.有以下程序: #in
21、cludestdio.h void f(int x,int n) if(n1) printf(“%d,“,x0); f( printf(“%d,“,x0); else printf(“%d,“,x0); main() int z3=4,5,6; f(z,3); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.6,5,4,6,5,4,B.4,5,6,5,4, C.4,5,6,4,5,6,D.6,5,4,5,6,解析:解析 本题考查了函数的递归调用,在 main 函数中调用 f(z,3)后,系统进入 f()函数,随后进入if 语句,输出 x0;再进入 f()函数时,存在
22、 double x=10.5, y=4.0, z; z = (a+b)/c + sqrt(y) * 1.2/c + x; printf(“%f/n“, z); 程序运行后的输出结果是_。(分数:1.00)A.13.700000 B.14.000000C.15.400000D.14.900000解析:解析 如果一个运算符两边的运算数类型不同,要先将其转换为相同的类型,即较低类型转换为较高类型,然后再参加运算。程序执行过程为:a+b=5,5/2=2(int 类型),sqrt(y)=2.0(double 类型),2.0*1.2/2=1.2(double 类型),z=2.0(由 int 类型自动转换成
23、 double 类型)+1.2+10.5=13.7。故 A 选项正确。10.若整型变量 a、b、c、d 中的值依次为:1、4、3、2。则条件表达式 ab?a:cd?c:d 的值是 _ 。(分数:1.00)A.1 B.2C.3D.4解析:解析 条件表达式的形式如下:表达式 17 表达式 2:表达式 3,所以本题条件表达式ab?a:cd?c:d 应该理解为 ab?a:(cd?c:D) ,首先求出条件表达式 cd?c:d 的值等于 2,再求条件表达式 ab?a:2 的值,由于 a1b4 成立,所以上述条件表达式的值等于 1。11.下面的程序在编泽时产生错误,其出错原因是 _ 。 #includest
24、dio.h main() int 1_case;float printF; printf(“请输入 2 个数:“); scanf (“%d%f“, -p;y=*p;printf(“y=%d/n“,y); 程序的运行结果是_。(分数:2.50)A.y=0B.y=1C.y=2D.y=3 解析:解析 程序首先定义了一个一维数组和指针,接着将数组第 4 个元素的地址赋给“*p”,进行-p使指针 p 指向了数组的第 3 个元素;通过“y=*p”,将数组第 3 个元素的值 3 赋给了 y,所以选项 D 正确。15.下述程序的输出结果是_。 #includestdio.h void main() char
25、a=1,b=2; char c=ab2; printf(“/n%d“,c);(分数:4.00)A.9 B.10C.12D.2解析:16.有以下程序: #includestdio.h #includestring.h main( ) char str =“Hello,Beijing“; printf(“%d,%d/n“,strlen(str),sizeof(str); 程序的运行结果是_。(分数:1.00)A.13,13B.13,14 C.13,15D.14,15解析:解析 strlen 返回字符串的长度,不包含字符串末尾的结束字符“/0“,结果为 13;sizeof 返回字符串所占存储空间的大
26、小,由于字符串最后要加上一个“/0“,所以结果为 13+1=14。17.设 x,y,z 均为实型变量,代数式 (分数:2.00)A.x/y*zB.x%y%zC.x/y/z D.x*z/y解析:18.下列数据结构中,能用二分法进行查找的是_。(分数:1.00)A.顺序存储的有序线性表 B.线性链表C.二叉链表D.有序线性链表解析:解析 二分查找只适用于顺序存储的有序表。所谓有序表是指线性表中的元素按值非递减排列(即从小到大,但允许相邻元素值相等)。19.阅读下面程序,程序执行后的结果为_。 #include “stdio.h“ main() char *str=“abcdefghijklmnop
27、q“; while(*str+!=“e“);printf(“%c/n“,*str);(分数:2.00)Af BaCeDq解析:20.软件生命周期中的活动不包括_。(分数:1.50)A.市场调研 B.需求分析C.软件测试D.软件维护解析:解析 软件生命周期可以分为软件定义、软件开发与软件运行维护三个阶段。主要活动包括:可行性研究与计划、需求分析、软件设计、软件实现、软件测试、运行和维护,因此本题答案为 A。21.下列叙述中正确的是_。(分数:2.00)A.调用 printf 函数时,必须要有输出项B.使用 putchar 函数时,必须在之前包含头文件 stdio.h C.在 C 语言中,整数可以
28、以二进制、八进制或十六进制的形式输出D.调节 getchar 函数读入字符时,可以从键盘上输入字符所对应的 ASCII 码解析:22.有以下程序 #includestdio.h main() int i;j; for(i=1;i4;i+) for(j=i;j4;j+)printf(“%d*%d=%d“,i,j,i*j); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.1*1=1 1*2=2 1*3=32*2=4 2*3=63*3=9 B.1*1=1 1*2=2 1*3=32*1=2 2*2=43*1=3C.1*1=11*2=2 2*2=41*3=3 2*3=6 3
29、*3=9D.1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=9解析:解析 外层循环 i,值分别为 1 2 3,内层循环 j 分别为 1 2 3、2 3 和 3,所以答案为 A。23.下面描述中,不属于软件危机表现的是_。(分数:2.50)A.软件过程不规范 B.软件开发生产率低C.软件质量难以控制D.软件成本不断提高解析:解析 软件危机的表现包括:对软件开发的进度和费用估计不准确;用户对已完成的软件系统不满意的现象时常发生;软件产品的质量往往靠不住;软件常常是不可维护的;软件通常没有适当的文档;软件成本在计算机系统总成本中所占的比例逐年上升;软件开发生产率提高的速度远远跟不上计
30、算机应用迅速普及深入的趋势。24.有以下程序 #includestdio.h #includestring.h struct A int a; char b10; double c; ; void f(struct A t); main() struct A a=1001,“ZhangDa“,1098.0; f(a); printf(“%d,%s,%6.1f/n“,a.a,a.b,a.c); void f(struct A t) t.a=1002; strcpy(t.b,“ChangRong“); t.c=1202.0; 程序运行后的输出结果是_。(分数:1.00)A.1002,ChangRo
31、ng,1202.0B.1001,ZhangDa,1098.0 C.1001,ChangRong,1098.0D.1002,ZhangDa,1202.0解析:解析 f 函数是值传递,不会改变 main 函数中 t 的值,所以结果为 B。25.以下程序的输出结果是_。 main() int i,j,m=0; for (i=1;i=15;i+=4) for(j=3; j=19; j+=4) m+; printf(“%d/n“,m); (分数:1.00)A.12B.15C.20 D.25解析:26.有以下程序 #define F(X,Y)(X)*(Y) main() int a=3,b=4; prin
32、tf(“%d/n“,F(a+,b+); 程序运行后的输出结果是_。(分数:2.50)A.12 B.15C.16D.20解析:解析 此题考查的是编译预处理命令以及自加运算符。F(a+,b+)先取 a 和 b 的值,参加运算,再把 a 和 b 的值分别加 1,所以 F(a+,b+)=F(3,4)=3*4=12。27.有以下程序: #includestdio.h main() int a5=1, 2, 3, 4, 5, b5=0, 2, 1, 3, 0, i, s=0; for(i=0; i5; i+) s=s+abi; printf(“%d/n“, s); 程序运行后的输出结果是_。(分数:1.0
33、0)A.6B.10C.11 D.15解析:解析 本题考查数组的使用。本题定义了两个数组,注意数组的下标是从 0 开始的,进行第 1 次for 循环:当 i=0 时,b0为数组 b 中第 1 个元素,结果为 0,那么 a0也是数组 a 中第 1 个元素,结果为 1,所以 s 的值为 1。第 2 次循环:i 此时自加为 1,b1为数组的第 2 个元素,值为 2,所以可求出a2(数组中的第 3 个元素)的值为 3,s=s+3,所以 s 的值为 4。进入第 3 次 for 循环,依此类推,第 3次 for 循环结束时 s 的值为 6。第 4 次 for 循环,s 的值变为 10。第 5 次 for 循
34、环时,此时 i 的值为4,s 的值变为 11,i=5 不符合题意,所以跳出循环,输出结果,所以本题答案为 C。28.以下不能将 s 所指字符串正确复制到 t 所指存储空间的是_。(分数:4.00)A.do*t+=*s+;while(*s); B.for(i=0; ti=si; i+);C.while(*t=*s)t+; s+;D.for(i=0, j=0; ti+=sj+; );解析:解析 do*t+=*s+; while(*s);不能因为当*s=“/0“时,while(*s)跳出循环,这样字符串结束标志“/0“没有复制给*t,造成*t 不完整。注意,*t+=*s+是先执行 t=*s,然后才进
35、行 t=t+1, s=s+1。B、C、D 都能将“/0“复制过去。29.下列叙述中错误的是_。(分数:2.00)A.可以给指针变量赋一个整数作为地址值 B.函数可以返回地址值C.改变函数形参的值,不会改变对应实参的值D.当在程序的开头包含头文件 stdio.h 时,可以给指针变量赋 NULL 值解析:解析 不能将一个整数直接赋给指针变量作为地址,所以 A 选项是错误的。函数的返回值可以是地址,即指针。函数调用中形参值的变化不会传递给实参。30.下列叙述中正确的是_。(分数:1.00)A.算法就是程序B.设计算法时只需要考虑数据结构的设计C.设计算法时只需要考虑结果的可靠性D.以上三种说法都不对
36、 解析:解析 算法是指解题方案的准确而完整的描述,算法既不等于程序,也不等于计算方法,因此 A错误。设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构,因此 B 和 C 错误。31.有以下程序: #include stdio.h main() char c; do c=getchar(); putchar(c); while(c !=“#“); printf(“/n“); 执行时如输入:abcdefg#回车,则输出结果是_。(分数:1.00)A.abcdefg# B.abcdefgC.abcdefg#D.#解析:解析 程序执行过程为:读入一个字符存入缓存区,判断字符是否为“#”
37、,如不是,继续读入字符,直到读入的字符是“#”,存入缓存区,退出循环,将缓冲区字符一个个输出,结果为 abcdefg#,故A 选项正确。32.以下关于宏的叙述中正确的是_。(分数:3.00)A.宏名必须用大写字母表示B.宏定义必须位于源程序中所有语句之前C.宏替换没有数据类型限制 D.宏调用比函数调用耗费时间解析:解析 宏名可以大写,也可以小写。其有效范围为定义命令之后到本源文件结束。宏的调用是字符的替换,没有数据类型限制。33.有定义语句:int b;char c10;,则正确的输入语句是_。(分数:2.00)A.scanf(“%d%s“,B.scanf(“%d%s“, C.scanf(“%
38、d%s“,b,c);D.scanf(“%d%s“,b,解析:34.有下列程序: #includestdio.h main() int a=-1,b=2; for(;a+ ) printf(“%d,%d,“,a,b); printf(“%d,%d“,a,b); 程序执行后的输出结果是_。(分数:1.00)A.0,1,1,0,1,0B.0,1,1,0C.0,1,1,1 D.0,1,1,1,1,1解析:解析 for 循环中,表达式 a+ for(i=1; i3; i+) for(j=3; j0; j-) if(i*j3)break; m*=i*j; printf(“m=%d/n“, m); 程序运行
39、后的输出结果是_。(分数:2.00)A.m=6 B.m=2C.m=4D.m=5解析:解析 第一次外循环 i 的值为 1,第一次内循环 i 的值为 3,不满足条件,则执行 m*=i*j 即 m 的值为 3;第二次 j 的值为 2,不满足条件,则执行 m*=i*j,即 m 的值为 6;第三次 j 的值为 1,不满足条件,则执行 m*=i*j 即 m 的值仍为 6。第二次外循环 i 的值为 2,i 的值为 93,满足条件,执行 break 语句,跳出循环。故本题答案为 A。36.有以下程序: #includestdio.h main() int a,b; for(a=0;a3;a+) scanf(“
40、%d“, switch(b) default:printf(“%d,“,b+1);continue; case 1:printf(“%d,“,b+1); case 2:pfintf(“%d,“,b+1);continue; 执行时输入:1 2 3回车,则输出结果是_。(分数:1.00)A.2,2,3,4,4,4,B.2,3,4,C.2,2,3,4, D.2,3,3,4,5,6,解析:解析 continue 语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。在switch.case 语句中,如果没有 break 会导致多个分支重叠。因此,输入 1,2,3,则 1 执行 case 1:pri
41、ntf(“%d,“,b+1);case 2:printf(“%d,“,b+1);continue;后结束。2 则执行 case 2:printf(“%d,“,b+1);continue;3 则执行 default:printf(“%d,“,b+1);continue;得到的结果是2,2,3,4。故答案为 C 选项。37.有以下程序: #includestdio.h main() int y=10; while(y-);printf(“y=%d/n“,y); 程序执行后的输出结果是_。(分数:1.00)A.y=0B.y=-1 C.y=1D.while 构成无限循环解析:解析 执行 y-直到值为
42、0,由于 y-是先用再减,所以退出循环时,y 的值为-1。38.计算机软件的构成是_。(分数:1.00)A.源代码B.程序和数据C.程序和文档D.程序、数据及相关文档 解析:解析 计算机软件是程序、数据及相关文档的完整集合。39.以下叙述中错误的是_。(分数:1.00)A.在一个程序中,每个模块均可以独立编译运行 B.程序“模块化”有利于任务的分解简化C.允许对函数单独进行编译,是 C 语言实现“模块化”的基础D.采用模块化结构,可以提高编程效率解析:解析 在程序设计时,用一个个小模块来实现不同的功能,每个程序设计人员分别完成一个或多个小模块,称这样的程序设计方法为“模块化”。由一个个功能模块
43、构成的程序结构称为模块化结构,使用模块化结构程序设计,有利于任务的分解简化,选项 B 正确;C 语言允许对函数单独进行编译,从而可以实现模块化,选项 C 正确;采用模块化结构,可以使不同模块的程序员分别编写和调试,大大提高了编程效率,选项 D 正确;在 C 语言程序中,每个模块并不一定能够单独编译运行,选项 A 错误,本题答案A。40.有以下程序: #includestdio.h main() int findmax(int,int,int),m; m=findmax(a,b,c); (分数:1.00)A.在 main 函数中声明了 findmax 函数 B.在 main 函数中定义了 findmax 函数C.在 main 函数中两次调用了 findmax 函数D.在 main 函数内、外重复定义了 findmax 函数解析:解析 程序中函数 findmax 定义放在主函数之后,主函数中声明了 findmax 函数。int findmax(int,int,int);为函数声明,m=findmax(a,b,c);为函数调用,intfindmax(int x,int y,int z)为函数定义。