1、二级 C语言笔试-475 及答案解析(总分:103.00,做题时间:90 分钟)一、选择题(总题数:40,分数:69.00)1.常采用的两种存储结构是( )。A顺序存储结构和链式存储结构 B散列方法和索引方式C链表存储结构和数组 D线性存储结构和非线性存储结构(分数:1.00)A.B.C.D.2.下列选项中,不是一个算法的基本特征的是( )。A) 完整性 B) 可行性 C) 有穷性 D) 拥有足够的情报(分数:2.00)A.B.C.D.3.下列叙述中正确的是( )。A) 一个算法的空间复杂度大,则其时间复杂度必定大B) 一个算法的空间复杂度大,则其时间复杂度必定小C) 一个算法的时间复杂度大,
2、则其空间复杂度必定小D) 上述三种说法都不对(分数:2.00)A.B.C.D.4.结构化程序设计的主要特点是_。A) 模块化 B) 每个控制结构具有封装性C) 每个控制结构具有独立性 D) 每个控制结构只有一个入口和一个出口(分数:2.00)A.B.C.D.5.在长度为 n的有序线性表中进行二分查找,最坏情况下需要比较的次数是A) O(n) B) O(n2) C) O(log2n) D) O(nlog2n)(分数:2.00)A.B.C.D.6.有下列二叉树,对此二叉树前序遍历的结果为( )。(分数:1.00)A.B.C.D.7.下列叙述中,不属于软件需求规格说明书的作用的是A) 便于用户、开发
3、人员进行理解和交流B) 反映出用户问题的结构,可以作为软件开发工作的基础和依据C) 作为确认测试和验收的依据D) 便于开发人员进行需求分析(分数:2.00)A.B.C.D.8.算法的有穷性是指( )。A) 算法程序的运行时间是有限的 B) 算法程序所处理的数据量是有限的C) 算法程序的长度是有限的 D) 算法只能被有限的用户使用(分数:2.00)A.B.C.D.9.设计程序时,应采纳的原则之一是( )。A) 程序的结构应有助于读者的理解 B) 限制 GOTO语句的使用C) 减少或取消注释行 D) 程序越短越好(分数:2.00)A.B.C.D.10.两个或两个以上的模块之间关联的紧密程度称为(
4、)。 A) 耦合度 B) 内聚度 C) 复杂度 D) 连接度(分数:2.00)A.B.C.D.11.冒泡排序在最坏的情况下的比较次数是A) n(n+1)/2 B) nlog2n C) n(n-1)/2 D) n/2(分数:2.00)A.B.C.D.12.下面叙述正确的是( )。A) 算法的执行效率与数据的存储结构无关B) 算法的空间复杂度是指算法程序中指令(或语句)的条数C) 算法的有穷性是指算法必须能在执行有限个步骤之后终止D) 以上三种描述都不对(分数:1.00)A.B.C.D.13.在 E-R图中,用来表示实体的图形是_。(A) 矩形(B) 椭圆形(C) 菱形(D) 三角形(分数:2.0
5、0)A.B.C.D.14.对关系 S和只进行集合运算,结果中既包含 S中的所有元组也包含只中的所有元组,这样的集合运算称为( )。A) 并运算 B) 交运算 C) 差运算 D) 积运算(分数:2.00)A.B.C.D.15.设有定义下列:int a=1,b=2,c=3,d=4,m=2,n=2;则表达式(m=ab)float fun(int a, int b)B) float fun( int a,int b)main( )x = fun(i,j);C) float fun(int, int);main( )x=fun(2,10);float fun(iht a, int b)D) main(
6、)float fun(int i, int j);x = fun(i,j);float fun(int a,int b) (分数:1.00)A.B.C.D.22.以下程序的输出结果是( )。main()int a33=1,2),3,4),5,6),i,j,s=0;for(i=1;i3;i+)for(j=0;j=i;j+)s+=aij;printf(“%d/n“,s);A18 B19 C20 D21(分数:1.00)A.B.C.D.23.有以下程序:main()int i,j,x=0;for(i=0;i2;i+)x+;for(j=0;j=3;j+)if(j*2)continue;x+;x+;pr
7、intf(“x=%d/n”,x);程序执行后的输出结果是_。A) x=4 B) x=8 C) x=6 D) x=12(分数:2.00)A.B.C.D.24.以下选项中值为 1的表达式是_。A) 1-0 B) 1-/0 C) 1-0 D) /0-0(分数:2.00)A.B.C.D.25.下列程序的输出结果是( )。#includestdio.hint b=2;int func(int*A) b+=*a;retum b;main()int a=1,t=2;t+=func(printf(“%d/n“,t);A) 4 B) 5 C) 6 D) 8(分数:2.00)A.B.C.D.26.以下程序运行后的
8、输出结果是 #includestdio.h #includestring.h main() char x=“STRING“; x0=0; x1=/0; x2=0; printf(“%d%d/n“, sizeof(x),strlen(x); A) 6 1 B) 7 0 C) 6 3 D) 7 1(分数:2.00)A.B.C.D.27.有下列程序:main()int i;for(i=1;i=40;i+)if(i+%5= =0)if(+ +i%8= =0)printf(“%d“,i);printf(“/n“);执行后的输出结果是( )。A) 5 B) 24C) 32 D) 40(分数:2.00)A.
9、B.C.D.28.若有定义:int a410;,则以下选项中对数组元素 aij引用错误的是_。 (o=i4,0=j=10A) *(i12;i+)csi+;for(i=1;i5;i+)printf(“%d“,ci);printf(“/n“);程序的运行结果是_。A) 1 2 3 4 B) 2 3 4 4 C) 4 3 3 2 D) 1 1 2 3(分数:2.00)A.B.C.D.30.下列叙述中,错误的是( )。A) 在同一 C程序文件中,不同函数中可以使用名字相同的变量B) 在 main()函数体内定义的变量是全局变量C) 形参是局部变量,函数调用完成即失去意义D) 若同一文件中全局和局部变量
10、同名,则全局变量在局部变量作用范围内不起作用(分数:2.00)A.B.C.D.31.已有定义:char a=“xyz“,b=x,y,z;,以下叙述中正确的是_。A) 数组 a和 b的长度相同 B) a 数组长度小于 b数组长度C) a数组长度大于 b数组长度 D) 上述说法都不对(分数:1.00)A.B.C.D.32.下列程序的运行结果为( )。#includestdiohvoidabc(Char*str)inta,b,i,j;for(i=j=0;stri!=/0;i+)if(stri!=a)strj+=stri;strj=/0;void main()char str=“abcdef“;abc
11、(str);printf(“str=%s“,str);A) str=bcdef B) str=abcdef C) str=a D) str=ab(分数:2.00)A.B.C.D.33.设变量已正确定义,则下列能正确计算 f=n!的程序段是( )。A) f=0;for(i=1 ;i=n;i+) f*=i;B) f=1;for(i=1;in;i+) f*=i;C) f=1;for(i=n;i1;i+)f*=i;D) f=1;for(i=n;i =2;i-)f*=i;(分数:2.00)A.B.C.D.34.下列二维数组初始化语句中,不正确的是( )。A) int b2=1,2,3,4,5,6,7;
12、B) int b35=0,0,0;C) int b4=1,2,3,4,5,6; D) int b32=(1,2),(3,4) ,(5,6);(分数:2.00)A.B.C.D.35.有以下程序:#includestdio.hvoid fun(char*t,char*s)while(*t!=0)t+;while(*t+=*s+)!=0);main()char ss10=“acc“,aa10=“bbxxyy“;fun(ss,aa);printf(“%s,%s/n“,ss,aa);程序的运行结果是_。A) accxyy,bbxxyy B) acc,bbxxyy C) accxxyy,bbxxyy D)
13、 accbbxxyy,bbxxyy(分数:2.00)A.B.C.D.36.下列程序段的输出结果为( )。#includestdio.hmain()static char a=“language“;char *p;p=a;for(p=a;pa+8;p+=2)putchar(*p);A) language B) lnug C) 有语法错误 D) lang(分数:2.00)A.B.C.D.37.以下程序运行后的输出结果是#includestdio.h#includestring.htypedef struetchar name9;char sex;float score2; STU;void f(S
14、TU a)STU b=“Zhao“,m,85.0,90.0;int i;strcpy(a.name,b.name);a.sex=b.sex;for(i=0;i2;i+) a.scorei=b.scorei;main( )STU c= “Qian“,f,95.0,92.0;f(c);printf(“%s,%c,%2.0f,%2.0f/n“,c.name,c.sex,c.score0,c.score1);A) Qian,f,95,92 B) Qian,m,85,90 C) Zhao,f,95,92 D) Zhao,m,85,90(分数:2.00)A.B.C.D.38.现有以下结构体说明和变量定义,
15、如图所示,指针 p、q、r 分别指向一个链表中连续的三个节点。struct nodechar data;struct node*next;*p,*q,*r;(分数:2.00)A.B.C.D.39.有以下程序#include stdio.hmain()struct STUchar name9;char sex;double score2;sturt STU a=“Zhao“ ,m,85.0,90.0,b=“Qian“ ,f,95:0,92.0;b=a;printf(“%s,%c,%2.0f,%2.0f/n“,b.name,b.sex,b.score0,b.score1);程序的运行结果是_。A)
16、 Qian,f,95,92 B) Qian,85,90 C) Zhao,f,95,92 D) Zhao,m,85,90(分数:2.00)A.B.C.D.40.设有以下语句:char x=3,y=6,z;z=xy2;则 z的二进制值是( )。A) 00010100 B) 00011011 C) 00011100 D) 00011000(分数:2.00)A.B.C.D.二、填空题(总题数:15,分数:34.00)41.线性表的存储结构主要分为顺序存储结构和链式存储结构,队列是一种特殊的线性表,循环队列是队列的 1 存储结构。(分数:2.00)填空项 1:_42.诊断和改正程序中错误的工作通常称为
17、1。(分数:2.00)填空项 1:_43.符合结构化原则的 3种基本控制结构是选择结构、循环结构和 1。(分数:2.00)填空项 1:_44.队列是限定在表的一端进行插入和在另一端进行删除操作的线性表。允许删除的一端称作 1。(分数:2.00)填空项 1:_45.若 x和 a均是 int型变量,则计算完 x=(a=4,6*2)后的 x值为 1。(分数:2.00)填空项 1:_46.若 x为血类型,请写出与!x 等价的 C语言表达式 1。(分数:2.00)填空项 1:_47.47. 以下程序将数组 a的 4个元素和数组 b的 6个元素写到名为 lett.dat的二进制文件中,请填空。#inclu
18、de stdioh#include stdlibhmain()FILE *fp;char a5=“1234“,b7=“abcedf“;if(fp=fopen(“U /U“,“wb“)=NULL) exit(0);fwrite(a,sizeof(char),4,fp);fwrite(b,U /U,1,fp);fclose(fp);(分数:2.00)填空项 1:_48.若从键盘输入 24,则以下程序输出的结果是_。#includestdio.hmain()int a;scanf(“%d“,if(a20) printf(“%d“,a);if(a10) printf(“%d“,a);if(a5) pr
19、intf(“%d“,a);(分数:2.00)填空项 1:_49.49. 有以下程序;int a=2;int f(int *A) return(*A) +;main()int s=0;int a=5;s+=f(for(i=0;iN;i+)for(j=0;jN-1;j+)for(k=U /U;kN;K+)/*判_U/U?aijaik)t=aij;aij=aik;aik=t;void outarr(int aNN) main()int aNN=2,3,4,1,8,6,5,7,11,12,10,9,15,14,16,13;outarr(aa);/*以矩阵的形式输出二维数组*/sour(aa);outa
20、rr(aa);(分数:4.00)填空项 1:_填空项 1:_以下程序的功能是:通过函数 func输入字符并统计输入字符的个数。输入时用字符作为输入结束标志。请填空。#includestdio.hlongU /U /* 函数说明语句 */main( )long n;n=func( );printf(“n=%1d/n“,n);long func( )long m;for(m=0;getchar( )!=;U /U);return m;(分数:4.00)填空项 1:_填空项 1:_52.下列程序执行输出的结果是_。#include stdio.hf (int a)int b=0;static c=7
21、;a=c+; b+;return (a);main()int a=2,i,k;for(i=0;i2;i+)k=f(a+);printf(“%d/n“, k);(分数:2.00)填空项 1:_53.在进行关系数据库的逻辑设计时,E-R 图中的属性常被转换为关系中的属性,联系通常被转换为 1。(分数:2.00)填空项 1:_二级 C语言笔试-475 答案解析(总分:103.00,做题时间:90 分钟)一、选择题(总题数:40,分数:69.00)1.常采用的两种存储结构是( )。A顺序存储结构和链式存储结构 B散列方法和索引方式C链表存储结构和数组 D线性存储结构和非线性存储结构(分数:1.00)A
22、. B.C.D.解析:解析 线性表的存储通常要用两种存储结构:顺序存储结构和链式存储结构。2.下列选项中,不是一个算法的基本特征的是( )。A) 完整性 B) 可行性 C) 有穷性 D) 拥有足够的情报(分数:2.00)A. B.C.D.解析:解析 作为一个算法,一般应该具有 4个特征:可行性,即考虑到实际的条件能够达到一个满意的结果:确定性,算法中的第一个步骤都必须是有明确定义的;有穷性,一个算法必须在有限的时间内做完;拥有足够的情报。3.下列叙述中正确的是( )。A) 一个算法的空间复杂度大,则其时间复杂度必定大B) 一个算法的空间复杂度大,则其时间复杂度必定小C) 一个算法的时间复杂度大
23、,则其空间复杂度必定小D) 上述三种说法都不对(分数:2.00)A.B.C.D. 解析:解析 算法的时间复杂度和算法的空间复杂度是从不同的角度来衡量算法的执行情况,它们之间没有内在联系。4.结构化程序设计的主要特点是_。A) 模块化 B) 每个控制结构具有封装性C) 每个控制结构具有独立性 D) 每个控制结构只有一个入口和一个出口(分数:2.00)A.B.C.D. 解析:解析 按照结构化设计方法设计的程序具有以下特点:(1)程序易于理解、使用和维护,程序员采用结构化编程方法,便于控制、降低程序的复杂性,因此容易编写程序,便于验证程序的正确性。结构化程序清晰易读,可理解性好,程序员能够进行逐步求
24、精、程序证明和测试,以确保程序的正确性。程序容易阅读并被人理解,便于用户使用和维护。(2)提高了编程工作的效率,降低了软件开发成本。由于结构化编程方法能够把错误控制到最低限度,因此能够减少调试和查错时间。结构化是由一些为数不多的基本结构模块组成,这些模块甚至可以由机器自动生成,从而极大地减轻了编程工作量。(3)结构化程序设计选用的每个控制结构只允许有一个入口和一个出口。5.在长度为 n的有序线性表中进行二分查找,最坏情况下需要比较的次数是A) O(n) B) O(n2) C) O(log2n) D) O(nlog2n)(分数:2.00)A.B.C. D.解析:知识点 二分查找法的时间复杂度评析
25、 二分法检索要求线性表结点按关键值排序且以顺序方式存储。在查找时,首先与表的中间位置上结点的关键值比较,若相等则检索成功;否则根据比较结果确定下一步在表的前半部分或后半部分继续进行。二分法检索的效率比较高,设线性表有 n个元素,则最多的检索次数为大于 long2n(2为底数)的最小整数,最少的检索次数为 1。6.有下列二叉树,对此二叉树前序遍历的结果为( )。(分数:1.00)A.B.C. D.解析:解析对二叉树的前序遍历是指:先访问根结点,然后访问左子树,最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子树。7.下列叙述中,不属于软件需求规格说明书的作用的是A) 便
26、于用户、开发人员进行理解和交流B) 反映出用户问题的结构,可以作为软件开发工作的基础和依据C) 作为确认测试和验收的依据D) 便于开发人员进行需求分析(分数:2.00)A.B.C.D. 解析:解析 软件需求规格说明书(SRS,Software Requirement Specification)是需求分析阶段的最后成果,是软件开发中的重要文档之一。它具有以下几个方面的作用:便于用户、开发人员进行理解和交流;反映出用户问题的结构,可以作为软件开发工作的基础和依据;作为确认测试和验收的依据。8.算法的有穷性是指( )。A) 算法程序的运行时间是有限的 B) 算法程序所处理的数据量是有限的C) 算法
27、程序的长度是有限的 D) 算法只能被有限的用户使用(分数:2.00)A. B.C.D.解析:解析 算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。9.设计程序时,应采纳的原则之一是( )。A) 程序的结构应有助于读者的理解 B) 限制 GOTO语句的使用C) 减少或取消注释行 D) 程序越短越好(分数:2.00)A. B.C.D.解析:解析 程序设计的风格主要强调程序的简单、清晰和可理解性,以便读者理解。程序滥用 GOTO语句将使程序流程无规律,可读性差;添加注释行有利于对程序的理解,不应减少或取消,程序的长短要依据实际的需要而定,并不是越短越好。10.两
28、个或两个以上的模块之间关联的紧密程度称为( )。 A) 耦合度 B) 内聚度 C) 复杂度 D) 连接度(分数:2.00)A. B.C.D.解析:解析 耦合度是模块间互相连接的紧密程度的度量;内聚度是一个模块内部各个元素问彼此结合的紧密程度的度量。11.冒泡排序在最坏的情况下的比较次数是A) n(n+1)/2 B) nlog2n C) n(n-1)/2 D) n/2(分数:2.00)A.B.C. D.解析:解析 冒泡排序的基本思想是对当前未排序的全部结点自上而下地依次进行比较和调整,让键值较大的结点下沉,键值较小的结点往上冒。也就是说,每当比较两个相邻结点后发现它们的排列与排序要求相反,就要将
29、它们互换。对 n个结点的线性表采用冒泡排序,冒泡排序的外循环最多执行 n-1遍。第一遍最多执行 n-1次比较,第二遍最多执行 n-2次比较,以此类推,第 n-1遍最多执行 1次比较。因此,整个排序过程最多执行 n(n-1)/2次比较。12.下面叙述正确的是( )。A) 算法的执行效率与数据的存储结构无关B) 算法的空间复杂度是指算法程序中指令(或语句)的条数C) 算法的有穷性是指算法必须能在执行有限个步骤之后终止D) 以上三种描述都不对(分数:1.00)A.B.C. D.解析:解析 算法的执行效率与数据的存储结构有关;算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度;算法的有穷性是指一
30、个算法必须在执行有限步骤以后结束。13.在 E-R图中,用来表示实体的图形是_。(A) 矩形(B) 椭圆形(C) 菱形(D) 三角形(分数:2.00)A. B.C.D.解析:14.对关系 S和只进行集合运算,结果中既包含 S中的所有元组也包含只中的所有元组,这样的集合运算称为( )。A) 并运算 B) 交运算 C) 差运算 D) 积运算(分数:2.00)A. B.C.D.解析:解析 关系的并运算是指,由结构相同的两个关系合并,形成一个新的关系,其中包含两个关系中的所有元组。15.设有定义下列:int a=1,b=2,c=3,d=4,m=2,n=2;则表达式(m=ab)float fun(int
31、 a, int b)B) float fun( int a,int b)main( )x = fun(i,j);C) float fun(int, int);main( )x=fun(2,10);float fun(iht a, int b)D) main( )float fun(int i, int j);x = fun(i,j);float fun(int a,int b) (分数:1.00)A. B.C.D.解析:解析 C 语言程序从 main函数开始执行,当程序中定义了多个函数时,通常情况下是先定义后调用。若被调用函数定义在主调函数之后,则必须先声明后调用。在选项 A)中,先执行 ma
32、in 函数,并调用了 fun函数,而 fun函数在此调用之前无定义也无声明,故无法正常识别调用,所以错误。22.以下程序的输出结果是( )。main()int a33=1,2),3,4),5,6),i,j,s=0;for(i=1;i3;i+)for(j=0;j=i;j+)s+=aij;printf(“%d/n“,s);A18 B19 C20 D21(分数:1.00)A. B.C.D.解析:解析 循环的作用是求行下标从 1到 2、列下标从 0到 i的元素之和,即 s=a10+a11+a20+a21+a22=3+4+5+6+0=18。23.有以下程序:main()int i,j,x=0;for(i
33、=0;i2;i+)x+;for(j=0;j=3;j+)if(j*2)continue;x+;x+;printf(“x=%d/n”,x);程序执行后的输出结果是_。A) x=4 B) x=8 C) x=6 D) x=12(分数:2.00)A.B. C.D.解析:解析 内层 for循环语句实现 x=x+2,故外层 for循环语句单次循环实现 x=x+4,所以程序执行后的输出结果为 x=8。24.以下选项中值为 1的表达式是_。A) 1-0 B) 1-/0 C) 1-0 D) /0-0(分数:2.00)A.B. C.D.解析:解析 /0的 ASC值为 0。25.下列程序的输出结果是( )。#incl
34、udestdio.hint b=2;int func(int*A) b+=*a;retum b;main()int a=1,t=2;t+=func(printf(“%d/n“,t);A) 4 B) 5 C) 6 D) 8(分数:2.00)A.B. C.D.解析:解析 本题考查函数调用时的参数传递。在执行函数 func时,由于全局定义了一个变量 b,所以在函数体中执行时 b=2+1=3,最终 t=2+3=5。26.以下程序运行后的输出结果是 #includestdio.h #includestring.h main() char x=“STRING“; x0=0; x1=/0; x2=0; pr
35、intf(“%d%d/n“, sizeof(x),strlen(x); A) 6 1 B) 7 0 C) 6 3 D) 7 1(分数:2.00)A.B. C.D.解析:解析 本题解题的关键是运算符 sizeof和函数 strlen的区别。运算符 sizeof的功能是求出变量在内存中存放所需的字节数,函数 strlen的功能是求出字符串的实际长度,不包含字符串结束标记/0。程序中使用“char x=“STRING“; “定义了数组 x,字符串“STRING“在内存中存放实际需要 7个字节(字符/0需要占用 1个字节),所以在定义 x数组时,系统就为 x数组划分了 7个字节的存储空间,所以“siz
36、eof(x)”的值为 7。紧接着执行“x0=0; “,/0的 ASCII码值等于 0,所以该语句的作用是对x0赋予了字符串的结束标记,所以不管 x数组后面元素值是多少,“strlen(x)“求出的结果都是 0。27.有下列程序:main()int i;for(i=1;i=40;i+)if(i+%5= =0)if(+ +i%8= =0)printf(“%d“,i);printf(“/n“);执行后的输出结果是( )。A) 5 B) 24C) 32 D) 40(分数:2.00)A.B.C. D.解析:解析 在 for循环体中,首先判断自变量 i能否被 5整除,然后再自加两次,最后判断 i能否被8整
37、除。当 for循环执行到第 30次时, i 的值为 30能被 5整除,然后 i经过两次自加 1运算,值变为32,能被 8整除,故执行“printf(“%d“,i);”语句,即输出 32。本题的答案为选项 C) 。28.若有定义:int a410;,则以下选项中对数组元素 aij引用错误的是_。 (o=i4,0=j=10A) *(i12;i+)csi+;for(i=1;i5;i+)printf(“%d“,ci);printf(“/n“);程序的运行结果是_。A) 1 2 3 4 B) 2 3 4 4 C) 4 3 3 2 D) 1 1 2 3(分数:2.00)A.B.C. D.解析:解析 程序中
38、定义了两个数组 s和 c,数组 c中有 5个元素,每个元素的初始值为 0;数组 s中有12个元素,包含 4个“1”,3 个“2”,3 各“3”,2 个“4”。第一个 for语句中,用 si作为 c数组的下标,用于统计 si中相同数字的个数,同时将统计的结果放在以该数字为下标的 c数组中。第二个for语句用于将 c数组中 a1a44 个元素输出。30.下列叙述中,错误的是( )。A) 在同一 C程序文件中,不同函数中可以使用名字相同的变量B) 在 main()函数体内定义的变量是全局变量C) 形参是局部变量,函数调用完成即失去意义D) 若同一文件中全局和局部变量同名,则全局变量在局部变量作用范围
39、内不起作用(分数:2.00)A.B. C.D.解析:解析 本题考查函数调用时变量的作用域。形参是局部变量,函数调用完就失去意义了,所以在同一个 C程序文件中,不同的函数体中可以使用名字相同的局部变量。知识拓展 在函数之外定义的变量称为外部变量,外部变量是全局变量。全局变量可以为本文件中其他函数所共用。它的有效范围为:从定义变量的位置开始到本源文件结束。31.已有定义:char a=“xyz“,b=x,y,z;,以下叙述中正确的是_。A) 数组 a和 b的长度相同 B) a 数组长度小于 b数组长度C) a数组长度大于 b数组长度 D) 上述说法都不对(分数:1.00)A.B.C. D.解析:解
40、析 本题考查字符型一维数组的初始化。字符型一维数组在定义并初始化时,可以使用初始化列表或者字符串常量。因为字符串常量会自动在结尾添加/0字符作为字符串结束标志,所以用字符串常量的初始化列表项个数是字符串的长度加 1。题中的 chat a=“xyz“可以改写为 char a=x,y,z,/0)所以 a数组的长度大于 b数组的长度,选项 C正确。32.下列程序的运行结果为( )。#includestdiohvoidabc(Char*str)inta,b,i,j;for(i=j=0;stri!=/0;i+)if(stri!=a)strj+=stri;strj=/0;void main()char s
41、tr=“abcdef“;abc(str);printf(“str=%s“,str);A) str=bcdef B) str=abcdef C) str=a D) str=ab(分数:2.00)A. B.C.D.解析:解析 本题考查函数调用时的参数传递。通过函数 abc 的执行,将字符串中的字母 a去掉,保留剩下的。由于是通过指针调用,所以改变字符串的结果。33.设变量已正确定义,则下列能正确计算 f=n!的程序段是( )。A) f=0;for(i=1 ;i=n;i+) f*=i;B) f=1;for(i=1;in;i+) f*=i;C) f=1;for(i=n;i1;i+)f*=i;D) f=
42、1;for(i=n;i =2;i-)f*=i;(分数:2.00)A.B.C.D. 解析:解析 要正确计算函数 f=n!,由 n!的数学定义可知 n!-n*(n-1)*(n-2)*1。在选项 A)中,由于 f的初值为 0,在 for循环语句中 f 依次乘以 1,2,3,n。最后计算 f=n!=0,所以选项 A)不正确。在选项 B)中,f 的初值为 1,在 for循环语句中,f 依次乘以 1,2,3,(n-1)。最后计算得到f=(n-1)!,所以选项 B)不正确。在选项 C)中,f 的初值为 1,在 for循环语句中,f 依次乘以 n,n+1, n+2,所以选项 C)不正确在选项 D)中,f 的初
43、值为 1,在 for循环语句中,f 依次乘以 n,n-1,n-2,2。最后计算 f=n!,所以选项 D)正确。34.下列二维数组初始化语句中,不正确的是( )。A) int b2=1,2,3,4,5,6,7; B) int b35=0,0,0;C) int b4=1,2,3,4,5,6; D) int b32=(1,2),(3,4) ,(5,6);(分数:2.00)A.B.C.D. 解析:解析 在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取 0;C 语言规定,对于二维数组,只可以省略第 1个方括号中的常量表达式,而不能省略第 2个方括号中的常量表达式:赋的初值不能多于事
44、先定义好的数组元素个数。选项 D)赋值表达式中对每一维的元素赋初值应用,而不是()。35.有以下程序:#includestdio.hvoid fun(char*t,char*s)while(*t!=0)t+;while(*t+=*s+)!=0);main()char ss10=“acc“,aa10=“bbxxyy“;fun(ss,aa);printf(“%s,%s/n“,ss,aa);程序的运行结果是_。A) accxyy,bbxxyy B) acc,bbxxyy C) accxxyy,bbxxyy D) accbbxxyy,bbxxyy(分数:2.00)A.B.C.D. 解析:解析 本题考查
45、的重点是数组与指针的关系。函数 fun()中用两个指针来访问实参的两个数组。而函数 fun的功能是将第二个字符串合并到第一个的末尾,因此选项 D是正确的。36.下列程序段的输出结果为( )。#includestdio.hmain()static char a=“language“;char *p;p=a;for(p=a;pa+8;p+=2)putchar(*p);A) language B) lnug C) 有语法错误 D) lang(分数:2.00)A.B. C.D.解析:解析 本程序首先定义了静态字符数组 a,然后将指针 p指向数组 a的首地址。第 1次 for循环,p=a,p 指向数组的
46、第 1个元素,*p 是取指针 p所指地址的内容,输出 1;第 2次 for循环,p=p+2,则 p指向数组的第 3个元素,*p 是取指针 p所指地址的内容,输出 n;第 3次 for循环,p=p+2,则 p指向数组的第 5个元素,*p 是取指针 p所指地址的内容,输出 u;第 4次 for循环,p=p+2,则 p指向数组的第 7个元素,*p 是取指针 p所指地址的内容,输出 g,结束循环。37.以下程序运行后的输出结果是#includestdio.h#includestring.htypedef struetchar name9;char sex;float score2; STU;void f(STU a)STU b=“Zhao“,m,85.0,90.0;int i;strcpy(a.name,b.name);a.sex=b.sex;for(i=0;i2;i+) a.scorei=b.scorei;main( )STU c= “Qian“,f,95.0,92.0;f(c);printf(“%s,%c,%2.0f,%2.0f/n“,c.name,c.s