1、计算机二级(C)11 及答案解析(总分:645.00,做题时间:120 分钟)一、选择题(1-10 题每题 2 分,11-50 题(总题数:40,分数:60.00)1.按照“后进先出”原则组织数据的数据结构是_。 (分数:1.50)A.队列B.栈C.双向链表D.二叉树2.算法具有五个特性,以下选项中不属于算法特性的是_。 (分数:1.50)A.有穷性B.简洁性C.可行性D.确定性3.有以下程序 main( ) char s =“/n123 / /“; printf(“%d,%d/n“,strlen(s),sizeof(s); 执行后输出结果是( )。 (分数:1.50)A.赋初值的字符串有错B
2、.6,7C.5,6D.6,64.已有定义:int i,a10,*p;,则合法的赋值语句是( )。(分数:1.50)A.p=100;B.p=a5;C.p=a2+2;D.p=a+2;5.有以下程序 main( ) int x=102,y=012; printf(“%2d,%2d/n”,x,y); 执行后输出结果是( )。 (分数:1.50)A.10,01B.002,12C.102,10D.02,106.与十进制数 511 等值的十六进制数为( )。(分数:1.50)A.1FFB.2FFC.1FED.2FE7.有以下程序 main(int argc,char *argv ) int n,i=0; w
3、hile(argv1i!=/0) n=fun( ); i+; printf(“%d/n“,n*argc); int fun( ) static int s=0; s+=1; return s; 假设程序编译、连接后生成可执行文件exam.exe,若键入以下命令 exam 123回车 则运行结果为( )。 (分数:1.50)A.6B.8C.3D.48.有以下程序,其中函数 f 的功能是将多个字符串按字典顺序排序: #include void f(char *p,int n) char *t; int i,j; for(i=0;i0) t=pi; pi=pj; pj=t; main() char
4、*p5=“abc“,“aabdfg“,“abbd“,“dcdbe“,“cd“; f(p,5); printf(“%d/n“,strlen(p1); 程序运行后的输出结果是_。 (分数:1.50)A.2B.3C.6D.49.有以下程序: void sort(int a ,int n) int i,j,t; for(i=0;in-1;i+=2) for(j=i+2;jn;j+=2) if(aiaj) t=ai;ai=aj;aj=t; main ( ) int aa10=1,2,3,4,5,6,7,8,9,10,i; sort(aa,10); for(i=0;i10;i+) printf(“%d”,
5、aai); printf(“/n”); 其输出结果是( )。 (分数:1.50)A.1,2,3,4,5,6,7,8,9,10,B.10,9,8,7,6,5,4,3,2,1,C.9,2,7,4,5,6,3,8,1,10,D.1,10,3,8,5,6,7,4,9,2,10.下列对于软件测试的描述中正确的是_。 (分数:1.50)A.软件测试的目的是证明程序是否正确B.软件测试的目的是使程序运行结果正确C.软件测试的目的是尽可能多地发现程序中的错误D.软件测试的目的是使程序符合结构化原则11.有以下程序 int f1(int x,int y)return xy?x:y; int f2(int x,i
6、nt 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); 程序运行后的输出结果是_。 (分数:1.50)A.4,3,7B.3,4,7C.5,2,7D.2,5,712.下列叙述中正确的是( )。(分数:1.50)A.计算机病毒只感染可执行文件B.计算机病毒只感染文本文件C.计算机病毒只能通过软件复制的方式进行传播D.计算机病毒可以通过网络或读写磁盘方式进行传播13.s12 和
7、 s2 已正确定义并分别指向两个字符串。若要求:当 s1 所指串大于 s2 所指串时,执行语句 S;则以下选项中正确的是 (分数:1.50)A.if(s1s2)S;B.if(strcmp(s1,s2)S;C.if(strcmp(s2,s1)0)S;D.if(strcmp(s1,s2)0)S;14.有以下程序: main() char a7=“a0/0a0/0“; int i,j; i=sizeof(a); j=strlen(a); printf(“%d %d/n“,i,j); 程序运行后的输出结果是_。 (分数:1.50)A.2 2B.7 6C.7 2D.6 215.1MB 等于( )。(分数
8、:1.50)A.1000 字节B.1024 字节C.10001000 字节D.10241024 字节16.有以下程序: #include void f(char *s,char *t) char k; if(*s) f(s,t); main() char str10=“abcdefg“,*p; p=str+strlen(str)/2+1; f(p,p-2); printf(“%s/n“,str); 程序运行后的输出结果是_。(分数:1.50)A.abcdefgB.gfedcbaC.gbcdefaD.abedcfg17.有以下程序 void swap(char *x,char *y) char
9、t; t=*x;*x=*y;*y=t; main() char *s1=“abc“,*s2=“123“; swap(s1,s2); printf(“%s,%s/n“,s1,s2); 程序执行后的输出结果是_。 (分数:1.50)A.123,abcB.abc,123C.1bc,a23D.321,cba18.在以下给出的表达式中,与 while(E)中的(E)不等价的表达式是_。 (分数:1.50)A.(!E=0)B.(E0|E1;i+) f*=i;D.f=1; for(i=n;i=2;i-) f*=i;24.以下能正确定义数组并正确赋初值的语句是(分数:1.50)A.int N=5,bNN;B.
10、int a12=1,3;C.int c2 =1,2,3,4;D.int d32=1,2,3,4;25.以下叙述中错误的是_。 (分数:1.50)A.用户所定义的标识符允许使用关键字B.用户所定义的标识符应尽量做到“见名知意”C.用户所定义的标识符必须以字母或下划线开头D.用户定义的标识符中,大、小写字母代表不同标识26.有以下程序 main() int c=35;printf(“%d/n“,c 程序运行后的输出结果是_。 (分数:1.50)A.0B.70C.35D.127.下列对于线性链表的描述中正确的是_。 (分数:1.50)A.存储空间不一定是连续,且各元素的存储顺序是任意的B.存储空间不
11、一定是连续,且前件元素一定存储在后件元素的前面C.存储空间必须连续,且前件元素一定存储在后件元素的前面D.存储空间必须连续,且各元素的存储顺序是任意的28.有以下程序: main() char a1=M,a2=m; printf(“%c/n“,(a1,a2); 以下叙述中正确的是_。(分数:1.50)A.程序输出大写字母 MB.程序输出小写字母 mC.格式说明符不足,编译出错D.程序运行时产生出错信息29.有以下程序 main() int a32=0,(*ptr)2,i,j; for(i=0;i,则输出结果是_。(分数:1.50)A.产生错误信息B.1 0 2 0 0 0C.1 2 2 0 0
12、 0D.1 0 2 0 3 030.设有以下语句: typedef struct S int g; char h; T; 则下面叙述中正确的是( )。 (分数:1.50)A.可用 S 定义结构体变量B.可以用 T 定义结构体变量C.S 是 struct 类型的变量D.T 是 struct S 类型的变量31.下列程序的输出结果是( )。 main( ) int x=0,y=5,z=3; while(z-0 printf(“%d %d/n“,strlen(p),strlen(q); 以下叙述中正确的是_。(分数:1.50)A.在给 p 和 q 数组置初值时,系统会自动添加字符串结束符,故输出的长
13、度都为 3B.由于 p 数组中没有字符串结束符,长度不能确定;但 q 数组中字符长度为 3C.由于 q 数组中没有字符串结束符,长度不能确定;但 p 数组中字符长度为 3D.由于 p 和 q 数组中没有字符串结束符,故长度都不能确定33.已定义 c 为字符型变量,则下列语句中正确的是( )。(分数:1.50)A.c=97;B.c=“97“;C.c=97;D.c=“a“;34.用 C 语言编写的代码程序( )。(分数:1.50)A.可立即执行B.是一个源程序C.经过编译即可执行D.经过编译解释才能执行35.有以下程序: void swap1(int c ) int t; t=c0;c0=c1;c
14、1=t; void swap2(int c0,int c1) int t; t=c0;c0=c1;c1=t; main( ) int a2=3,5,b2=3,5; swap1(a); swap2(b0,b1); printf(“%d %d %d %d/n”,a0,a1,b0,b1); 其输出结果是( )。 (分数:1.50)A.5 3 5 3B.5 3 3 5C.3 5 3 5D.3 5 5 336.有以下程序: #define N 20 fun(int a,int n,int m) int i,j; for(i=m;i=n;i-)ai+1=ai; main() int i,aN=1,2,3,
15、4,5,6,7,8,9,10; fun(a,2,9); for(i=0;iA.10234B.12344C.12334D.1223437.有以下程序: main( ) int a33,*p,i; p= for(i=0;iA.3B.6C.9D.238.有以下程序 main( ) int k=4,n=0; for( ; nk ; ) n+; if(n%3!=0) continue; k-; printf(“%d,%d/n“,k,n); 程序运行后的输出结果是( )。 (分数:1.50)A.1,1B.2,2C.3,3D.4,439.为了使模块尽可能独立,要求_。 (分数:1.50)A.模块的内聚程度要
16、尽量高,且各模块间的耦合程度要尽量强B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强40.有一函数 (分数:1.50)A.if(x0)y=1; else if(x= =0)y=0; else y=-1;B.y=0; if(x0)y=1; else if(xC.y = 0; if (x = 0) if (x0) y = 1; else y = -1;D.if ( x = 0) if ( x0)y = 1; else y = 0; else y = -1;41.软件开发离不开系统
17、环境资源的支持,其中必要的测试数据属于( )。(分数:-1.00)A.硬件资源B.通信资源C.支持软件D.辅助资源42.栈底至栈顶依次存放元素 A、B、C、D,在第五个元素 E 入栈前,栈中元素可以出栈,则出栈序列可能是( )。(分数:-1.00)A.ABCEDB.DCBEAC.DBCEAD.CDABE43.在数据流图(DFD) 中,带有名字的箭头表示( )。(分数:-1.00)A.模块之间的调用关系B.程序的组成成分C.控制程序的执行顺序D.数据的流向44.在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率。与程序的效率相比,人们更重视程序的( )。(分数:-1.00)A.安全性B.
18、一致性C.可理解性D.合理性45.模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准则是模块的( )。(分数:-1.00)A.抽象和信息隐蔽B.局部化和封装化C.内聚性和耦合性D.激活机制和控制方法46.n 个顶点的强连通图的边数至少有( )。(分数:-1.00)A.n-1B.n(n-1)C.nD.n+147.下列工具中为需求分析常用工具的是( )。(分数:-1.00)A.PADB.PFDC.N-SD.DFD48.一些重要的程序语言(如 C 语言和 Pascal 语言)允许过程的递归调用。而实现递归调用中的存储分配通常用( )。(分数:-1.00)A.栈B.堆C.数组D.链表49.下
19、列说法中,不属于数据模型所描述的内容的是( )。(分数:-1.00)A.数据结构B.数据操作C.数据查询D.数据约束50.由两个栈共享一个存储空间的好处是( )。(分数:-1.00)A.减少存取时间,降低下溢发生的机率B.节省存储空间,降低上溢发生的机率C.减少存取时间,降低上溢发生的机率D.节省存储空间,降低下溢发生的机率三、填空题(每空 2 分,共 40 分)(总题数:15,分数:600.00)51.诊断和改正程序中错误的工作通常称为 1。(分数:40.00)填空项 1:_52.假设在当前盘的当前目录下有两个文件 A.TXT 和 B.TXT,现在要将文件 B.TXT 合并连接到文件 A.T
20、XT的后面。若使用 COPY 命令,则完整的命令为 1。(分数:40.00)填空项 1:_53.若 fp 已正确定义为一个文件指针,d1.dat 为二进制文件,请填空,以便为“读”而打开此文件:fp=fopen 1;。 (分数:40.00)填空项 1:_54.程序测试分为静态分析和动态测试。其中 1 是指不执行程序,而只是对程序文 本进行检查,通过阅读和讨论,分析和发现程序中的错误。(分数:40.00)填空项 1:_55.在 Windows 环境下,为了将屏幕内容存入剪贴板,应按 1 键。(分数:40.00)填空项 1:_56.在关系数据库中,把数据表示成二维表,每一个二维表称为 1。(分数:
21、40.00)填空项 1:_57.以下程序运行后输入:3,abcde,则输出结果是 1 #include string.h move(char *str, int n) char temp; int i; temp=strn-1; for(i=n-1;i0;i-) stri=stri-1; str0=temp; main( ) char s50; int n, i, z; scanf(“%d,%s“, z=strlen(s); for(i=1; i=n; i+ move(s, z); printf(“%s/n“,s); (分数:40.00)填空项 1:_58.请在以下程序第一行的下划线处填写适当
22、内容,使程序能正确运行。 1( double,double); main( ) double x,y; scanf(“%lf%lf“, printf(“%lf/n“,max(x,y); double max(double a,double b) return(ab ? a:b); (分数:40.00)填空项 1:_59.设有以下定义 stuct ss int info; struct ss *link;x,y,z; 且已建立如下图所示链表结构: (分数:40.00)填空项 1:_60.以下程序段的输出结果是 1。 int i=9; printf(“%o/n“,i); (分数:40.00)填空项
23、 1:_61.已知字符 A 的 ACSII 码值为 65,以下语句的输出结果是 1。 char ch=B; printf(“%c %d/n”,ch,ch); (分数:40.00)填空项 1:_62.算法复杂度主要包括时间复杂度和 1 复杂度。(分数:40.00)填空项 1:_63.以下程序运行后的输出结果是 1。 main( ) char m; m=B+32; printf(“%c/n“,m); (分数:40.00)填空项 1:_64.计算机网络分为广域网和局域网,因特网属于 1。(分数:40.00)填空项 1:_65.下面程序和运行运行结果是 1。 #define N 10 #define
24、s (x) x * x #define f(x) (x * x) main2 iht i1,i2; i1 = 1000/s(N); i2 = 1000/f(N); printf(“%d %d/n“,i1,i2); (分数:40.00)填空项 1:_66.数据库设计分为以下 6 个设计阶段:需求分析阶段、 1、逻辑设计阶段、物理设计阶 段、实施阶段、运行和维护阶段。 (分数:-1.00)填空项 1:_67.在算法正确的前提下,评价一个算法的两个标准是 1。(分数:-1.00)填空项 1:_68.在面向对象的程序设计中,类描述的是具有相似性质的一组 1。(分数:-1.00)填空项 1:_69.数据
25、库系统阶段的数据具有较高独立性,数据独立性包括物理独立性和 1 两个含义。(分数:-1.00)填空项 1:_70.数据的逻辑结构有线性结构和 1 两大类。(分数:-1.00)填空项 1:_计算机二级(C)11 答案解析(总分:645.00,做题时间:120 分钟)一、选择题(1-10 题每题 2 分,11-50 题(总题数:40,分数:60.00)1.按照“后进先出”原则组织数据的数据结构是_。 (分数:1.50)A.队列B.栈 C.双向链表D.二叉树解析:栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈 只允许在表的一端进行插入或删除操作,是一种“后进先
26、出”的线性表;而队列只允许在表的一端进行插 入操作,在另一端进行删除操作,是一种“先进先出”的线性表。2.算法具有五个特性,以下选项中不属于算法特性的是_。 (分数:1.50)A.有穷性B.简洁性 C.可行性D.确定性解析: 有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性是算法的基本特性。3.有以下程序 main( ) char s =“/n123 / /“; printf(“%d,%d/n“,strlen(s),sizeof(s); 执行后输出结果是( )。 (分数:1.50)A.赋初值的字符串有错B.6,7C.5,6 D.6,6解析:4.已有定义:int i,a10,*p;,则
27、合法的赋值语句是( )。(分数:1.50)A.p=100;B.p=a5;C.p=a2+2;D.p=a+2; 解析:5.有以下程序 main( ) int x=102,y=012; printf(“%2d,%2d/n”,x,y); 执行后输出结果是( )。 (分数:1.50)A.10,01B.002,12C.102,10 D.02,10解析:6.与十进制数 511 等值的十六进制数为( )。(分数:1.50)A.1FF B.2FFC.1FED.2FE解析:7.有以下程序 main(int argc,char *argv ) int n,i=0; while(argv1i!=/0) n=fun(
28、); i+; printf(“%d/n“,n*argc); int fun( ) static int s=0; s+=1; return s; 假设程序编译、连接后生成可执行文件exam.exe,若键入以下命令 exam 123回车 则运行结果为( )。 (分数:1.50)A.6 B.8C.3D.4解析:8.有以下程序,其中函数 f 的功能是将多个字符串按字典顺序排序: #include void f(char *p,int n) char *t; int i,j; for(i=0;i0) t=pi; pi=pj; pj=t; main() char *p5=“abc“,“aabdfg“,“
29、abbd“,“dcdbe“,“cd“; f(p,5); printf(“%d/n“,strlen(p1); 程序运行后的输出结果是_。 (分数:1.50)A.2B.3C.6D.4 解析:字符串比较函数“strcmp(char *s1,char *s2)”的比较规则是对两个字符串自左至右逐个字符相比(按 ASCII 码值大小比较),直到出现不同的字符或遇到“/0“为止。如果全部相同,则认为相等;若出现不相同 的字符,则以第一个不相同的字符的比较结果为准。当 s10。故本题经过排序后,得到第二个字符串是“abbd”,所以输出结果是 4。9.有以下程序: void sort(int a ,int n
30、) int i,j,t; for(i=0;in-1;i+=2) for(j=i+2;jn;j+=2) if(aiaj) t=ai;ai=aj;aj=t; main ( ) int aa10=1,2,3,4,5,6,7,8,9,10,i; sort(aa,10); for(i=0;i10;i+) printf(“%d”,aai); printf(“/n”); 其输出结果是( )。 (分数:1.50)A.1,2,3,4,5,6,7,8,9,10,B.10,9,8,7,6,5,4,3,2,1,C.9,2,7,4,5,6,3,8,1,10, D.1,10,3,8,5,6,7,4,9,2,解析:10.下
31、列对于软件测试的描述中正确的是_。 (分数:1.50)A.软件测试的目的是证明程序是否正确B.软件测试的目的是使程序运行结果正确C.软件测试的目的是尽可能多地发现程序中的错误 D.软件测试的目的是使程序符合结构化原则解析:关于软件测试的目的,Grenford J.Myers 在 The Art of Software Testing 一书中给出了深刻的阐述,整 体来说,软件测试的目的就是尽可能多地发现程序中的错误。11.有以下程序 int f1(int x,int y)return xy?x:y; int f2(int x,int y)return xy?y:x; main() int a=4
32、,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); 程序运行后的输出结果是_。 (分数:1.50)A.4,3,7 B.3,4,7C.5,2,7D.2,5,7解析: 函数 f1 的功能是返回两个数中比较大的值,f2 的功能是返回两个数中比较小的值。12.下列叙述中正确的是( )。(分数:1.50)A.计算机病毒只感染可执行文件B.计算机病毒只感染文本文件C.计算机病毒只能通过软件复制的方式进行传播D.计算机病毒可以通过网络或读写磁盘方式
33、进行传播 解析:13.s12 和 s2 已正确定义并分别指向两个字符串。若要求:当 s1 所指串大于 s2 所指串时,执行语句 S;则以下选项中正确的是 (分数:1.50)A.if(s1s2)S;B.if(strcmp(s1,s2)S;C.if(strcmp(s2,s1)0)S;D.if(strcmp(s1,s2)0)S; 解析:14.有以下程序: main() char a7=“a0/0a0/0“; int i,j; i=sizeof(a); j=strlen(a); printf(“%d %d/n“,i,j); 程序运行后的输出结果是_。 (分数:1.50)A.2 2B.7 6C.7 2
34、D.6 2解析:C 语言中以/0作为字符串的结束符,且 strlen()函数计算的是/0字符前的所有字符的个数。数组定义 以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。15.1MB 等于( )。(分数:1.50)A.1000 字节B.1024 字节C.10001000 字节D.10241024 字节 解析:16.有以下程序: #include void f(char *s,char *t) char k; if(*s) f(s,t); main() char str10=“abcdefg“,*p; p=str+strlen(str)/2+1; f(p,p-2); printf(“
35、%s/n“,str); 程序运行后的输出结果是_。(分数:1.50)A.abcdefgB.gfedcba C.gbcdefaD.abedcfg解析:本程序的作是将字符串 str 倒序。语句“p=str+strlen(str)/2+1;”用于将指针变量 p 指向 e 字符所在的存储 单元,p-2 指向了 c 字符所在的存储单元,在函数 f 中将这两个存储单元的内容交换,并使得 f 函数中指向 e 字 符的指针变量 s 加 1。指向 c 字符的指针变量 t 减 1,然后继续将 s 和 t 指向的存储单元的内容进行交换,直到 s 指 向的存储单元的内容为空为止。所以本题程序输出的结果是字符串“abc
36、defg”的倒序形式“gfedcba”。17.有以下程序 void swap(char *x,char *y) char t; t=*x;*x=*y;*y=t; main() char *s1=“abc“,*s2=“123“; swap(s1,s2); printf(“%s,%s/n“,s1,s2); 程序执行后的输出结果是_。 (分数:1.50)A.123,abcB.abc,123C.1bc,a23 D.321,cba解析:此题考核的知识点是指针变量值的交换。C 语言中,字符串常量在内存中是以字符数组的形式进行 存放的,因此字符指针 x 和 y 指向的是各字符串的首地址,也就是字符串第一个字
37、符的地址,则*x 与*y 交 换的是字符串的第一个字符,即字符“a”与“1”的交换,而字符串中其它字符保持不变,所以答案选 C。18.在以下给出的表达式中,与 while(E)中的(E)不等价的表达式是_。 (分数:1.50)A.(!E=0)B.(E0|E1;i+) f*=i;D.f=1; for(i=n;i=2;i-) f*=i; 解析:n!=n*(n-1)*2*1,由于选项 A 中 f 的初值为 0,所以循环 n 次后,f 值依然为 0,故选项 A 错误; 选项 B 中循环的终止条件是“i1 时,由于初值“i=n”是符合条件“i1”的,且增量为+1,故循环中永远不会出 现不满足条件“i1”
38、的值,所以出现死循环。24.以下能正确定义数组并正确赋初值的语句是(分数:1.50)A.int N=5,bNN;B.int a12=1,3;C.int c2 =1,2,3,4;D.int d32=1,2,3,4; 解析:25.以下叙述中错误的是_。 (分数:1.50)A.用户所定义的标识符允许使用关键字 B.用户所定义的标识符应尽量做到“见名知意”C.用户所定义的标识符必须以字母或下划线开头D.用户定义的标识符中,大、小写字母代表不同标识解析:C 语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。大写字母和小写字母被认为是两个不同的字符,用户在定义标识符时应
39、做到“见名知意”,且不允许使用 关键字作标识符。26.有以下程序 main() int c=35;printf(“%d/n“,c 程序运行后的输出结果是_。 (分数:1.50)A.0B.70C.35 D.1解析: 按位“与”时,1 printf(“%c/n“,(a1,a2); 以下叙述中正确的是_。(分数:1.50)A.程序输出大写字母 MB.程序输出小写字母 m C.格式说明符不足,编译出错D.程序运行时产生出错信息解析:在逗号表达式(表达式 1,表达式 2)中,其运算方法是先求表达式 1 的值,然后求表达式 2 的值, 整个逗号表达式的值是表达式 2 的值。故本题输出的是 a2 的值 m。
40、29.有以下程序 main() int a32=0,(*ptr)2,i,j; for(i=0;i,则输出结果是_。(分数:1.50)A.产生错误信息B.1 0 2 0 0 0 C.1 2 2 0 0 0D.1 0 2 0 3 0解析:二维数组 a,通过 a32=0将数组中的各个元素初始化为 0,指针变量 ptr,指向包含 2 个元素的 一维数组。a00=1,a10=2,故本题的输出选 B。30.设有以下语句: typedef struct S int g; char h; T; 则下面叙述中正确的是( )。 (分数:1.50)A.可用 S 定义结构体变量 B.可以用 T 定义结构体变量C.S
41、是 struct 类型的变量D.T 是 struct S 类型的变量解析:31.下列程序的输出结果是( )。 main( ) int x=0,y=5,z=3; while(z-0 printf(“%d %d/n“,strlen(p),strlen(q); 以下叙述中正确的是_。(分数:1.50)A.在给 p 和 q 数组置初值时,系统会自动添加字符串结束符,故输出的长度都为 3B.由于 p 数组中没有字符串结束符,长度不能确定;但 q 数组中字符长度为 3 C.由于 q 数组中没有字符串结束符,长度不能确定;但 p 数组中字符长度为 3D.由于 p 和 q 数组中没有字符串结束符,故长度都不能
42、确定解析:strlen 是计算以“/0”结束的字符串的长度的函数,函数的值为字符串中实际长度,不包括“/0”。 题中“q10=a,b,c”虽然给出了数组大小,即数组实际分配的存储空间,但此字符串只占用前 3 个存 储单元,其余存储单元系统自动加上“/0”,故数组 q 的长度为 3;由于 p 数组中没有字符串结束符,故字 符串的长度不能确定。33.已定义 c 为字符型变量,则下列语句中正确的是( )。(分数:1.50)A.c=97;B.c=“97“;C.c=97; D.c=“a“;解析:34.用 C 语言编写的代码程序( )。(分数:1.50)A.可立即执行B.是一个源程序 C.经过编译即可执行
43、D.经过编译解释才能执行解析:35.有以下程序: void swap1(int c ) int t; t=c0;c0=c1;c1=t; void swap2(int c0,int c1) int t; t=c0;c0=c1;c1=t; main( ) int a2=3,5,b2=3,5; swap1(a); swap2(b0,b1); printf(“%d %d %d %d/n”,a0,a1,b0,b1); 其输出结果是( )。 (分数:1.50)A.5 3 5 3B.5 3 3 5 C.3 5 3 5D.3 5 5 3解析:36.有以下程序: #define N 20 fun(int a,i
44、nt n,int m) int i,j; for(i=m;i=n;i-)ai+1=ai; main() int i,aN=1,2,3,4,5,6,7,8,9,10; fun(a,2,9); for(i=0;iA.10234B.12344C.12334 D.12234解析:本题函数 fun 的作用是将指定的数组元素(从下标 n 到下标 m)向后移一位。由函数调用“fun(a,2,9);”可知,函数 fun 用于将 a2 到 a9的各元素依次向后移一位,移完后,a 数组中各元素的值分别为 1,2,3,3,4,5,6,7,8,9,10,故输出的前 5 个数组元素为 12334。37.有以下程序: m
45、ain( ) int a33,*p,i; p= for(i=0;iA.3B.6 C.9D.2解析:38.有以下程序 main( ) int k=4,n=0; for( ; nk ; ) n+; if(n%3!=0) continue; k-; printf(“%d,%d/n“,k,n); 程序运行后的输出结果是( )。 (分数:1.50)A.1,1B.2,2C.3,3 D.4,4解析:39.为了使模块尽可能独立,要求_。 (分数:1.50)A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱 C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。软件设计,应尽量做到高内聚,低耦合,有利于提高模块的独立性。40.