ImageVerifierCode 换一换
格式:DOC , 页数:15 ,大小:92KB ,
资源ID:1329718      下载积分:5000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-1329718.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(【计算机类职业资格】全国计算机等级考试二级C语言真题2008年4月及答案解析.doc)为本站会员(赵齐羽)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

【计算机类职业资格】全国计算机等级考试二级C语言真题2008年4月及答案解析.doc

1、全国计算机等级考试二级 C 语言真题 2008 年 4 月及答案解析(总分:94.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:80.00)1.程序流程图中带有箭头的线段表示的是( )。(分数:2.00)A.图元关系B.数据流C.控制流D.调用关系2.结构化程序设计的基本原则不包括( )。(分数:2.00)A.多态性B.自顶向下C.模块化D.逐步求精3.软件设计中模块划分应遵循的准则是( )。(分数:2.00)A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合4.在软件开发中,需求分析阶段产生的主要文档是( )。(分数:2.00)A.可行性分析报告B.软件需求

2、规格说明书C.概要设计说明书D.集成设计计划5.算法的有穷性是指( )。(分数:2.00)A.算法程序的运行时间是有限的B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用6.对长度为 n 的线性表排序,在最坏情况下,比较次数不是 n(n-1)/2 的排序方法是( )。(分数:2.00)A.快速排序B.冒泡排序C.直接插入排序D.堆排序7.下列关于栈的叙述正确的是( )。(分数:2.00)A.栈按“先进先出”组织数据B.栈按“先进后出”组织数据C.只能在栈底插入数据D.不能删除数据8.在数据库设计中,将 E-R 图转换成关系数据模型的过程属于( )。(分数:

3、2.00)A.需求分析阶段B.概念设计阶段C.逻辑设计阶段D.物理设计阶段9.有三个关系 R、S 和如下; (分数:2.00)A.并B.自然连接C.笛卡尔积D.交10.设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份证号),课程 C(课号,课名),Q选课 SC(学号,课号,成绩),则表 SC 的关键字(键或码)为( )。(分数:2.00)A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩11.下列叙述中正确的是( )。(分数:2.00)A.C 程序中的注释只能出现在程序的开始位置和语句的后面B.C 程序书写格式严格,要求一行内只能写一个语句C.C 程序书写格式自由,

4、一个语句可以写在多行上D.用 C 语言编写的程序只能放在一个程序文件中12.下列选项中不合法的标识符是( )。(分数:2.00)A.printB.FORC.b=1.1;16.有下列程序段: char ch;int k; ch=a;k=12; printf(“%c,%d,“,ch,ch,k); printf(“k=%d/n“,k); 已知字符 a 的 ASCII 十进制代码为 97,则执行上述程序段后输出结果是( )。(分数:2.00)A.因变量类型与格式描述符的类型不匹配输出无定值B.输出项与格式描述符个数不符,输出为零值或不定值C.a,97,12k=12D.a,97,k=1217.已知字母

5、A 的 ASCII 代码值为 65,若变量 kk 为 char 型,下列不能正确判断出比中的值为大写字母的表达式是( )。(分数:2.00)A.kk=A if(aB) a=b;c=a; if(c!=A) c=b; printf(“%d,%d,%d/n“,a,b,C) ; 其输出结果是( )。(分数:2.00)A.程序段有语法错B.3,5,3C.3,5,5D.3,5,720.有下列程序: #include stdio.h main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0:a+;break; case 1:b+;break

6、; case 2: a+;b+;break; case 3: a+;b+; printf(“a=%d,b=%d/n“,a,B) ; 程序的运行结果是( )。(分数:2.00)A.a=1,b=0B.a=2,b=2C.a=1,b=1D.a=2,b=121.有下列程序: #inelude stdio.h main() int x=8; for(;x0;x-) if(x%3) printf(“%d,“,x-);continue; printf(“%d,“,-x); 程序的运行结果是( )。(分数:2.00)A.7,4,2B.8,7,5,2C.9,7,6,4D.8,5,4,222.下列不构成无限循环的语

7、句或语句组是( )。(分数:2.00)A.n=0; do +n; while (n=0);B.n=0; while (1) n+;C.n=10; While (; n-;D.for(n=0, i=1; ;i+)n+=i23.有下列程序: #include stdio.h main() int a=1,2,3,4,y,*p= -p; y=*p; printf(“y=%d/n“,y); 程序的运行结果是( )。(分数:2.00)A.y=0B.y=1C.y=2D.y=324.下列错误的定义语句是( )。(分数:2.00)A.int x 3=0,1,1,2,3;B.int x43=1,2,3,1,2,

8、3,1,2,3,1,2,3;C.int x4 =1,2,3,1,2,3,1,2,3,1,2,3;D.int x 3=1,2,3,4;25.设有下列程序段: char s20=“Beijing“,*p; p=s; 则执行 p=s;语句后,下列叙述正确的是( )。(分数:2.00)A.可以用*p 表示 s0B.s 数组中元素的个数和 p 所指字符串长度相等C.s 和 p 都是指针变量D.数组 s 中的内容和指针变量 p 中的内容相同26.若有定义:int a233;,下列选项中对 a 数组元素正确引用的是( )。(分数:2.00)A.a2!1B.a23C.a03D.a12!127.有定义语句:ch

9、ar s10;, 若要从终端给 s 输入 5 个字符,错误的输入语句是( )。(分数:2.00)A.gets( char c;REC; REC t1,t2;B.struct REC; int n; char c; REC t1,t2;C.typedef struct REC; int n=0; char c=A; t1,t2;D.stmct int n; char c; REC; REC t1,t2;30.下列叙述中错误的是( )。(分数:2.00)A.gets 函数用于从终端读入字符串B.getchar 函数用于从磁盘文件读入字符C.fputs 函数用于把字符串输出到文件D.fwrite 函

10、数用于以二进制形式输出数据到文件31.有下列程序: #include stdio.h main() int s12=1,2,3,4,4,3,2,1,1,1,2,3,c5=0,i; for(i=0;i12;i+)csi+; for(i=1;i5;i+)printf(“%d“,ci); printf(“/n“); 程序的运行结果是( )。(分数:2.00)A.1 2 3 4B.2 3 4 4C.4 3 3 2D.1 1 2 332.有下列程序: #include stdio.h void fun(int * s,int n1,int n2) int i,j,t; i=n1;j=n2; while(

11、ij)t=si;si=sj;sj=t;i+;j-; main() int a10=1,2,3,4,5,6,7,8,9,0,k; fun(a,0,3); fun(a,4,9);fun(a,0,9); for(k=0;k10;k+)printf(“%d“,ak);printf(“/n“); 程序的运行结果是( )。(分数:2.00)A.0987654321B.4321098765C.5678901234D.098765123433.有下列程序: #include stdio.h #include “string.h“ void tim(char *s,int n) char *t;int i,j;

12、 for(i=0;in-1;i+) for(j=i+1;jn;j+) if(strlen(si)strlen(sj) t=si;si=sj;sj=t; main() char *ss= “bcc“,“bbcc“,“xy“,“aaaacc“,“aabcc“; fun(ss,5);printf(“%s,%s/n“,ss0,ss4); 程序的运行结果是( )。(分数:2.00)A.xy,aaaaccB.aaaacc,xyC.bcc,aabccD.aabcc,bcc34.有下列程序: #include stdio.h int f(int x) int y; if(x=0x=1)return(3); y

13、=x*x-f(x-2); return y; main() int z; z=f(3);printf(“%d/n“,z); 程序的运行结果是( )。(分数:2.00)A.0B.9C.6D.835.有下列程序: #include stdio.h void fun(char *a, char *B) while(*a=*)a+; while(*b=*A) b+;a+; main() char *s=“*a*b*“,t80; fun(s,t);puts(t); 程序的运行结果是( )。(分数:2.00)A.*a*bB.a*bC.a*b*D.ab36.有下列程序: #include stdio.h #

14、include “string.h“ typedef structchar 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.sex,c.score0,c.score1); 程序的运行结果是(

15、 )。(分数:2.00)A.Qian,f,95,92B.Qian,m,85,90C.Zhao,f,95,92D.Zhao,m, 85,9037.有下列程序: #include stdio.h main() FILE *fp; int a10=1,2,3,i,n; fp=fopen(“d1.dat“,“w“); for(i=0;i3;i+) fprintf(fp,“%d“,ai); fprintf(fp,“/n“); fclose(fp);fp=open(“d1.dat“,“r“); fscanf(fp,“%d“, fclose(fp); prinff(“%d/n“,n); 程序的运行结果是(

16、)。(分数:2.00)A.12300B.123C.1D.32138.变量 a 中的数据用二进制进表示的形式是 01011101,变量 b 中的数据用二进制表示的形式是 11110000,若要求将 a 的高 4 位取反,低 4 位不变,所要执行的运算是( )。(分数:2.00)A.a*bB.abC.a,则下列叙述正确的是( )。(分数:2.00)A.f 是基类型为 int 的指针变量B.f 是指向函数的指针变量,该函数具有一个 int 类型的形态C.f 是指向 int 类型一维数组的指针变量D.f 是函数名,该函数的返回值是其类型为 int 类型的地址二、B填空题/B(总题数:14,分数:14.

17、00)41.测试用例包括输入值集和U 【1】 /U值集。(分数:1.00)填空项 1:_42.深度为 5 的满二叉树有U 【2】 /U个叶子结点。(分数:1.00)填空项 1:_43.设某循环队列的容量为 50,头指针 front=5(指向队头元素的前一位置),尾指针 rear=29(指向队尾元素),则该循环队列中共有U 【3】 /U个元素。(分数:1.00)填空项 1:_44.在关系数据库中,用来表示实体之间联系的是U 【4】 /U。(分数:1.00)填空项 1:_45.在数据库管理系统提供的数据定义语言、数据操纵语言和数据控制语言中,U 【5】 /U负责数据的模式定义与数据的物理存取构建。

18、(分数:1.00)填空项 1:_46.已有定义;char c= ;int a=1,b;(此处 c 的初值为空格字符),执行 b=!c ,下列程序段的输出结果是U 【8】 /U。 for(k=2;k6;k+,k+)printf(“+%d“k);(分数:1.00)填空项 1:_49.下列程序的定义语句中,x1的初值是U 【9】 /U,程序运行后输出的内容是U 【10】 /U。 #include stdio.h main() int x=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,*p4,i; for(i=0;i4;i+) pi= printf(“%d“,pi0);

19、 printf(“/n“); (分数:1.00)填空项 1:_50.下列程序的输出结果是U 【11】 /U。 #include stdio.h void swap(int *a, int *B) int *t; t=a;a=b;b=t; main() int i=3,j=5,*p= swap(p,q);printf(“%d %d/n“,*p,*q); (分数:1.00)填空项 1:_51.下列程序舶输出结果是U 【12】 /U。 #include stdio.h main() int a5=2,4,6,8,10,*p; p=a;p+; printf(“%d“,*p); (分数:1.00)填空项

20、 1:_52.下列程序的输出结果是U 【13】 /U。 #include stdio.h void fun(int x) if(x/20) fun(x/2); printf(“%d“,x); main() fun(3);printf(“/n“); (分数:1.00)填空项 1:_53.下列程序中函数 fun 的功能是:统计 person 所指结构体数组中所有性别(sex)为 M 的记录的个数,存入变量 n 中,并作为函数值返回。请填空。 #include stdio.h #define N 3 typedef struct int num; char nam10; char sex; SS;

21、int fun(SS person) int i,n=0; for(i=0; iN; i+) if(U 【14】 /U=M) n+; return n; main() SS WN=1,“AA“,F,2,“BB“,M,3,“CC“,M; int n; n=fun(W); printf(“n=%d/n“, n); (分数:1.00)填空项 1:_54.下列程序从名为 filea.dat 的文本文件中逐个读入字符并显示在屏幕上。请填空。 #include stdio.h main() FILE *fp; char ch; fp = fopen(U 【15】 /U); ch = fgetc(fp);

22、while(!feof(fp) putchar(ch); ch=fgetc(fp); putchar(“/n“); fclose(fp); (分数:1.00)填空项 1:_全国计算机等级考试二级 C 语言真题 2008 年 4 月答案解析(总分:94.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:80.00)1.程序流程图中带有箭头的线段表示的是( )。(分数:2.00)A.图元关系B.数据流C.控制流 D.调用关系解析:解析 程序流程图是一种传统的、应用广泛的软件过程设计工具,通常也称为程序框图。其中,用带箭头的线段表示控制流,用矩形表示加工步骤,用菱形表示逻辑条件,2.

23、结构化程序设计的基本原则不包括( )。(分数:2.00)A.多态性 B.自顶向下C.模块化D.逐步求精解析:解析 结构化程序设计方法的主要原则可以概括为:自顶向下,逐步求精,模块化和限制使用GOTO 语句,其中不包括多态性。3.软件设计中模块划分应遵循的准则是( )。(分数:2.00)A.低内聚低耦合B.高内聚低耦合 C.低内聚高耦合D.高内聚高耦合解析:解析 耦合性和内聚性是模块独立性的两个定性标准,各模块的内聚性越强,则耦合性越弱。软件设计应该遵循高内聚低耦合。4.在软件开发中,需求分析阶段产生的主要文档是( )。(分数:2.00)A.可行性分析报告B.软件需求规格说明书 C.概要设计说明

24、书D.集成设计计划解析:解析 需求分析的最终结果是生成软件需要规格说明书,可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标确认,又可以作为控制软件开发进程的依据。5.算法的有穷性是指( )。(分数:2.00)A.算法程序的运行时间是有限的 B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用解析:解析 算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。6.对长度为 n 的线性表排序,在最坏情况下,比较次数不是 n(n-1)/2 的排序方法是( )。(分数:2.00)A.快速排序B.冒泡排序C.直接插入排序

25、D.堆排序 解析:解析 各种排序方法中最坏情况下需要比较的次数分别为:冒泡排序 n(n-1)/2,快速排序 n(n-1)/2、简单插入排序 n(n-1)/2、希尔排序 O(n1.5),简单选择排序 n(n-1)/2、堆排序 O(nlog2n),7.下列关于栈的叙述正确的是( )。(分数:2.00)A.栈按“先进先出”组织数据B.栈按“先进后出”组织数据 C.只能在栈底插入数据D.不能删除数据解析:解析 栈是限定在一端进行插入和删除的线性表,允许进行插入和删除元素的一端称为栈顶,另一端称为栈底。栈是按照“先进后出”的原则组织数据的。8.在数据库设计中,将 E-R 图转换成关系数据模型的过程属于(

26、 )。(分数:2.00)A.需求分析阶段B.概念设计阶段C.逻辑设计阶段 D.物理设计阶段解析:解析 数据库的设计阶段包括需要分析、概念设计、逻辑设计和物理设计,其中将 E-R 图转换成关系数据模型的过程属于逻辑 9V 阶段。9.有三个关系 R、S 和如下; (分数:2.00)A.并B.自然连接C.笛卡尔积D.交 解析:解析 关系 R 与 S 经交运算后所得到的关系是由那些既在 R 内又在 S 内的有序组组成的,记为RS。10.设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份证号),课程 C(课号,课名),Q选课 SC(学号,课号,成绩),则表 SC 的关键字(键或码)为( )

27、。(分数:2.00)A.课号,成绩B.学号,成绩C.学号,课号 D.学号,姓名,成绩解析:解析 关键字是指属性或属性的组合,其值能够唯一地标识一个元组,而在 SC 中学号和课号的组合可以对元组进行唯一的标识。11.下列叙述中正确的是( )。(分数:2.00)A.C 程序中的注释只能出现在程序的开始位置和语句的后面B.C 程序书写格式严格,要求一行内只能写一个语句C.C 程序书写格式自由,一个语句可以写在多行上 D.用 C 语言编写的程序只能放在一个程序文件中解析:解析 本题主要考查的是 C 语言结构中的源程序书写格式这个知识点,在 C 语言中注释部分对程序的运行结果不产生任何影响,它可以出现在

28、任意位置;C 语言书写自由,一行内可以写多个语句,一个语句可以写在多行上;由于 C 语言编写的程序有很好的移植性,可以放在多个程序文件中。12.下列选项中不合法的标识符是( )。(分数:2.00)A.printB.FORC.b=1.1;解析:解析 本题考查的是数据类型的定义并赋值,选项 A)中对变量声明类型且赋值的情况是不允许出现的,必须单独定义其类型。选项 B)给实型变量赋值时不用引号,也不能将地址赋予实型变量:C 语言允许在一个类型说明符后说明多个相同类型的变量,各变量之间要用逗号(,)隔开,而不是用分号(;)隔开;在计算机存储字符时将字符相应的 ASCII 码以其对应的二进制进行存放,选

29、项 B)中的定义是合法的,故选项 B)正确。16.有下列程序段: char ch;int k; ch=a;k=12; printf(“%c,%d,“,ch,ch,k); printf(“k=%d/n“,k); 已知字符 a 的 ASCII 十进制代码为 97,则执行上述程序段后输出结果是( )。(分数:2.00)A.因变量类型与格式描述符的类型不匹配输出无定值B.输出项与格式描述符个数不符,输出为零值或不定值C.a,97,12k=12D.a,97,k=12 解析:解析 在用基本输出语句 printf 时,格式说明与输出项的个数应该相同。如果格式说明的个数少于输出项的个数(正如本题的情况),多余

30、的输出项不予输出,如果格式说明个数多于输出项个数,则对于多余的格式项输出不定值或 0。故本题选项 D)是正确的输出结果。17.已知字母 A 的 ASCII 代码值为 65,若变量 kk 为 char 型,下列不能正确判断出比中的值为大写字母的表达式是( )。(分数:2.00)A.kk=A if(aB) a=b;c=a; if(c!=A) c=b; printf(“%d,%d,%d/n“,a,b,C) ; 其输出结果是( )。(分数:2.00)A.程序段有语法错B.3,5,3 C.3,5,5D.3,5,7解析:解析 本题考查的是程序结构设计中 if 语句的应用,当 if 判断条件成立时就执行其后

31、的相关语句,否则不执行,本题中第一个 if 条件不成立,故不执行“a=b”,接着执行“c=a”,此时第二个 if 条件也不成立,故不执行其后语句,最终 c 的值为 3。20.有下列程序: #include stdio.h 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; case 3: a+;b+; printf(“a=%d,b=%d/n“,a,B) ; 程序的运行结果是( )。(分数:2.00)A.a=1,b=0B.a=2

32、,b=2C.a=1,b=1D.a=2,b=1 解析:解析 本题考查的是用 switch 语句实现多分支选择结构,首先进入第一个 switch(x)判断,进入case 1 中进行嵌套判断,如果 switch(y)也成立,a 自加 1,遇到 break,退出嵌套,接着执行 case 2,a 自加为 2,b 自加为 1,遇到 break,结束循环,此时 a=2,b=1,故选项 D)正确21.有下列程序: #inelude stdio.h main() int x=8; for(;x0;x-) if(x%3) printf(“%d,“,x-);continue; printf(“%d,“,-x); 程

33、序的运行结果是( )。(分数:2.00)A.7,4,2B.8,7,5,2C.9,7,6,4D.8,5,4,2 解析:解析 “x-”表示先执行程序,再令 x 的值减 1;而“-x”表示令 x 的值减 1,再执行程序。x=8时,x%2 为非 0 值,执行语句printtr(“%d,“, x-); continue;),输出“8,”,此时经过 x-,x 的值变为 7,跳出此次循环;执行 x-,x=6,x%3=0,后面语句不执行,执行语句 print(“%d,“,-x);,输出“5,”:执行 for 语句中的 x-,得到 x=5,输出“5,”判断 x%3,输出“4,”,执行两次 x-后,x=2,执行p

34、rintf(“d,“,x-);continue;后,输出“2,”;然后执行两次 x-后,x=0,不符合“x0”,循环全部结束。22.下列不构成无限循环的语句或语句组是( )。(分数:2.00)A.n=0; do +n; while (n=0); B.n=0; while (1) n+;C.n=10; While (; n-;D.for(n=0, i=1; ;i+)n+=i解析:解析 选项 B)中 while(1)永远为真所以进入死循环,选项 C)中 while(n=10)同理,选项 D)中 for循环没有循环限定条件也将进入无限循环,只有选项 A)中 while(n=0)循环判定成立,循环将不

35、进入无限循环。23.有下列程序: #include stdio.h main() int a=1,2,3,4,y,*p= -p; y=*p; printf(“y=%d/n“,y); 程序的运行结果是( )。(分数:2.00)A.y=0B.y=1C.y=2D.y=3 解析:解析 首先定义了一个一维数组和指针,接着将数组第四个元素的地址赋予*p,进行-p 使指针p 指向了数组的第三个元素,通过 y=*p:将数组第三个元素的值 3 赋予 y,所以选项 D)正确。24.下列错误的定义语句是( )。(分数:2.00)A.int x 3=0,1,1,2,3;B.int x43=1,2,3,1,2,3,1,

36、2,3,1,2,3;C.int x4 =1,2,3,1,2,3,1,2,3,1,2,3; D.int x 3=1,2,3,4;解析:解析 一维数组定义和初始化是允许省略行下标,不允许省略列下标,故选项 C)定义错误。25.设有下列程序段: char s20=“Beijing“,*p; p=s; 则执行 p=s;语句后,下列叙述正确的是( )。(分数:2.00)A.可以用*p 表示 s0 B.s 数组中元素的个数和 p 所指字符串长度相等C.s 和 p 都是指针变量D.数组 s 中的内容和指针变量 p 中的内容相同解析:解析 程序定义了字符数组 s 和字符型指针变量 p,并且使得 p 指向数组,

37、执行 p=s;语句后,*p即表示 s0;s 数组中元素的个数和 p 所指字符串长度不相等,因为 s 数组中元素的个数包括字符串结束标志“/0”,而 p 所指字符串长度不包括“/0”;s 是字符型数组,p 是指针变量;数组 s 中的内容和指针变量 p 中的内容不相同,数组中存放的是字符串,而指针变量 p 存放的是数组的首地址。26.若有定义:int a233;,下列选项中对 a 数组元素正确引用的是( )。(分数:2.00)A.a2!1B.a23C.a03D.a12!1 解析:解析 数组 a23包括元素 a00,a01,a02,a10,a11,a12,只有选项 D)是正确的引用,即引用元素 a0

38、0,其他选项的引用均是下标越界。27.有定义语句:char s10;, 若要从终端给 s 输入 5 个字符,错误的输入语句是( )。(分数:2.00)A.gets(,输入项部分应该是一个地址值。28.下列叙述中错误的是( )。(分数:2.00)A.在程序中凡是以“#”开始的语句行都是预处理命令行B.预处理命令行的最后不能以分号表示结束C.#define MAX 是合法的宏定义命令行 D.C 程序对预处理命令行的处理是在程序执行的过程中进行的解析:解析 预处理命令行是以“#”开始的语句,预处理命令行的最后不能以分号表示结束,预处理命令行。其中宏定义的字符替换的定义格式为:#define 标识符字

39、符串,预处理命令行是在系统对源程序进行编译之前进行处理的,不是在程序执行的过程中。29.下列结构体类型说明和变量定义中正确的是( )。(分数:2.00)A.typedef struct int n; char c;REC; REC t1,t2; B.struct REC; int n; char c; REC t1,t2;C.typedef struct REC; int n=0; char c=A; t1,t2;D.stmct int n; char c; REC; REC t1,t2;解析:解析 定义结构体类型的一般形式为:struct 结构体名成员列表:struct 结构体名后不能加“:

40、”号,所以选项 B)、C)错误,选项 D)中定义无名称的结构体类型同时定义结构体变量形式应为struet t1,t2;选项 A)为用户自定义类型,其为正确的定义形式。30.下列叙述中错误的是( )。(分数:2.00)A.gets 函数用于从终端读入字符串B.getchar 函数用于从磁盘文件读入字符 C.fputs 函数用于把字符串输出到文件D.fwrite 函数用于以二进制形式输出数据到文件解析:解析 本题考查的是输入输出函数的使用,gets 和 getchar 函数用于从标准输入设备终端读八字符串和字符,并非从磁盘文件读入,fputs 用于把字符串输出到文件,fwrite 用于以二进制形式

41、输出数据到文件,故选项 B)描述错误。31.有下列程序: #include stdio.h main() int s12=1,2,3,4,4,3,2,1,1,1,2,3,c5=0,i; for(i=0;i12;i+)csi+; for(i=1;i5;i+)printf(“%d“,ci); printf(“/n“); 程序的运行结果是( )。(分数:2.00)A.1 2 3 4B.2 3 4 4C.4 3 3 2 D.1 1 2 3解析:解析 本题考查 for 语句的循环控制,首先定义了两个数组并赋予了初始值,第一个 for 循环语句循环 12 次遍历 s 数组的各个元素,将 s中的元素值作为

42、c数组中的下标,使相应的值自加。例如当i=0,cs0)+为 c1+,其值变为 1,当执行 i=1,2,.11 后,c1、c2、 c3、c4分别为4、3、3,2,故选项 C)为正确的运行结果。32.有下列程序: #include stdio.h void fun(int * s,int n1,int n2) int i,j,t; i=n1;j=n2; while(ij)t=si;si=sj;sj=t;i+;j-; main() int a10=1,2,3,4,5,6,7,8,9,0,k; fun(a,0,3); fun(a,4,9);fun(a,0,9); for(k=0;k10;k+)prin

43、tf(“%d“,ak);printf(“/n“); 程序的运行结果是( )。(分数:2.00)A.0987654321B.4321098765C.5678901234 D.0987651234解析:解析 从题目的主函数入手,定义了一个一维数组并赋韧值,接着调用函数 fun(),fun()函数的功能为使数组中的元素逆序,当调用 fun(a,0,3),将实参传递给形参实现数组 a 中 a0-a3这 4 个元素逆序;同理调用 fun(a,4,9)是将上步排列好的 a 数组中 a4-a9这 6 个元素逆序;调用 fun(a,0,9)是将数组中 a0-a9这 10 个元素在逆序,再用 printf()函

44、数输出结果为 5678901234,故选项 C)正确。33.有下列程序: #include stdio.h #include “string.h“ void tim(char *s,int n) char *t;int i,j; for(i=0;in-1;i+) for(j=i+1;jn;j+) if(strlen(si)strlen(sj) t=si;si=sj;sj=t; main() char *ss= “bcc“,“bbcc“,“xy“,“aaaacc“,“aabcc“; fun(ss,5);printf(“%s,%s/n“,ss0,ss4); 程序的运行结果是( )。(分数:2.00

45、)A.xy,aaaacc B.aaaacc,xyC.bcc,aabccD.aabcc,bcc解析:解析 从 main 函数入手,定义了指向字符串的指针数组,并赋予了初始值,调用 fun()函数,函数的功能是:比较数组中各个元素的长度,按元素长度从小到大排列数组元素,所以执行 fun(ss,5)函数后,*ss=“xy“,“bcc“,“bbcc“,“aabcc“,“aaaacc“,所以调用 printf 函数输出 ss0,ss4的值分别为 xy,aaaacc。34.有下列程序: #include stdio.h int f(int x) int y; if(x=0x=1)return(3); y=x*x-f(x-2); return y; main() int z; z=f(3);printf(“%d/n“,z); 程序的运行结果是( )。(分数:2.00)A.0B.9C.6 D.8解析:解析 主函数调用 f()函数,将实参 3 传递给 x,进行 if 条件语句的判断不成立,接着执行y=3*3-f(1),再执行 f(1)而 f(1)满足 if 条件语句,所以 f(1)的值为 3,那么代入 y=3*3-f(1)=9-3=6,故选项 C)为正确的运行结果。35.有下列程序: #include stdio.h void fun(char *a, char *B) while(*a=*

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