1、二级 C 语言笔试-88 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.以下程序中函数 sort 的功能是对 a 所指数组中的数据进行由大到小的排序:float sort(int a, int n)int i, j, t;for(i=0; in-1; i+)for(j=i+1; jn; j+)if(aiaj)t=ai; ai=aj; aj=t; main()int aa10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10), i;sort(for(i=0; i10; i+)printf(“% d“, aai);printf(“
2、/n“);程序运行后的输出结果是_。(分数:2.00)A.1, 2, 3, 4, 5, 6, 7, 8, 9, 10B.10, 9, 8, 7, 6, 5, 4, 3, 2, 1C.1, 2, 3, 8, 7, 6, 5, 4, 9, 10D.1, 2, 10, 9, 8, 7, 6, 5, 4, 32.以下能正确定义数组并正确赋初值的语句是_。(分数:2.00)A.int N=5, bN=N;B.int a12=1, 3;C.int c2=1, 2, 3, 4;D.int d32=1, 2, 34;3.以下不能定义为用户标识符的是_。(分数:2.00)A.scanfB.VoidC._3com
3、D.int4.有以下程序:void sott(int a, int n)int i, j, t;for(i=0; in-1; i+)for(j=i+1; jn; j+)if(aiaj)t=ai;ai=aj;aj=t;)main()int aa10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, I;sort(aa+2, 5);for(i=0; i10; i+)printf(“% d“, aai);printf(“/n“);程序运行后的输出结果是_。(分数:2.00)A.1, 2, 3, 4, 5, 6, 7, 8, 9, 10,B.1, 2, 7, 6, 3, 4, 5, 8,
4、9, 10,C.1, 2, 7, 6, 5, 4, 3, 8, 9, 10,D.1, 2, 9, 8, 7, 6, 5, 4, 3, 10,5.下到叙述中正确的是_。(分数:2.00)A.C 语言中既有逻辑类型也有集合类型B.C 语言中没有逻辑类型但有集合类型C.C 语言中有逻辑类型但没有集合类型D.C 语言中既没有逻辑类型也没有集合类型6.有如下函数调用语句:func(rec1, rec2+rec3, (rec4, rec5);该函数调用语句中,含有的实参个数是_。(分数:2.00)A.3B.4C.5D.有语法错7.有以下程序段:int k=0, a=1, b=2, c=3;k=ab? b:
5、a; k=kc? c:k;执行该程序后,k 的值是_。(分数:2.00)A.3B.2C.1D.08.有以下程序:float fun(int x, int y)return(x+y);main()int a=2, b=5, c=8;printf(“% 3.0f/n“, fun(int)fun(a+c, b) , a-c) );程序运行后的输出结果是_。(分数:2.00)A.编译错误B.9C.21D.9.09.以下程序的输出结果是_。char cchar(char ch)if(ch=Areturn ch;main()char s=“ABC+abc=defDEF“,*p=s;while(* p)*
6、p=cchar(* p);p+;printf(“% s/n“, s);(分数:2.00)A.abe+ABC=DEFdefB.abc+abe=defdefC.abcaABCDEFdefD.abcabcdefdef10.有如下程序:main()int s=0, a=1,n;scanf(“% d“, dos+=1; a=a-2;while(a!=n)printf(“% d/n“, s);若要使程序输出 2,则应该从键盘输入的值是_。(分数:2.00)A.-1B.-3C.-5D.011.有以下程序:main()int a=666, b=888;printf(“% d/n“, a, b);程序运行后的输
7、出结果是_。(分数:1.00)A.错误信息B.666C.888D.666,88812.若以下选项中的变量已正确定义,则正确的赋值语句是_。(分数:1.00)A.x1=26.8%3;B.1+2=x2;C.x3=0x12;D.x4=1+2=3;13.数据库系统的核心是_。(分数:1.00)A.数据模型B.数据库管理系统C.数据库D.数据库管理员14.有以下程序:# define f(x) (x*x)main()int i1, i2;i1=f(8)/f(4); i2=f(4+4)/f(2+2);printf(“% d, % d/n“, i1, i2);程序运行后的输出结果是_。(分数:1.00)A.
8、64, 28B.4, 4C.4, 3D.64, 6415.下列数据结构中,能用二分法进行查找的是_。(分数:1.00)A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序线性链表16.有以下程序:main()int a, b, d=25;a=d/10%9; b=aprintf(“% d, % d/n“, a, b) ;程序运行后的输出结果是_。(分数:1.00)A.6, 1B.2, 1C.6, 0 (D.2, 017.以下程序段中与语句 k=ab?(bc? 1:0):0;功能等价的是_。(分数:1.00)A.if(abelse k=0;C.if(a=b)k=0;else if(b=c)k=
9、1;D.if(ab)k=1;else if(bc)k=1;else k=0;18.设有定义语句:char c1=92,c2=92; ,则以下表达式中值为零的是_。(分数:1.00)A.c1c2B.c1printf(“% d/n“, *p+*q);程序运行后的输出结果是_。(分数:1.00)A.16B.10C.8D.621.有以下函数:fun(char *a, char *b) while(*a!=/0)b+;return(*a-*b);该函数的功能是_。(分数:2.00)A.计算 a 和 b 所指字符串的长度之差B.将 b 所指字符串连接到 a 所指字符串中C.将 b 所指字符串连接到 a 所
10、指字符串后面D.比较 a 和 b 所指字符串的大小22.结构化程序有 3 种基本结构组成,3 种基本结构组成的算法_。(分数:2.00)A.可以完成任何复杂的任务B.只能完成部分复杂的任务C.只能完成符合结构化的任务D.只能完成一些简单的任务23.以下叙述中正确的是_。(分数:2.00)A.全局变量的作用域一定比局部变量的作用域范围大B.静态(statiC.类别变量的生存期贯穿于整个程序的运行期间 C) 函数的形参都属于全局变量D.未在定义语句中赋初值的 auto 变量和 static 变量的初值都是随机值24.有以下程序:main()int m3=1, 4, 7, 2, 5, 8, 3, 6
11、, 9);int i, j, k=2;for(i=0; i3; i+)printf(“% d“, mki); 执行后输出结果是_。(分数:2.00)A.456B.258C.369D.78925.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是_。(分数:2.00)A.char s10=“abcdefg“;B.char t=“abcdefg“, * s=t;C.char s10; s=“abcdefg“;D.char s10; strcpy(s, “abcdefg“);26.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是_。(分数:2.00)A.地址传递B.单向值传
12、递C.由实参传给形参。再由形参传同实参D.传递方式由用户指定27.用树形结构来表示实体之间联系的模型称为_。(分数:2.00)A.关系模型B.网状模型C.层次模型D.以上 3 个都是28.数据的存储结构是指_。(分数:2.00)A.存储在外存中的数据B.数据所占的存储空间量C.数据在计算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示29.下列描述中正确的是_。(分数:2.00)A.软件工程只是解决软件项目的管理问题B.软件工程主要解决软件新产品的生产率问题C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则D.软件工程只是解决软件开发中的技术问题30.一个 C 程序中_。(分数
13、:2.00)A.main 函数必须出现在所有函数之前B.main 函数可以在任何地方出现C.main 函数必须出现在所有函数之后D.main 函数必须出现在固定位置31.下列叙述中正确的是_。(分数:2.00)A.C 语言编译时不检查语法B.C 语言的子程序有过程和函数两种C.C 语言的函数可以嵌套定义D.C 语言所有函数都是外部函数32.有以下语句: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, 33.
14、有如下程序:main()int k=4, n=0;for(; nk; )n+;if(n% 3!=0)continue;k-; printf(“ % d, % d/n“, k, n);程序运行后的输出结果是_。(分数:2.00)A.1, 1B.2, 2C.3, 3D.4, 434.有以下程序:struct STUchar name10; int num; float TotalScore; ;void f(struct STU *p)struct STU s2=“SunDan“, 20044, 550, “Penghua“, 20045, 537, *q=s;+p; +q; *p=*q;main
15、()struct STU s3=“YangSan“, 20041, 703, “LiSiGuo“, 20042, 580;f(s);printf(“ % s % d % 3.0f/n“, s1. name, s1. num, s1. TotalScore);程序运行后的输出结果是_。(分数:2.00)A.SunDan 20044 580B.Penghua 20045 537C.LiSiGUO 20042 580D.SunDan 20041 70335.以下程序的输出结果是_。fun(int x, int Y, int z)z=x*x+y*y;main()int a=31;fun(5, 2,(分
16、数:2.00)A.;36.下列对于软件测试的描述中正确的是_。(分数:2.00)A.软件测试的目的是证明程序是否正确B.软件测试的目的是使程序运行结果正确C.软件测试的目的是尽可能地多发现程序中的错误D.软件测试的目的是使程序符合结构化原则37.以下函数值的类型是_。fun(float x)float y;y=3*x-4;return y;(分数:2.00)A.intB.不确定C.voidD.float38.以下叙述中正确的是_。(分数:2.00)_39.以下程序中函数 reverse 的功能是对 a 所指数组中的内容进行逆置。void reverse(int a, int n)int i,
17、t;for(i=0; in/2; i+)t=ai; ai=an-1-1; an-1-i=t;main()int b10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10;int i, s=0;reverse(b, 8);for(i=6; i10; i+)s+=bi;printf(“% d/n“, s);程序运行后的输出结果是_。(分数:2.00)A.22B.10C.34D.3040.当调用函数时,实参是一个数组名,则向函数传送的是_。(分数:2.00)A.数组的长度B.数组的首地址C.数组每一个元素的地址D.数组每个元素中的值二、填空题(总题数:15,分数:30.00)41.问题处理
18、方案的正确而完整的描述称为 【1】 。(分数:2.00)填空项 1:_42.数据结构分为逻辑结构和存储结构,循环队列属于 【2】 结构。(分数:2.00)填空项 1:_43.在面向对象方法中,类之间共享属性和操作的机制称为 【3】 。(分数:2.00)填空项 1:_44.在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块)。其中 【4】 的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。(分数:2.00)填空项 1:_45.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是 【5】 。(分数
19、:2.00)填空项 1:_46.以下程序的功能是将字符串 s 中的数字字符放人 d 数组中,最后输出 d 中的字符串。例如,输入字符串 abc123edf456gh,执行程序后输出 123456。请填空。# includestdio. h# includectype. hmain()char s80, d80; int i, j;gets(s);for(i=j=0; si!=/0; i+)if( 【6】 ) dj=si; j+;)dj=/0;puts(D) ;(分数:2.00)填空项 1:_47.有以下程序:void fun(int *a, int i, int j)int t;if(ij)t
20、=ai; ai=aj; aj=t;i+ ;j-;fun(a, i, j);main()int x=(2, 6, 1, 8), i;fun(x, 0, 3);for(i=0; i4; i+)printf(“% 2d“, xi);程序运行后的输出结果是 【7】 。(分数:2.00)填空项 1:_48.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。请填空。main()int i, a20, sum, count;sum=count=0;for(i=0; i20; i+)scanf(“% d“, 【8】 );for(i=0; i20; i+)if(ai0)count+;sum+=
21、ai;printf(“sum=% d, count=% d/n“, sum, count);(分数:2.00)填空项 1:_49.以下程序通过函数 SunFun 求 (分数:2.00)填空项 1:_50.有以下程序:main()int a=1, 2, 3, 4, 5, 6, 7, 8, 9, 0, *p;for(p=a; pa+10; p+)printf(“% d,“, *p);程序运行后的输出结果是 【10】 。(分数:2.00)填空项 1:_51.以下程序中,函数 SumColumMin 的功能是:求出 M 行 N 列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出
22、。请填空。# define M 2# define N 4void SumColumMin(int aMN, int *sum)int i, j, k, s=0;for(i=0; iN; i+)k=0;for(j=1; jM; j+)if(akiaji)k=j;s+=aki;*sum=s;main()int xMN=3, 2, 5, 1, 4, 1, 8, 3, s;SumColumMin( 【11】 );printf(“% d/n“ , s);(分数:2.00)填空项 1:_52.函数 fun 的功能是计算 xn:double fun(double x, int n)int i; doubl
23、e y=1;for(i; =1; i=n; i+)y=y*x;return y;主函数中已正确定义 m、a、b 变量并赋值,并调用 fun 函数计算:m=a 4+b4-(a+B)3。实现这一计算的函数调用语句为 【12】 。(分数:2.00)填空项 1:_53.以下程序中函数 huiwen 的功能是检查一个宁符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出。所谓回文即正向与反向的拼写都一样,例如:adgda。请填空_。# include string. hchat * huiwen(chat * str)char *p1, *p2; in
24、t i, t=0;p1=str; p2= 【13】 ;for(i=0; i=strlen(str)/2; i+)if(*p1+!=*p2-)t=1; break;if(! t 或 t!=0)return(“yes!“);else return(“no!“);main()char str50;printf(“Input: “); scanf(“% s“, str);printf(“% s/n“, huiwen(str);(分数:2.00)填空项 1:_54.有以下程序:main()int num44=1, 2, 3, 4), 5, 6, 7, 8), 9, 10, 11, 12), 13, 14
25、, 15, 16, i, j;for(i=0; i4; i+)for(j=0; j=i; j+)printf(“% 4c“, );for(j=_; j4; j+)printf(“% 4d“, numij);printf(“/n“);若要按以下形式输出数组右上半三角:1 2 3 46 7 811 1216则在程序下划线处应填入的是 【14】 。(分数:2.00)填空项 1:_55.以下程序运行后的输出结果是 【15】 。int f(int a, int n)if(n=1)return f(a, n-1)+an-1;else return 0;main()int aa5=(1, 2, 3, 4,
26、5), s;s=f(aa, 5); printf(“% d/n“, s);(分数:2.00)填空项 1:_二级 C 语言笔试-88 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.以下程序中函数 sort 的功能是对 a 所指数组中的数据进行由大到小的排序:float sort(int a, int n)int i, j, t;for(i=0; in-1; i+)for(j=i+1; jn; j+)if(aiaj)t=ai; ai=aj; aj=t; main()int aa10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
27、 i;sort(for(i=0; i10; i+)printf(“% d“, aai);printf(“/n“);程序运行后的输出结果是_。(分数:2.00)A.1, 2, 3, 4, 5, 6, 7, 8, 9, 10B.10, 9, 8, 7, 6, 5, 4, 3, 2, 1C.1, 2, 3, 8, 7, 6, 5, 4, 9, 10 D.1, 2, 10, 9, 8, 7, 6, 5, 4, 3解析:解析 本题考查数组名作为函数形参的函数调用问题。数组名作函数形参是按地址传递,形参的改变可以传回实参。sort 函数的两个形参中一个是数组名,sort 函数的功能是对数组元素进行由大到小
28、的排序。主函数调用 sort 函数时,实参为 aa3元素的地址和整数 5,即 sort 函数将对数组 aa 中的元素aa3、aa4、aa5、aa6、aa75 个元素的值进行由大到小的排序,排序后 aa3=8、aa4=7、aa5=6、aa6=5、aa5=4,而数组 aa 中其余元素的值不变,因此结果是 C。2.以下能正确定义数组并正确赋初值的语句是_。(分数:2.00)A.int N=5, bN=N;B.int a12=1, 3;C.int c2=1, 2, 3, 4;D.int d32=1, 2, 34; 解析:解析 本题考查二维数组的定义。不能对数组进行动态定义,选项 A 错误;选项 C 省
29、略第二维的长度;选项 B 中初值的行数超过数组第一维的长度。3.以下不能定义为用户标识符的是_。(分数:2.00)A.scanfB.VoidC._3comD.int 解析:解析 本题选项 D 中 int 为 C 语言的保留字,是错误的。注意:C 语言的标识符是区分大小写的,void 是 C 语言的保留字,而 Void 不是 C 语言的保留字,故 Void 也可定义为用户标识符。4.有以下程序:void sott(int a, int n)int i, j, t;for(i=0; in-1; i+)for(j=i+1; jn; j+)if(aiaj)t=ai;ai=aj;aj=t;)main()
30、int aa10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, I;sort(aa+2, 5);for(i=0; i10; i+)printf(“% d“, aai);printf(“/n“);程序运行后的输出结果是_。(分数:2.00)A.1, 2, 3, 4, 5, 6, 7, 8, 9, 10,B.1, 2, 7, 6, 3, 4, 5, 8, 9, 10,C.1, 2, 7, 6, 5, 4, 3, 8, 9, 10, D.1, 2, 9, 8, 7, 6, 5, 4, 3, 10,解析:解析 aa+2=aa2,因此 sort(aa+2,5)是从 aa2开始,依次与后面
31、的元素进行比较,将当前值小于其后一项的值进行互换,循环 5 次。5.下到叙述中正确的是_。(分数:2.00)A.C 语言中既有逻辑类型也有集合类型B.C 语言中没有逻辑类型但有集合类型C.C 语言中有逻辑类型但没有集合类型D.C 语言中既没有逻辑类型也没有集合类型 解析:解析 本题考查 C 语言中数据类型的种类,C 语言中没有逻辑类型和集合类型。C 语言的数据类型有:整型、字符型、实型、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。各种数据类型变量的定义和常量的表示形式见各个考点的理论链接。6.有如下函数调用语句:func(rec1, rec2+rec3, (rec4, rec
32、5);该函数调用语句中,含有的实参个数是_。(分数:2.00)A.3 B.4C.5D.有语法错解析:解析 本题考查函数实参的概念。函数的调用形式为:函数名(实参 1,实参 2,)其中实参可以是常量、变量或表达式,题目中 ree2+rec3 是算术表达式,(rec4,rec5)是逗号表达式。7.有以下程序段:int k=0, a=1, b=2, c=3;k=ab? b:a; k=kc? c:k;执行该程序后,k 的值是_。(分数:2.00)A.3B.2 C.1D.0解析:解析 第一个表达式得到 k=2,对于第二个表达式,因为 k=23,k 仍然赋值为 k。因此最后 k 值为 2。8.有以下程序:
33、float fun(int x, int y)return(x+y);main()int a=2, b=5, c=8;printf(“% 3.0f/n“, fun(int)fun(a+c, b) , a-c) );程序运行后的输出结果是_。(分数:2.00)A.编译错误B.9 C.21D.9.0解析:解析 函数 fun 的功能是求两个数之和,其形参数据类型为 int 型,函数的返回值类型是 float型。fun(int)fun(a+c,b),a-c)中有两层函数调用,其中内层调用是 fun(a+c,b),因a+c+b=2+8+5=15,而返回类型是 float 型,所以 fun(a+c,b)的
34、值为 15.0,将该值强制变换为 int 型后作为外层函数调用的参数,即 fun(15,a-c)=15+a-c=15+2-8=9.0。因 printf 语句的输出格式为“%3.0f“,即小数点后 0 位小数,故程序的输出为 9。9.以下程序的输出结果是_。char cchar(char ch)if(ch=Areturn ch;main()char s=“ABC+abc=defDEF“,*p=s;while(* p)* p=cchar(* p);p+;printf(“% s/n“, s);(分数:2.00)A.abe+ABC=DEFdefB.abc+abe=defdef C.abcaABCDEF
35、defD.abcabcdefdef解析:解析 字符数组元素作函数参数是单向的值传递。函数 cchar 的功能是将大写字母转换为小写字母。主函数中 while 循环语句的条件是判断指针 p 当前指向的字符是否为空,若不为空,则调用函数cchar,即主函数中通过循环语句将字符串“ABC+abc=defDEF“中的大写字母全部转换为小写字母,因此printf 的输出结果为选项 B。10.有如下程序:main()int s=0, a=1,n;scanf(“% d“, dos+=1; a=a-2;while(a!=n)printf(“% d/n“, s);若要使程序输出 2,则应该从键盘输入的值是_。(
36、分数:2.00)A.-1B.-3 C.-5D.0解析:解析 本题中如果 printf 函数输出为 2,需要执行两次 s+=1 语句,第一次执行完循环语句后得s=1、a=1-2=-1,第二次执行完循环语句后得 s=1+1=2、a=-1-2=-3,所以正确答案为-3。11.有以下程序:main()int a=666, b=888;printf(“% d/n“, a, b);程序运行后的输出结果是_。(分数:1.00)A.错误信息B.666 C.888D.666,888解析:解析 printf 如果实参个数多余,不算错,只输出前面的正确参数。12.若以下选项中的变量已正确定义,则正确的赋值语句是_。
37、(分数:1.00)A.x1=26.8%3;B.1+2=x2;C.x3=0x12; D.x4=1+2=3;解析:解析 %运算符的两个运算分量必须是整数,选项 A 错误;不能对常量进行赋值,选项 B 和 D 错误。13.数据库系统的核心是_。(分数:1.00)A.数据模型B.数据库管理系统 C.数据库D.数据库管理员解析:解析 数据库管理系统是负责数据库中的数据组织和数据操纵数据维护、控制及保护的数据服务。它是一种系统软件,是数据库系统的核心。14.有以下程序:# define f(x) (x*x)main()int i1, i2;i1=f(8)/f(4); i2=f(4+4)/f(2+2);pr
38、intf(“% d, % d/n“, i1, i2);程序运行后的输出结果是_。(分数:1.00)A.64, 28B.4, 4C.4, 3 D.64, 64解析:解析 用宏代换有:i1=f(8)/f(4)=(88)/(44)=4,i2=f(4+4)/f(2+2)=(4+44+4)/(2+22+2)=3。15.下列数据结构中,能用二分法进行查找的是_。(分数:1.00)A.顺序存储的有序线性表 B.线性链表C.二叉链表D.有序线性链表解析:解析 二分查找只适用于顺序存储的有序表。16.有以下程序:main()int a, b, d=25;a=d/10%9; b=aprintf(“% d, % d
39、/n“, a, b) ;程序运行后的输出结果是_。(分数:1.00)A.6, 1B.2, 1 C.6, 0 (D.2, 0解析:解析 “/”除,“%”取余,“else k=0;C.if(a=b)k=0;else if(b=c)k=1;D.if(ab)k=1;else if(bc)k=1;else k=0;解析:解析 语句 k=ab? (bc? 1:0):0;的功能是如果 ab 同时 bc,k=1,否则 k=0。正确答案为 A。18.设有定义语句:char c1=92,c2=92; ,则以下表达式中值为零的是_。(分数:1.00)A.c1c2 B.c1printf(“% d/n“, *p+*q)
40、;程序运行后的输出结果是_。(分数:1.00)A.16B.10 C.8D.6解析:解析 p 指向了 a3的地址,且*p=a3=4,又有*q=p-2;则 q 指向了 a5的地址,且*q=a5=6,最后输出为 10。21.有以下函数:fun(char *a, char *b) while(*a!=/0)b+;return(*a-*b);该函数的功能是_。(分数:2.00)A.计算 a 和 b 所指字符串的长度之差B.将 b 所指字符串连接到 a 所指字符串中C.将 b 所指字符串连接到 a 所指字符串后面D.比较 a 和 b 所指字符串的大小 解析:解析 它的功能是比较 a,b 所指字符串的大小。
41、ab 返回正数,ab 返回负数,a=b 返同 0。22.结构化程序有 3 种基本结构组成,3 种基本结构组成的算法_。(分数:2.00)A.可以完成任何复杂的任务 B.只能完成部分复杂的任务C.只能完成符合结构化的任务D.只能完成一些简单的任务解析:解析 结构化程序的 3 种基本结构是顺序、循环、选择,任何复杂的任务都可以通过这 3 种结构来实现。23.以下叙述中正确的是_。(分数:2.00)A.全局变量的作用域一定比局部变量的作用域范围大B.静态(stati C.类别变量的生存期贯穿于整个程序的运行期间 C) 函数的形参都属于全局变量D.未在定义语句中赋初值的 auto 变量和 static
42、 变量的初值都是随机值解析:解析 函数的形参是局部变量,只在函数内部起作用,调用函数时为形参分配存储空间,调用结束后释放形参的存储空间,因此选项 C 错误。未在定义语句中赋初值的 static 变量的初值是 0,选项 D错误。局部静态变量也是全局变量,选项 A 错误。24.有以下程序:main()int m3=1, 4, 7, 2, 5, 8, 3, 6, 9);int i, j, k=2;for(i=0; i3; i+)printf(“% d“, mki); 执行后输出结果是_。(分数:2.00)A.456B.258C.369 D.789解析:解析 数组 m 初始化后结果为:m00=1、m0
43、1=4、m02=7、m10=2、m11=5、m12=8、m20=3、m21=6、m22=9。for 循环语句的作用是输出数组元素 m20、m21和 m22,所以输出结果为:369。25.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是_。(分数:2.00)A.char s10=“abcdefg“;B.char t=“abcdefg“, * s=t;C.char s10; s=“abcdefg“; D.char s10; strcpy(s, “abcdefg“);解析:解析 C 语言中不能使用赋值运算符“=”直接对字符数组元素名赋一字符串。选项 C 错误。26.在调用函数时,如果实参是
44、简单变量,它与对应形参之间的数据传递方式是_。(分数:2.00)A.地址传递B.单向值传递 C.由实参传给形参。再由形参传同实参D.传递方式由用户指定解析:解析 本题考查函数调用时的数据流向问题。简单变量只能实现单向的值传递。在调用函数时,通常在主调函数和被调函数之间有数据传递关系。在定义函数时,函数名后面括号中的变量名称为“形参”;在调用函数时,函数名后面括号中的变量名称为“实参”。有关实参和形参的说明如下:(1)形参在函数未被调用时,不占用存储单元,只有在发生函数调用时形参才被分配内存空间,函数调用结束后,释放形参所占的内存空间。(2)在被定义的函数中,必须指定形参的类型。(3)实参可以是
45、常量、变量或表达式。(4)宴参与形参的类型应一致。(5)如果形参是简单变量,实参对形参的数据传递是按值传递,即单向传递,只能由实参传给形参,不能由形参传回来给实参。如果形参是地址变量,实参对形参的数据传递是按地址传递,可以实现双向传递,既能由实参传给形参,又能由形参传回来给实参。27.用树形结构来表示实体之间联系的模型称为_。(分数:2.00)A.关系模型B.网状模型C.层次模型 D.以上 3 个都是解析:解析 层次模型的基本结构是树形结构,这种结构方式在现实世界中很普遍,如家族结构、行政组织机构等,它们自顶向下、层次分明。由第一章树的知识,知道任一树结构均有下列特性:(1)每棵树有且仅有一个无双亲结点,称为根(root)。(2)树中除根外所有结点有且仅有一个双亲。因此,树结构是受到一定限制的,从 E-R 模型观点看,它对于联系也加上了许多限制。28.数据的存储结构是指_。(分数:2.00)A.存储在外存中的数据B.数据所占的存储空间量C.数据在计算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示 解析:解析 数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式。29.下列描述中正确的是_。(分数:2.00)A.软件工程只是解决软件项目的管理问题B.软件工程主要解决软件新产品的生产率问题C.软件工程的主要思想是强调在软件开发过程中需要