1、二级 C 语言笔试-292 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:60.00)1.以下函数值的类型是_。fun(floatx)float y;y=3*x-4;return y;(分数:2.00)A.intB.不确定C.voidD.float2.假定 int 类型变量占用两个字节,若有定义:int x10=0,2,4);,则数组 x 在内存中所占字节数是_。(分数:2.00)A.3B.6C.10D.203.下列叙述中正确的是_。(分数:2.00)A.C 程序中注释部分可以出现在程序中任何合适的地方B.花括号“和“只能作为函数体的定界符C.构成 C
2、程序的基本单位是函数,所有函数名都可以由用户命名D.分号是 C 语句之间的分隔符,不是语句的一部分4.以下选项中,非法的字符常量是_。(分数:2.00)A./tB./17C.“/n“D./xaa5.已知二叉树 BT 的后序遍历序列是 dabec,中序遍历序列是 debac,它的前序遍历序列是_。(分数:2.00)A.cedbaB.acbedC.decabD.deabc6.下列叙述中,不属于软件需求规格说明书的作用的是_。(分数:2.00)A.便于用户、开发人员进行理解和交流B.反映出用户问题的结构,可以作为软件开发工作的基础和依据C.作为确认测试和验收的依据D.便于开发人员进行需求分析7.若有
3、以下说明和语句:struct stint n;char*ch;struct st a3=5,“abc“,7,“def“,9,“ghk“,*p=a;则值为 6 的表达式是_。(分数:2.00)A.p+-nB.p-n+C.(*p).n+D.+p-n8.设 x 为 int 型变量,执行以下语句,x=10;x+=x-=x-x;x 的值为_。(分数:2.00)A.10B.20C.30D.409.视图设计一般有 3 种设计次序,下列不属于视图设计的是_。(分数:2.00)A.自顶向下B.由外向内C.由内向外D.自底向上10.下面的程序执行后,文件 test.t 中内容是_。#includestdio.hv
4、oid 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,“);(分数:2.00)A.hello,B.new worldhelloC.new worldD.hello, rld11.运行下面的程序,其输出结果为_。main()printf(“%d,%d“,5%-3,-5%3);(分数:1.00)A.2,-2B.-2,2C.-
5、2,-2D.2,212.在设计程序时,应采纳的原则之一是_。(分数:1.00)A.程序结构应有助于读者理解B.不限制 goto 语句的使用C.减少或取消注解行D.程序越短越好13.以下程序的输出结果是_。#includestdio.hmain()int a=200;#define a 100printf(“%d“,(分数:1.00)A.;#undefa14.SQL 语言又称为_。(分数:1.00)A.结构化定义语言B.结构化控制语言C.结构化查询语言D.结构化操纵语言15.若有说明 int i,j=2,*p=D.i=*p;16.以下程序的输出结果是_。struct HARint x,y;str
6、uct HAR *p; h2;main()h0x=1;h0y=2;h1x=3;h1y=4;h0.P=h1.p=h;printf(“%d%d/n“,(h0.p)-x,(h1.p)-y);(分数:1.00)A.12B.23C.14D.3217.以下数组定义中不正确的,是_。(分数:1.00)A.int a23;B.int b3=0,1,2;C.int c100100=0;D.int d3=1,2,1,2,3,1,2,3,4;18.以下程序运行后的输出结果是_。int d=1;fun(int p)static int d=d; d+=p;printf(“%d“,d) ;return d;main()
7、int a=3; printf(“%d/n“,fun(a+fun(d);(分数:1.00)A.699B.669C.61515D.661519.在计算机中,算法是指_。(分数:1.00)A.查询方法B.加工方法C.解题方案的准确而完整的描述D.排序方法20.以下程序的结果是_。int a,b;void fun()a=100;b=200;main()int a=5,b=7;fun();printf(“%d%d/n“,a,b) ;(分数:1.00)A.100200B.57C.200100D.7521.下面的关键字中,不能够从循环体中跳到循环体外的_。(分数:1.00)A.gotoB.breakC.r
8、eturnD.continue22.栈和队列的共同点是_。(分数:1.00)A.都是先进后出B.都是先进先出C.只允许在端点处插入和删除元素D.没有共同点23.设 int 型占 2 个字节,则 unsigned int 所能表示的数据范围是_。(分数:1.00)A.065535B.-3276932767C.165536D.03276724.下列属于 C 语言语句的是_。(分数:1.00)A.printf(“%d/n“,a)B.#includestdio.hC.a=b;b=c;c=a;D./*this is a program*/25.以下程序输出正确的是_。amovep(int *p,int(
9、*(分数:1.00)A.3,int n)int i,j;for(i=0;in;i+)for(j=0;jn;j+) *p=aij;p+main()int *p,a33=1,3,5,2,4,6;p=(int*)malloc(100);amovep(p,a,3);printf(“%d%d/n“,p2,p5);free(p);A) 56B.25C.34D.程序错误26.设 a、b、c、d、m、n 均为 int 型变量,且 a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=aB) 语句的输出结果是_。(分数:1.00)A.10,3B.9,3C.9,2D.10,229.执行以下的程序段后,
10、m 的值是_。int a23=1,2,3,4,5,6;int m,*p;p= s1=“chest“;B.char s2=C,t,e,s,t;C.char s320=“Chest“;D.char*s4=“Ctest/n“31.以下程序的输出结果是_。main()int i,a10;for(i=9;i=0;i-)ai=10-i;printf(“%d%d%d“,a2a5,a8);(分数:1.00)A.258B.741C.852D.36932.X、Y、Z 被定义为 int 型变量,若从键盘给 X、Y、Z 输入数据,正确的输入语句是_。(分数:1.00)A.INPUT X,Y,Z;B.scanf(“%d
11、%d%d“,C.scanf(“%d%d%d“,X,Y,Z);D.read(“%d%d%d“,33.以下有 4 组用户标识符,其中合法的一组是_。(分数:1.00)A.FOR-sub CaseB.4dDO SizeC.f2_G3IF abcD.WORDvoiddefine34.以下程序的输出结果是_。main()int a=3;printf(“%d/n“,(a+=a-=a*(分数:1.00)A.);A) -6B.1C.2D.-1235.下面程序的输出结果为_。#includestring.hmain()char p17=“abc“,p2=“ABC“,str50=“xyz“;strcpy(str,
12、strcat(p1,p2);printf(“%s“,str);(分数:1.00)A.xyzabcABCB.abcABCC.xyzabcD.xyzABC36.C 语言中,组成数据文件的成分是_。(分数:1.00)A.记录B.数据行C.数据块D.字符 (字节) 序列37.以下各选项企图说明一种新的类型名,其中正确的是_。(分数:1.00)A.typedef v1 int;B.typedef v2=int;C.typedef int v3;D.typedef v4:int38.以下程序的输出结果是_。main()char st20=“hello/0/t/“;printf(“%d%d/n“,strle
13、n(st),sizeof(st);(分数:1.00)A.99B.520C.1320D.202039.在下列几种排序方法中,要求内存量最大的是_。(分数:1.00)A.插入排序B.选择排序C.快速排序D.紧并排序40.在数据流图(DFD) 中,带有名字的箭头表示_。(分数:1.00)A.控制程序的执行顺序B.模块之间的调用关系C.数据的流向D.程序的组成成分41.以下程序的输出结果是_。main()int a44=1,3,5,,2,4,6,3,5,7;printf(“%d%d%d%d/n“,a03,a12,a21,a30);(分数:1.00)A.0650B.1470C.5430D.输出值不定42
14、.变量 a 所占的内存字节数是_。union Uchar st4;int i;long 1;;struct Aint c;union U u;a;(分数:1.00)A.4B.5C.6D.843.下弄不属于软件调试技术的是_。(分数:1.00)A.强行排错法B.集成测试法C.回溯法D.原因排除法44.以下程序的输出结果是_。main()int num=0while(num=2)num+; printf(“%d/n“,num);(分数:1.00)A.1 2 3 4B.1 2 3C.1 2D.145.以下合法的赋值语句是_。(分数:1.00)A.X=Y=100B.D-;C.X+Y;D.C=int(+
15、)46.以下程序的输出结果是_。#define M(x,y,z) x*y+zmain()int a=1,b=2,c=3;printf(“%d/n“,M(a+b,b+c,c+(分数:1.00)A.);A) 147.在说明语句 int*f();中,标识符 f 代表的是_。(分数:1.00)A.一个用于指向整型数据的指针变量B.一个用于指向一维数组的行指针C.一个用于指向函数的指针变量D.一个返回值为指针型的函数名48.整型变量 X 和 Y 的值相等,且为非 0 值,则以下选项中结果为 0 的表达式是_。(分数:1.00)A.X|YB.X|YC.Xenum ca1,a2;main()printf(“
16、%d,%d,%d“,sizeof((分数:1.00)A.,sizeof(B.,sizeof(enumC.);A) 121,0,4B50.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是_。(分数:1.00)A.地址传递B.单向值传递C.由实参传给形,再由形参传回实参D.传递方式由用户指定二、填空题(总题数:18,分数:40.00)51.实现算法所需的存储单元多少和算法的工作量大小分别称为算法的 【1】 。(分数:2.00)填空项 1:_52.数据结构包括数据的逻辑结构、数据的 【2】 以及对数据的操作运算。(分数:2.00)填空项 1:_53.一个类可以从直接或间接的祖先中继
17、承所有属性和方法。采用这个方法提高了软件的 【3】 。(分数:2.00)填空项 1:_54.面向刑象的模型中,最基本的概念是对象和 【4】 。(分数:2.00)填空项 1:_55.软件维护活动包括以下几类:改正性维护、适应性维护、 【5】 维护和预防性维护。(分数:2.00)填空项 1:_56.语句 X+;、+X;、X=X+1;、X=1+X;,执行后都使变量 X 中的值增 1,请写出一条同一功能的赋值语句(不得与列举的相同) 【6】 。(分数:2.00)填空项 1:_57.设 Y 是 int 型变量,请写出判断 Y 为奇数的关系表达式 【7】 。(分数:2.00)填空项 1:_58.以下程序的
18、输出是 【8】 。main()char str1=“How do you do“,*p1=str1;strcpy(str1+strlen(str1)/2,“es she“);printf(“%s/n“,p1);(分数:2.00)填空项 1:_59.以上程序运行后的输出结果是 【9】 。main()int i=10,j=0;doj=j+i; i-;while(i2);printf(“%d/n“j);(分数:2.00)填空项 1:_60.设有如下程序:main()int n1,n2;scanf(“%d“,while(n2!=0)n1=n2%10;n2=n2/10;Printf(“%d“,n1);程
19、序运行后,如果从键盘上输入 1298,则输出结果为 【10】 。(分数:2.00)填空项 1:_61.以下程序输出的最后一个值是 【11】 。int ff(int n)static int f=1;f=f*n;return f,main()int i;for(i=1;i=5;i+) printf(“%d/n“,ff(i);(分数:2.00)填空项 1:_62.以下函数的功能是求 x 的 y 次方,请填空。double fun(double x,int y)int i;double z;for(i=1,z=x;iy;i+)z=z* 【12】 ;return z;(分数:2.00)填空项 1:_6
20、3.下列程序的输出结果是 【13】 。main()int a=2,4,6,*ptr=for(y=0;y3;y+)z=(*(ptr+y)x)?*(ptr+y):x;printf(“%d/n“,z);(分数:2.00)填空项 1:_64.以下程序运行后的输出结果是 【14】 。main()char s=“9876“,*p;for(p=s;ps+2;p+)printf(“%s/n“,p);(分数:2.00)填空项 1:_65.若有定义语句 char s100,d100;int j=0,i=0;且 s 中已赋字符串,请填空以实现拷贝。 (注:不使用逗号表达式)while(si= 【15】 ;j+;dj
21、=0;(分数:2.00)填空项 1:_66.若有如下结构体说明:struct STRUint a,b;char c:double d;struct STRU *p1,*p2;;请填空,以完成对 t 数组的定义,t 数组的每个元素为该结构体类型。【16】 t20(分数:2.00)填空项 1:_67.下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序完整。 (注:程序采用了冒泡排序算法)#includestdio.h#includestring.hmain()char*str=“ABCDabcd“,temp;int n,i;n=strlen(str);while(n-1)for(i=0;
22、in;i+)if(stristri+1)temp= 【17】 ;stri=stri+1;【18】 =temp;printf( 【19】 );(分数:6.00)填空项 1:_68.以下程序段打开文件后,先利用 fseek 函数将文件位置指针定位在文件末尾,然后调用 ftell 函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。FILE*myf; long f1;myf= 【20】 (“test,t“,“rb“);fseek(myf,(),SEEK_END) ;f1+ftell(myf);fclose(myf);printf(“%1d/n“,f1);(分数:2.00)填空项 1:_二级
23、 C 语言笔试-292 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:60.00)1.以下函数值的类型是_。fun(floatx)float y;y=3*x-4;return y;(分数:2.00)A.int B.不确定C.voidD.float解析:评析 C 语言中如果函数前不加任何数据类型时,默认函数的类型为整型,函数的类型就是函数返回值的类型。2.假定 int 类型变量占用两个字节,若有定义:int x10=0,2,4);,则数组 x 在内存中所占字节数是_。(分数:2.00)A.3B.6C.10D.20 解析:评析 当数组定义后,系统就为其分配内存
24、空间,而不论其中有没有内容。因此,本题中数组x10不论是否为其元素初始化,它所分配的存储空间仍为 2*10=20 个字节。3.下列叙述中正确的是_。(分数:2.00)A.C 程序中注释部分可以出现在程序中任何合适的地方 B.花括号“和“只能作为函数体的定界符C.构成 C 程序的基本单位是函数,所有函数名都可以由用户命名D.分号是 C 语句之间的分隔符,不是语句的一部分解析:评析 C 程序中注释部分用“/*”和“*/”括起来,可以出现在程序中任何合适的地方;花括号“”和“”不仅可作为函数体的定界符,也可作为复合语句的定界符;构成 C 程序的基本单位是函数:一个语句必须在最后出现分号,分号是 C
25、语句中不可缺少的部分。4.以下选项中,非法的字符常量是_。(分数:2.00)A./tB./17C.“/n“ D./xaa解析:评析 C 语言中字符常量是以单引号括起来的单个字符,或为以“/”与三位八进制数值或两位十六进制数值代替单个字符。5.已知二叉树 BT 的后序遍历序列是 dabec,中序遍历序列是 debac,它的前序遍历序列是_。(分数:2.00)A.cedba B.acbedC.decabD.deabc解析:评析 二叉树 BT 时后序遍历序列为 dabec,故 BT 的根结点为 c;而 BT 的中序遍历序是 debac,即遍历序列中最后一个结点为跟结点,说明 BT 的右子树为空。由
26、BT 的后序遍历序列和中序遍历序列可知BT 的左子树(LST)的后序遍历序列和中序遍历序列分别为 dabe 和 deba(树是递归定义的);故 LST 的根结点是 e,在由 LST 的中序遍历序列可知其左子树为 d。因此 BT 的前序遍历序列为 cedba。6.下列叙述中,不属于软件需求规格说明书的作用的是_。(分数:2.00)A.便于用户、开发人员进行理解和交流B.反映出用户问题的结构,可以作为软件开发工作的基础和依据C.作为确认测试和验收的依据D.便于开发人员进行需求分析 解析:评析 软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。它不能方便开发人员进行需求分析。7
27、.若有以下说明和语句:struct stint n;char*ch;struct st a3=5,“abc“,7,“def“,9,“ghk“,*p=a;则值为 6 的表达式是_。(分数:2.00)A.p+-nB.p-n+C.(*p).n+D.+p-n 解析:评析 根据结构变量的存储特点,p+1 意味着增加地址值为结构体数组 a 的一个元素所占的字节数,即 p+使 p 由 a0指向 a1起始地址。本题+p-n 得到 p 指向的结构体变量中成员 n 的值使之加1。因为 p 指向数组 a 起始地址,p-n 的值为 5,再掏打自加 1 运行,结果为 6。8.设 x 为 int 型变量,执行以下语句,x
28、=10;x+=x-=x-x;x 的值为_。(分数:2.00)A.10B.20 C.30D.40解析:评析 本题 x=10,表达式“x+=x=x-x;”的求解步骤如下:先进行 x-=x-x 的运算,相当于 x=x-(x-x)=x=10;再进行 x+=x 的运算,即 x=x+x=20。9.视图设计一般有 3 种设计次序,下列不属于视图设计的是_。(分数:2.00)A.自顶向下B.由外向内 C.由内向外D.自底向上解析:评析 视图设计一般有 3 种设计次序,它们分别是自顶向下,自底向上和由内向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握,可以单独使用也可混合使用。10.下面
29、的程序执行后,文件 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,“);(分数:2.00)A.hello, B.new worldhelloC.new worldD.hello, rld解析:评析 C 语言中文件有文本文件与二进制文件,对文件的使用前必须先
30、打开,打开方式有只读、写入、读写等方式。11.运行下面的程序,其输出结果为_。main()printf(“%d,%d“,5%-3,-5%3);(分数:1.00)A.2,-2 B.-2,2C.-2,-2D.2,2解析:评析 在 C 中,参与%运算的两个参数都必须为整型,在大多数 C 编译器下(包括 TurboC) 都采用了“向 0 靠近”的原则,即当两个运算量有一个为负数时,余数的符号由被除数的符号决定。故本题答案为 A。12.在设计程序时,应采纳的原则之一是_。(分数:1.00)A.程序结构应有助于读者理解 B.不限制 goto 语句的使用C.减少或取消注解行D.程序越短越好解析:评析 滥用
31、goto 语句将使程序流程无规律,可读性差;添加的注解行有利于对程序的理解,不应减少或取消;程序的长短要依照实际需要而定,并不是越短越好。13.以下程序的输出结果是_。#includestdio.hmain()int a=200;#define a 100printf(“%d“,(分数:1.00)A.;#undefa解析:评析 #define 宏名的有效范围为定义命令之后到本源文件结束,可以在程序中使用#undef 命令终止宏定义的作用域。本题由于#undef 的作用,使 a 的作用范围在#define a 100 到#undefa 之间,故答案为 C。14.SQL 语言又称为_。(分数:1.
32、00)A.结构化定义语言B.结构化控制语言C.结构化查询语言 D.结构化操纵语言解析:评析 结构化查询语言(Structred Query Language,简称 SQL)是集数据定义、数据操纵和数据控制功能于一体的数据库语言。15.若有说明 int i,j=2,*p=D.i=*p;解析:评析 指针是一种用来存放变量地址的特殊变量。本题中指针变量 p 用于存放整型变量 i 的地址,改变*p 的值即为改变 i 的值。又因为“struct HAR *p; h2;main()h0x=1;h0y=2;h1x=3;h1y=4;h0.P=h1.p=h;printf(“%d%d/n“,(h0.p)-x,(h
33、1.p)-y);(分数:1.00)A.12B.23C.14D.32 解析:评析 本题中是一个含有两个结点的循环链表。 C 语言中结构体的定义为:struct 结构体类型名成员项表;17.以下数组定义中不正确的,是_。(分数:1.00)A.int a23;B.int b3=0,1,2;C.int c100100=0;D.int d3=1,2,1,2,3,1,2,3,4; 解析:评析 一维数组的定义方式为:类型说明符 数组名常量表达式;选项 A 符合此定义形式,正确:C 语言中多维数组赋初值时可以部分赋值,也可以不指定除第一维以外的其他维的大小,故选项 C 正确;另外,如果对全部数组元素都赋初值,
34、则定义数组时刘第一维的长度可以不指定,但第二维的长度不能省,所以选项 B 正确,而选项 D 是错误的。18.以下程序运行后的输出结果是_。int d=1;fun(int p)static int d=d; d+=p;printf(“%d“,d) ;return d;main()int a=3; printf(“%d/n“,fun(a+fun(d);(分数:1.00)A.699B.669C.61515 D.6615解析:评析 静态局部变量在编译时赋初值,即只赋韧值一次,在程序运行时它已有初值。以后每次调用时不再重新赋初值而只是保留上次函数调用结束时的值,而对自动变量赋初值,不是在编译时进行的,而
35、在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句。本题在程序开头定义了全局变量 d 并赋初值 1,在被调函数 fun()中,定义了静态局部变量 d,初值为 5。在第一次调用函数 fun 时,d 初值为 5,p 由主函数传递过来的值为 1,则 d=d+p=5+1=6,由于 d 是静态局部变量,在函数调用结束后,它仍保留 d=6。再次调用 fun 函数,d 的初值为 6,而由主函数传递的 p 的值为 9,则此时 d=d+p=6+9=15,最后打印输出 d 的值并返回主函数。19.在计算机中,算法是指_。(分数:1.00)A.查询方法B.加工方法C.解题方案的准确而完整的描述
36、D.排序方法解析:评析 计算机算法是指解题方案的准确而完整的描述,它有以下几个基本特征:可行性、确定性、有穷性和拥有足够的情报。20.以下程序的结果是_。int a,b;void fun()a=100;b=200;main()int a=5,b=7;fun();printf(“%d%d/n“,a,b) ;(分数:1.00)A.100200B.57 C.200100D.75解析:评析 全程变量是可以在于函数中对其值作改变,且它也可作为函数间的值传递。但当函数或子函数中定义了与全程变量名称相同的局部变量,则全程变量将被屏蔽。21.下面的关键字中,不能够从循环体中跳到循环体外的_。(分数:1.00)
37、A.gotoB.break C.returnD.continue解析:评析 在 C 语言中,可以用 break 语句和 continue 语句跳出本层循环和结束本次循环。goto 语句可跳出多层循环,如果在函数的循环体内使用 return 语句,就会直接结束循环返回函数值。22.栈和队列的共同点是_。(分数:1.00)A.都是先进后出B.都是先进先出C.只允许在端点处插入和删除元素 D.没有共同点解析:评析 栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈是一种“后进先出”的线性表;而队列是一种“先进先出”的线性表。23.设 int 型占 2 个字节,则
38、unsigned int 所能表示的数据范围是_。(分数:1.00)A.065535 B.-3276932767C.165536D.032767解析:评析 本题 int 型占 2 个字节,即 16 位,unsigned int 所能表示的数据范围是 O(2 16-1),即0-65535。24.下列属于 C 语言语句的是_。(分数:1.00)A.printf(“%d/n“,a)B.#includestdio.hC.a=b;b=c;c=a; D./*this is a program*/解析:评析 在 C 语言中,一个完整的 C 语句必须在语句末尾出现分号,分号是 C 语句的必要组成部分。本题答案
39、为 C。25.以下程序输出正确的是_。amovep(int *p,int(*(分数:1.00)A.3,int n)int i,j;for(i=0;in;i+)for(j=0;jn;j+) *p=aij;p+main()int *p,a33=1,3,5,2,4,6;p=(int*)malloc(100);amovep(p,a,3);printf(“%d%d/n“,p2,p5);free(p);A) 56 B.25C.34D.程序错误解析:评析 本题 main 函数中定义了指针 p 和二维数组 a,通过函数 amovep 将数组的值存入指针 p 所指向的存储单元中,a 的各元素分别为:a00=1,
40、a01=3,a02=5,a10=2,a11=4,a12=6,a20=0,a21=0。通过 malloc()函数给指针分配内存空间,free()函数用于释放指针变量所用内存空间。在主函数中通过 amovep(p,a,3)调用函数 amovep,使得实参 p 与形参 p,实参数组 a 与形参中指向数组的指针变量共用同一存储空间。最后输出 p2,p5为 56。26.设 a、b、c、d、m、n 均为 int 型变量,且 a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=aB) 语句的输出结果是_。(分数:1.00)A.10,3B.9,3C.9,2D.10,2 解析:评析 C 语言的自减
41、运算符有前置与后置两种形式。当自减运算符前置时,变量先自减一后再参与表达式运算;而后置时,变量先参与表达式运算后再自身减一。29.执行以下的程序段后,m 的值是_。int a23=1,2,3,4,5,6;int m,*p;p= s1=“chest“; B.char s2=C,t,e,s,t;C.char s320=“Chest“;D.char*s4=“Ctest/n“解析:评析 语言中不能将字符串常量直接赋给数组。但在赋初值时可以。31.以下程序的输出结果是_。main()int i,a10;for(i=9;i=0;i-)ai=10-i;printf(“%d%d%d“,a2a5,a8);(分数
42、:1.00)A.258B.741C.852 D.369解析:评析 在本题运行时主要注意的是当 i=9 时,ai=10-9=1;i=8 时,ai=10-8=2;i=7 时,ai=10-7=3;依此类推,直到 i=0 时,ai=10-0=10;此时,i 的值已变为-1,判断 for 的循环条件,不成立,然后输出 a2,a5,a8,分别为 8,5,2。32.X、Y、Z 被定义为 int 型变量,若从键盘给 X、Y、Z 输入数据,正确的输入语句是_。(分数:1.00)A.INPUT X,Y,Z;B.scanf(“%d%d%d“, C.scanf(“%d%d%d“,X,Y,Z);D.read(“%d%d
43、%d“,解析:评析 C 语言中没有输入输出语句,它是通过 C 语言提供的函数来实现的,本题 C 中,应为变量地址。33.以下有 4 组用户标识符,其中合法的一组是_。(分数:1.00)A.FOR-sub CaseB.4dDO SizeC.f2_G3IF abc D.WORDvoiddefine解析:评析 C 语言的标识的定义为:以字母或下划线开头的由字母、数字字符、下划线组成的字符串。而且标识符不能与关键字相同。34.以下程序的输出结果是_。main()int a=3;printf(“%d/n“,(a+=a-=a*(分数:1.00)A.);A) -6B.1C.2D.-12 解析:评析 赋值运算
44、符的结合方向是自右至左,所以表达式 a+=a-=a*a 先运算最右边的 a*a 得 9,再运算 a=a-9,即 a=3-9,所以此时 a 的值由 3 变成了-6,最后运算 a=a+(-6),即 a=(-6)+(-6)=-12。35.下面程序的输出结果为_。#includestring.hmain()char p17=“abc“,p2=“ABC“,str50=“xyz“;strcpy(str,strcat(p1,p2);printf(“%s“,str);(分数:1.00)A.xyzabcABCB.abcABC C.xyzabcD.xyzABC解析:评析 strcpy(str1,s1):作用是将字
45、符串 s1 拷贝到字符数组 str1 中去。strcat(字符数组 1,字符数组 2):把字符串 2 接到字符串 1 的后面,结果放在字符数组 1 中,函数调用后返回字符数组 1 的地址。本题定义了三个字符数组 p1,p2,str,strcat(p1,p2)函数的作用是将字符串数组 p2 接到字符串 p1 的后面,结果放在字符数组 p1,再通过 strcpy()函数将该字符串拷贝到 str 数组中,原 str 数组中的字符串xyz 被覆盖,因此打印输出字符串 str 即可得到 abcABC。36.C 语言中,组成数据文件的成分是_。(分数:1.00)A.记录B.数据行C.数据块D.字符 (字节) 序列 解析:评析 C 语言中的文件是流式文件。流式文件是一种无结构文件,即整个文件是一串字符流或二进制流。文件的存取以字符或字节为单位。37.以下各选项企图说明一种新的类型名,其中正确的是_。(分数:1.00)A.typedef v1 int;B.typedef v2=int;C.typedef int v3; D.typedef v4:int解析:评析 C 语言中可以使用 typedef 来重新定义已有的数据类型,相当于为数据类型取个别名。38.以下程序的输出结果是_。main()char st20=“hello/0/t/“;printf(“%d%d/n