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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、二级 C 语言-217 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:100.00)1.算法的空间复杂度是指_。(分数:2.50)A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间2.下列叙述中正确的是_。(分数:2.50)A.一个逻辑数据结构只能有一种存储结构B.逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率3.下列关于类、对象、属性和方法的叙述中,错误的是_

2、。(分数:2.50)A.类是对一类具有相同的属性和方法对象的描述B.属性用于描述对象的状态C.方法用于表示对象的行为D.基于同一个类产生的两个对象不可以分别设置自己的属性值4.在软件开发中,需求分析阶段产生的主要文档是_。(分数:2.50)A.数据字典B.详细设计说明书C.数据流图说明书D.软件需求规格说明书5.数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和_。(分数:2.50)A.编码设计B.测试阶段C.运行阶段D.物理设计6.在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是_。(分数:2.50)A并B交C.投影D除7.下列叙述中,正确的是_。(分数:2.50)A.软件

3、交付使用后还需要进行维护B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令8.设一棵满二叉树共有 15 个结点,则在该满二叉树中的叶子结点数为_。(分数:2.50)A.7B.8C.9D.109.设 R 是一个 2 元关系,有 3 个元组,S 是一个 3 元关系,有 3 个元组。如 T=RS,则 T 的元组的个数为_。(分数:2.50)A.6B.8C.9D.1210.下列选项中,不属于数据库管理的是_。(分数:2.50)A.数据库的建立B.数据库的调整C.数据库的监控D.数据库的校对11.对于一个正常运行的 C 程序,下列叙述中正确的是

4、_。(分数:2.50)A.程序的执行总是从 main 函数开始,在 main 函数结束B.程序的执行总是从程序的第一个函数开始,在 main 函数结束C.程序的执行总是从 main 函数开始,在程序的最后一个函数中结束D.程序的执行总是从程序中的第一个函数开始,在程序的最后一个函数中结束12.以下选项中与 if(a=1)a+;else a=b;语句功能不同的语句是_。(分数:2.50)A.switch(a)case 0:a=b;break;default:a+;B.switch(a=1)case 0:a+;default:a=b;C.switch(a)default:a=b;break;cas

5、e 1:a+;D.a=(a=1)?(a+):b13.以下不合法的用户标识符是_。(分数:2.50)A.804zhangB._hhC.yy614D.If14.已知 char a;int b;float c;double d:则表达式 a-b+c-d 结果为_型。(分数:2.50)A.doubleB.floatC.intD.char15.假设有语句 sizeof(double),则它是_。(分数:2.50)A.一个整型表达式B.一个双精度浮点型表达式C.一种函数调用D.一种函数定义16.若变量都已正确说明,则以下程序段输出结果为_。 #includestdio.h main() char a=“a

6、“; int b=2; printf(ab?“*a=%d“:“#b=%d“,a,b); (分数:2.50)A.*a=3B.#b=3C.*a=3#b=5D.全部错误17.若有以下定义(设 int 类型变量占 2 个字节) int i=8,j=9; 则以下语句: printf(“i=%d,j=%d/n“,i,j); 输出的结果是_。(分数:2.50)A.i=8,j=9B.i=%d,j=%8C.i=%d,j=%dD.8,918.设 a 和 b 均为 int 型变量,且 a=6,b=11,则能使值为 3 的表达式是_。(分数:2.50)A.b%(a%4)B.b%(a-a%5)C.b%a-a%5D.(b

7、%a)-(a%4)19.有关 return 语句说法不正确的是_。(分数:2.50)A.系统默认的返回值类型为整型,故当函数的返回值为 int 型时,在函数定义时,返回值的类型说明可以省略。B.当函数有返回值时,凡是允许表达式出现的地方,都可以调用该函数。C.当函数没有返回值时,函数的返回值类型可以说明为 void 型,它表示“无类型”或“空类型”。D.函数的返回值类型必须与 return 语句中的表达式值的类型一致,但 C 语言也允许不同;这时,系统以函数定义时的返回值类型说明为准,并自动地将 return 语句中表达式的值转换为函数的返回值类型。20.有以下程序: #includestdi

8、o.h main() int i=0,a=0; while(i20) for(;) if(i%5)=0)break; else i-; i+=13,a+=i; printf(“%d/n“,a); 程序的输出结果是_。(分数:2.50)A.62B.63C.23D.3621.在下列选项中,没有构成死循环的程序段是_。(分数:2.50)A.int i=100;for(;) i=i%10+1;if(i10)break;B.while(i);C.int k=0;do+k;while(k=10);D.int s=12;while(s);-s;22.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的

9、是_。(分数:2.50)A.函数调用可以作为独立的语句存在B.函数调用可以作为一个函数的实参C.函数调用可以出现在表达式中D.函数调用可以作为一个函数的形参23.以下程序的输出结果是_。 #includestdio.h main() int a=1,b=3; if(+a0) else printf(“%d,%d/n“,b,a); (分数:2.50)A.2,2B.1,3C.3,2D.3,124.有以下程序: #include stdio.h main() int x; scanf(“%d“, if(x=0);else if(x!=5) printf(“%d/n“,x); 程序运行时,输入的值在哪

10、个范围才会有输出结果_。(分数:2.50)A.不等于 5 的整数B.大于 0 且不等 5 的整数C.大于 0 或等于 5 的整数D.小于 5 的整数25.若执行下述程序时,若从键盘输入 6 和、8,结果为_。 main() int a,b,s; scanf(“%d%d“, s=a; if(s=b) s*=s; printf(“%d“,s); (分数:2.50)A.36B.64C.48D.以上都不对26.若运行时给变量 x 输入 12,则以下程序的运行结果是_。 main() int x,y; scanf(“%d“, y=x12?x+10:x-12; printf(“%d/n“,y); (分数:

11、2.50)A.0B.22C.12D.1027.运行下面程序时,从键盘输入字母 A,则输出结果是_。 #includestdio.h main() char ch; ch=getchar(); switch(ch) case“A“:printf(“AAAA/n“); case“B“:printf(“BBBB/n“); default:printf(“CCCC/n“); (分数:2.50)A.AAAAB.AAAABBBBC.AAAABBBBCCCCD.AAAACCCC28.以下叙述正确的是_。(分数:2.50)A.只能在循环体内和 switch 语句体内使用 break 语句B.contiune

12、语句的作用是结束整个循环的执行C.在循环体内使用 break 语句或 continue 语句的作用相同D.从多层循环嵌套中退出时,只能使用 goto 语句29.下列叙述中错误的是_。(分数:2.50)A.在 C 语言中,对二进制文件的访问速度比文本文件快B.在 C 语言中,随机文件以二进制代码形式存储数据C.语句 FILE fp;定义了一个名为 fp 的文件指针D.C 语言中的文本文件以 ASCII 码形式存储数据30.若输入“abcdef”、“abdef”,以下程序的输出结果为_。 #includestdio.h #includestring.h main() int n; char s12

13、0,s220,*p1,*p2; scanf(“%s“,s1); scanf(“%s“,s2); p1=s1; p2=s2; n=strcmp(p1,p2); printf(“%d/n“,n);(分数:2.50)A.-1B.0C.“abcdef“D.“abdef“31.以下语句定义正确的是_。(分数:2.50)A.int a14=1,2,3,4,5;B.float a3=1,2,3;C.long a23=1,1,2,1,2,3,0,0;D.double a3=0;32.下述程序的输出结果是_。 #includestdio.h void main() int a5=1,2,3,4,5); int

14、*p=a,*q= printf(“%d“,*(p+); printf(“%d“,*q); (分数:2.50)A.22B.11C.34D.1233.字符串“/“ABCDEF“/“的长度是_。(分数:2.50)A.11B.10C.5D.334.若二维数组 a 有 m 列,则在 aij前的元素个数为_。(分数:2.50)A.j*m+iB.i*m+jC.j*m+i+1D.i*m+j+135.下列程序的运行结果是_。 #includestdio.h void fun(int*s,int*p) static int t=3; *p=st; t-; void main() int a=2,3,4,5,k,x

15、; for(k=0;k4;k+) fun(a, printf(“%d,“,x); (分数:2.50)A.5,4,3,2,B.2,3,4,5,C.2,2,2,2,D.5,5,5,5,36.以下有关宏替换的叙述不正确的是_。(分数:2.50)A.双引号中出现的宏名不替换B.使用宏定义可以嵌套C.宏定义仅仅是符号替换D.宏名必须用大写字母表示37.设有定义:char *c;,以下选项中能够使字符型指针 c 正确指向一个字符串的是_。(分数:2.50)A.char str=“string“;c=str;B.scanf(“%s“,c);C.c=getchar();D.char str=“string“;

16、strcpy(“c,str“)38.有以下程序: #includestdio.h #includestring.h struct A int a;char b10;double c; void f(struct A *t); main() struct A a=1001,“ZhangDa“,1098.0; f(printf(“%d,%s,%6.1f/n“,a.a,a.b,a.c); void f(struct A *t) t-a=1002;strcpy(t-b,“ChangRong“);t-c=1202.0; 程序运行后的输出结果是_。(分数:2.50)A.1001,zhangDa,1098.

17、0B.1002,ChangRong,1202.0C.1001,ChangRong,1098.0D.1002,zhangDa,1202.039.下述程序的输出结果是_。 #includestdio.h void main() char a=1,b=2; char c=ab2; printf(“/n%d“,c); (分数:2.50)A.9B.10C.12D.240.已知一个文件中存放若干工人档案记录,其数据结构如下: struct a char number100; int age; float p6; ; 定义一个数组:struct a b10; 假定文件已正确打开,不能正确地从文件中读入 10

18、 名工人数据到数组 b 中的是_。(分数:2.50)A.fread(b,sizeof(struct a),10,fp);B.for(i=0;i10;i+)fread(bi,sizeof(struct a),1,fp);C.for(i=0;i10;i+)fread(b+i,sizeof(struct a),1,fp);D.for(i=0;i5;i+=2)fread(b+i,sezeof(struct a),2,fp);二级 C 语言-217 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:100.00)1.算法的空间复杂度是指_。(分数:2.50)A.算法程序

19、的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间 解析:解析 算法的空间复杂度是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行中所需要的额外空间。其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间。如果额外空间量相对于问题规模来说是常数,则称该算法是原地工作的。在许多实际问题中,为了减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减少不必要的额外空间。2.下列叙述中正确的是_。(分数:2.50)A.一个逻辑数据结构只能有一种存储结构B.逻辑结构

20、属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率 解析:解析 数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,常用的存储结构有顺序和链式结构。采用不同的存储结构,其处理的效率是不同的。3.下列关于类、对象、属性和方法的叙述中,错误的是_。(分数:2.50)A.类是对一类具有相同的属性和方法对象的描述B.属性用于描述对象的状态C.方法用于表示对象的行为D.基于同一个类产生的两个对象不可以分别设置自己的属性值

21、 解析:解析 类是对一类具有相同的属性和方法对象的描述,属性用于描述对象的状态,方法用于表示对象的行为,基于同一个类产生的两个对象是可以分别设置自己的属性值。4.在软件开发中,需求分析阶段产生的主要文档是_。(分数:2.50)A.数据字典B.详细设计说明书C.数据流图说明书D.软件需求规格说明书 解析:解析 需求分析的最终结果是生成软件需求规格说明书,可以为用户、分析人员和设计人员之间的交流提供方便。5.数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和_。(分数:2.50)A.编码设计B.测试阶段C.运行阶段D.物理设计 解析:解析 数据库设计目前一般采用生命周期法,即将整个数据库应用系

22、统的开分解成目标独立的若干阶段,它们是:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。在数据库设计中采用上面几个阶段中的前四个阶段,并且重点以数据结构和模型设计为主线。6.在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是_。(分数:2.50)A并B交 C.投影D除解析:解析 关系 R 与 S 经交运算后所得到的关系是由那些既在 R 内又在 S 内的有序组所组成,记为RS,交运算不改变关系表中的属性个数但能减少元组个数。7.下列叙述中,正确的是_。(分数:2.50)A.软件交付使用后还需要进行维护 B.软件一旦交付使用就不需要

23、再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令解析:解析 软件的运行和维护是指将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。而软件生命周期是指软件产品从提出、实现、使用维护到停止使用退役的过程。8.设一棵满二叉树共有 15 个结点,则在该满二叉树中的叶子结点数为_。(分数:2.50)A.7B.8 C.9D.10解析:解析 在具有 n 个结点的满二叉树,其非叶子结点数为 int(n/2),而叶子结点数等于总结点数减去非叶子结点数。本题 n=15,故非叶子结点数等于 int(15/2)=7,叶子结点数等于 15-

24、7=8。9.设 R 是一个 2 元关系,有 3 个元组,S 是一个 3 元关系,有 3 个元组。如 T=RS,则 T 的元组的个数为_。(分数:2.50)A.6B.8C.9 D.12解析:解析 R 为 n 元关系,有 p 个元组 S 为 m 元关系,有 q 个元组。两个关系笛卡儿积是一个 n+m 元的关系,元组个数是 qp。所以 T 的元组的个数为 9 个。10.下列选项中,不属于数据库管理的是_。(分数:2.50)A.数据库的建立B.数据库的调整C.数据库的监控D.数据库的校对 解析:解析 数据库管理一般包括:数据库的建立、数据库的调整、数据库的重组、数据库的安全性控制与完整性控制、数据库的

25、故障恢复和数据库的监控。11.对于一个正常运行的 C 程序,下列叙述中正确的是_。(分数:2.50)A.程序的执行总是从 main 函数开始,在 main 函数结束 B.程序的执行总是从程序的第一个函数开始,在 main 函数结束C.程序的执行总是从 main 函数开始,在程序的最后一个函数中结束D.程序的执行总是从程序中的第一个函数开始,在程序的最后一个函数中结束解析:解析 一个 C 语言源程序无论包括了多少函数,总是从 main 函数开始执行,从 main 函数结束。12.以下选项中与 if(a=1)a+;else a=b;语句功能不同的语句是_。(分数:2.50)A.switch(a)c

26、ase 0:a=b;break;default:a+;B.switch(a=1)case 0:a+;default:a=b; C.switch(a)default:a=b;break;case 1:a+;D.a=(a=1)?(a+):b解析:解析 if else 语句的含义是,如果变量 a 的值等于 1,变量 a 的值加 1,否则,则把变量 b 的值赋给变量 a。在本题的 4 个选项中,与其含义不同的是选项 B,因为没有 break 语句,当 a=1 的时候,会顺序执行两条语句,最终结果是将 b 的值赋给 a。13.以下不合法的用户标识符是_。(分数:2.50)A.804zhang B._hh

27、C.yy614D.If解析:解析 C 语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或下划线。14.已知 char a;int b;float c;double d:则表达式 a-b+c-d 结果为_型。(分数:2.50)A.double B.floatC.intD.char解析:解析 C 语言中允许进行不同数据类型的混合运算,但在实际运算时,要先将不同类型的数据转化成同一类型再进行运算。类型转换的一般规则是:运算中将所有 char 型转换成 int 型,float 型转换成 double 型;低级类型服从高级类型,并进行相应的转换,数据类型由低到高的顺序为:char

28、int-unsigned-long-float-double;赋值运算中最终结果的类型,以赋值运算符左边变量的类型为准,即赋值运算符右端值的类型向左边变量的类型看齐,并进行相应转换。15.假设有语句 sizeof(double),则它是_。(分数:2.50)A.一个整型表达式 B.一个双精度浮点型表达式C.一种函数调用D.一种函数定义解析:解析 sizeof(double)是 C 语言内部规定的一个计算参数(double)在计算机的内存中所占用的字节数量的函数,它返回一个整数值。16.若变量都已正确说明,则以下程序段输出结果为_。 #includestdio.h main() char a=“

29、a“; int b=2; printf(ab?“*a=%d“:“#b=%d“,a,b); (分数:2.50)A.*a=3B.#b=3C.*a=3#b=5D.全部错误 解析:解析 本题考查 printf 函数的格式和三目运算符“?:”的使用。printf 函数中格式说明符之前插入的任何字符都原样输出。本题中“ab”为真,所以返回“*a=97”。17.若有以下定义(设 int 类型变量占 2 个字节) int i=8,j=9; 则以下语句: printf(“i=%d,j=%d/n“,i,j); 输出的结果是_。(分数:2.50)A.i=8,j=9B.i=%d,j=%8 C.i=%d,j=%dD.8

30、,9解析:解析 本题考查 printf 函数的格式。printf 函数中格式说明符之前插入的任何字符都按原样输出。对于 printf 函数,有两个%说明,第一个%后面的内容要按原样输出。18.设 a 和 b 均为 int 型变量,且 a=6,b=11,则能使值为 3 的表达式是_。(分数:2.50)A.b%(a%4)B.b%(a-a%5)C.b%a-a%5D.(b%a)-(a%4) 解析:解析 表达式“a%b”表示的是求 a 除以 b 的余数。因此,选项 A:(6%4)=2,11%2=1;选项B:(6-6%5)=5,11%5=1;选项 C:11%6-6%5=4:选项 D:(11%6)-(6%4

31、)=3。19.有关 return 语句说法不正确的是_。(分数:2.50)A.系统默认的返回值类型为整型,故当函数的返回值为 int 型时,在函数定义时,返回值的类型说明可以省略。B.当函数有返回值时,凡是允许表达式出现的地方,都可以调用该函数。C.当函数没有返回值时,函数的返回值类型可以说明为 void 型,它表示“无类型”或“空类型”。D.函数的返回值类型必须与 return 语句中的表达式值的类型一致,但 C 语言也允许不同;这时,系统以函数定义时的返回值类型说明为准,并自动地将 return 语句中表达式的值转换为函数的返回值类型。 解析:解析 函数的返回值类型一般与 return 语

32、句中的表达式值的类型一致,但 C 语言也允许不同;这时,系统以函数定义时的返回值类型说明为准,并自动地将 return 语句中表达式的值转换为函数的返回值类型。20.有以下程序: #includestdio.h main() int i=0,a=0; while(i20) for(;) if(i%5)=0)break; else i-; i+=13,a+=i; printf(“%d/n“,a); 程序的输出结果是_。(分数:2.50)A.62B.63C.23D.36 解析:解析 本题考查 while 循环。当 i20 时,进入 while 循环体,循环体内的 for 循环实现的功能是,当 i

33、值是 0 或 5 的倍数时,执行“i+=13;a+=i;”这两条语句;若 i 值不是 5 的倍数则一直执行 for循环。当 i=0 时,执行 i+=13;a+=i;i=13,a=13;判断“i=1320”,进入 while 循环体,i=10 时,跳出 for 循环,执行“i+=13;a+=i;i=23,a=36”;判断“i=2320”,循环结束。21.在下列选项中,没有构成死循环的程序段是_。(分数:2.50)A.int i=100;for(;) i=i%10+1;if(i10)break;B.while(i);C.int k=0;do+k;while(k=10); D.int s=12;wh

34、ile(s);-s;解析:解析 本题考查死循环的知识。选项 A 中,for 循环没有任何控制语句就会一直执行下去,所以不可能通过控制表达式的值结束循环。循环体内,“i=i%10+1”这个表达式的值永远不会大于 10,所以永远不会跳出循环,是死循环;选项 B 中,while 中表达式永远是非 0,不会结束循环;选项 C 中,当k10 时,结束循环;选项 D 中,while(s);后面没有任何表达式而是直接加了一个分号,会一直执行,形成死循环。22.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是_。(分数:2.50)A.函数调用可以作为独立的语句存在B.函数调用可以作为一个函数的实参

35、C.函数调用可以出现在表达式中D.函数调用可以作为一个函数的形参 解析:解析 本题考查函数调用的有关知识点。函数调用可以出现在表达式中:可以作为独立的语句存在;可以作为一个函数的实参。23.以下程序的输出结果是_。 #includestdio.h main() int a=1,b=3; if(+a0) else printf(“%d,%d/n“,b,a); (分数:2.50)A.2,2B.1,3C.3,2 D.3,1解析:解析 解答本题的关键在于 if 语句条件中的表达式。初始时 a=1,b=3,所以“+a=20”,因此“+a0”为假;因为是进行逻辑与( scanf(“%d“, if(x=0)

36、;else if(x!=5) printf(“%d/n“,x); 程序运行时,输入的值在哪个范围才会有输出结果_。(分数:2.50)A.不等于 5 的整数B.大于 0 且不等 5 的整数 C.大于 0 或等于 5 的整数D.小于 5 的整数解析:解析 题目中,虽然 else 和第二个 if 不在同一行上,但等价于在同一行上,因此,程序的意思是当 x 大于 0 且不等于 5 时将其打印出来。25.若执行下述程序时,若从键盘输入 6 和、8,结果为_。 main() int a,b,s; scanf(“%d%d“, s=a; if(s=b) s*=s; printf(“%d“,s); (分数:2.

37、50)A.36B.64 C.48D.以上都不对解析:解析 首先通过 scanf 函数把从键盘读入的数据赋给变量 a 和 b,if 语句判断如果 a 和 b 不等,执行 s=s*s=64。26.若运行时给变量 x 输入 12,则以下程序的运行结果是_。 main() int x,y; scanf(“%d“, y=x12?x+10:x-12; printf(“%d/n“,y); (分数:2.50)A.0 B.22C.12D.10解析:解析 本题考查三目条件运算符“?:”。表达式“x12?x+10:x-12”即,如果 x12 成立,则x+10 的值即为此表达式的值,否则 x-12 即为此表达式的值。

38、因为 x=12,所以 x12 不成立,所以执行y=x-12=0。27.运行下面程序时,从键盘输入字母 A,则输出结果是_。 #includestdio.h main() char ch; ch=getchar(); switch(ch) case“A“:printf(“AAAA/n“); case“B“:printf(“BBBB/n“); default:printf(“CCCC/n“); (分数:2.50)A.AAAAB.AAAABBBBC.AAAABBBBCCCC D.AAAACCCC解析:解析 本题考查 switch 语句。因为 ch=A,所以第一个 switch 语句,执行 case

39、“A“后面的语句,输出 AAAA,没有遇到 break 语句,所以接着再执行 case “B“和 default,分别输出 BBBB 和 CCCC。28.以下叙述正确的是_。(分数:2.50)A.只能在循环体内和 switch 语句体内使用 break 语句 B.contiune 语句的作用是结束整个循环的执行C.在循环体内使用 break 语句或 continue 语句的作用相同D.从多层循环嵌套中退出时,只能使用 goto 语句解析:解析 本题考查循环的 4 个知识点:break 语句可以出现在循环体内及 switch 语句体内,不能用于其他的语句;continue 语句的作用是结束本次循

40、环,即跳过循环体中下面尚未执行的语句,而接着转去判定循环条件是否成立,从而确定下一次循环是否继续执行,也就是说执行 contiune 语句不会使整个循环终止;在循环体内使用 break 语句会使循环提前终止;从多层循环嵌套中退出时,可以使用goto 语句或者 break 语句。29.下列叙述中错误的是_。(分数:2.50)A.在 C 语言中,对二进制文件的访问速度比文本文件快B.在 C 语言中,随机文件以二进制代码形式存储数据C.语句 FILE fp;定义了一个名为 fp 的文件指针 D.C 语言中的文本文件以 ASCII 码形式存储数据解析:解析 在 C 语言中,文件指针实际上是指向一个结构

41、体类型的指针,一般称这个结构体类型名为FILE,可以用此类型名来定义文件指针。定义文件类型指针变量的一般形式为:FILE *指针变量名;选项C 中少了“*”,所以选项 C 错误。30.若输入“abcdef”、“abdef”,以下程序的输出结果为_。 #includestdio.h #includestring.h main() int n; char s120,s220,*p1,*p2; scanf(“%s“,s1); scanf(“%s“,s2); p1=s1; p2=s2; n=strcmp(p1,p2); printf(“%d/n“,n);(分数:2.50)A.-1 B.0C.“abcd

42、ef“D.“abdef“解析:解析 本题考查两个知识点:字符串比较函数 strcmp(s1,s2),若 s1s2,则返回 1;若s1=s2,则返回 0;若 s1s2,则返回-1。字符串依次比较的是它们相同位置上字符的 ASCII 码值。31.以下语句定义正确的是_。(分数:2.50)A.int a14=1,2,3,4,5;B.float a3=1,2,3;C.long a23=1,1,2,1,2,3,0,0;D.double a3=0; 解析:解析 本题考查的是如何对二维数组进行赋值。选项 A 中数组第二维的大小是 4,但却给赋了 5个元素;选项 B 中 C 语言规定,对于二维数组,只可以省略

43、第一个方括号中的常量表达式而不可以省略第二个方括号中的常量表达式;选项 C 中数组第一维的大小是 2,但是赋值却超过了 2;选项 D 中在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取 0。32.下述程序的输出结果是_。 #includestdio.h void main() int a5=1,2,3,4,5); int *p=a,*q= printf(“%d“,*(p+); printf(“%d“,*q); (分数:2.50)A.22B.11C.34D.12 解析:解析 程序首先定义了一个指向一维数组 a 的指针 p,一个指向指针变量 p 的指针变量 q,输出*(p+)

44、是先输出*p 即 a0的值,再将指针 p 指向数组的下一个元素 a1,输出*q 是输出指针 p 所指向单元的内容,即 a1的值。33.字符串“/“ABCDEF“/“的长度是_。(分数:2.50)A.11B.10 C.5D.3解析:解析 本题涉及字符串的两个最基本的概念。字符串的长度是指字符串中字符的个数,但不包含字符串结束符;以反斜线“/”开头的特殊字符序列,意思是把反斜线后面的字符序列转换成特定的含义,而不是原来的含义,不包含在字符串长度之内,“/”连同后面的字符为一个长度。34.若二维数组 a 有 m 列,则在 aij前的元素个数为_。(分数:2.50)A.j*m+iB.i*m+j C.j

45、*m+i+1D.i*m+j+1解析:解析 二维数组的元素可以看成是按矩阵形式存放的,总是先存放第一行的元素,再存放第二行的元素。 数组第一维的下标是 i,说明它前面还有 i 行,有 i*m 个元素,数组第二维的下标是 j,说明它前面还有j 列,有 j 个元素,所以共有 i*m+j 个元素。35.下列程序的运行结果是_。 #includestdio.h void fun(int*s,int*p) static int t=3; *p=st; t-; void main() int a=2,3,4,5,k,x; for(k=0;k4;k+) fun(a, printf(“%d,“,x); (分数:

46、2.50)A.5,4,3,2, B.2,3,4,5,C.2,2,2,2,D.5,5,5,5,解析:解析 分析 fun 函数程序段,可知 fun 函数要实现的功能是将 s 中第(t+1)个元素以前的元素逆置赋给数组 p。由于 fun 函数定义了静态变量 t=3,因此,在主函数中调用函数 fun(a,,以下选项中能够使字符型指针 c 正确指向一个字符串的是_。(分数:2.50)A.char str=“string“;c=str; B.scanf(“%s“,c);C.c=getchar();D.char str=“string“;strcpy(“c,str“)解析:解析 在题目的题干中定义了字符指针变量 c,在选项 A 中,首先定义字符数组 str,然后再把字符数组 str 的首地址赋给字符指针变量 c。所以选项 A 是正确的。在选项 B 中,指针 c 没有正确初始化,指向的地址是为止的,因此不能在 scanf 函数中使用;在选项 C 中,getchar 函数的返回值是用户输入的第一个字符的 ASCII 码,如出错返回-1,且将用户输入的字符回显到屏幕,如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续 getchar 调用读取,即 c 只能指向一个字符而不能指向字符

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