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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、二级 C语言笔试-427 及答案解析(总分:90.00,做题时间:90 分钟)一、选择题(总题数:40,分数:60.00)1.对长度为 n的线性表进行顺序查找,在最坏的情况下所需要的比较次数为 _。A) log2n B) n/2 C) n D) n+l(分数:2.00)A.B.C.D.2.下列选项中,不是一个算法的基本特征的是( )。A) 完整性 B) 可行性 C) 有穷性 D) 拥有足够的情报(分数:2.00)A.B.C.D.3.下列叙述中正确的是( )。A栈是“先进先出”的线性表B队列是“先进后出”的线性表C循环队列是非线性结构D有序线性表既可以采用顺序存储结构,也可以采用链式存储结构(分

2、数:1.00)A.B.C.D.4.“商品”与“顾客”两个实体集之间的联系一般是( )。A) 一对一 B) 一对多 C) 多对一 D) 多对多(分数:1.00)A.B.C.D.5.常采用的两种存储结构是( )。A) 顺序存储结构和链式存储结构B) 散列方法和索引方式C) 链表存储结构和数组D) 线性存储结构和非线性存储结构(分数:2.00)A.B.C.D.6.下列叙述中正确的是_。(A) 一个逻辑数据结构只能有一种存储结构(B) 数据的逻辑结构属于线性结构,存储结构属于非线性结构(C) 一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率(D) 一个逻辑数据结构可以有多种存储结

3、构,且各种存储结构影响数据处理的效率(分数:2.00)A.B.C.D.7.下列关于二叉树的叙述中,正确的是( )。A)叶子结点总是比度为 2的结点少一个B)叶子结点总是比度为 2的结点多一个C)叶子结点数是度为 2的结点数的两倍D)度为 2的结点数是度为 1的结点数的两倍(分数:2.00)A.B.C.D.8.对于长度为 n的线性表,在最坏的情况下,下列各排序法所对应的比较次数中正确的是_。A) 冒泡排序为 n/2 B) 冒泡排序为 n C) 快速排序为 n D) 快速排序为 n(n-1)/2(分数:1.00)A.B.C.D.9.设计程序时,应采纳的原则之一是( )。A)程序的结构应有助于读者的

4、理解 B)限制 GOTO语句的使用C)减少或取消注释行 D)程序越短越好(分数:2.00)A.B.C.D.10.数据流图中带有箭头的线段表示的是( )。A控制流 B事件驱动C模块调用 D数据流(分数:1.00)A.B.C.D.11.在 E-R图中,用来表示实体的图形是( );A) 矩形 B) 椭圆形 C) 菱形 D) 三角形(分数:1.00)A.B.C.D.12.数据处理的最小单位是( )。A) 数据 B) 数据元素 C) 数据项 D) 数据结构(分数:1.00)A.B.C.D.13.有 3个关系 R、S 和 T,如下:(分数:2.00)A.B.C.D.14.简单的交换排序方法是( )。A)

5、快速排序 B) 选择排序 C) 堆排序 D) 冒泡排序(分数:2.00)A.B.C.D.15.c语言的基本单位是( )。A) 函数 B) 过程 C) 子程序 D) 子函数(分数:2.00)A.B.C.D.16.C语言规定,在一个 C程序中,main()函数的位置( )。 A) 必须在系统调用的库函数之后 B) 必须在程序的开始 C) 必须在程序的最后 D) 可以在任意位置(分数:1.00)A.B.C.D.17.下列程序的输出结果是_。#define A 100main()int i=0,sum=0;do if(i(i/2)*2)continue;sum+=i;while(+iA);print(

6、“%d/n“,sum);A) 2500 B) 2050 C) 4 D) 0(分数:1.00)A.B.C.D.18.sizeof(char)是( )。 A) 一种函数调用 B) 一个整型表达式 C) 一个字符型表达式 D) 一个不合法的表达式(分数:1.00)A.B.C.D.19.若要求从键盘读入含有空格字符的字符串,应使用函数A) getc() B) gets() C) getchar() D) scanf()(分数:1.00)A.B.C.D.20.出下列程序执行后的输出结果是 _。mare()int m3=1,4,7,2,5,8,3,6,9;int i,k=2;for(i0;i3;i+)pr

7、intf(“%d“,mki);A) 456 B) 258 C) 369 D) 789(分数:1.00)A.B.C.D.21.设有定义:intk1,m2;noat f7;则下列选项中错误的表达式是( )。A) kkk B) -k+C) k%int(f) D) kfm(分数:1.00)A.B.C.D.22.下列叙述中正确的是_。A) break语句只能用于 switch语句B) 在 switch语句中必须使用 defaultC) break语句必须与 switch语句中的 case配对使用D) 在 switch语句中不一定使用 break语句(分数:1.00)A.B.C.D.23.若变量已正确定义

8、为 int型,要通过语句 scanf(“%d,%d“,”则对 a数组的第 i行第 j列元素的正确引用为( )。A) *(*(a+i)+j) B) (a+i)j C) *(a+i+j) D) *(a+i)+j(分数:2.00)A.B.C.D.29.设变量 x和 y均已正确定义并赋值。下列 if语句中,在编译时将产生错误信息的是A) ifx+); B) it(xyC) if(x0)x- D) if(y0);else y+; else x+;(分数:2.00)A.B.C.D.30.以下能正确定义一维数组的选项是 _。A) int num;B) #define N 100int numN;C) int

9、 num0100;D) int N=100;int numN;(分数:2.00)A.B.C.D.31.有下列程序:main()int k=5,n=0;doswitch(k)case 1: case 3:n+=1;k-;break;default:n=0;k-;case 2: case 4;n+=2;k-;break;printf(“%d“,n);while(k0 程序运行后的输出结果是( )。A) 235 B) 0235 C) 02356 D) 2356(分数:2.00)A.B.C.D.32.下列合法的字符型常量是( )。A) /x13 B) /081 C) 65 D) “/n/(分数:2.0

10、0)A.B.C.D.33.若有语句:char *line5;,以下叙述中正确的是_。(A) 定义 line是一个数组,每个数组元素是一个基类型为 char的指针变量(B) 定义 line是一个指针变量,该变量可以指向一个长度为 5的字符型数组(C) 定义 line是一个指针数组,语句中的*号称为间址运算符(D) 定义 line是一个指向字符型函数的指针(分数:2.00)A.B.C.D.34.若输入“abcdef”、“abdef”,以下程序的输出结果为( )。 #includestdio.h #lncludestring.h main() int n; char s120,s220,p1,*p2

11、; scanf(“%s“,s1); scanf(“%s“,s2); P1=s1; p2=s2; n=strcmp(p1,p2); printf(“%d/n“,n); A) -1 B) 0 C) “abcdef“ D) “abdef/(分数:2.00)A.B.C.D.35.若有程序fun(int a,int b)static int c=0c+=a+b;retum c;main()int x=5,y=3,z=7,r;r=fun(y,x+y),z);r=fun(x,y);printf(“%d/n“,r);上面程序的输出结果_。A) 23 B) 15 C) 19 D) 18(分数:2.00)A.B.

12、C.D.36.若有定义:float x=1.5;int a=1,b=3,c=2; 则正确的 switch语句是( )。A) switch(x)case 1.0: printf(“*/n“);case 2.0: printf(“ * * /n“ );B) switch(iht)x);case 1: printf(“ * /n“ );case 2: printf(“ * * /n“ );C) switch(a +b)case 1: printf(“ * /n“ );case 2 + 1: printf(“ * * /n“ );D) switch(a + b)case 1: pfintf(“ * /

13、n“ );case c: pfintf(“ * * /n“);(分数:1.00)A.B.C.D.37.定义结构体数组:struct stuint num;char name20;x5;1,“L1“,2,“ZHAO“,3,“WANG“,4,“ZHANG“,5,“LIU“;for(i=1;i5;i+)printf(“%d%c“,xi.num,xi.name2);以上程序段的输出结果为( )。A) 2A3N4A5U B) 1I2A3H4I C) 1A2N3A4U D) 2H3A4H5I(分数:2.00)A.B.C.D.38.有以下定义和语句struct workersint nnm;charname

14、20;charc;structint day;int month;int year;s;struct workers w,*pw;pw=printf(“%d“,a);main()int c=20;fun(c);a+=c+;printf(“%d/n“,a);(分数:2.00)填空项 1:_46.以下程序运行后的输出结果是_。main()char c;int n=100;loat f=10;double x;x=f*=n/=(c=50);printf(“%d%f/n“,n,x);(分数:2.00)填空项 1:_47.下列程序段的输出结果是_。int n=c;switch(n+)default:pr

15、intf(“error“);break;case a: printf(“good“);break;case c: printf(“morning“);case d: printf(“class“);(分数:2.00)填空项 1:_48.以下程序的运行结果是_。#include stdio.hlong fib(int g)switch(g)case 0:return 0;case 1:case 2:return 1;return(fib(g-1) +fib(g-2);main( )long k;k=fib(5);printf(“k=%51d/n“,k);(分数:2.00)填空项 1:_49.用高

16、级语言编写的程序称为 1 程序,它可以通过解释程序翻译一句执行一句的方式执行,也可以通过编译程序一次翻译产生目标程序,然后执行。(分数:2.00)填空项 1:_50.若定义#define PI 3.14159,则执行完下列程序后输出结果是_。#define PI 3.14159;printf(“PI=%f“,PI);(分数:2.00)填空项 1:_51.以下程序运行后的输出结果是_。#includestdio.hvoid fun(int *a)a0=a1; main()int a10=10, 9, 8, 7, 6, 5, 4, 3, 2, 1, i;for(i=2; i=0; i-) fun(

17、for(i=0; i10; i+) printf(“%d“, ai);printf(“/n“);(分数:2.00)填空项 1:_52.若变量 a,b 已定义为 int类型并分别赋值 21和 55,要求用 printf函数以 a=21,b=55 的形式输出,请写出完整的输出语句行:U /U。(分数:2.00)填空项 1:_53.以下程序的输出结果是_。 #define PR(ar)printf(“ar=%d”,ar) main() int j,a=1,8,3,7,6,13,17,15,*p=a+5; for(j=3;j;j-) switch(j) case 1: case 2:PR(*p+);b

18、reak; case 3:PR(*(-p); (分数:2.00)填空项 1:_54.以下程序的输出结果是U /U。#include stdioh#define MAX(x,y)(x),(y)?(x):(y)main()int a=5,b=2,c=3,d=3,t;t=MAX(a+b,c+d)*10;printf(“%d/n“,t);(分数:2.00)填空项 1:_55.若给 fun函数的形参 s传送字符串“6354abc“(其中表示空格字符),则函数的返回值是U /U。long fun(char s)long n; int sign;for(;isspace(*s);s+);sign=(*s=-

19、)? -1:1;if(*s=+|*s=-) s+;for(n=0;isdigit(*s);s+)n=10*n+( *s-0);return sign*n;(分数:2.00)填空项 1:_二级 C语言笔试-427 答案解析(总分:90.00,做题时间:90 分钟)一、选择题(总题数:40,分数:60.00)1.对长度为 n的线性表进行顺序查找,在最坏的情况下所需要的比较次数为 _。A) log2n B) n/2 C) n D) n+l(分数:2.00)A.B.C. D.解析:解析 顺序查找的最坏情况是所找的元素在线性表的最后,因此查找的比较次数是线性表的长度,即 n。2.下列选项中,不是一个算法

20、的基本特征的是( )。A) 完整性 B) 可行性 C) 有穷性 D) 拥有足够的情报(分数:2.00)A. B.C.D.解析:解析 作为一个算法,一般应该具有下列 4个特征:可行性,即考虑到实际的条件能够达到一个满意的结果;确定性,算法中的第一个步骤都必须是有明确定义的:有穷性,一个算法必须在有限的时间内做完;拥有足够的情报。3.下列叙述中正确的是( )。A栈是“先进先出”的线性表B队列是“先进后出”的线性表C循环队列是非线性结构D有序线性表既可以采用顺序存储结构,也可以采用链式存储结构(分数:1.00)A.B.C.D. 解析:解析 本题考查了栈、队列、循环队列的基本概念,栈的特点是先进后出,

21、队列的特点是先进先出,根据数据结构申各数据元素之间的复杂程度,将数据结构分为线性结构与非线性结构两类。有序线性表既可采用顺序存储结构,也可以采用链式存储结构。4.“商品”与“顾客”两个实体集之间的联系一般是( )。A) 一对一 B) 一对多 C) 多对一 D) 多对多(分数:1.00)A.B.C.D. 解析:解析 由于一个顾客可以购买多种商品,同一种商品可以有多个顾客购买,所以商品和顾客之间是多对多的联系。5.常采用的两种存储结构是( )。A) 顺序存储结构和链式存储结构B) 散列方法和索引方式C) 链表存储结构和数组D) 线性存储结构和非线性存储结构(分数:2.00)A. B.C.D.解析:

22、解析 线性表的存储通常要用两种存储结构:顺序存储结构和链式存储结构。6.下列叙述中正确的是_。(A) 一个逻辑数据结构只能有一种存储结构(B) 数据的逻辑结构属于线性结构,存储结构属于非线性结构(C) 一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率(D) 一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率(分数:2.00)A.B.C.D. 解析:7.下列关于二叉树的叙述中,正确的是( )。A)叶子结点总是比度为 2的结点少一个B)叶子结点总是比度为 2的结点多一个C)叶子结点数是度为 2的结点数的两倍D)度为 2的结点数是度为 1的结点数的两倍(分数:

23、2.00)A.B. C.D.解析:解析 由二叉树的性质可以知道在二叉树中叶子结点总是比度为 2的结点多一个。8.对于长度为 n的线性表,在最坏的情况下,下列各排序法所对应的比较次数中正确的是_。A) 冒泡排序为 n/2 B) 冒泡排序为 n C) 快速排序为 n D) 快速排序为 n(n-1)/2(分数:1.00)A.B.C.D. 解析:解析 快速排序的最坏情况是当序列已排序时,选取序列的第一个值作为基准值,分成的两个子序列长度为 1与 n-1,这样必须经过 n-1趟才能完成排序。因此,总的比较次数为 n(n-1)/2。9.设计程序时,应采纳的原则之一是( )。A)程序的结构应有助于读者的理解

24、 B)限制 GOTO语句的使用C)减少或取消注释行 D)程序越短越好(分数:2.00)A. B.C.D.解析:解析 程序设计的风格主要强调程序的简单、清晰和可理解性,以便读者理解。程序滥用 GOTO语句将使程序流程无规律,可读性差;添加注释行有利于对程序的理解,不应减少或取消,程序的长短要依据实际的需要而定,并不是越短越好。10.数据流图中带有箭头的线段表示的是( )。A控制流 B事件驱动C模块调用 D数据流(分数:1.00)A.B.C.D. 解析:解析 数据流图是从输入到输出的移动变换过程。用带箭头的线段表示数据流,沿箭头方向表示传递数据的通道一般在旁边标注数据流名。11.在 E-R图中,用

25、来表示实体的图形是( );A) 矩形 B) 椭圆形 C) 菱形 D) 三角形(分数:1.00)A. B.C.D.解析:解析 ER 图中用矩形表示实体集,用椭圆表示属性,用菱形表示联系。12.数据处理的最小单位是( )。A) 数据 B) 数据元素 C) 数据项 D) 数据结构(分数:1.00)A.B.C. D.解析:解析 数据处理的最小单位是数据项。由若干数据项组成数据元素,而数据是指能够被计算机识别、存储和加工处理的信息载体,数据结构是指数据之间的相互关系和数据运算。故正确答案为选项 C) 。13.有 3个关系 R、S 和 T,如下:(分数:2.00)A.B.C.D. 解析:解析 自然连接是一

26、种特殊的等值连接。当关系 R和 S有相同的属性组,且该属性组的值相等时的连接称为自然连接。14.简单的交换排序方法是( )。A) 快速排序 B) 选择排序 C) 堆排序 D) 冒泡排序(分数:2.00)A.B.C.D. 解析:解析 所谓的交换类排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序是一种最简单的交换排序方法,它通过相邻元素的交换,逐步将线性表变成有序。15.c语言的基本单位是( )。A) 函数 B) 过程 C) 子程序 D) 子函数(分数:2.00)A. B.C.D.解析:解析 C 语言是函数式的语言,它的基本组成单位是函数,在 C语言中任何

27、程序都是由一个或者多个函数组成的。16.C语言规定,在一个 C程序中,main()函数的位置( )。 A) 必须在系统调用的库函数之后 B) 必须在程序的开始 C) 必须在程序的最后 D) 可以在任意位置(分数:1.00)A.B.C.D. 解析:解析 每个 C程序有且只有一个主函数(main),且程序必须从 main()函数开始执行,而且 main()函数可以放在程序中的任意位置。17.下列程序的输出结果是_。#define A 100main()int i=0,sum=0;do if(i(i/2)*2)continue;sum+=i;while(+iA);print(“%d/n“,sum);

28、A) 2500 B) 2050 C) 4 D) 0(分数:1.00)A. B.C.D.解析:评析 本题程序的功能是求 1到 99之间(包括 1和 99)所有奇数之和。程序中的 while循环的终止条件为+i=100,在 while 循环体内,如果 i是偶数,则执行 continue,跳过这一次循环,执行下次循环,否则求和。最后输出的值是 1到 99 之间(包括 1和 99)所育奇数之和(1+99)*50/2=2500。18.sizeof(char)是( )。 A) 一种函数调用 B) 一个整型表达式 C) 一个字符型表达式 D) 一个不合法的表达式(分数:1.00)A.B. C.D.解析:解析

29、 sizeof(char)是一个 C语言的关键字,它不是函数调用。sizeof 的功能是计算出运算对象在计算机的内存中所占用的字节数量,该表达式的返回值是一个整数,而不是一个字符型表达式。19.若要求从键盘读入含有空格字符的字符串,应使用函数A) getc() B) gets() C) getchar() D) scanf()(分数:1.00)A.B. C.D.解析:解析 canf()语句用“空格”区别不同的字符串;getc()与 getchar()语句不能用于字符串的读入。20.出下列程序执行后的输出结果是 _。mare()int m3=1,4,7,2,5,8,3,6,9;int i,k=2

30、;for(i0;i3;i+)printf(“%d“,mki);A) 456 B) 258 C) 369 D) 789(分数:1.00)A.B.C. D.解析:评析 根据二维数组的定义得出:m00=1,m01=4,m02=7,m10=2,m11=5,m12=8,m20=3,m21=6, m22=9,所以本题的输出是第 3行的值 m20,m20,m22,即 369。21.设有定义:intk1,m2;noat f7;则下列选项中错误的表达式是( )。A) kkk B) -k+C) k%int(f) D) kfm(分数:1.00)A.B.C. D.解析:解析 在 C语言中,求余运算符“%”两边的运算对

31、象都应为整型数据,所以需要对变量 f进行强制类型转换,正确的写法为 k%(int)f。在 C语言中,逻辑运算符与赋值运算符、算术运算符、关系运算符之间从高到低的运算优先次序是:!(逻辑“非”)、算术运算符、关系运算符、”则对 a数组的第 i行第 j列元素的正确引用为( )。A) *(*(a+i)+j) B) (a+i)j C) *(a+i+j) D) *(a+i)+j(分数:2.00)A. B.C.D.解析:解析 本题考查如何通过地址来引用数组元素。通过地址来引用数组元素的方法有下列 5种:aij;*(ai+j);*(*(a+i)+j);*(ai)j; *( B) it(xyC) if(x0)

32、x- D) if(y0);else y+; else x+;(分数:2.00)A.B.C. D.解析:解析 选项 A)和选项 B)在条件判断语句的后面是空语句,什么都不做;在选项 D)中,if 后面是一个复合空语句;而在选项 C)中,在 X-后面少了一个分号,所以程序段在编译时,会出现语法错误。30.以下能正确定义一维数组的选项是 _。A) int num;B) #define N 100int numN;C) int num0100;D) int N=100;int numN;(分数:2.00)A.B. C.D.解析:解析 C 语言不允许对数组进行动态定义,选项 D错误;选项 A没有指定数组

33、元素的个数;选项C中定义格式错误;正确答案为选项 B,其中 N是符号常量。31.有下列程序:main()int k=5,n=0;doswitch(k)case 1: case 3:n+=1;k-;break;default:n=0;k-;case 2: case 4;n+=2;k-;break;printf(“%d“,n);while(k0 程序运行后的输出结果是( )。A) 235 B) 0235 C) 02356 D) 2356(分数:2.00)A.B. C.D.解析:解析 因为变量的初始值分别为 k=5,n=0,所以程序第 1次进入循环时,执行 default语句,输出 0,k 减 1;

34、这时 n=0,k=4,程序进行第 2次循环,执行 case 4:这个分支,结果是 n=2,k=3,打印出2;这时 n=2,k=3,程序进行第 3次循环,执行 case 3:这个分支,结果是 n=3,k=2,打印出 3;这时n=3,k=2,程序然后进行第 4次循环,执行 case 2:case 4:这个分支,结果是 n=5,k=1,打印出 5,这时因为 n=5不满足 n5 的循环条件,因此退出循环,程序运行结束。所以在屏幕上打印出的结果是 0235。32.下列合法的字符型常量是( )。A) /x13 B) /081 C) 65 D) “/n/(分数:2.00)A. B.C.D.解析:解析 C 语

35、言的字符常量是用单引号()括起来的一个字符,也可以用以一个“/”开头的字符序列来表示字符常量。其中形式/ddd 表示 1到 3位 8进制数所代表的字符;形式/xhh 表示 1到 2位 16进制数所代表的字符。在本题中/x13表示回车符,是一个字符常量;而/081用 8进制数所代表的字符形式不正确,因为 8进制数所表示的字符中不会出现数字“8”;65单引号(即撇号)括起来的不是一个字符,而是一个十进制数字;“/n“是用双引号括起来的一个字符,表示一个字符串,而不是字符常量。33.若有语句:char *line5;,以下叙述中正确的是_。(A) 定义 line是一个数组,每个数组元素是一个基类型为

36、 char的指针变量(B) 定义 line是一个指针变量,该变量可以指向一个长度为 5的字符型数组(C) 定义 line是一个指针数组,语句中的*号称为间址运算符(D) 定义 line是一个指向字符型函数的指针(分数:2.00)A. B.C.D.解析:34.若输入“abcdef”、“abdef”,以下程序的输出结果为( )。 #includestdio.h #lncludestring.h main() int n; char s120,s220,p1,*p2; scanf(“%s“,s1); scanf(“%s“,s2); P1=s1; p2=s2; n=strcmp(p1,p2); pri

37、ntf(“%d/n“,n); A) -1 B) 0 C) “abcdef“ D) “abdef/(分数:2.00)A. B.C.D.解析:解析 本题考查两个知识点:字符串比较幽数 strcmp(s1,s2),若 s1s2,则返回 1;若s1=s2,则返回 0;若 s1s2,则返回-1。字符串依次比较的是它们相同位置上字符的 ASCII35.若有程序fun(int a,int b)static int c=0c+=a+b;retum c;main()int x=5,y=3,z=7,r;r=fun(y,x+y),z);r=fun(x,y);printf(“%d/n“,r);上面程序的输出结果_。A

38、) 23 B) 15 C) 19 D) 18(分数:2.00)A. B.C.D.解析:评析 static 声明的外部变量只限于被本文件引用,而不能被其他文件引用 static 来声明个变量的作用有:对局部变量用 static 声明,则为该变量分配的空间在整个程序执行期间始终存在;全部变量用 static声明,则该变量的作用域只限于本文件模块(即被声明的文件中)。调用第个 fun,其两个实参的值为(3,5+3)与 7即 8与 7,在函数 fun执行结束返回 15。第二次调用 fun时,由于 static为静态类型,其值保留,执行 fun(5,3)后,其返回值为 23,故选 A。36.若有定义:f

39、loat x=1.5;int a=1,b=3,c=2; 则正确的 switch语句是( )。A) switch(x)case 1.0: printf(“*/n“);case 2.0: printf(“ * * /n“ );B) switch(iht)x);case 1: printf(“ * /n“ );case 2: printf(“ * * /n“ );C) switch(a +b)case 1: printf(“ * /n“ );case 2 + 1: printf(“ * * /n“ );D) switch(a + b)case 1: pfintf(“ * /n“ );case c:

40、pfintf(“ * * /n“);(分数:1.00)A.B.C. D.解析:解析 选项 A)中 case后面的表达式为浮点型,选项 D)中 case后面的表达式存在字符变量 c,故选项 A)、D)错误;在选项 B)中,switch 后面的表达式加了分号显然有错。37.定义结构体数组:struct stuint num;char name20;x5;1,“L1“,2,“ZHAO“,3,“WANG“,4,“ZHANG“,5,“LIU“;for(i=1;i5;i+)printf(“%d%c“,xi.num,xi.name2);以上程序段的输出结果为( )。A) 2A3N4A5U B) 1I2A3H

41、4I C) 1A2N3A4U D) 2H3A4H5I(分数:2.00)A. B.C.D.解析:解析 本题主要考查结构体数组的使用。xi.num 为结构体 xi中的 num成员,xi.name2是结构体 xi中 name成员的第 3个元素。程序执行循环过程时:第 1次循环,i=1,输出 x1.num,x1.name2的值,即 2A;第 2次循环,i=2,输出 x2.num,x2.name2的值,即 3N:第 3次循环,i=3,输出 x3.num,x3.name2的值,即 4A;第 4次循环,i=4,输出 x4.num,x4.name2的值,即 5U。38.有以下定义和语句struct worke

42、rsint nnm;charname20;charc;structint day;int month;int year;s;struct workers w,*pw;pw=printf(“%d“,a);main()int c=20;fun(c);a+=c+;printf(“%d/n“,a);(分数:2.00)填空项 1:_ (正确答案:30 25)解析:解析 C 语言规定如果全局变量与局部变量同名,在局部变量的作用域内全局变量不起作用。调用函数 fun(c)时,在 fun 内部局部变量 a起作用,即 a=10,执行语句 a+=b+得a=a+b+=a+b=10+20=30,执行 printf语句

43、输出 30;在 main函数内执行语句 a+=c+;时,a 是全局变量,值为 5,因此 a=a+c=5+20=25,执行 printf语句输出为 25。46.以下程序运行后的输出结果是_。main()char c;int n=100;loat f=10;double x;x=f*=n/=(c=50);printf(“%d%f/n“,n,x);(分数:2.00)填空项 1:_ (正确答案:000000)解析:解析 本题考查的是各种数据类型的综合算数运算。先计算 n=n/50=2,再计算 f=f*n=10*2=20,此时 n自动转换为 float型进行运算,最后进行赋值 x=f,此时 x为 dou

44、ble型,f 为 float。型,f 自动转换为 double型进行赋值,所以程序输出 n,x 的值为 220.000000。47.下列程序段的输出结果是_。int n=c;switch(n+)default:printf(“error“);break;case a: printf(“good“);break;case c: printf(“morning“);case d: printf(“class“);(分数:2.00)填空项 1:_ (正确答案:morningclass)解析:解析 本题考查了两个知识点:“+,-”运算后缀形式是先使用变量原来的值,使用完后再使其增 1或减 1;在 sw

45、itch语句中,当 n=c时,执行“case c”,输出 morning;因为此句中没有break语句,因此接着执行“case d:”,输出 class,最终输出结果为 morningclass。48.以下程序的运行结果是_。#include stdio.hlong fib(int g)switch(g)case 0:return 0;case 1:case 2:return 1;return(fib(g-1) +fib(g-2);main( )long k;k=fib(5);printf(“k=%51d/n“,k);(分数:2.00)填空项 1:_ (正确答案:k=5)解析:解析 本题主要考

46、查了函数的递归调用方法。g=0 或 g=1或 g=2是递归的终止条件,然后用回代的方法从一个已知值推出下一个值,直到计算出最终结果。49.用高级语言编写的程序称为 1 程序,它可以通过解释程序翻译一句执行一句的方式执行,也可以通过编译程序一次翻译产生目标程序,然后执行。(分数:2.00)填空项 1:_ (正确答案:源程序)解析:解析 用高级语言编写的程序称为源程序。源程序不能在计算机上直接运行,运行源程序有两种方式:一种是通过解释程序,对源程序逐句解释执行;另一种是先让编译程序将源程序一次翻译产生目标程序(目标程序是计算机可直接执行的机器语言程序,是一种二进制代码程序),然后执行目标程序。50.若定义#define PI 3.14159,则执行完下列程序后输出结果是_。#define PI 3.14159;printf(“PI=%f“,PI);(分数:2.00)填空项 1:_ (正确答案:PI=3.14159)解析:解析 本题先定义了一个宏名 PI,以后在程序中出现 PI都用 3.14159替代,但是 C语言规定:双引号中的宏名是不进行替换的。51.以下程序运行后的输出结果是_。#includestdio.hvoid fun(int *a)a0=a1; main()int a10=10, 9,

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