1、二级 C 语言笔试-77 及答案解析(总分:94.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下面关于完全二叉树的叙述中,错误的是 _。(分数:2.00)A.除了最后一层外,每一层上的结点数均达到最大值B.可能缺少若干个左右叶子结点C.完全二叉树一般不是满二叉树D.具有结点的完全二叉树的深度为log 2n+12.结构化程序设计主要强调的是 _。(分数:2.00)A.程序的规模B.程序的易读性C.程序的执行效率D.程序的可移植性3.下列叙述中正确的是 _。(分数:2.00)A.线性表是线性结构B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构4.
2、请选出以下程序的输出结果 _。#include stdio. hsub(x, y, z)int x, y,*z;*z=y-x:main()int a, b, c;sub 10,5,sub(7,a,sub(a, b, printf(“%d,% d,/%d5.下述关于数据库系统的叙述中正确的是 _。(分数:2.00)A.数据库系统减少了数据冗余B.数据库系统避免了一切冗余C.数据库系统中数据的一致性是指数据类型的一致D.数据库系统比文件系统能管理更多的数据6.若有下面的说明和定义,则 sizeof(struct a(分数:2.00)A.)的值是_。while(i10)scanf(“%d“, _ )
3、;:(分数:2.00)A.a+(i+)B.strcpy(str+2,strcat(p1,p2);printf(“%s/n“, str);(分数:2.00)A.xyzabcABCB.zabcABCC.yzabcABCD.xyabcABC9.若要用下面的程序片段指针变量 p 指向一个存储整型变量的动态存储单元int *p;p=_ malloc (sizeof (int);则应填入 _。(分数:2.00)A.intB.int*C.(*int)D.(int*)10.下面程序main()int x=100, a=10, b=20, ok1=5, ok2=0;if(ab)if(b!=15)if(!ok1)
4、 x=1;else if(ok2) x=10;x=1;printf(“%d/n“, x);的输出是 _。(分数:2.00)A.-1B.0C.1D.不确定的值11.数据库设计包括两个方面的设计内容,它们是 _。(分数:2.00)A.概念设计和逻辑设计B.模式设计和内模式设计C.内模式设计和物理设计D.结构特性设计和行为特性设计12.关系表中的每一横行称为一个 _。(分数:2.00)A.元组B.字段C.属性D.码13.若有程序fun(int a, int b)static int c=0;c+=a+ b;returm c;main()int x=5,y=3,z=7,r;r=fun(y, x+ y)
5、,z);r=fun (x, y);printf(“%d/n“, r);(分数:2.00)A.23B.15C.19D.1814.字符(char)型数据在微机内存中的存储形式是 _。(分数:2.00)A.反码B.补码C.EBCDIC 码D.ASCII 码15.下面程序的输出是 _。main()char*s=“12134211“;int v1=0,v2=0,v3=0,v4=0,k;for (k=0;sk;k+)switch(sk)default:v4+;case1:v1+;case3:v3+;case2:v2+;printf(“v1=%d, v2=%d,v3=%d, v4=%d/n“,v1,v2,v
6、3,v4);(分数:2.00)A.v1=4,v2=2,v3=1,v4=1B.v1=4,v2=9,v3=3,v4=1C.v1=5,v2=8,v3=6,v4=1D.v1=8,v2=8,v3=8,v4=816.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是 _。(分数:2.00)A.地址传递B.单向值传递C.由实参传递给形参,再由形参传递给实参D.传递方式由用户指定17.设整型数 i=5,则 printf (“%d“, i+i); 的输出为_ 。(分数:2.00)A.10B.11C.12D.语法错误18.以下程序运行后,输出结果为 _。main()int a23=1,3,5,7,
7、9,11,*s2,*pp,*p;s0=a0,s1=a1;pp=s;p=(int*)malloc(sizeof (int);*pp=s11;p=*pp;printf(“%d/n“,*p);(分数:2.00)A.1B.7C.9D.1119.设有如下程序#includeatdio.hmain()int*k, *j, i=100;j=printf(“%d/n“,*k);上述程序的输出结果是 _。(分数:2.00)A.运行错误B.100C.i 的地址D.i 的地址20.下面程序main()int x=32;printf(“%d/n“, x=x1);的输出是 _。(分数:2.00)A.100B.160C.
8、120D.6421.若有以下定义和语句;int a=1,2,3,4,5,6,7,8,9,10,*p=a;(分数:2.00)A.p+=2,*(p+)B.p+=2,*+pC.p+=3,*p+D.p+=2,+*p22.没有以下语句,其中不是对 a 数组元素的正确引用的是:_ (其中 0i10)int a10=1,1,2,3,4,5,6,7,8,9,*p=a;(分数:2.00)A.ap-aB.*(B.char b10=h, e, l, l, o,!;C.char b10;strcpy (b, “Hello!“;D.char b10=“Hello!“;25.请读程序:#include stdio. hm
9、ain()int a; float b, c;scanf (“% 2d% 3%/4f“,printf(“/na=%d, b=%f, c=%f/n“, a, b, c);若运行时从键盘上输入 9876543210 (分数:2.00)A.B.C.D.26.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是 _。(分数:2.00)A.控制流B.加工C.数据存储D.源和潭27.设 a、b 和 c 都是 int 型变量,且 a=3、b=4、c=5,则下面的表达式中,值为 0 的表达式是 _。(分数:2.00)A.aint i=0;for(
10、;j6;ci=getchar(),i+);for(i=0;i6;i+)putchar(ci);printf(“/n“);如果从键盘上输入:ab回车c回车def回车则输出结果为 _。(分数:2.00)A.abcdefB.abcdC.abcdD.abcdef29.以理对枚举类型名的定义中正确的是 _。(分数:2.00)A.enum a=one, two, three);B.enum a one=9, two=1three;C.enum a=“one“, “two“, “three“;D.enum a “one“, “two“. “three“;30.下面程序输出的结果是 _。main ()int
11、i=5, j=9,x;x= (i=j?: (j=7);printf(“/n%d, %d“, i, j);(分数:2.00)A.5,7B.5,5C.语法错误D.7,531.软件需求分析一般应确定的是用户对软件的 _。(分数:2.00)A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求32.fgetc 函数的作用是从指定文件读入一个个字符,该文件的打开方式必须是_。(分数:2.00)A.只读B.追加C.读或读写D.以上均正确33.下面程序的输出是 _。main()int x=3 ,y=6,a=0;,while(x+!=(y=1)a+=1;if(yx) break;printf(“x=%
12、d, y=%d, a=%d/n, x, y,(分数:2.00)A.;A) x=4,y=4,a=1B) x=5,y=5,a=1C) x=5,y=4,a=3D) x=5,34.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是 _。(分数:2.00)A.概要设计B.详细设计C.可行性分析D.需求分析35.以下程序的输出结果是 _。#include stdio. h#define FUDGE(y) 2.84+y#define PR((分数:2.00)A.pri二、填空题(总题数:12,分数:24.00)36.在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种;
13、前序遍历、 【1】 遍历和后序遍历。(分数:2.00)填空项 1:_37.结构化程序设计方法的主要原则可以概括为自顶向下、逐渐求精、 【2】 和限制使用 goto 语句。(分数:2.00)填空项 1:_38.软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和 【3】 的设计来实现。(分数:2.00)填空项 1:_39.数据库系统的三级模式分别为 【4】 模式、内部级模式与外部级模式。(分数:2.00)填空项 1:_40.数据字典是各类数据描述的集合,它通常包括 5 个部分,即数据项、数据结构、数据流、 【5】 和处理过程。(分数:2.00)填空项 1:_41.下
14、面程序的输出是 【6】 。main()int arr10,i,k=0;for(i=0;i10;i+)arri=i;for(i=1;i4;i+)k+=arri+i;printf(“%d/n“k);(分数:2.00)填空项 1:_42.若 a=10,b=20,则表达式!(ab)的值是 【7】 。(分数:2.00)填空项 1:_43.有以下程序int fa(int x)return x*x;int fb(int x) return x*x*x;int f(ing(*f1)(),int (*f2)(),int x)return f2(x)-f1(x);main()int i;i=f(fa,fb,2),
15、printf(“%d/n“,i);程序运行后,输出结果是 【8】 。(分数:2.00)填空项 1:_44.下面程序的输出是 【9】 。main()enum emem1=3,em2=1,em3;char*aa=“AA“m,“BB“,“CC:,“DD“;printf(“%s%s%s/n,aaem1,aaem2,aaem3);(分数:2.00)填空项 1:_45.下列程序的输出结果是 【10】 。int t(int x,int y,int cp,int dp)cp=x*x+y*y;dp=x*x-y*y;main()int a=4,b=3,c=5,d=6;t(a,b,c,d);printf(“%d%d
16、/n“,c,d);(分数:2.00)填空项 1:_46.有以下定义语句,则 sizeof(a)的值是 【11】 ,而 sizeof(a.share)的值是 【12】 。struct dateint day;int mouth;int year,union int share1;float share2;share;a;(分数:2.00)填空项 1:_47.下述函数用于统计一行字符中的单词个数,单词之间用空格分隔。word_num(strchar str;int i,num=0,word=0;for(i=0; stri!= 【13】 ;i+)if( 【14】 =“)word=0else if(w
17、ord=0)word=1;【15】 ;return(num);(分数:2.00)填空项 1:_二级 C 语言笔试-77 答案解析(总分:94.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下面关于完全二叉树的叙述中,错误的是 _。(分数:2.00)A.除了最后一层外,每一层上的结点数均达到最大值B.可能缺少若干个左右叶子结点 C.完全二叉树一般不是满二叉树D.具有结点的完全二叉树的深度为log 2n+1解析:评析 满二叉扔指除最后一层外每一层上所有结点都有两个子结点的二叉树。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干子结点
18、(叶子结点)的二叉数。2.结构化程序设计主要强调的是 _。(分数:2.00)A.程序的规模B.程序的易读性 C.程序的执行效率D.程序的可移植性解析:评析 结构化程序设计主要强调的是结构化程序清晰易读,可理解性好,程序员能够进行逐步求精、程序证明和测试,以保证程序的正确性。3.下列叙述中正确的是 _。(分数:2.00)A.线性表是线性结构 B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构解析:评析 一般将数据结构分为两大类型:线性结构与非线形结构。线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。4.请选出以下程序的输出结果 _。#include stdio.
19、hsub(x, y, z)int x, y,*z;*z=y-x:main()int a, b, c;sub 10,5,sub(7,a,sub(a, b, printf(“%d,% d,/%d解析:评析 sub()函数的作用是将形参 y 和 x 的差赋给了 z 指向的那个内存地址,所以在 sub(0.,5,while(i10)scanf(“%d“, _ );:(分数:2.00)A.a+(i+) B.strcpy(str+2,strcat(p1,p2);printf(“%s/n“, str);(分数:2.00)A.xyzabcABCB.zabcABCC.yzabcABCD.xyabcABC 解析:
20、评析 strcat(p1,p2)将字符串 abcABC 放到了*p1 所指向的存储单元中;strcpy 在本题将 abcABC复制到 sir+2 所指向的存储单元中,即覆盖原 str 数组中的字符 z 及其后的所有字符,故 str 的值为“xyabcABC”。9.若要用下面的程序片段指针变量 p 指向一个存储整型变量的动态存储单元int *p;p=_ malloc (sizeof (int);则应填入 _。(分数:2.00)A.intB.int*C.(*int)D.(int*) 解析:评析 不论 p 是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的格式为(数据
21、类型*)。10.下面程序main()int x=100, a=10, b=20, ok1=5, ok2=0;if(ab)if(b!=15)if(!ok1) x=1;else if(ok2) x=10;x=1;printf(“%d/n“, x);的输出是 _。(分数:2.00)A.-1 B.0C.1D.不确定的值解析:评析 第一个判断值为真,过渡到下一个判断,第二个判断为真,过度到第三个判断如此循环,在打印输出语句的前一行,程序给变量 x 赋了值,为-1,所以,无论前期如伺变化,最后的 x 值依然为-1。11.数据库设计包括两个方面的设计内容,它们是 _。(分数:2.00)A.概念设计和逻辑设计
22、 B.模式设计和内模式设计C.内模式设计和物理设计D.结构特性设计和行为特性设计解析:评析 数据库设计可分为概念设计与逻辑设计。概念设计的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。逻辑设计的主要工作是将 ER 图转换为指定的 RDBMS 中的关系模型。12.关系表中的每一横行称为一个 _。(分数:2.00)A.元组 B.字段C.属性D.码解析:评析 在关系数据库中,关系模型采用二维表来表示,简称“表”。二维表是由表框架及表元组组成。在表框架中,按行可以存放数据,每行数据称为元组。13.若有程序fun(int a, int b)static int c=0;c+=a+ b;
23、returm c;main()int x=5,y=3,z=7,r;r=fun(y, x+ y),z);r=fun (x, y);printf(“%d/n“, r);(分数:2.00)A.23 B.15C.19D.18解析:评析 static 声明的外部变量只限于被本文引用,而不能被其他文件引用。用 static 来声明一个变量的作用有:对局部变量用 static 声明,则为该变量分配的空间在整个程序执行期间始终存在;全部变量用 static 声明,则该变量的作用域只限于本文件模块(即被声明的文件中)。调用第一个fun,其两个实参的值为(3,5+3)与 7 即 8 与 7,在函数 fun 执行结
24、束返回 15。第二次调用 fun 时,由于static 为静态类型,其值保留,执行 fun(5,3)后,其返回值为 23,故选 A。14.字符(char)型数据在微机内存中的存储形式是 _。(分数:2.00)A.反码B.补码C.EBCDIC 码D.ASCII 码 解析:评析 将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的 ASCII 码值放到存储单元中。15.下面程序的输出是 _。main()char*s=“12134211“;int v1=0,v2=0,v3=0,v4=0,k;for (k=0;sk;k+)switch(sk)default:v4+
25、;case1:v1+;case3:v3+;case2:v2+;printf(“v1=%d, v2=%d,v3=%d, v4=%d/n“,v1,v2,v3,v4);(分数:2.00)A.v1=4,v2=2,v3=1,v4=1B.v1=4,v2=9,v3=3,v4=1C.v1=5,v2=8,v3=6,v4=1 D.v1=8,v2=8,v3=8,v4=8解析:评析 当 switch 后面括弧内的表达式的值与某一个 acse 后面的常量的表达式的值相等时,就执行此 case 后面的语句,若所有的 case 中的常量表达式的值都没有与表达式的值匹配的,就执行 default后面的语句。16.在调用函数时
26、,如果实参是简单变量,它与对应形参之间的数据传递方式是 _。(分数:2.00)A.地址传递B.单向值传递 C.由实参传递给形参,再由形参传递给实参D.传递方式由用户指定解析:评析 C 语言规定,实参变量对形参变量的数据传递是“单向值传递”,只由实参传给形参。在内存中,实参单元与形参单元是不同的单元。调用结束后,实参单元仍保留并维持原值。17.设整型数 i=5,则 printf (“%d“, i+i); 的输出为_ 。(分数:2.00)A.10B.11C.12D.语法错误 解析:评析 C 语言中有基本的算术运算符(+、-、*、/)还包括自增自减运算符(+、-),在 C 语言解析表达式时,它总是进
27、行贪婪咀嚼,这样,该表达式就被解析为 i+i,显然该表达式不合 C 语言语法。18.以下程序运行后,输出结果为 _。main()int a23=1,3,5,7,9,11,*s2,*pp,*p;s0=a0,s1=a1;pp=s;p=(int*)malloc(sizeof (int);*pp=s11;p=*pp;printf(“%d/n“,*p);(分数:2.00)A.1B.7C.9 D.11解析:评析 s 是一个含有两个元素的指针数组,pp 是一个指向指针变量的指针,s0是指向二维数组a 行下标为 0 的元素的首地址,即时 a00的地址,s1为 a10的地址。pp 的值为 s0的地址。*pp=s
28、11后,a00的值将被赋值为 a11的值,执行 p=*pp;后,p 中将是 s0的值,最后的输出语句将输出地址 s0所指向的数据,即 a00。19.设有如下程序#includeatdio.hmain()int*k, *j, i=100;j=printf(“%d/n“,*k);上述程序的输出结果是 _。(分数:2.00)A.运行错误B.100 C.i 的地址D.i 的地址解析:评析 j=printf(“%d/n“, x=x1);的输出是 _。(分数:2.00)A.100B.160C.120D.64 解析:评析 是 C 语言中规定的左移运算符,例如,a=a2,这个语句即是将 a 的二进制数左移两位
29、,左移一位相当于该数乘于 2,左移两位相当于该数乘以 2 的 2 次方。所以,x1=32*2=64。21.若有以下定义和语句;int a=1,2,3,4,5,6,7,8,9,10,*p=a;(分数:2.00)A.p+=2,*(p+) B.p+=2,*+pC.p+=3,*p+D.p+=2,+*p解析:评析 引用一个数组元素,可以用:(1)下标法,如 ai形式;(2)指针法,如*(a+i)或*(p+i)。数组的下标从 0 开始,值为 3 的数组元素是 a2。B、C 的内容为 a3,D 将 a2前自加,结果为 4。22.没有以下语句,其中不是对 a 数组元素的正确引用的是:_ (其中 0i10)in
30、t a10=1,1,2,3,4,5,6,7,8,9,*p=a;(分数:2.00)A.ap-aB.*(B.char b10=h, e, l, l, o,!; C.char b10;strcpy (b, “Hello!“;D.char b10=“Hello!“;解析:评析 在 C 语言中,大写字母和小写字母被认为是两个不同的字符,因此,“hello!”和“Hello!”是两个不同的字符串。25.请读程序:#include stdio. hmain()int a; float b, c;scanf (“% 2d% 3%/4f“,printf(“/na=%d, b=%f, c=%f/n“, a, b,
31、 c);若运行时从键盘上输入 9876543210 (分数:2.00)A.B.C. D.解析:评析 scanf()用户从键盘录入助数字的第 1、2 位存入整型变量 a;把第 3、4、5 位存入单精度实型变量 b,把第 6、7、 8、9 位存入单精度实型变量 c,用户录入的第 10 位被 scanf()遗弃。这时变量a、b、c 的值分别为:98、765.000000、 4321.00000026.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是 _。(分数:2.00)A.控制流 B.加工C.数据存储D.源和潭解析:评析 数据流图
32、从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)、源和潭。27.设 a、b 和 c 都是 int 型变量,且 a=3、b=4、c=5,则下面的表达式中,值为 0 的表达式是 _。(分数:2.00)A.aint i=0;for(;j6;ci=getchar(),i+);for(i=0;i6;i+)putchar(ci);printf(“/n“);如果从键盘上输入:ab回车c回车def回车则输出结果为 _。(分数:2.00)A.abcdefB.abcdC.abcd D.abcdef解析:评析 1getchar():
33、此函数的作用是从终端(或系统隐含指定的输入设备)输入一个字符。2putchar():此函数的作用是向终端输出一个字符,也可以输出控制字符。本题在输入字符时,ab 和c 后面的回车符分别赋给了 c2和 c4,所以,正确答案为 C。29.以理对枚举类型名的定义中正确的是 _。(分数:2.00)A.enum a=one, two, three);B.enum a one=9, two=1three; C.enum a=“one“, “two“, “three“;D.enum a “one“, “two“. “three“;解析:评析 声明枚举类型用 enum 开头。例如:enum weekday(s
34、un,mon,tue,wed,thu,fri,sat);说明:1、在 C 编译中,对枚举元素按常量处理,同时可以改变他们的值。2、枚举值可以用来做判断比较。3、一个整数不能直接赋给一个枚举变量。30.下面程序输出的结果是 _。main ()int i=5, j=9,x;x= (i=j?: (j=7);printf(“/n%d, %d“, i, j);(分数:2.00)A.5,7 B.5,5C.语法错误D.7,5解析:评析 条件表达式的一般形式为:表达式 1?表达式 2:表达式 3;先求解表达式 1,若为真则求解表达式 2;若表达式 1 的值为假,则求解表达式 3。本题中先判断 i=j,不等,执
35、行 j=7;然后执行 x=7。故本题为 A。31.软件需求分析一般应确定的是用户对软件的 _。(分数:2.00)A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求 解析:评析 软件需求分析中需要构造一个完全的系统逻辑模型,理解用户提出的每一功能与性能要求,使用户明确自己的任务。因此,需求分析应确定用户对软件的功能需求和非功能需求。32.fgetc 函数的作用是从指定文件读入一个个字符,该文件的打开方式必须是_。(分数:2.00)A.只读B.追加C.读或读写D.以上均正确 解析:评析 fgetc 函数是指从指定的文件读入一个字符,该文件必须是以读或读写方式打开的。fgetc函数的调用
36、形式为: ch=fgetc(fp);。33.下面程序的输出是 _。main()int x=3 ,y=6,a=0;,while(x+!=(y=1)a+=1;if(yx) break;printf(“x=%d, y=%d, a=%d/n, x, y,(分数:2.00)A.;A) x=4,y=4,a=1B) x=5,y=5,a=1C) x=5,y=4,a=3D) x=5,解析:评析 注意的是 x+中 x 值的引用时,这里应当是先引用,后自加,具体抽打过程如下:第一次 while 循环:条件为真,执行 a=a+1=1 此时,x 的值已为 4,判断 yx 不成立,继续执行循环;第二次 while 循环:
37、条件为假,此时 x 的值已为 5,退出 while 循环,执行 printf。34.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是 _。(分数:2.00)A.概要设计B.详细设计C.可行性分析D.需求分析 解析:评析 需求分析是对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。编写软件规格说明书及初步的用户手册,提交评审。35.以下程序的输出结果是 _。#include stdio. h#define FUDGE(y) 2.84+y#define PR((分数:2.00)A.pri解析:评析 在程序中如果有带实参的宏,则按#define 命令
38、行中指定的字符串从左到右进行置换,如果串中包含宏中的形参,则将程序语句中相应的实参代替形参。将实参带入已经定义的宏中,可以得出答案为“12”。二、填空题(总题数:12,分数:24.00)36.在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种;前序遍历、 【1】 遍历和后序遍历。(分数:2.00)填空项 1:_ (正确答案:中序)解析:评析 在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、中序遍历和后序遍历前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且遍历左、右子树时,仍然先访问根结点
39、,然后遍历左子树,最后遍历右子树。中序遍历指在访问根结点、遍历左了树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树:并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历右子树,然后访问根结点,最后遍历左子树;并且遍历左、右子树时,仍然光遍历右子树,然后访问根结点,最后遍历左子树。37.结构化程序设计方法的主要原则可以概括为自顶向下、逐渐求精、 【2】 和限制使用 goto 语句。(分数:2.00)填空项 1:_ (正确答案:模块化)解析:评析 结构化程序设计方法的主要原则可以概括为自顶向下
40、、逐步求精、模块化和限制使用 goto语句。自顶向下程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。逐步求精:对复杂问题,应设计一些子目标作过度,逐步细化。模块化:一个复杂问题,肯定是由若干精简单的问题构成。模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块。限制使用 goto 语句。38.软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和 【3】 的设计来实现。(分数:2.00)填空项 1:_ (正确答案:测试实例)解析
41、:评析 进行软件测试时,应精心设计测试实例和选择测试数据,以对系统进行全面测试。39.数据库系统的三级模式分别为 【4】 模式、内部级模式与外部级模式。(分数:2.00)填空项 1:_ (正确答案:概念或概念级)解析:评析 数据库系统在其内部具有三级模式及二级映射,三级模式分别是概念级模式、内部级模式和外部级模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户(应用)公共数据视图。内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及 hash 等存取力式与存取路径,内模式的物理性主要体现在操作系统及文件级上,它还未深入到设备级上(如磁盘及磁
42、盘操作)。外模式也称子模式或用户模式,它是用户的数据视图,也就是用户所见到的数据模式,它由概念模式推导而出。40.数据字典是各类数据描述的集合,它通常包括 5 个部分,即数据项、数据结构、数据流、 【5】 和处理过程。(分数:2.00)填空项 1:_ (正确答案:数据存储)解析:评析 数据字典是各类数据描述的集合,它通常包括 5 个部分,即数据项,是数据的最小单位;数据结构,是若干数据项有意义的集合;数据流,可以是数据项,也可以是数据结构,表示某一处理过程的输入或输出;数据存储,处理过程中存取的数据,常常是手工凭证、手工文档或计算机文件;处理过程。41.下面程序的输出是 【6】 。main()
43、int arr10,i,k=0;for(i=0;i10;i+)arri=i;for(i=1;i4;i+)k+=arri+i;printf(“%d/n“k);(分数:2.00)填空项 1:_ (正确答案:12)解析:评析 本题通过第一个 for 循坪将数组 arr0-arr9分别赋值为 0-9,通过第二个 for 循环的三次循环累加,求出结果为 12,具体分析如下:i=1:k=0+arr1+1 即 k=2;i=2:k=2+arr2+2 即 k=6;i=3:k=6+arr3+3 即 k=12;42.若 a=10,b=20,则表达式!(ab)的值是 【7】 。(分数:2.00)填空项 1:_ (正确
44、答案:0)解析:评析 已知 a=10,b=20,所以逻辑表达式 ab 的值为 true,即为 1,在这个表达式前面有一个逻辑运算符!,表示反操作,所以整个语句的值应当为 false,即为 0。43.有以下程序int fa(int x)return x*x;int fb(int x) return x*x*x;int f(ing(*f1)(),int (*f2)(),int x)return f2(x)-f1(x);main()int i;i=f(fa,fb,2),printf(“%d/n“,i);程序运行后,输出结果是 【8】 。(分数:2.00)填空项 1:_ (正确答案:4)解析:评析 在
45、主函数中调用函数 f,函数 f 有三个参数,形参 f1 与 f2 分别是两个指向函数的指针。在 f 中执行 f2(x)-f1(x),实际上是执行了 fb()2)-fa(2),故执行 i=(fa,fb,2)卮 i 的值为 23-22=4。44.下面程序的输出是 【9】 。main()enum emem1=3,em2=1,em3;char*aa=“AA“m,“BB“,“CC:,“DD“;printf(“%s%s%s/n,aaem1,aaem2,aaem3);(分数:2.00)填空项 1:_ (正确答案:DDBBCC)解析:评析 C 语言对枚举的定义规定:在枚举中声明的各个枚举元素,如果没有明确指出
46、某个枚举元素的值,它的上一个元素存在并有明确值的情况下,这个枚举元素的值为其上一个元素的值+1。在本题中,没有明确说明枚举元素 em3 的值,则 em3=em2+1=1+1=2,进而可知,在 printf()打印函数中,要打印的数组元素是 aa3、aa1、aa2,因此最后的打印结果应当为“DDBBCC”。45.下列程序的输出结果是 【10】 。int t(int x,int y,int cp,int dp)cp=x*x+y*y;dp=x*x-y*y;main()int a=4,b=3,c=5,d=6;t(a,b,c,d);printf(“%d%d/n“,c,d);(分数:2.00)填空项 1:_ (正确答案:56)解析:评析 本题中 a,b,c,d 足实参,x,y,cp,dp 是形参。C 语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传