1、二级 C语言笔试-349 及答案解析(总分:103.00,做题时间:90 分钟)一、选择题(总题数:50,分数:70.00)1.下列选项中不属于软件生命周期开发阶段任务的是( )。A) 软件测试 B) 概要设计 C) 软件维护 D) 详细设计(分数:2.00)A.B.C.D.2.在 Windows 98的开始菜单中,包括了 Windows 98系统提供的 ( )A) 全部功能B) 初始功能C) 主要功能D) 部分功能(分数:1.00)A.B.C.D.3.已知二叉树 BT的后序遍历序列是 dabec,中序遍历序列是 debac,它的前序遍历序列是_。A) cedba B) acbed C) de
2、cab D) deabc(分数:1.00)A.B.C.D.4.设有如下定义:char*a3=“aa“,“bb“,“cc“;则以下说法正确的是_。A) 数组 a的第二个元素的值是“bb“B) 输出“cc“使用语句 printf(“%s“,a2);C) 数组 a的 3个元素分别存放的是含有两个字符的一维字符数组D) 数组 a的 3个元素中各自存放了字符a、b和c(分数:1.00)A.B.C.D.5.有以下程序的输出结果是int f(int b 4)int i,j,s=0;for(j=0;j2) i=3-j;s+=bij; return s; main( )int a44=1,2,3,4,0,2,4
3、,5,3,6,9,12,3,2,1,0;printf(“%d/n”,f(a); A)12B)11C)18D)16(分数:1.00)A.B.C.D.6.以下叙述中错误的是_。A) 改变函数形参的值,不会改变对应实参的值B) 函数可以返回地址值C) 可以给指针变量赋一个整数作为地址值D) 当在函数的开头包括头文件 stdio.h时,可以给指针变量赋 NULL(分数:2.00)A.B.C.D.7.在软件开发中,需求分析阶段产生的主要文档是( )。A) 可行性分析报告 B) 软件需求规格说明书C) 概要设计说明书 D) 集成设计计划(分数:2.00)A.B.C.D.8.数据管理技术发展的三个阶段中,(
4、 )没有专门的软件对数据进行管理。人工管理阶段 文件系统阶段 数据库阶段A) 仅 B) 仅 C) 和 D) 和(分数:2.00)A.B.C.D.9.在数据库设计中,将 E-R图转换成关系数据模型的过程属于( )。A) 需求分析阶段 B) 概念没计阶段C) 逻辑设计阶段 D) 物理设计阶段(分数:1.00)A.B.C.D.10.若变量均已正确定义并赋值,以下合法的 C语言赋值语句是_。A) x=y=5; B) x=n%2.5; C) x+n=i D) x=5=4+1;(分数:1.00)A.B.C.D.11.下面的程序执行后,文件 test.t中内容是_。#includestdio.hvoid f
5、un(char *fname,char*st)FILE*myf,int i;myf=fopen(fname,“w“);for(i=0;istrlen(st);i+)fputc(sti,myf);fclose(myf);main()fun(“test.t“,“new world“);fun(“test.t“,“hello,“);A) hello, B) new worldhello C) new world D) hello, rld(分数:1.00)A.B.C.D.12.有以下程序:point( char木 p)p+=3;main()char a4=1,2,3,4,*p=a;point(p);
6、printf(“%c/n“,*p);程序运行后的输出结果是A) 1 B) 2 C) 3 D) 4(分数:1.00)A.B.C.D.13.已知大写字母 F的 ASCII码为 70,以下程序的运行结果为 ( )#includestdio.hmain( )char c1=F,c2=p;printf(“%d,%d/n“,c1,c2);A) 70,80 B) 70,81 C) 70,82 D) 70,83(分数:1.00)A.B.C.D.14.若有以下说明和语句:char *language=“FORTRAN“,“BASIC“,“PASCAL“,“JAVA“,“C“;char*q;q=language+
7、2;则语句 printf(“o/n“,*q);( )。A) 输出的是 language2元素的地址B) 输出的是字符串 PASCALC) 输出的是 language2元素的值,它是字符串 PASCAL的首地址D) 格式说明不正确,无法得到确定的输出(分数:1.00)A.B.C.D.15.下列程序段中,不能正确赋值的是( )。A) char*p,ch; p= scabf(“%c“,p);C) char*p; *p=getchar();D) char*p,ch; p=并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是( )A)double myadd(double a
8、,b); B)double myadd(double,double);C)double myadd(double b,double a);D)double myadd(double x,double y);(分数:1.00)A.B.C.D.25.有如下程序段:int a=14, h=15, x; char c=A; x=(ab) (c B); 执行该程序段后,x 的值为A) true B) false C) 0 D) 1(分数:2.00)A.B.C.D.26.有以下程序:#include stdio.hmain() int a=2, 4, 6, 8, 10, y=0, x, *p; p=a1;
9、 for(x=1; x3; x+) y+=px; printf(“%d/n“, y); 程序运行后的输出结果是( )。A) 10 B) 11 C) 14 D) 15(分数:1.00)A.B.C.D.27.E-R图是数据库设计的工具之一,它一般适用于建立数据库的_。A) 概念模型 B) 结构模型C) 物理模型 D) 逻辑模型(分数:2.00)A.B.C.D.28.以下程序的运行结果是_。main()char t=02;printf(“%d/n“,t=+t2);A) 0 B) 1C) 2 D) 3(分数:1.00)A.B.C.D.29.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确
10、的是_。A) 函数的实参和其对应的形参共占同一存储单元B) 形参只是形式上的存在,不会占用具体存储单元C) 同名的实参和形参占同一存储单元D) 函数的形参和实参分别占用不同的存储单元(分数:2.00)A.B.C.D.30.待排序的关键码序列为(33,18,9,25,67,82,53,95,12,70),要按关键码值递增的顺序排序,采取以第一个关键码为基准元素的快速排序法,第一趟排序后关键码 33被放到第( )个位置。A) 3 B) 5 C) 7 D) 9(分数:2.00)A.B.C.D.31.软件需求分析一般应确定的是用户对软件的 _。A) 功能需求 B) 非功能需求 C) 性能需求 D) 功
11、能需求和非功能需求(分数:2.00)A.B.C.D.32.有如下程序:main()char ch25=“6937“,“8254“,*p2;int i,j,s=0;for(i=0;i2;i+)pi=chi;for(i=0;i2;i+)for(j=0;pij!=/O;j+=2)s=10*s+pij-0;printf(“%d/n“,s);该程序的输出结果是_。A) 69825 B) 63825 C) 6385 D) 693825(分数:1.00)A.B.C.D.33.有以下程序main()int a33,*p,i;p=a00;for(i=0;i9;i+)pi=i;for(i=0;i3;i+)prin
12、tf(“%d“,a1i);程序运行后的输出结果是_。(A) 0 1 2(B) 1 2 3(C) 2 3 4(D) 3 4 5(分数:2.00)A.B.C.D.34.关系表中的每一横行称为一个( )。A) 元组 B) 字段 C) 属性 D) 码(分数:1.00)A.B.C.D.35.有以下程序#include stdio.h#include stdlib.hint fun(int n)int *p;p=(int*)malloc(sizeof(int);*p=n; return *p;int a;a=fun(10); printf(“%d/n“,a+fun(10);程序的运行结果是_。A) 0 B
13、) 10 C) 20 D) 出错(分数:2.00)A.B.C.D.36.若输入 60和 13,以下程序的输出结果是 ( )# define SURPLUS(a,b)(a)%(b)main( )int a,b;scanf(“%d,%d“, B) int x23=1, 2, 3, 4, 5, 6; C) int x3=1, 2, 3, 4, 5, 6; D) int x23=1, 2, 3, 4, 5, 6;(分数:2.00)A.B.C.D.38.下列叙述中,不属于结构化分析方法的是_。A) 面向数据流的结构化分析方法B) 面向数据结构的 Jackson方法C) 面向数据结构的结构化数据系统开发方
14、法D) 面向对象的分析方法(分数:1.00)A.B.C.D.39.有以下程序:void f(int*q)int i=0;for(;i5;i+)(*q)+;main()int a5=1,2,3,4,5,i;f(a);for(i=0;i5;i+)printf(“%d,“,ai);程序运行后的输出结果是_。A) 2,2,3,4,5, B) 6,2,3,4,5, C) 1,2,3,4,5, D) 2,3,4,5,6,(分数:2.00)A.B.C.D.40.若有语句:char *line5;,以下叙述中正确的是_。(A) 定义 line是一个数组,每个数组元素是一个基类型为 char的指针变量(B) 定
15、义 line是一个指针变量,该变量可以指向一个长度为 5的字符型数组(C) 定义 line是一个指针数组,语句中的*号称为间址运算符(D) 定义 line是一个指向字符型函数的指针(分数:2.00)A.B.C.D.41.在以下程序段中,已知血型数据占两个字节,则输出结果是union unint i;double y;struct stchar a10;union un b;printf(“%“,sizeof(struct st);A) 14 B) 18 C) 20 D) 16(分数:1.00)A.B.C.D.42.以下能正确定义且赋初值的语句是( )。A) int n1=n2=10; B) c
16、har c=32;C) float f=f+1; D) double x=12.3E2.5;(分数:1.00)A.B.C.D.43.请读程序段:char str=“ABCD“,*p=strprint(“%d/n“,*(p+4);程序段的输出结果是_。A) 68 B) O C) 字符D的地址 D) 不确定的值(分数:2.00)A.B.C.D.44.对长度为 n的线性表进行顺序查找,在最坏情况下需要比较的次数为( )。A) 125 B) n/2 C) n D) n+1(分数:2.00)A.B.C.D.45.有以下程序: #includestdio.h int fun(int x,int y) if
17、(x=y)return(x); else return(x+y)/2); main() int a=1,b=2,c=3; printf(“%d/n“,fun(2*a,fun(b,c); 程序运行后的输出结果是( )。 A) 2 B) 3 C) 4 D) 5(分数:2.00)A.B.C.D.46.下面程序的执行结果是_。main()char str=“quert?“,*p=str;while(putchar(*p+)!=?);A) quert B) Rvfsu C) quert? D) rvfsu?(分数:1.00)A.B.C.D.47.有以下程序int f1(int x,int y)retur
18、n xy?x:y; int f2(int x,int y)return xy?y:x; main()int a=4,b=3,c=5,d,e,f;d=f1(a,b) ; d=f1(d,c) ;e=f2(a,b) ; e=f2(e,c) ;f=a+b+c-d-e;printf(“%d,%d,%d/n“,d,f,e);执行后输出结果是A) 3,4,5 B) 5,3,4 C) 5,4,3 D) 3,5,4(分数:1.00)A.B.C.D.48.以下叙述中错误的是( )。A) 用户定义的函数中可以没有 return语句B) 用户定义的函数中可以有多个 return语句,以便可以调用一次返回多个函数值C)
19、 用户定义的函数中若没有 return语句,则应当定义函数为 void类型D) 函数的 return语句中可以没有表达式(分数:1.00)A.B.C.D.49.设有定义语句 int(*f)(int);,则以下叙述正确的是_。A) f是基类型为 int的指针变量B) f是指向函数的指针变量,该函数具有一个 int类型的形参C) f是指向 int类型一维数组的指针变量D) f是函数名,该函数的返回值是基类型为 int类型的地址(分数:2.00)A.B.C.D.50.以下与函数 fseek (fp, OL, SEEK_SET)有相同作用的是( )。A) feof(fp) B) ftell(fp) C
20、) fgetc(fp) D) rewind(fp)(分数:1.00)A.B.C.D.二、填空题(总题数:20,分数:33.00)51.希尔排序法属于 1 排序法。(分数:2.00)填空项 1:_52.有以下程序:# includestdio.hmain()char ch1,ch2; int n1,n2ch1=getchar(); ch2=getchar();n1=ch1-0; n2=n1*10+(ch2-0);printf(“%d/n“,n2);程序运行时输入:12回车,执行后的输出结果是_。(分数:2.00)填空项 1:_53.对长度为 8的线性表进行冒泡排序,最坏情况下需要比较的次数为 1
21、。(分数:2.00)填空项 1:_54.软什是程序、数据和 1 的集合。(分数:3.00)填空项 1:_55.设指针变量 p是指向整型变量 b的,则 p中存放的是 1。(分数:1.00)填空项 1:_56.若有定义 doublea5;,则 a数组元素下标的上限为 1。(分数:2.00)填空项 1:_57.下面程序的输出结果是_。 #includestdio.h main() static chara=“zhao“,b=“juan“; char*ptr1=a,*ptr2=b; int k; for(k=0;k4;k+) if(*(ptr1+k)=*(ptr2+k) printf(“%c“,*(p
22、tr1+k);(分数:2.00)填空项 1:_58.下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序完整。 (注:程序采用了冒泡排序算法)#includestdio.h#includestring.hmain()char*str=“ABCDabcd“,temp;int n,i;n=strlen(str);while(n-1)for(i=0;in;i+)if(stristri+1)temp=_;stri=stri+1;_=temp;printf(_);(分数:1.00)填空项 1:_59.有如下程序main()int a33=1,2,3,4,5,6,i,j,s=0;for(i=1;i
23、3;i+)for(j=0;j=i;j+)s+=aij;printf(“%d/n“,s);该程序的输出结果是_。(分数:1.00)填空项 1:_60.下面函数的功能是将一个字符串的内容颠倒过来,请填空。void fun(char str)int i,j,k;for(i=0,j=_;ij;i+,j-)k=stri;stri=strj;strj=k;(分数:1.00)填空项 1:_61.下面的程序把从终端读入的文本(用作为文本结束标志)输出到一个名为 bi.dat的新文件中,请填空。#include stdioh#includestdlibhFILE*fp;main()charch;if(fp=fo
24、pen(_)=NULL)exit(0);while(ch=getchar()!=) fputc(ch,fp);fclose(fp);(分数:2.00)填空项 1:_62.顺序存储方法是把逻辑上相邻的结点存储在物理位置 1 的存储单元中。(分数:2.00)填空项 1:_63.以下程序的功能是根据输入的“y”(“Y”)与“n”(“N”),在屏幕上分别显示出“This is YES.”与“This is NO.”。空白处需要填入的内容是#includestdio.hvoid YesNo(char ch)switch(ch)casey:caseY:printf(“/n This is YES./n“)
25、;casen:caseN:Printf(“/nThis is NO./n“);main()char ch;printf(“/nEnter a chary,Yorn,N:“);ch=_;printf(“ch;%c“,ch);YesNo(ch);(分数:2.00)填空项 1:_64.已知字符 A的 ASCII码值为 65,以下语句的输出结果是_。char ch=B;printf(“%c%d/n“ch,ch);(分数:2.00)填空项 1:_65.下列程序执行后输出的结果是_。f(int a)static c=0;c=a+c+;return(c);main()int a=2,i,k;for(i=0;
26、i2;i+)k=f(a+);prinf(“%d/n“,k);(分数:1.00)填空项 1:_66.在 printf格式字符中,以带符号的十进制形式输出整数的格式字符是_;以八进制无符号形式输出整数的格式字符是_;以十六进制无符号形式输出整数的格式字符是_;以十进制无符号形式输出整数的格式字符是_。(分数:1.00)填空项 1:_67.实体联系模型是一种常用的高级概念数据模型,而 1 是实体模型中的核心。(分数:1.00)填空项 1:_68.以下程序运行后的输出结果是_。#include stdio.hmain()int a=1,b=7;dob=b/2;a+=b;while (b1);print
27、f(“%d/n“,a);)(分数:2.00)填空项 1:_69.以下程序运行后的输出结果是_。main()int X=1,y=0,a=0,b=0;switch (x)case 1:switch (y)case 0:a+;break;case 1:b+;break;case 2: a+;b+;break;printf(“%d%d/n“,a,b);(分数:1.00)填空项 1:_70.仅由顺序、选择(分支)和重复(循环)结构构成的程序是 1 程序。(分数:2.00)填空项 1:_二级 C语言笔试-349 答案解析(总分:103.00,做题时间:90 分钟)一、选择题(总题数:50,分数:70.00
28、)1.下列选项中不属于软件生命周期开发阶段任务的是( )。A) 软件测试 B) 概要设计 C) 软件维护 D) 详细设计(分数:2.00)A.B.C. D.解析:解析 软件的生命周期可分为软件定义、软件开发及软件运行维护 3个阶段。其中软件定义阶段的主要工作有可行性研究与计划制定和需求分析等:软件开发阶段的主要工作有概要设计、详细设计和测试等;软件运行维护阶段的主要工作是软件的运行及后期的维护等。2.在 Windows 98的开始菜单中,包括了 Windows 98系统提供的 ( )A) 全部功能B) 初始功能C) 主要功能D) 部分功能(分数:1.00)A. B.C.D.解析:3.已知二叉树
29、 BT的后序遍历序列是 dabec,中序遍历序列是 debac,它的前序遍历序列是_。A) cedba B) acbed C) decab D) deabc(分数:1.00)A. B.C.D.解析:解析 二叉树 BT时后序遍历序列为 dabec,故 BT的根结点为 c;而 BT的中序遍历序是 debac,即遍历序列中最后一个结点为跟结点,说明 BT的右子树为空。由 BT的后序遍历序列和中序遍历序列可知BT的左子树(LST)的后序遍历序列和中序遍历序列分别为 dabe和 deba(树是递归定义的);故 LST的根结点是 e,在由 LST的中序遍历序列可知其左子树为 d。因此 BT的前序遍历序列为
30、 cedba。4.设有如下定义:char*a3=“aa“,“bb“,“cc“;则以下说法正确的是_。A) 数组 a的第二个元素的值是“bb“B) 输出“cc“使用语句 printf(“%s“,a2);C) 数组 a的 3个元素分别存放的是含有两个字符的一维字符数组D) 数组 a的 3个元素中各自存放了字符a、b和c(分数:1.00)A.B. C.D.解析:5.有以下程序的输出结果是int f(int b 4)int i,j,s=0;for(j=0;j2) i=3-j;s+=bij; return s; main( )int a44=1,2,3,4,0,2,4,5,3,6,9,12,3,2,1,
31、0;printf(“%d/n”,f(a); A)12B)11C)18D)16(分数:1.00)A.B.C.D. 解析:解析 程序执行过程为:j i i=3-j s0 0 不执行 1 1 1 不执行 32 2 不执行 123 3 0 164 结束循环。6.以下叙述中错误的是_。A) 改变函数形参的值,不会改变对应实参的值B) 函数可以返回地址值C) 可以给指针变量赋一个整数作为地址值D) 当在函数的开头包括头文件 stdio.h时,可以给指针变量赋 NULL(分数:2.00)A.B.C. D.解析:解析 函数的形参接收传递给函数的变元的值,它类似于局部变量,也是动态的,当函数退出时自动销毁,因此
32、,改变函数形参的值,并不会改变对应实参的值,所以选项 A是正确的。选项 B是正确的,函数可以返回地址值即返回一个指针,只是必须明确声明返回的指针类型。选项 C是错误的,因指向变量的指针既不是整数,也不是无符号整数,它只是某类型数据的内存地址,因此不能赋一个整数给指针变量作为地址值。选项 D是正确的,头文件 stdio.h中定义了宏 NULL,它是一个空指针常数,若给指针变量赋 NULL,即将指针初始化为空。7.在软件开发中,需求分析阶段产生的主要文档是( )。A) 可行性分析报告 B) 软件需求规格说明书C) 概要设计说明书 D) 集成设计计划(分数:2.00)A.B. C.D.解析:解析 需
33、求分析的最终结果是生成软件需要规格说明书,可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标确认,又可以作为控制软件开发进程的依据。8.数据管理技术发展的三个阶段中,( )没有专门的软件对数据进行管理。人工管理阶段 文件系统阶段 数据库阶段A) 仅 B) 仅 C) 和 D) 和(分数:2.00)A. B.C.D.解析:解析 数据管理技术发展的三个阶段中,只有人工管理阶段,没有操作系统,没有管理数据的软件,数据处理方式是批处理。在文件系统阶段,操作系统中已经有了专门数据管理软件,一般称为文件系统。在数据库系统阶段,出现了统一管理数据的专门软件系统,即数据库管理系统。9.在数据库设
34、计中,将 E-R图转换成关系数据模型的过程属于( )。A) 需求分析阶段 B) 概念没计阶段C) 逻辑设计阶段 D) 物理设计阶段(分数:1.00)A.B.C. D.解析:解析 数据库的设计阶段包括需求分析、概念设计、逻辑设计和物理设计,其中将 E-R图转换成关系数据模型的过程属于逻辑设计阶段。10.若变量均已正确定义并赋值,以下合法的 C语言赋值语句是_。A) x=y=5; B) x=n%2.5; C) x+n=i D) x=5=4+1;(分数:1.00)A. B.C.D.解析:解析 对于取模运算符“%”,不能用于浮点数,在表达式 B中,2.5 为浮点数,因此 B是错误的;在赋值表达式,其左
35、值不能为表达式,因此 C是错误的;在赋值表达式,其左值不能为常数,因此 D是错误的,因为在“54+1”中,5 是常数,但出现在赋值表达式的左边。11.下面的程序执行后,文件 test.t中内容是_。#includestdio.hvoid fun(char *fname,char*st)FILE*myf,int i;myf=fopen(fname,“w“);for(i=0;istrlen(st);i+)fputc(sti,myf);fclose(myf);main()fun(“test.t“,“new world“);fun(“test.t“,“hello,“);A) hello, B) new
36、 worldhello C) new world D) hello, rld(分数:1.00)A. B.C.D.解析:解析 C 语言中文件有文本文件与二进制文件,对文件的使用前必须先打开,打开方式有只读、写入、读写等方式。12.有以下程序:point( char木 p)p+=3;main()char a4=1,2,3,4,*p=a;point(p);printf(“%c/n“,*p);程序运行后的输出结果是A) 1 B) 2 C) 3 D) 4(分数:1.00)A. B.C.D.解析:解析 在函数 point调用时,系统自动为函数的形参 p分配内存空间,并赋值为实参 p的值。当执行语句“p+=
37、3”;时,系统操作的是形参 p的内存空间,更改形参 p的内容,而实参指针变量 p的值未受影响,即指针变量作为函数参数时,不能更改实参指针变量的指向。故在“printf(“%c/n“,*p)”;语句中,p 仍然指向字符数组的首元素。13.已知大写字母 F的 ASCII码为 70,以下程序的运行结果为 ( )#includestdio.hmain( )char c1=F,c2=p;printf(“%d,%d/n“,c1,c2);A) 70,80 B) 70,81 C) 70,82 D) 70,83(分数:1.00)A. B.C.D.解析:14.若有以下说明和语句:char *language=“F
38、ORTRAN“,“BASIC“,“PASCAL“,“JAVA“,“C“;char*q;q=language+2;则语句 printf(“o/n“,*q);( )。A) 输出的是 language2元素的地址B) 输出的是字符串 PASCALC) 输出的是 language2元素的值,它是字符串 PASCAL的首地址D) 格式说明不正确,无法得到确定的输出(分数:1.00)A.B.C. D.解析:解析 考查用指针数组来引用数组元素的方法。解题要点 题中指针数组 language中的每个元素都是一个指向一个字符串的字符指针。通过这个指针可以引用到字符串中的每一个字符。题中的 q是双重字符指针,q=
39、language+2 则使指针 q指向了数组language的第三个元素,是字符串“PASCAL”的首地址。15.下列程序段中,不能正确赋值的是( )。A) char*p,ch; p= scabf(“%c“,p);C) char*p; *p=getchar();D) char*p,ch; p=并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是( )A)double myadd(double a,b); B)double myadd(double,double);C)double myadd(double b,double a);D)double myadd(dou
40、ble x,double y);(分数:1.00)A. B.C.D.解析:解析 在对函数进行说明时,参数类型要一一对应,而参数名完全是虚设的,可以不必与出数首部中的形参名一致,而且参数名可以省略。25.有如下程序段:int a=14, h=15, x; char c=A; x=(ab) (c B); 执行该程序段后,x 的值为A) true B) false C) 0 D) 1(分数:2.00)A.B.C.D. 解析:解析 在 C语言中,逻辑运算符有 4个,它们分别是:!(逻辑非)、|(逻辑或)、(逻辑与)、(异或)。在位运算里面还有(位与)、|(位或)的运算。本题考查逻辑与运算符的用法,在表
41、达式x=(ab)(cB);中,先判断 ab 条件,逻辑与条件的两边都要保证为 1,即 a和 b都成立,当然 cB是成立的,显然,该表达式的值为 1。26.有以下程序:#include stdio.hmain() int a=2, 4, 6, 8, 10, y=0, x, *p; p=a1; for(x=1; x3; x+) y+=px; printf(“%d/n“, y); 程序运行后的输出结果是( )。A) 10 B) 11 C) 14 D) 15(分数:1.00)A.B.C. D.解析:解析 本题考查的是指针的运用。题目首先申请了一个整型数组 a,并让一个指针变量 p指向数组的元素 a1。
42、然后使用一个 for循环,循环变量 x从 l递增到 2,即循环两次。在循环体中每次让 y累加 px的值,而 px写成指针形式就是*(p+x)。所以两次 y加的值分别是 a2和 a3的值,故最终输出6+8=14。应该选择 C)。27.E-R图是数据库设计的工具之一,它一般适用于建立数据库的_。A) 概念模型 B) 结构模型C) 物理模型 D) 逻辑模型(分数:2.00)A. B.C.D.解析:解析 E-R 模型是描述现实世界的概念模型,它将现实世界的信息结构统一用实体、属性、以及实体之间的联系描述。E-R 图提供了表示实体型、属性和联系的方法。28.以下程序的运行结果是_。main()char
43、t=02;printf(“%d/n“,t=+t2);A) 0 B) 1C) 2 D) 3(分数:1.00)A. B.C.D.解析:解析 t 的二进制形式是 00000010,前置加之后,t 值的二进制形式为 00000011,右移两位,最后两个 1将移出,t 值最后是 0。29.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是_。A) 函数的实参和其对应的形参共占同一存储单元B) 形参只是形式上的存在,不会占用具体存储单元C) 同名的实参和形参占同一存储单元D) 函数的形参和实参分别占用不同的存储单元(分数:2.00)A.B.C.D. 解析:30.待排序的关键码序列为(33,
44、18,9,25,67,82,53,95,12,70),要按关键码值递增的顺序排序,采取以第一个关键码为基准元素的快速排序法,第一趟排序后关键码 33被放到第( )个位置。A) 3 B) 5 C) 7 D) 9(分数:2.00)A.B. C.D.解析:解析 快速排序的基本思想是:从表中选取一个元素(如本题中的 33),将表中小于此元素的移到前面,大于此元素的移到后面,结果把线性表分割成两部分(两个子表),此元素插入到其分界线的位置处。然后分别对两个子表再次分割本题中 33作为分割的中界线,第一趟排序后排在比它小的18、9、25、 12 后面。31.软件需求分析一般应确定的是用户对软件的 _。A)
45、 功能需求 B) 非功能需求 C) 性能需求 D) 功能需求和非功能需求(分数:2.00)A.B.C.D. 解析:解析 软件需求分析中需要构造一个完全的系统逻辑模型,理解用户提出的每一功能与性能要求,使用户明确自己的任务。因此,需求分析应确定用户对软件的功能需求和非功能需求。32.有如下程序:main()char ch25=“6937“,“8254“,*p2;int i,j,s=0;for(i=0;i2;i+)pi=chi;for(i=0;i2;i+)for(j=0;pij!=/O;j+=2)s=10*s+pij-0;printf(“%d/n“,s);该程序的输出结果是_。A) 69825 B
46、) 63825 C) 6385 D) 693825(分数:1.00)A.B.C. D.解析:33.有以下程序main()int a33,*p,i;p=a00;for(i=0;i9;i+)pi=i;for(i=0;i3;i+)printf(“%d“,a1i);程序运行后的输出结果是_。(A) 0 1 2(B) 1 2 3(C) 2 3 4(D) 3 4 5(分数:2.00)A.B.C.D. 解析:34.关系表中的每一横行称为一个( )。A) 元组 B) 字段 C) 属性 D) 码(分数:1.00)A. B.C.D.解析:解析 关系表中,每一行称为一个元组,对应表中的一条记录;每一列称为一个属性,对应表中的一个字段;在二维表中凡能唯一标识元组的最小属性集称为该表的键或码。35.有以下程序#include stdio.h#include stdlib.hint fun(int n)i