【计算机类职业资格】二级C语言笔试-398及答案解析.doc

上传人:figureissue185 文档编号:1326206 上传时间:2019-10-17 格式:DOC 页数:32 大小:95.50KB
下载 相关 举报
【计算机类职业资格】二级C语言笔试-398及答案解析.doc_第1页
第1页 / 共32页
【计算机类职业资格】二级C语言笔试-398及答案解析.doc_第2页
第2页 / 共32页
【计算机类职业资格】二级C语言笔试-398及答案解析.doc_第3页
第3页 / 共32页
【计算机类职业资格】二级C语言笔试-398及答案解析.doc_第4页
第4页 / 共32页
【计算机类职业资格】二级C语言笔试-398及答案解析.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、二级 C语言笔试-398 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.算法的空间复杂度是指A) 算法程序的长度 B) 算法程序中的指令条数C) 算法程序所占的存储空间 D) 执行算法需要的内存空间(分数:1.00)A.B.C.D.2.下列叙述中正确的是A) 顺序存储结构只针对线性结构,链式存储结构只针对非线性结构B) 线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的C) 线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构D) 顺序存储结构能存储有序表,链式存储结构不能存储有序表(分数:1.00)A.B.C.D.3.对于

2、循环队列,下列叙述中正确的是A) 循环队列中元素的个数是由队头指针和队尾指针共同决定B) 在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C) 在循环队列中,队头指针一定大于队尾指针D) 在循环队列中,队头指针一定小于队尾指针(分数:1.00)A.B.C.D.4.在面向对象方法中,实现信息隐蔽是依靠A) 对象的继承 B) 对象的多态 C) 对象的封装 D) 对象的分类(分数:1.00)A.B.C.D.5.软件生命周期是指A) 软件的开发过程B) 软件的运行维护过程C) 软件产品从提出、实现、使用维护到停止使用退役的过程D) 软件从需求分析、设计、实现到测试完成的过程(分数:1.00

3、)A.B.C.D.6.用数据流图(DFD) 作为描述工具的软件开发阶段是A) 可行性分析 B) 需求分析 C) 概要设计 D) 详细设计(分数:1.00)A.B.C.D.7.耦合性和内聚性是对模块独立性度量的两个标准,下列叙述中正确的是A) 提高耦合性、降低内聚性有利于提高模块的独立性B) 降低耦合性、提高内聚性有利于提高模块的独立性C) 耦合性是指一个模块内部各个元素间彼此结合的紧密程度D) 内聚性是指模块间互相连接的紧密程度(分数:1.00)A.B.C.D.8.在数据管理技术发展的三个阶段中,数据共享最好的是A) 人工管理阶段 B) 文件系统阶段C) 数据库系统阶段 D) 三个阶段相同(分

4、数:1.00)A.B.C.D.9.下列叙述中正确的是A) 为了建立一个关系,首先要构造数据的逻辑关系B) 表示关系的二维表中各元组的每一个分量还可以分成若干数据项C) 一个关系的属性名表称为关系模式D) 一个关系可以包括多个二维表(分数:1.00)A.B.C.D.10.设有如下关系表(分数:1.00)A.B.C.D.11.以下叙述中错误的是A) C语言是一种结构化程序设计语言B) 使用三种基本结构构成的程序只能解决简单问题C) 结构化程序设计提倡模块化的设计方法D) 结构化程序由顺序、分支、循环三种基本结构组成(分数:1.00)A.B.C.D.12.下面四个选项中,均是不合法的用户标识符的选项

5、是A) c-b goto int B) A P_0 do C) float 1a0_A D) _123 temp goto(分数:1.00)A.B.C.D.13.以下选项中值为 1的表达式是A) 1-0 B) 1-/0 C) 1-0 D) /0-0(分数:1.00)A.B.C.D.14.已知各变量的类型说明如下:int k,a,b;unsigned long w=5;double x=1.42;则以下不符合 C语言语法的表达式是A) x%(-3) B) w+=-2C) k=(a=2,b=3,a+b) D) a+=a-=(b=4)*(a=3)(分数:1.00)A.B.C.D.15.设变量 x为

6、float型且已赋值,则以下语句能将 x中的数值保留到小数点后两位,并将第 3位四舍五入的是A) x=(x*100+0.5)/100.0B) x=(int)(x*.100+0.5)/100.0C) x=x*100+0.5/100.0D) x=(x/100+0.5)*100.0(分数:1.00)A.B.C.D.16.以下程序运行后的输出结果是main()int i=1,j=2,k=3;if(i+=1float f=7;,则以下选项中错误的表达式是A) k=k=k B) -k+ C) k%int(f) D) k=f=m(分数:1.00)A.B.C.D.20.有以下程序:#include stdio

7、.hmain()int i,j,m=55;for(i=1;i=3;i+)for(j=3;j=i,j+)m=m%j,printf(“%d/n“,m);程序的运行结果是A) 0 B) 1 C) 2 D) 3(分数:1.00)A.B.C.D.21.有定义语句:char s10;,若要从终端给 s输入 5个字符,错误的输入语句是A) gets( B) scanf(“%s“,s1);C) gets(s); D) scanf(“%s“,s+1);(分数:1.00)A.B.C.D.22.下面的函数调用语句含有实参的个数为func(exp1, exp2)(exp3, exp4, exp5);A) 1 B) 2

8、 C) 4 D) 5(分数:1.00)A.B.C.D.23.有以下程序:void sort(int a,int n)int i,j,t;fbf(i=0;in;i+)for(j=i+1;jn;j+)if(aiaj) t=ai;ai=aj;aj=t;main()int aa10=1,2,3,4,5,6,7,8,9,10,i;sort(aa+2, 5);for(i=0;i10;i+)printf(“%d,“ ,aai);printf(“/n“);程序运行后的输出结果是A) 1,2,3,4,5,6,7,8,9,10, B) 1,2,7,6,3,4,5,8,9,10,C) 1,2,7,6,5,4,3,8

9、,9,10, D) 1,2,9,8,7,6,5,4,3,10,(分数:1.00)A.B.C.D.24.设变量已正确定义并赋值,以下正确的表达式是A) x=y*5=x+z B) int(15.8%5)C) x=y+z+5,+y D) x=25%5.0(分数:1.00)A.B.C.D.25.有以下程序:#includestdio.hvoid fun(int a,int b)int t;t=a;a=b;b=t;main()int c10=1,2,3,4,5,6,7,8,9,0,i;for(i=0;i10;i+=2) fun(ci,ci+1);for(i=0;i10;i+) printf(“%d,“

10、,ci);printf(“/n“);程序的运行结果是A) 1,2,3,4,5,6,7,8,9,0, B) 2,1,4,3,6,5,8,7,0,9,C) 0,9,8,7,6,5,4,3,2,1, D) 0,1,2,3,4,5,6,7,8,9,(分数:1.00)A.B.C.D.26.设有如下程序段:char s20=“beijing“,*p;p=s;则执行 p=s;语句后,以下叙述中正确的是A) 可以用*p 表示 s0B) s数组中元素的个数和 p所指字符串长度相等C) s和 p都是指针变量D) 数组 s中的内容和指针变量 p中的内容相等(分数:1.00)A.B.C.D.27.有以下程序:#inc

11、lude stdio.hvoid fun(int p)int d=2;p=d+; printf(“%d“,p);main()int a=1;fun(a);pnntf(“%d/n“ ,a);程序运行后的输出结果是A) 32 B) 12 C) 21 D) 22(分数:1.00)A.B.C.D.28.以下程序的输出结果是fun( char p10)int n=0,i;for(i=0;i7;i+)if(pi0=T) n+;return n;main()char str10=“Mon“,“Tue“,“Wed“,“Thu“,“Fri“,“Sat“,“Sun“;printf(“%d/n“,fun(str);

12、A) 1 B) 2 C) 3 D) 0(分数:1.00)A.B.C.D.29.下面程序由两个源程序文件 t4.h和 t4.c组成,程序编译运行的结果是 t4.h的源程序为:#define N 10#define f2(x)(x*N)t4.c的源程序为:#include stdio.h#define M 8#define f(x)(x)*M)#include “t4.h“main()int i,j;i=f(1+1);j=f2(1+1)printf(“%d%d/n“ ,i,j);A) 920 B) 1611 C) 911 D) 1610(分数:1.00)A.B.C.D.30.下面的程序段运行后,输

13、出结果是int i,j,x=0;static int a88;for(i=0;i3;i+)for(j=0;j3;j+)aij=2*i+j;for(i=0;i8;i+)x+=aij;printf(“%d“,x);A) 9 B) 0 C) 不确定值 D) 18(分数:1.00)A.B.C.D.31.有以下程序:#include stdio.hint f(int n);main()int a=3,s;s=f(a);s=s+f(a);printf(“%d/n“,s);int f(int n)static int a=1;n+=a+;return n;程序运行后的输出结果是A) 7 B) 8 C) 9

14、D) 10(分数:1.00)A.B.C.D.32.有以下程序:#include stdio.hmain()int c=0,k;for(k=1;k3;k+)switch(k)default:c+=k;case 2:c+;break;case 4:c+=2;break;printf(“%d/n“,c);程序运行后的输出结果是。A) 9 B) 7 C) 5 D) 3(分数:1.00)A.B.C.D.33.有以下程序:#include stdio.hstruct ordint x,y; dt2=11,12,13,14;main()struct ord *p=dt;printf(“%d,“,+(p-x)

15、;printf(“%d/n“,+(p-y);程序运行后的输出结果是A) 11,12 B) 12,13 C) 13,14 D) 14,11(分数:1.00)A.B.C.D.34.有以下程序:#define f(x) (x*x)main()int i1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf(“%d,%d/n“,i1,i2);程序运行后的输出结果是A) 64, 28 B) 4,4 C) 4,3 D) 64, 64(分数:1.00)A.B.C.D.35.设有以下说明语句:struct exint x;float y;char z; example;则下面的叙述

16、中不正确的是A) struct是结构体类型的关键字 B) example 是结构体类型名C) x,y,z都是结构体成员名 D) struct ex 是结构体类型名(分数:1.00)A.B.C.D.36.有以下程序:int fun1(double a) return (int)(a*=a);int fun2(double x,double y)double a=0,b=0;a=fun1(x);b=fun1(y);return(int)(a+b);main()double w;w=fun2(1.1,2.0);程序执行后变量 w中的值是A) 5.21 B) 5 C) 5.0 D) 0.0(分数:1.

17、00)A.B.C.D.37.有以下程序:#include stdio.h#include string.hmain()char str20=“One * World“,“One * Dream!“,*p=str1;printf(“%d,“ ,strlen(p);printf(“%s/n“ ,p);程序运行后的输出结果是A) 9,One * World B) 9,One * Dream! C) 10,One * Dream! D) 10,One * World(分数:1.00)A.B.C.D.38.阅读下列程序,当运行函数时,输入 abc de fg z10,则输出为#include stdio

18、.h#include ctype.h#include string.hint fun (char *str)int i,j=0;for(i=0;stri!=/0;i+)if(stri!=) strj+=stri;strj=/0;main()char str81;int n;printf(“Input a string:“);gets(str);puts(str);fun(str);printf(“%s/n“,str);A) abcB) z10C) abc de fg z10abcdefgz10D) abc de fg z10(分数:1.00)A.B.C.D.39.下面程序的运行结果是#incl

19、ude stdio.hmain()static char a=“Languagef“,b=“programe“;char *p1, *p2; int k;p1=a; p2=b;for(k=0;k=7;k+)if(*(p1+k)=*(p2+k) printf(“%c“,*(p1+k);A) g ae B) ga C) Language D) 有语法错误(分数:1.00)A.B.C.D.40.有以下程序:#include stdio.hmain()int a=5,b=1,t;t=(a2)|b;printf(“%d/n“,t);程序运行后的输出结果是A) 21 B) 11 C) 6 D) 1(分数:

20、1.00)A.B.C.D.二、填空题(总题数:15,分数:60.00)41.设二叉树如下:(分数:4.00)填空项 1:_42.假设用一个长度为 100的数组(数组元素的下标从 099)作为栈的存储空间,栈底指针 bottom指向栈底元素,栈顶指针 top指向栈顶元素,如果 bottom=99,top=60(数组下标),则栈中具有 1 个元素。(分数:4.00)填空项 1:_43.软件测试用例包括 1 值集和输出值集。(分数:4.00)填空项 1:_44.在关系数据模型中,二维表的行称为元组,二维表的列称为 1。(分数:4.00)填空项 1:_45.在数据库设计中,将 E-R图转换成关系数据模

21、型的过程属于 1 阶段。(分数:4.00)填空项 1:_46.以下程序运行后的输出结果是_。main()int m=011,n=11;printf(“%d%d/n“,+m,n+)(分数:4.00)填空项 1:_47.下面程序的运行结果是_。#include stdio.hmain()int y,a;y=2,a=1;while(y-!=-1)doa*=y;a+; while(y-);printf(“%d,%d“,a,y);(分数:4.00)填空项 1:_48.有以下函数void prt(char ch,int n)int i;for(i=1;i=n;i+)printf(i%6!=0 ? “%c“

22、:“%c/n“,ch);执行调用语句 prt(*,24);后,函数共输出了_行*号。(分数:4.00)填空项 1:_49.有以下程序:struct sint x,y; data2=10,100,20,200;main()struct s*p=data;printf(“%d/n“,+(p-x);程序运行后的输出结果是_。(分数:4.00)填空项 1:_50.函数 fun的返回值是_。fun(char *a,char *b)int num=0,n=0;while(*(a+num)! =/0) num+;while(bn) *(a+num)=bn;num+;n+;return num;(分数:4.0

23、0)填空项 1:_51.函数 my_cmp()的功能是比较字符串 s和 t的大小,当 s等于 t时返回 0,否则返回 s和 t的第一个不同字符的 ASC码差值,即 st 时返回正值,st 时返回负值。请填空。My_cmp( char *s,char *t)while(*s=*t)if(*s=/0)return 0;+s; +t;return_;(分数:4.00)填空项 1:_52.设有以下定义和语句,则*(*(p+2)+1)的值为_。int a32=10, 20, 30, 40, 50, 60,(*p)2;p=a;(分数:4.00)填空项 1:_53.有以下程序:#include stdio.

24、hmain()int a=1,2,3,4,5,6,*k3,i=0;while(i3)ki=程序运行后的输出结果是_。(分数:4.00)填空项 1:_54.以下程序的输出结果是_。#include stdio.hmain()int a5=2,4,6,8,10,*p;p=a;p+;printf(“%d“,*p);(分数:4.00)填空项 1:_55.有以下程序:#include stdio.hmain()FILE *pf;char *s1=“China“,*s2=“Beijing“;pf=fopen(“abc.dat“,“wb+“);fwrite(s2,7,1, pf);rewind(pf); /

25、*文件位置指针回到文件开头*/fwrite(s1,5,1, pf);fclose(pf);以上程序执行后,abc.dat 文件的内容是_。(分数:4.00)填空项 1:_二级 C语言笔试-398 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.算法的空间复杂度是指A) 算法程序的长度 B) 算法程序中的指令条数C) 算法程序所占的存储空间 D) 执行算法需要的内存空间(分数:1.00)A.B.C.D. 解析:解析 算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度是指执

26、行这个算法所需要的内存空间。2.下列叙述中正确的是A) 顺序存储结构只针对线性结构,链式存储结构只针对非线性结构B) 线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的C) 线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构D) 顺序存储结构能存储有序表,链式存储结构不能存储有序表(分数:1.00)A.B.C. D.解析:解析 线性表的顺序存储结构是把线性表中相邻元素存放在相邻的内存单元中,而链式存储结构是用一组任意存储单元来存放表中的数据元素,为了表示出每个元素与其直接后继元素之间的关系,除了存储元素本身的信息外,还需存储一个指示其直接后继存储位置的信息。故线性表的链式存储结

27、构所需的空间一般要多于顺序存储结构。3.对于循环队列,下列叙述中正确的是A) 循环队列中元素的个数是由队头指针和队尾指针共同决定B) 在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C) 在循环队列中,队头指针一定大于队尾指针D) 在循环队列中,队头指针一定小于队尾指针(分数:1.00)A. B.C.D.解析:解析 循环队列是将顺序队列首尾相连形成的,随着插入元素或删除元素的进行,其队头指针及队尾指针是在不断变化的,有时可能会出现队头指针大于队尾指针的情况,也可能是队尾指针大于队头指针。4.在面向对象方法中,实现信息隐蔽是依靠A) 对象的继承 B) 对象的多态 C) 对象的封装 D

28、) 对象的分类(分数:1.00)A.B.C. D.解析:解析 封装是一种信息隐蔽技术,目的在于将对象的使用者和对象的设计者分开。用户只能见到对象封装界面上的信息,不必知道实现的细节。封装一方面通过数据抽象,把相关的信息结合在一起,另一方面也简化了接口。5.软件生命周期是指A) 软件的开发过程B) 软件的运行维护过程C) 软件产品从提出、实现、使用维护到停止使用退役的过程D) 软件从需求分析、设计、实现到测试完成的过程(分数:1.00)A.B.C. D.解析:解析 通常将软件产品从提出、实现、使用维护到停止使用的过程称为软件生命周期。6.用数据流图(DFD) 作为描述工具的软件开发阶段是A) 可

29、行性分析 B) 需求分析 C) 概要设计 D) 详细设计(分数:1.00)A.B. C.D.解析:解析 结构化分析方法是结构化程序设计理论在软件需求分析阶段的运用。而结构化分析就是使用数据流图、数据字典、结构化语言、判定树和判定表等工具,来建立一种新的、称为结构化规格说明的目标文档。7.耦合性和内聚性是对模块独立性度量的两个标准,下列叙述中正确的是A) 提高耦合性、降低内聚性有利于提高模块的独立性B) 降低耦合性、提高内聚性有利于提高模块的独立性C) 耦合性是指一个模块内部各个元素间彼此结合的紧密程度D) 内聚性是指模块间互相连接的紧密程度(分数:1.00)A.B. C.D.解析:解析 耦合性

30、是模块间互相连接的紧密程度的度量,内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,这样有利于提高模块的独立性。8.在数据管理技术发展的三个阶段中,数据共享最好的是A) 人工管理阶段 B) 文件系统阶段C) 数据库系统阶段 D) 三个阶段相同(分数:1.00)A.B.C. D.解析:解析 人工管理阶段:计算机出现的初期,主要用于科学计算,没有大容量的存储设备。处理方式只能是批处理,数据不共享,不同程序不能交换数据。文件系统阶段:把有关的数据组织成一种文件,这种数据文件可以脱离程序而独立存在,由一个

31、专门的文件管理系统实施统一管理。但是,数据文件仍高度依赖于其对应的程序,不能被多个程序通用。数据库系统阶段:对所有的数据实行统一规划管理,形成一个数据中心,构成一个数据仓库,数据库中的数据能够满足所有用户的不同要求,供不同用户共享,数据共享性显著增强。9.下列叙述中正确的是A) 为了建立一个关系,首先要构造数据的逻辑关系B) 表示关系的二维表中各元组的每一个分量还可以分成若干数据项C) 一个关系的属性名表称为关系模式D) 一个关系可以包括多个二维表(分数:1.00)A. B.C.D.解析:解析 元组是数据的最小单位,不能再分;关系的框架称为关系模式;关系框架与关系元组一起构成一个关系,也就是一

32、个关系对应一张二维表。选项 A)中,在建立关系前,要先构造数据的逻辑关系是正确的。10.设有如下关系表(分数:1.00)A.B. C.D.解析:解析 从图中可以看出,关系 T是关系 R和关系 s的简单合并,而合并的符号为,所以答案为T=Rs。11.以下叙述中错误的是A) C语言是一种结构化程序设计语言B) 使用三种基本结构构成的程序只能解决简单问题C) 结构化程序设计提倡模块化的设计方法D) 结构化程序由顺序、分支、循环三种基本结构组成(分数:1.00)A.B. C.D.解析:解析 C 语言是一种结构化程序设计语言。结构化程序设计是以模块化设计为中心的,有 3种基本结构:顺序、选择和循环结构。

33、各模块相互独立,因而可将原来较为复杂的问题化简为一系列简单模块并充分利用现有模块搭建新系统,提高程序的重用性和可维护性。12.下面四个选项中,均是不合法的用户标识符的选项是A) c-b goto int B) A P_0 do C) float 1a0_A D) _123 temp goto(分数:1.00)A. B.C.D.解析:解析 C 语言规定的标识符只能由字母、数字和下划线 3种字符组成,第一个字符必须为字母或下划线,并且不能使用 C语言中的关键字作为标识符。选项 A)中 goto和 int是关键字,c-b 中-不是组成标识符的 3种字符之一;选项 B)中 do是关键字;选项 C)中

34、float是关键字;选项 D)中 goto是关键字。所以,均是不合法用户标识符的选项是 A)。13.以下选项中值为 1的表达式是A) 1-0 B) 1-/0 C) 1-0 D) /0-0(分数:1.00)A.B. C.D.解析:解析 字符常量0的值是 48,1的值是 49,/0的值是 0。所以 1-0=-47,1-/0=1,1-0=49,/0-0=-48。14.已知各变量的类型说明如下:int k,a,b;unsigned long w=5;double x=1.42;则以下不符合 C语言语法的表达式是A) x%(-3) B) w+=-2C) k=(a=2,b=3,a+b) D) a+=a-=

35、(b=4)*(a=3)(分数:1.00)A. B.C.D.解析:解析 “%”是求余运算符或模运算符,“%”两侧均应为整型数据,选项 A)中的 x是 double型数据。15.设变量 x为 float型且已赋值,则以下语句能将 x中的数值保留到小数点后两位,并将第 3位四舍五入的是A) x=(x*100+0.5)/100.0B) x=(int)(x*.100+0.5)/100.0C) x=x*100+0.5/100.0D) x=(x/100+0.5)*100.0(分数:1.00)A.B. C.D.解析:解析 (int)(x*100+0.5)把 float型数据(x*100+0.5)强制转换成 i

36、nt型,这样就可以去掉小数点,+0.5就是为了四舍五入。例如 x=1.234,则(1.234*100+0.5)=123.9,则(int)123.9/100.0=123/100.0=1.2316.以下程序运行后的输出结果是main()int i=1,j=2,k=3;if(i+=1float f=7;,则以下选项中错误的表达式是A) k=k=k B) -k+ C) k%int(f) D) k=f=m(分数:1.00)A.B.C. D.解析:解析 选项 C)中 int(f)不正确,因为强制类型转换表示为:(类型名)(表达式),正确表示为(int)f。20.有以下程序:#include stdio.h

37、main()int i,j,m=55;for(i=1;i=3;i+)for(j=3;j=i,j+)m=m%j,printf(“%d/n“,m);程序的运行结果是A) 0 B) 1 C) 2 D) 3(分数:1.00)A.B. C.D.解析:解析 本题考查循环语句的嵌套以及条件的判断问题。在程序中,内层循环判断条件为“j=i”,而 j的初值为 3,故当 i的值为 1和 2时,内层循环体都不会被执行。只有当 i和 j都等于 3时才会执行一次。m 的值为 55对 3取模,计算结果为 1。21.有定义语句:char s10;,若要从终端给 s输入 5个字符,错误的输入语句是A) gets( B) sc

38、anf(“%s“,s1);C) gets(s); D) scanf(“%s“,s+1);(分数:1.00)A.B. C.D.解析:解析 在格式输入中,要求给出的是变量的地址,而 B)答案中给出的 s1是一个值的表达式。22.下面的函数调用语句含有实参的个数为func(exp1, exp2)(exp3, exp4, exp5);A) 1 B) 2 C) 4 D) 5(分数:1.00)A.B. C.D.解析:解析 函数调用的一般形式为:函数名(形参表),若函数无形参,调用形式为:函数名(),、当所调用的函数用于求出某个值时,函数的调用可作为表达式出现在允许表达式出现的任何地方,本题中调用语句的参数

39、个数为 2。23.有以下程序:void sort(int a,int n)int i,j,t;fbf(i=0;in;i+)for(j=i+1;jn;j+)if(aiaj) t=ai;ai=aj;aj=t;main()int aa10=1,2,3,4,5,6,7,8,9,10,i;sort(aa+2, 5);for(i=0;i10;i+)printf(“%d,“ ,aai);printf(“/n“);程序运行后的输出结果是A) 1,2,3,4,5,6,7,8,9,10, B) 1,2,7,6,3,4,5,8,9,10,C) 1,2,7,6,5,4,3,8,9,10, D) 1,2,9,8,7,6

40、,5,4,3,10,(分数:1.00)A.B.C. D.解析:解析 本题重点考查的是函数的调用。程序中 sort函数的作用是将指定的数由大到小排序。被调函数“sort(aa+2,5);”中的实参 aa+2是指 aa2的地址,将其传给了形参 a,使得形参中 a0的值为主函数中 aa2的值,即 3;实参中的 5传给形参中的 n,在 sort函数中起着限制循环次数的作用,即使得参加排序的只有 5个数,从 aa2到 aa6,所以本题输出的结果是1,2,7,6,5,4,3,8,9,10,。24.设变量已正确定义并赋值,以下正确的表达式是A) x=y*5=x+z B) int(15.8%5)C) x=y+

41、z+5,+y D) x=25%5.0(分数:1.00)A.B.C. D.解析:解析 赋值运算符左边必须是单一变量名,而选项 A)中的“y*5=x+z”部分是非法赋值。在求余运算中的操作对象只能是整型,故选项 B)和选项 D)是错误的。选项 C)为逗号表达式。25.有以下程序:#includestdio.hvoid fun(int a,int b)int t;t=a;a=b;b=t;main()int c10=1,2,3,4,5,6,7,8,9,0,i;for(i=0;i10;i+=2) fun(ci,ci+1);for(i=0;i10;i+) printf(“%d,“ ,ci);printf(

42、“/n“);程序的运行结果是A) 1,2,3,4,5,6,7,8,9,0, B) 2,1,4,3,6,5,8,7,0,9,C) 0,9,8,7,6,5,4,3,2,1, D) 0,1,2,3,4,5,6,7,8,9,(分数:1.00)A. B.C.D.解析:解析 在 C语言中函数参数的传递是“传值”的,即形参和实参是两个没有关系的变量,函数fun虽然看似交换了参数值,但是只交换了形参的值,其结果不会传递给实参,因此数组 c没有变化。主函数中给数组 c元素赋值 1,2,9,0。第一个 for循环语句中调用 fun函数,该函数功能是交换变量的数值,注意循环变量 i的增量。第二个 for循环语句将数

43、组 c中元素的值进行输出。26.设有如下程序段:char s20=“beijing“,*p;p=s;则执行 p=s;语句后,以下叙述中正确的是A) 可以用*p 表示 s0B) s数组中元素的个数和 p所指字符串长度相等C) s和 p都是指针变量D) 数组 s中的内容和指针变量 p中的内容相等(分数:1.00)A. B.C.D.解析:解析 p=s;后,指针 p指向 s的首地址,*p=s0,因此选项 A)是正确的;p 是字符串指针,所指向的字符串为“beijing”,其长度为 7,而数组 s中元素的个数为 20,因此选项 B)和 D)是错误的;s是数组,不是指针变量,所以选项 C)也是错误的。27

44、.有以下程序:#include stdio.hvoid fun(int p)int d=2;p=d+; printf(“%d“,p);main()int a=1;fun(a);pnntf(“%d/n“ ,a);程序运行后的输出结果是A) 32 B) 12 C) 21 D) 22(分数:1.00)A.B.C. D.解析:解析 C 语言中函数参数的传递满足“单向传递”,只由实参传给形参,而不能由形参传给实参。fun函数体内输出 p的值为 2,而并没有影响到 fun函数外 a的值,a 的值在 main函数体内仍然为 1,所以选项 C)正确。28.以下程序的输出结果是fun( char p10)int

45、 n=0,i;for(i=0;i7;i+)if(pi0=T) n+;return n;main()char str10=“Mon“,“Tue“,“Wed“,“Thu“,“Fri“,“Sat“,“Sun“;printf(“%d/n“,fun(str);A) 1 B) 2 C) 3 D) 0(分数:1.00)A.B. C.D.解析:解析 此程序是统计一周 7天中英文名称首字母为“T”的个数,pi0是字符串的首字符,一共有两个“T”,因此 n=2。29.下面程序由两个源程序文件 t4.h和 t4.c组成,程序编译运行的结果是 t4.h的源程序为:#define N 10#define f2(x)(x

46、*N)t4.c的源程序为:#include stdio.h#define M 8#define f(x)(x)*M)#include “t4.h“main()int i,j;i=f(1+1);j=f2(1+1)printf(“%d%d/n“ ,i,j);A) 920 B) 1611 C) 911 D) 1610(分数:1.00)A.B. C.D.解析:解析 i=f(1+1)展开后为 i=(1+1)*M=(1+1)*8=16。j=f2(1+1)展开后为 j=1+1=1+1*10=11。30.下面的程序段运行后,输出结果是int i,j,x=0;static int a88;for(i=0;i3;

47、i+)for(j=0;j3;j+)aij=2*i+j;for(i=0;i8;i+)x+=aij;printf(“%d“,x);A) 9 B) 0 C) 不确定值 D) 18(分数:1.00)A.B. C.D.解析:解析 本题主要考查的是用二维数组首地址和下标来引用二维数组元素的方法。通过分析可知,程序中的双重循环定义了一个如下的二维数组:0 1 2 0 0 0 0 02 3 4 0 0 0 0 04 5 6 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0由于数组的下标是从 0开始的,所以二维数组元素 aij表示的是二维数组 a的第 i+1行、第 j+1列对应位置的元素。从第一次的嵌套循环结束后 j的值为 3,for(i=0;i8;i-)x+=aij31.有以下程序:#include stdio.hint f(int n);main()int a=3,s;s=f(a);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1