1、二级 C语言笔试-85 及答案解析(总分:109.00,做题时间:90 分钟)一、选择题(总题数:40,分数:79.00)1.以下选项中不合法的标识符是_。(分数:2.00)A.printB.FORC.aD._002.有以下程序 A:int f1(int x,int y) return xy?x:y; int f2(int x,int y) return xy?y:x; )main()int a=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d);f=f1(f2(a,b),f2(c,d);g=a+b+c+d-e-f;printf(“%d,%d,%d/n“,e,f,
2、g);程序运行后的输出结果是_。(分数:2.00)A.4,3,7B.3,4,7C.5,2,7D.2,5,73.有以下语句:int b;char c10;,则正确的输入语句是_。(分数:2.00)A.scanf(“%d%s“,b,c);B.scanf(“%d%s“,b,c);C.scanf(“%d%s“,b,c);D.scanf(“%d%s“,b,c);4.有一个名为 ink.txt的文件,内容如下:#define HDY(A,B) A/B#define PRINT(Y) printf(“y=%d/n.,Y)有以下程序:#include “init.txt“main()int a=1,b=2,c
3、=3,d=4,k;K=HDY(a+c,b+d);PRINT(K);下面针对该程序的叙述正确的是_。(分数:2.00)A.编译有错B.运行出错C.运行结果为 y=0D.运行结果为 y=65.有以下程序:main()int a44=1,4,3,2,8,6,5,7,3,7,2,5,4,8,6,1,i,k,t;for(i=0;i3;i+)for(k=i+i;k4;k+)if(aiiakk)t=aii;aii=akk;akk=t;for(i=0;i4;i+)printf(“%d,“,a0i);程序运行后的输出结果是_。(分数:2.00)_6.设有定义:int n1=0,n2,*P=n2,*q=n1;,以
4、下赋值语句中与 n2=n1;语句等价的是_。(分数:2.00)A.*p=*q;B.p=q;C.*p=n1;D.p=*q;7.在数据库系统中,用户所见的数据模式为_。(分数:2.00)A.概念模式B.外模式C.内模式D.物理模式8.有以下程序:int add(int a,int b)return(a+b);main()int k,(*f)(),a=5,b=10;f=add;则以下函数调用语句错误的是_。(分数:2.00)A.k=(*f)(a,b);B.k=add(a,b);C.k=*f(a,b);D.k=f(a,b);9.设有定义:int a=2,b=3,c=4;,则以下选项中值为 0的表达式是
5、_。(分数:2.00)A.(!a=1)(!b=0)B.(aB) !c|1C.abD.a|(b+b)(c-10.有以下程序:main()int a=0,b=0,C=0,d=0;if(a=1)b=1;c=2;else d=3;printf(“%d,%d,%d,%d/n“,a,b,c,d);程序输出_。(分数:2.00)A.0,1,2,0B.0,0,0,3C.1,1,2,0D.编译有错11.在长度为 64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为_。(分数:2.00)A.63B.64C.6D.712.下列叙述中正确的是_。(分数:2.00)A.数据的逻辑结构与存储结构必定是一一对应的B.
6、由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构C.程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构D.以上三种说法都不对13.有以下结构体说明,变量定义和赋值语句:struct STDchar name10;int age;char *;s5,*ps;ps=s0;则以下 scanf函数调用语句中错误的结构体变量成员是_。(分数:2.00)_14.设有定义:int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是_。(分数:2.00)A.k+B.k+=1C.+kD.k+115.有以下程序:maln()int i,s=0,t=1,2,3
7、,4,5,6,7,8,9;for(i=0;i9;i+=2)s+=*(t+i);printf(“%d/n“,s);程序执行后的输出结果是_。(分数:2.00)A.45B.20C.25D.3616.有以下程序:main()char a7=“a0/0a0/0“;int i,j;i=sizeof((分数:2.00)A.;j=strlen(a);,按在内存中的存放顺序,a 数组的第 10个元素是_(分数:2.00)A.a04B.a13C.a03D.a1423.在结构化程序设计中,模块划分的原则是_。(分数:2.00)A.各模块应包括尽量多的功能B.各模块的规模应尽量大C.各模块之间的联系应尽量紧密D.模
8、块内具有高内聚度、模块间具有低耦合度24.以下叙述中正确的是_。(分数:2.00)A.预处理命令行必须位于 C源程序的起始位置B.在 C语言中,预处理命令行都以“#”开头C.每个 C程序必须在开头包含预处理命令行:#includestdio.hD.C语言的预处理不能实现宏定义和条件编译的功能25.用树形结构表示实体之间联系的模型是_。(分数:2.00)A.关系模型B.网状模型C.层次模型D.以上三个都是26.在 16位编译系统上,若有定义 int a=10,20,30,*p=a;,当执行 p后,下列说法错误的是_。(分数:2.00)A.p向高地址移了一个字节B.p向高地址移了一个存储单元C.p
9、向高地址移了两个字节D.p与 a+1等价27.有以下程序:void swapl(int c0,int c1)int t;t=c00;c00=c10;c10=t;void swap2(int*c0,int*c1)int t;t=*c0;*c0=*c1;*c1=t;main()int a2=3,5),b2=3,5;swapl(a,a+1);swap2(b0,b1);printf(“%d%d%d%d/n“,a0,a1,b0,b1);程序运行后的输出结果是_。(分数:2.00)A.3 5 5 3B.5 3 3 5C.3 5 3 5D.5 3 5 328.有以下程序:#includestdio.hmai
10、n()char cl=1,c2=2;cl=getchar();c2=getchar();putchar(c1);putchar(c2);当运行时输入:a回车后,以下叙述正确的是_。(分数:2.00)A.变量 c1被赋予字符 a,c2 被赋予回车符B.程序将等待用户输入第 2个字符C.变量 c1被赋予字符 a,c2 中仍是原有字符 2D.变量 c1被赋予字符 a,c2 中将无确定值29.在 C语言中,只有在使用时才占用内存单元的变量,其存储类型是_。(分数:2.00)A.auto和 registerB.extern和 registerC.auto和 staticD.static和 registe
11、r30.以下关于逻辑运算符两侧运算对象的叙述中正确的是_。(分数:2.00)A.只能是整数 0或 1B.只能是整数 0或非 0整数C.可以是结构体类型的数据D.可以是任意合法的表达式31.以下叙述正确的是_。(分数:2.00)A.C语言中的文件是流式文件,因此只能顺序存取数据B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第一个数据D.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失32.算法中,对需要执行的每一步操作,必须给出清楚、严格的规定这属于算法的_。(分数:2.00)
12、A.正当性B.可行性C.确定性D.有穷性33.数据的存储结构是指_。(分数:2.00)A.存储在外存中的数据B.数据所占的存储空间量C.数据在计算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示34.按照“后进先出”原则组织数据的数据结构是_。(分数:2.00)A.队列B.栈C.双向链表D.二叉树35.以下叙述中正确的是_。(分数:2.00)A.调用 printf函数时,必须要有输出项B.使用 putchar函数时,必须在之前包含头文件 stdio.hc)在 C语言中,整数可以以十二进制、八进制或十六进制的形式输出 D) 调用 getchar函数读入字符时,可以从键盘上输入字符所对应的 A
13、SC码36.以下语句中存在语法错误的是_。(分数:2.00)_37.有以下程序:main()int a=1,b;for(b=1:b=10;b+)if(a=8)break;if(a%2=1)a+=5;continue;a-=3:printf(“%d/n“,b);程序运行后的输出结果是_。(分数:2.00)_38.有以下程序:mian()int i,j;for(i=1;i4;i+)for(j=i;j4;j+)printf(“%d*%d=%d“,i,j,i*j);printf(“/n“);程序运行后的输出结果是_。(分数:2.00)A.1*1=1 1*2=2 1*3=3B.1*1=1 1*2=2 1
14、*3=32*1=2 2*2=4 2*2=4 2*3=63*1=3 3*3=9C.1*1=1D.1*1=11*2=2 2*2=4 2*1=2 2*2=41*3=3 2*3=6 3*3=9 3*1=3 3*2=6 3*3=939.以下叙述中错误的是_。(分数:2.00)A.gets函数用于从终端读入字符串B.getchar函数用于从磁盘文件读入字符C.fputs函数用于把字符串输出到文件D.fwrite函数用于以二进制形式输出数据到文件40.有以下程序:#includestdio.h#includestring.h#includevoid f(char*s,char*t)char k;k=*s;
15、*s=*t; *t=k;s+;t-;if(*s)f(s,t):main()char str10=“abcdefg“,*P;P=str+strlen(str)/2+1:f(p,p-2);printf(“%s/n“,str);程序运行后的输出结果是_。(分数:2.00)A.abcdefgB.gfedcbaC.gbcdefaD.abedcfg二、填空题(总题数:15,分数:30.00)41.某二叉树中度为 2的节点有 18个,则该二叉树中有 1 个叶子节点。(分数:2.00)填空项 1:_42.按“先进后出”原则组织数据的数据结构是 1。(分数:2.00)填空项 1:_43.软件需求规格说明书应具有
16、完整性、无歧义性、正确性、可验证性、可修复性等特性,其中最重要的是 1。(分数:2.00)填空项 1:_44.程序测试分为静态分析和动态测试。其中 1 是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。(分数:2.00)填空项 1:_45.在关系数据库中,把数据表示成二维表,每一个二维表称为 1。(分数:2.00)填空项 1:_46.已有定义:char c= ;int a=1,b;(此处 c的初值为空格字符),执行 b=!c a;后 b的值为 1。(分数:2.00)填空项 1:_47.若变量 a,b已定义为 int类型并赋值 21和 55,要求用 printf函
17、数以 a=21,b=55的形式输出,请写出完整的的输出语句 1。(分数:2.00)填空项 1:_48.以下程序运行后的输出结果是_。main()int a,b,c;a=10;b=20;c=(a%b1)|(a/b1);printf(“% d % d % % d/n“,a,b,c);(分数:2.00)填空项 1:_49.以下程序的输出结果是_。#includestdio.hmain()int n=12345,d;while(n!=0)d=n %10;printf(“%d“,d);n/=10;(分数:2.00)填空项 1:_50.以下程序的输出结果是_。#includestdio.hvoid fun
18、(int x)if(x/20)fun(x/2);printf(“%d“,x);main()fun(3);printf(“/n“);(分数:2.00)填空项 1:_51.以下程序的功能是计算:s=1+12+123+1234+12345。请填空。main()int t=0,s=0,i;for(i=1;i=5;i+)t=i+_;s=s+t;printf(“s=%d/n“,s);(分数:2.00)填空项 1:_52.设有定义语句:int a3=0,1,2;,则数组元素 a12的值为 1。(分数:2.00)填空项 1:_53.以下程序的输出结果是_。#includestring.hmain()char
19、a=/1,/2,/3,/4,/0;printf(“% d % d/n“,sizeof(a),strlen(a);(分数:2.00)填空项 1:_54.以下程序的输出结果是_。#includestdio.h#includestring.hchar*fun(char*t)char*P=t;return(p+strlen(t)/2);main()char*str=“abcdefgh“;str=fun(str);puts(str);(分数:2.00)填空项 1:_55.以下程序中函数 fun的功能是:构成一个如图所示的带头节点的单向链表,在节点的数据域中放入了具有两个字符的字符串。函数 disp的功能
20、是显示输出该单链表中所有节点中的字符串。请填空完成函数disp。(分数:2.00)填空项 1:_二级 C语言笔试-85 答案解析(总分:109.00,做题时间:90 分钟)一、选择题(总题数:40,分数:79.00)1.以下选项中不合法的标识符是_。(分数:2.00)A.printB.FORC.a D._00解析:解析 C 语言中标识符的命名必须遵守一定的规则:标识符由字母、数字和下划线组成,并且第一个字符必须是字母或下划线。同时,在 C语言的标识符中是区分大小写字母的。C 选项中的标识符以开头,不符合 C语言中标识符的命名规则。2.有以下程序 A:int f1(int x,int y) re
21、turn xy?x:y; int f2(int x,int y) return xy?y:x; )main()int a=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d);f=f1(f2(a,b),f2(c,d);g=a+b+c+d-e-f;printf(“%d,%d,%d/n“,e,f,g);程序运行后的输出结果是_。(分数:2.00)A.4,3,7 B.3,4,7C.5,2,7D.2,5,7解析:解析 本题的函数 f1是求两个数中的最大数,而函数 f2是求两个数中的最小数。因此,“e=f2(f1(a,b),f1(c,d);”是先调用函数 f1分别求出 a、b
22、 中的最大数 4,c、d 中的最大数 5,再调用函数 f2求出 4和 5中的最小数 4,e的值为 4。而“f=f1(f2(a,b),f2(c,d);”是先调用函数 f2,分别求出 a、b 中的最小数 3,c、d 中的最小数 2,再调用函数 f1求出 3和 2中的最大数 3,f的值为3。g=a+b+c+d-e-f 结果是 4+3+5+2-4-3=7。输出结果应该是:4,3,7。3.有以下语句:int b;char c10;,则正确的输入语句是_。(分数:2.00)A.scanf(“%d%s“,b,c);B.scanf(“%d%s“,b,c); C.scanf(“%d%s“,b,c);D.scan
23、f(“%d%s“,b,c);解析:解析 C 语言的输入语句 scanf实际上是其标准输入输出库(stdio.h)中的一个函数,而 C语言的函数参数是传值的,要想将值从被调用函数中传回调用函数,必须以参数的地址作为实参。因此必须将 b和 c的地址传递给 scanf。由于 c是数组名,本身就是一个固定指针,不需要再取其地址,只需要取 b的地址.b。正确选项是 B。4.有一个名为 ink.txt的文件,内容如下:#define HDY(A,B) A/B#define PRINT(Y) printf(“y=%d/n.,Y)有以下程序:#include “init.txt“main()int a=1,b
24、=2,c=3,d=4,k;K=HDY(a+c,b+d);PRINT(K);下面针对该程序的叙述正确的是_。(分数:2.00)A.编译有错B.运行出错C.运行结果为 y=0D.运行结果为 y=6 解析:解析 本题考核的是带参数的宏定义,宏替换后,表达式“K=HDY(a+c,b+d);”即变为k=a+c/b+d=6。5.有以下程序:main()int a44=1,4,3,2,8,6,5,7,3,7,2,5,4,8,6,1,i,k,t;for(i=0;i3;i+)for(k=i+i;k4;k+)if(aiiakk)t=aii;aii=akk;akk=t;for(i=0;i4;i+)printf(“%
25、d,“,a0i);程序运行后的输出结果是_。(分数:2.00)_解析:解析 该程序实现对二维数据反对角线上的元素从大到小的排序,并输出排序后的数组的第一行。外层循环变量 i表示第 i行第 i列的数字,内层循环变量 k表示第 i+1行第 i+1列的数字,if 语句对相关数值进行比较和交换,最后数组变为 a44=6,4,3,2,6.设有定义:int n1=0,n2,*P=n2,*q=n1;,以下赋值语句中与 n2=n1;语句等价的是_。(分数:2.00)A.*p=*q; B.p=q;C.*p=n1;D.p=*q;解析:解析 根据题意,p 和 q为整型指针,分别指向整型变量 n2和 n1,选项 B是
26、将 q赋给 p,即 p指向 n1,选项 C是将 n1的地址赋给 n2,选项 D是将 n2的值赋给 p,均与 n2=n1不等价。只有选项 A中,*p即 n2,*q 即 n1,*p=*q 即等价于 n2=n1。7.在数据库系统中,用户所见的数据模式为_。(分数:2.00)A.概念模式B.外模式 C.内模式D.物理模式解析:解析 数据库系统的三级模式:概念模式:数据库系统中全局数据逻辑结构的描述,全体用户公共数据视图;外模式:也称子模式与用户模式,是用户的数据视图,也就是用户所见到的数据模式;内模式:又称物理模式,它给出了数据库物理存储结构与物理存取方法。8.有以下程序:int add(int a,
27、int b)return(a+b);main()int k,(*f)(),a=5,b=10;f=add;则以下函数调用语句错误的是_。(分数:2.00)A.k=(*f)(a,b);B.k=add(a,b);C.k=*f(a,b); D.k=f(a,b);解析:解析 选项 C把 f(a,b)整体作为指针了,应该为(*f)(a,b)。9.设有定义:int a=2,b=3,c=4;,则以下选项中值为 0的表达式是_。(分数:2.00)A.(!a=1)(!b=0) B.(aB) !c|1C.abD.a|(b+b)(c-解析:解析 本题考查逻辑运算。根据运算符的优先级顺序,选项 A的值为“(!2=1)(
28、!3=0)=0(!3=0)=0”,选项 B的值为“(23)!4|1=0!4|1=00|1=0|1=1”。选项 C的值为“23=1”。选项 D的值为“2|(6)(2)=2|1=1”。所以只有选项 A的值为 0。注意:在进行逻辑与运算时,若“”的左边运算结果已经为 0,则“”右边的表达式将不再进行计算,结果总为 0;在进行逻辑或运算时,若“|”的左边运算结果已经为 1,则“|”右边的表达式也将不再进行计算,结果总为 1。10.有以下程序:main()int a=0,b=0,C=0,d=0;if(a=1)b=1;c=2;else d=3;printf(“%d,%d,%d,%d/n“,a,b,c,d)
29、;程序输出_。(分数:2.00)A.0,1,2,0B.0,0,0,3C.1,1,2,0D.编译有错 解析:解析 C 语言规定最左边变量所得到的新值就是赋值表达式的值,故“if(a=1)”条件表达式为真,b=1;else 总是与上面最近的没有被使用的 if配对,导致不合法的 if-else结构,if 语句后面的两条语句应用“)”括起来。11.在长度为 64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为_。(分数:2.00)A.63B.64 C.6D.7解析:解析 对于长度为 n的有序线性表,在最坏情况下,顺序查找需要比较 n次。12.下列叙述中正确的是_。(分数:2.00)A.数据的逻辑
30、结构与存储结构必定是一一对应的B.由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构C.程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构D.以上三种说法都不对 解析:解析 一般来说,一种数据结构根据需要可以表示成多种存储结构,所以数据的逻辑结构与存储结构不是一一对应的常用的存储结构有顺序、链接、索引等,而采用不同的存储结构其数据处理的效率是不同的。13.有以下结构体说明,变量定义和赋值语句:struct STDchar name10;int age;char *;s5,*ps;ps=s0;则以下 scanf函数调用语句中错误的结构体变量成员是_。(分
31、数:2.00)_解析:解析 结构体定义的一般形式为:“struct 结构体名成员列表14.设有定义:int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是_。(分数:2.00)A.k+ B.k+=1C.+kD.k+1解析:解析 凡是表达式都有一个值,即运算结果。k+的表达式值为 0,k 再进行增 1运算;k+=1 是赋值表达式,其作用是取 k中的值加 1后再放到 k变量中,即表达式的值为 1;+k 是先进行 k增 1运算,表达式的值为 1;k+1=0+1,其运算的结果为 1。所以选项 A中表达式的值与其他三个表达式不同。15.有以下程序:maln()int i,s=0,t=1,
32、2,3,4,5,6,7,8,9;for(i=0;i9;i+=2)s+=*(t+i);printf(“%d/n“,s);程序执行后的输出结果是_。(分数:2.00)A.45B.20C.25 D.36解析:解析 通过 for循环语句 s=*(t+0)+*(t+2)+*(t+4)+*(t+6)+*(t+8)=1+3+5+7+9=25。16.有以下程序:main()char a7=“a0/0a0/0“;int i,j;i=sizeof((分数:2.00)A.;j=strlen(a);”,sizeof(a)是 a数组占内存的字节数,也就是 7;而 strlen(a)是求字符串 a的长度,字符串的结束符是
33、/0,而字符串“a0/0a0/0”中,第 3个字符就是/0,因此 strlen(a)的值为 2。输出结果应该是:7 2。17.结构化程序设计的基本原则不包括_。(分数:2.00)A.多态性 B.自顶向下C.模块化D.逐步求精解析:解析 结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化和限制使用 goto语句。程序设计时应先考虑整体,后考虑细节,逐步使问题具体化,这就是自顶向下的设计原则;对于复杂的问题,应设计一些子目标作为过渡,逐步细化,这就是逐步求精的设计原则;模块化是把程序要解决的总目标分解为分目标,再进一步分解为小目标,把每个小目标称为一个模块。goto 语句是有害的,是
34、造成程序混乱的祸根,程序的质量与 goto语句的数量成反比,应该在所有高级程序设计语言中取消goto语句。18.下列对于软件测试的描述中正确的是_。(分数:2.00)A.软件测试的目的是证明程序是否正确B.软件测试的目的是使程序运行结果正确C.软件测试的目的是尽可能地多发现程序中的错误 D.软件测试的目的是使程序符合结构化原则解析:解析 软件测试的目的:尽可能地多发现程序中的错误,不能也不可能证明程序没有错误,软件测试是一个发现错误而执行程序的过程。软件调试的目的是发现错误的位置,并改正错误。19.设有以下语句:int a=1,b=2,c;c=a(b2);执行后,C 的值为_。(分数:1.00
35、)A.6B.7C.8D.9 解析:解析 b=2 表示的二进制数为 00000010,经过移位操作得到 00001000,异或操作”a(00001000)”得到 00001001,即十进制数 9。20.数据独立性是数据库技术的重要特点之一。所谓数据独立性是指_。(分数:2.00)A.数据与程序独立存放B.不同的数据被存放在不同的文件中C.不同的数据只能被对应的应用程序所使用D.以上三种说法都不对 解析:解析 数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。也就是说,数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。数据独立性一般分为物理独立性与逻辑独
36、立性两级。21.在以下给出的表达式中,与 while(E)中的(E)不等价的表达式是_。(分数:2.00)A.(!E=0)B.(E0|E0)C.(E=0) D.(E!=0)解析:解析 选项 C表示 E条件为假时,“(E=0)”为真。其他都与“(E)”等价。22.若有定义语句:int a36;,按在内存中的存放顺序,a 数组的第 10个元素是_(分数:2.00)A.a04B.a13 C.a03D.a14解析:解析 二维数组在内存中是按行优先的模式存放,即先第一行,再第二行直到最后一行;此外,其下标足从零开始,即第一个是 a00,从而,第 10个元素是存放在 a13中。一般说来,axy中第 n个元
37、素所在行下标的计算方法为:n/x,列下标的计算方法为:n%y-1。23.在结构化程序设计中,模块划分的原则是_。(分数:2.00)A.各模块应包括尽量多的功能B.各模块的规模应尽量大C.各模块之间的联系应尽量紧密D.模块内具有高内聚度、模块间具有低耦合度 解析:解析 在结构化程序设计中,模块划分的原则是:模块内具有高内聚度,模块间具有低耦合度。24.以下叙述中正确的是_。(分数:2.00)A.预处理命令行必须位于 C源程序的起始位置B.在 C语言中,预处理命令行都以“#”开头 C.每个 C程序必须在开头包含预处理命令行:#includestdio.hD.C语言的预处理不能实现宏定义和条件编译的
38、功能解析:解析 在 C程序中,以#开头的行都称为“编译预处理”行;预处理功能主要包括宏定义、文件包含和条件编译等。预处理命令行可放在 C源程序的任何位置,“#include”实现文件包含的功能,不是每个 C程序都必须具备。25.用树形结构表示实体之间联系的模型是_。(分数:2.00)A.关系模型B.网状模型C.层次模型 D.以上三个都是解析:解析 用树形结构表示实体类型及实体间联系的数据模型称为层次模型,用有向图结构表示实体类型及实体问联系的数据模型称为网状模型,用二维表格结构表示实体及其联系的数据模型称为关系模型。26.在 16位编译系统上,若有定义 int a=10,20,30,*p=a;
39、,当执行 p后,下列说法错误的是_。(分数:2.00)A.p向高地址移了一个字节 B.p向高地址移了一个存储单元C.p向高地址移了两个字节D.p与 a+1等价解析:解析 *p=a 将数组 a的首地址赋给指针 p,通过对指针变量进行加上或减去一个整数可以移动指针,移动的单位为存储单元,int 型变量在存储器中占两个字节。27.有以下程序:void swapl(int c0,int c1)int t;t=c00;c00=c10;c10=t;void swap2(int*c0,int*c1)int t;t=*c0;*c0=*c1;*c1=t;main()int a2=3,5),b2=3,5;swap
40、l(a,a+1);swap2(b0,b1);printf(“%d%d%d%d/n“,a0,a1,b0,b1);程序运行后的输出结果是_。(分数:2.00)A.3 5 5 3B.5 3 3 5C.3 5 3 5D.5 3 5 3 解析:解析 函数 swapl的形参是数组名,在调用时应将数组名,即数组的首地址,作为实参传递给形参,形参所指向内容的改变可以带回到实参,因此调用函数 swap 1是将元素 a0和 a1互换。函数swap2的形参是指针变量,在调用时将 b0、b1的值传递给它,形参内容改变也可以带回到实参,b0和 b1的内容也进行了交换。所以输出为 5 3 5 3。28.有以下程序:#in
41、cludestdio.hmain()char cl=1,c2=2;cl=getchar();c2=getchar();putchar(c1);putchar(c2);当运行时输入:a回车后,以下叙述正确的是_。(分数:2.00)A.变量 c1被赋予字符 a,c2 被赋予回车符 B.程序将等待用户输入第 2个字符C.变量 c1被赋予字符 a,c2 中仍是原有字符 2D.变量 c1被赋予字符 a,c2 中将无确定值解析:解析 函数 getchar()的作用是从终端(或系统隐含的输入没备)输入一个字符,且只能接收一个字符(回车符也算一个字符)。所以本题中 c1被赋值字符 a,c2 被赋予回车符。29
42、.在 C语言中,只有在使用时才占用内存单元的变量,其存储类型是_。(分数:2.00)A.auto和 register B.extern和 registerC.auto和 staticD.static和 register解析:解析 在 C语言中,动态存储区域中存放的变量在使用时才分配内存空间,函数调用时返回的地址和自动类局部变量等存放在动态存储区域中。auto 变量和 register变量都属于自动类局部变量,因此选项 A正确。static 说明的变量为静态变量,静态变量在内存的静态存储中占据着永久的存储单元,直至程序运行结束。extern 说明的变量为外部变量,属于全局变量,全局变量在整个程序
43、运行期间都占用内存空间。30.以下关于逻辑运算符两侧运算对象的叙述中正确的是_。(分数:2.00)A.只能是整数 0或 1B.只能是整数 0或非 0整数C.可以是结构体类型的数据D.可以是任意合法的表达式 解析:解析 逻辑运算的对象可以是 C语言中任意合法的表达式。31.以下叙述正确的是_。(分数:2.00)A.C语言中的文件是流式文件,因此只能顺序存取数据B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第一个数据D.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失 解析:解析
44、 C 语言中的文件有两种存取方式:顺序存取和直接存取。文件打开之后,就可以进行读写操作。读写操作函数可以指定文件使用方式。在使用完一个文件后应关闭它,以防误操作。32.算法中,对需要执行的每一步操作,必须给出清楚、严格的规定这属于算法的_。(分数:2.00)A.正当性B.可行性C.确定性 D.有穷性解析:解析 算法具有 5个特性:有穷性、确定性、可行性、有零个或多个输入、有一个或多个输出。33.数据的存储结构是指_。(分数:2.00)A.存储在外存中的数据B.数据所占的存储空间量C.数据在计算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示 解析:解析 数据的逻辑结构是指反映数据元索之间逻辑关系的数据结构;数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,常用的存储结构有顺序、链接、索引等。在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。34