欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:1326195       资源大小:90KB        全文页数:15页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    1、二级 C 语言笔试-387 及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:70.00)1.有以下程序 #includestdio.h main() char c1,c2,c3,c4,c5,c6; scanf(“%c%c%c%c“,&c1,&c2,&c3,&c4); c5=getchar();c6=getchar(); putchar(c1);putchar(c2);printf(“%c%c/n“,c5,c6); 程序运行后,若从键盘输入(从第 1 列开始) 123回车 45678回车 则输出结果是(分数:2.00)A.1267B.1256C.127

    2、8D.12452.现有如下程序段 #include“stdio.h“ #include“string.h“ main() char a=“acfijk“;/*这里是有序的字符序列*/ char b=“befijklqswz“;/*这里是有序的字符序列*/ char c80,*p; int i=0,j=0,k=0; while(ai!二/0&bj!=/0) if(aibj)ck+=ai+; else if(aibj)ck+=bj+; else ck+=bj+; i+; while(ai=/0&bj!=/0) ck+=bj+; while(ai!=/0&bj=/0) ck+=ai+; ck=/0;

    3、 puts(c); 则输出结果是(分数:2.00)A.acfijkbefijklqswzB.abceffiijjkklqswzC.befijklqswz acfijkD.abcefijklqswz3.线性表 L=(a1,a2,a3,ai,an),下列说法正确的是(分数:2.00)A.每个元素都有一个直接前件和直接后件B.线性表中至少要有一个元素C.表中诸元素的排列顺序必须是由小到大或由大到小D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件4.具有 3 个结点的二叉树有(分数:2.00)A.2 种形态B.4 种形态C.7 种形态D.5 种形态5.以下程序的输出结

    4、果是 long fun(int n) long s; if(n=1n=2)s=2; else s=n-fun(n-1); return s; main() printf(“%1d/n“,fun(3);(分数:2.00)A.1B.2C.3D.46.下列是用户自定义标识符的是(分数:2.00)A._w1B.3_xyC.intD.LINE-37.以下 4 个程序中,完全正确的是(分数:2.00)A.#includestdih main(); /*programming*/ printf(“programming!/n“);B.#includestdih main() /*/programming/*

    5、/ printf(“programming!/n“);C.#includestdih main() /*/*programming*/*/ printf(“programming!/n“)D.includestdih main() /*programming*/ printf(“programming!/n“);8.下列选项中 C 语言中不合法的字符串常量的是(分数:2.00)A.“/121“B.yC.“/n/n“D.“ABCD/x6d“9.若要求从键盘读入含有空格字符的字符串,应使用函数(分数:2.00)A.getc()B.gets()C.getchar()D.scanf()10.在软件测试

    6、设计中,软件测试的主要目的是(分数:2.00)A.实验性运行软件B.证明软件正确C.找出软件中全部错误D.尽可能多地发现软件中的错误11.下列程序的输出结果为 main() union u char *name; int age; int income;s s.name=“WANGLIONG“; s.age=28; s.income=1000; printf(“%d/n“,s.age); (分数:1.00)A.28B.1000C.0D.不确定12.下列选项中不属于结构化程序设计方法的是(分数:1.00)A.自顶向下B.逐步求精C.模块化D.可复用13.下列叙述中,正确的是(分数:1.00)A.

    7、用 E-R 图能够表示实体集间一对一的联系、一对多的联系和多对多的联系B.用 E-R 图只能表示实体集之间一对一的联系C.用 E-R 图只能表示实体集之间一对多的联系D.用 E-R 图表示的概念数据模型只能转换为关系数据模型14.有如下程序段 int a=14,b=15,x; char c=A; x=(a&b)&(cb); 执行该程序段后,x 的值为(分数:1.00)A.trueB.falseC.0D.115.有以下程序 int fun(int x,int n) static int sum=0,i; for(i=0;in;i+)sum+=xi; return sum; main() int

    8、a=1,2,3,4,5,b=6,7,8,9,s=0; s=fun(a,5)+fun(b,4);printf(“%d/n“,s); 程序执行后的输出结果是(分数:1.00)A.45B.50C.60D.5516.栈通常采用的两种存储结构是(分数:1.00)A.顺序存储结构和链式存储结构B.散列方式和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构17.下面程序段的运行结果是 char *p=“abcdefgh“; p+=3; printf(“%d/n“,strlen(strcpy(p,“ABCD“);(分数:1.00)A.8B.12C.4D.718.在下列选项中,没有构成死循环的是(

    9、分数:1.00)A.int i=100; while(1) i=i%100+1; if(i100)break; B.for(;);C.int k=10000; dok+;while(k10000);D.int s=36; while(-s;19.若有定义 int a23;,则对 a 数组的第 i 行第 j 列(假设 i,j 已正确说明并赋值)元素值的正确引用为(分数:1.00)A.*(*(a+B.(a+C.*(a+i+D.*(a+j20.在长度为 64 的有序线性表中进行顺序查找,最坏情况下需要比较的次数为(分数:1.00)A.63B.64C.6D.721.有以下程序 main() int i

    10、,j,x=0; for(i=0;i2;i+) x+; for(j=0;j=3;j+) if(j%2)continue; x+; x+; printf(“x=%d/n“,x); 程序执行后的输出结果是(分数:2.00)A.x=4B.x=8C.x=6D.x=1222.以下不能对二维数组 a 进行正确初始化的语句是(分数:2.00)A.int a23=0;B.int a3=1,2,0;C.int a23=1,2,3,4,5,6;D.int a3=1,2,3,4,5,6;23.若有定义 int a9,*p=a;,则 p+5 表示(分数:2.00)A.数组元素 a5的值B.数组元素 a5的地址C.数组元

    11、素 a6的地址D.数组元素 a0的值加上 524.阅读下面程序,则程序段的功能是 #include“stdio.h“ main() int c=23,1,56,234,7,0,34,i,j,t; for(i=1;i7;i+) t=ci;j=i-1; while(j=0&tcj) cj+1=cj;j-; cj+1=t for(i=0;i7;i+) printf(“%d“,ci);putchar(/n);(分数:2.00)A.对数组元素的升序排列B.对数组元素的降序排列C.对数组元素的倒序排列D.对数组元素的随机排列25.表达式 3.6-5/2+1.2+5%2 的值是(分数:2.00)A.4.3B

    12、.4.8C.3.3D.3.826.以下数组定义中错误的是(分数:2.00)A.int x3=0;B.int x23=1,2,3,4,5,6;C.int x3=1,2,3,4,5,6;D.intx23=1,2,3,4,5,6;27.有以下程序 int fun1(double a)return 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 中的值是(分数:2.00)A.5.21B.5C

    13、.5.0D.0.028.设 fp 为指向某二进制文件的指针,且已读到此文件末尾,则函数 feof(fp)的返回值为(分数:2.00)A.EOFB.非 0 值C.0D.NULL29.下面函数调用语句含有实参的个数为 func(exp1,exp2)(exp3,exp4,exp5);(分数:2.00)A.1B.2C.4D.530.若有说明语句:char c=/72;则变量 c(分数:2.00)A.包含 1 个字符B.包含 2 个字符C.包含 3 个字符D.说明不合法,c 的值不确定31.若有定义 float x=1.5;int a=1,b=3,c=2;,则正确的 switch 语句是(分数:2.00

    14、)A.swimh( case 1.0:printf(“*/n“); case 2.0:printf(“*/n“);B.switch(in; case 1:printf(“*/n“); case 2:printf(“*/n“);C.switch(a+ case 1:pfintf(“*/n“); case 2+1:pfintf(“*/n“);D.switch(a-I- case 1:pfintf(“*/n“); case c:printf(“*/n“);32.在数据库设计中,将 E-R 图转换成关系数据模型的过程属于(分数:2.00)A.需求分析阶段B.逻辑设计阶段C.概念设计阶段D.物理设计阶段

    15、33.运行下面程序时,从键盘输入字母 H,则输出结果是 main() char ch; ch=getchar(); swimh(ch) caseH:printf(“Hello!/n“); caseG:printf(“Good morning!/n“); default:printf(“Bye_Bye!/n“); (分数:2.00)A.Hello!B.Hello! GoodMoring!C.Hello! Good moming! Bye_ye!D.Hello! Bye_ye!34.有如下程序 main() float x=2.0,y; if(x0.0)y=0.0; else if(x10.0)y

    16、=1.0/x; else y=1.0; printf(“%f/n“,y); 该程序的输出结果是(分数:2.00)A.0.000000B.0.250000C.0.500000D.1.00000035.以下不合法的用户标识符是(分数:2.00)A.j2_KEYB.DoubleC.4dD._8_36.以下正确的程序段是(分数:2.00)A.char str1=“12345“,str2=“abcdef“;B.char str10,*st=“abcde“;strcat(str,s;C.charstr10=“ “。*st=“abcde“;strcat(str,s;D.char*st1=“12345“,*s

    17、t2=“abcde“;strcat(st1,st2);37.下列关于单目运算符+,-的叙述中正确的是(分数:2.00)A.它们的运算对象可以是任何变量和常量B.它们的运算对象可以是 char 型变量和 int 型变量,但不能是 float 型变量C.它们的运算对象可以是 int 型变量,但不能是 double 型变量和 float 型变量D.它们的运算对象可以是 char 型变量、int 型变量和 float 型变量38.模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准则是模块的(分数:2.00)A.抽象和信息隐蔽B.局部化和封装化C.内聚性和耦合性D.激活机制和控制方法39.有以

    18、下程序 void swap(char* x,char *y) char t; t= *x; *X= *y; *y=t; main() char*s1:“abc“,*s2=“123“; swap(s1,s2);printf(“%s,%s/n“,s1,s2); 程序执行后的输出结果是(分数:2.00)A.123,abcB.abc,123C.1bc,a23D.321,cba40.若某二叉树的前序遍历访问顺序是 abdgcefh,中序遍历访问顺序是 dgbaechf,则其后序遍历的结点访问顺序是(分数:2.00)A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca二、B填空

    19、题/B(总题数:14,分数:30.00)41.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、 1 和选择排序等。(分数:2.00)填空项 1:_42.在面向对象方法中,属性与操作相似的一组对象称为 1。(分数:2.00)填空项 1:_43.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体“项目主管”与实体“项目”的联系属于 1 的联系。(分数:2.00)填空项 1:_44.程序测试分为静态分析和动态测试。其中 1 是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。(分数:2.00)填空项 1:_45.当数据的物理结构(存储结构)改变

    20、时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的 1。(分数:2.00)填空项 1:_46.若变量 a,b 已定义为血类型并赋值 21 和 55,要求用 printf 函数以 a=21,b=55 的形式输出,请写出完整的的输出语句 1。(分数:2.00)填空项 1:_47.以下程序用于判断 a、b、c 能否构成三角形,若能,输出 YES,否则输出 NO。当给 a、b、c 输入三角形三条边长时,确定 a、b、c 能构成三角形的条件是需同时满足三个条件:a+bc,a+cb,b+ca。请填空。 main() float a,b,c; scanf(“%f%f%f“,&a,&b,&c

    21、); if(_)printf(“YES/n“); /*a、b、c 能构成三角形*/ else printf(“NO/n“); /*a、b、c 不能构成三角形*/ (分数:2.00)填空项 1:_48.下面程序的运行结果是:_。 fun(int t,int n) int i,m; if(n=1)returnt0; else if(n=2)m=fun(t,n-1);return m; main() int a=11,4,6,3,8,2,3,5,9,2; printf(“%d/n“,fun(a,10); (分数:2.00)填空项 1:_49.设 int a=5,b=6,表达式(+a=b-)?+a:-

    22、b 的值是 1。(分数:2.00)填空项 1:_50.执行下面程序段后,k 的值是_。 r=1;n=203;k=1 dok*=n%10*r;n/=10;r+;while(n);(分数:2.00)填空项 1:_51.下面程序的功能是:将字符数组 a 中下标值为偶数的元素从小到大排列,其他元素不变。请填空。 #includestdio.h #includestring.h main() char a=“clanguage“,t; int i,j,k; k=strlen(a); for(i=0;i=k-2;i+=2) for(j=i+2;j=k;j+=2;) if(_) t=ai;ai=aj;aj=

    23、t; puts(a);printf(“/n“); (分数:2.00)填空项 1:_52.现有两个 C 程序文件 T18.c 和 myfun.c 同在 TC 系统目录(文件夹)下,其中 T18.c 文件如下: #includestdio.h #include“myfun.c“ maim() fun();printf(“/n“); myfun.c 文件如下: void fun() char s80,c;int n=0; while(c=getchar()!=/n)sn+=c; n-; while(n=0)printf(“%c“,sn-); 当编译连接通过后,运行程序 T18 时,输入 Thank!

    24、,则输出结果是_。(分数:2.00)填空项 1:_53.下面函数的功能是:找出一维数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中 x 是数组名,n 是 x 中的数据个数,max 存放最大值,index 存放最大值所在元素的下标。请填空。 #includestdlib.h #includestdio.h void fun(inta,int n,int *max,int *d) int i; *max=a0; *d=0; for(i=0;U 13 /U;i+) if(*maxU 14 /U) *max=ai;*d=i; main()

    25、int i,x20,max,index,n=10; randomize(); for(i=0;in;i+) xi=rand()%50;printf(“%4d“,xi); printf(“/n“); fun(x,n,&max,&index); printf(“Max=%5d,Index=%4d/n“,max,index);(分数:4.00)填空项 1:_54.有以下结构体说明和变量的定义,且指针 p 指向变量 a,指针 q 指向变量 b,则不能把结点 b 连接到结点 a 之后的语句是_。 struct node char data; struct node *next;a,b(分数:2.00)填

    26、空项 1:_二级 C 语言笔试-387 答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:70.00)1.有以下程序 #includestdio.h main() char c1,c2,c3,c4,c5,c6; scanf(“%c%c%c%c“,&c1,&c2,&c3,&c4); c5=getchar();c6=getchar(); putchar(c1);putchar(c2);printf(“%c%c/n“,c5,c6); 程序运行后,若从键盘输入(从第 1 列开始) 123回车 45678回车 则输出结果是(分数:2.00)A.1267B.1256

    27、C.1278D.1245 解析:解析 putchar(c1)输出 1,putchar(c2)输出 2,pfintf(“%c%c/n“,c5,c6)输出 45。2.现有如下程序段 #include“stdio.h“ #include“string.h“ main() char a=“acfijk“;/*这里是有序的字符序列*/ char b=“befijklqswz“;/*这里是有序的字符序列*/ char c80,*p; int i=0,j=0,k=0; while(ai!二/0&bj!=/0) if(aibj)ck+=ai+; else if(aibj)ck+=bj+; else ck+=b

    28、j+; i+; while(ai=/0&bj!=/0) ck+=bj+; while(ai!=/0&bj=/0) ck+=ai+; ck=/0; puts(c); 则输出结果是(分数:2.00)A.acfijkbefijklqswzB.abceffiijjkklqswzC.befijklqswz acfijkD.abcefijklqswz 解析:解析 这个题目的功能是实现两个有序字符串,合并成一个新的有序的字符串。3.线性表 L=(a1,a2,a3,ai,an),下列说法正确的是(分数:2.00)A.每个元素都有一个直接前件和直接后件B.线性表中至少要有一个元素C.表中诸元素的排列顺序必须是由

    29、小到大或由大到小D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件 解析:解析 线性表可以为空表;第一个元素没有直接前件,最后一个元素没有直接后件;线性表的定义中,元素的排列并没有规定大小顺序。4.具有 3 个结点的二叉树有(分数:2.00)A.2 种形态B.4 种形态C.7 种形态D.5 种形态 解析:解析 具有 3 个结点的二叉树有以下的几种形态: 5.以下程序的输出结果是 long fun(int n) long s; if(n=1n=2)s=2; else s=n-fun(n-1); return s; main() printf(“%1d/n“,fun

    30、(3);(分数:2.00)A.1 B.2C.3D.4解析:解析 该题考查的是递归函数的调用,题中读 fun 函数进行了递归调用,第 1 次调用:fun(3)n=3 s=3-fun(2);第二次调用时:fun(2)n=2 s=2 返回第一次调用后,s=3-2=1。6.下列是用户自定义标识符的是(分数:2.00)A._w1 B.3_xyC.intD.LINE-3解析:解析 C 语言规定用户标识符由英文字母、数字和下划线组成,且第一个字符必须是字母或下划线,由此可见选项 B),D)是错的;此外,C 语言不允许用户将关键字作为标识符,而选项 C)选项项中的int 是 C 语言的关键字。7.以下 4 个

    31、程序中,完全正确的是(分数:2.00)A.#includestdih main(); /*programming*/ printf(“programming!/n“);B.#includestdih main() /*/programming/*/ printf(“programming!/n“); C.#includestdih main() /*/*programming*/*/ printf(“programming!/n“)D.includestdih main() /*programming*/ printf(“programming!/n“);解析:解析 选项 A)main();的

    32、分号是错误的,不能有分号;选项 C)的注释语句多了两个*号;选项 D)include 前面没有#。8.下列选项中 C 语言中不合法的字符串常量的是(分数:2.00)A.“/121“B.y C.“/n/n“D.“ABCD/x6d“解析:解析 字符串常量是由双引号括起来的一串字符,其中的双引号不可缺少。由此可知,选项 A)、C)、D)都是合法的字符串常量,而选 B)是一个字符常量。9.若要求从键盘读入含有空格字符的字符串,应使用函数(分数:2.00)A.getc()B.gets() C.getchar()D.scanf()解析:解析 canf()语句用“空格”区别不同的字符串;getc()与 ge

    33、tchar()语句不能用于字符串的读入。10.在软件测试设计中,软件测试的主要目的是(分数:2.00)A.实验性运行软件B.证明软件正确C.找出软件中全部错误D.尽可能多地发现软件中的错误 解析:解析 使用人工或自动手段来运行或测定某个系统的过程,目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试是为了发现错误而执行程序的过程。测试以查找错误为目的,而不是为了演示软件的正确功能。11.下列程序的输出结果为 main() union u char *name; int age; int income;s s.name=“WANGLIONG“; s.age=28; s.

    34、income=1000; printf(“%d/n“,s.age); (分数:1.00)A.28B.1000 C.0D.不确定解析:解析 本题对共用体的使用进行了考查。由于共用体所有成员共同占据一段存储空间,所以对成员变量的赋值,后面的赋值会覆盖掉前面的赋值,因为 s.income=1000;是最后一次成员变量赋值,变量age 与变量 income 共同占据一段存储空间,所以 age 的值也为 1000。12.下列选项中不属于结构化程序设计方法的是(分数:1.00)A.自顶向下B.逐步求精C.模块化D.可复用 解析:解析 结构化程序设计方法的主要原则是:自顶向下,逐步求精,模块化,限制使用 g

    35、oto 语句。可复用性是指软件元素不加修改和稍加修改可在不同的软件开发过程中重复使用的性质。软件可复用性是软件工程追求的目标之一,是提高软件生产效率的最主要方法。面向对象的程序设计具有可复用性的优点。13.下列叙述中,正确的是(分数:1.00)A.用 E-R 图能够表示实体集间一对一的联系、一对多的联系和多对多的联系 B.用 E-R 图只能表示实体集之间一对一的联系C.用 E-R 图只能表示实体集之间一对多的联系D.用 E-R 图表示的概念数据模型只能转换为关系数据模型解析:解析 两个实体之间的联系实际上是实体集合的函数关系,这种函数关系可以有下面几种,即一对一的联系、一对多(或多对一)的联系

    36、和多对多的联系;概念模型便于向各种模型转换。由于概念模型不依赖于具体的数据库管理系统,因此,容易向关系模型、网状模型和层次模型等各种模型转换。14.有如下程序段 int a=14,b=15,x; char c=A; x=(a&b)&(cb); 执行该程序段后,x 的值为(分数:1.00)A.trueB.falseC.0D.1 解析:解析 在 C 语言中,逻辑运算符有 4 个,它们分别是:!(逻辑非)、(逻辑或)、&(逻辑与)、(异或)。在位运算里面还有&(位与)、|(位或)的运算。本题考查逻辑与运算符的用法,在表达式x=(a&b)&(cB);中,先判断 a&b 条件,逻辑与条件的两边都要保证为

    37、 1,即 a 和 b 都成立,当然cB,是成立的,显然,该表达式的值为 1。15.有以下程序 int fun(int x,int n) static int sum=0,i; for(i=0;in;i+)sum+=xi; return sum; main() int a=1,2,3,4,5,b=6,7,8,9,s=0; s=fun(a,5)+fun(b,4);printf(“%d/n“,s); 程序执行后的输出结果是(分数:1.00)A.45B.50C.60 D.55解析:解析 内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再次调用该函数时,以前调用时的数值仍然保留着。

    38、fun(a,5)的值是 15,再次调用后 sum=15,所以 Fun(b,4)=45,s=45+15=60。16.栈通常采用的两种存储结构是(分数:1.00)A.顺序存储结构和链式存储结构 B.散列方式和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构解析:解析 和线性表类似,栈也有两种存储方法,一是顺序栈,二是链式栈。栈的顺序存储结构是利用一组地址连续的存储单元一次存储自栈底到栈顶的数据元素,同时附设指针 top 指示栈顶元素的位置,由于栈的操作是线性表操作的特例,相对而言,链式栈的操作更易于实现。17.下面程序段的运行结果是 char *p=“abcdefgh“; p+=3;

    39、 printf(“%d/n“,strlen(strcpy(p,“ABCD“);(分数:1.00)A.8B.12C.4 D.7解析:解析 本题考查两个知识点:strlen 函数的功能是求字符串的长度,并返回字符个数,不计最后的/0,strcpy 函数的功能是把后面的字符串复制到前面字符串所指向的空间。18.在下列选项中,没有构成死循环的是(分数:1.00)A.int i=100; while(1) i=i%100+1; if(i100)break; B.for(;);C.int k=10000; dok+;while(k10000);D.int s=36; while(-s; 解析:解析 选项

    40、A)的循环表达式的条件永久为 1,并且小于 100 的数与 100 取余不超过 99,所以在循环体内表达式 i%100+1 的值永远不大于 100,break 语句永远不会执行,所以是死循环;选项 B)的括号内没有能使循环停下来的变量增量,是死循环;选项 C)中先执行 k+,使 k=10001,从而使循环陷入死循环。19.若有定义 int a23;,则对 a 数组的第 i 行第 j 列(假设 i,j 已正确说明并赋值)元素值的正确引用为(分数:1.00)A.*(*(a+ B.(a+C.*(a+i+D.*(a+j解析:解析 本题考查了二维数组元素的引用方法。选项 A 中 a+i 指向了数组 a

    41、的第 i+1 行,*(a+i)则是第 i+1 行第 0 列的地址值,*(a+i)+j 指向了数组 a 第 i+1 行,j+1 列,*(*(a+i)+j)取到的是数组 a 的aij元素。20.在长度为 64 的有序线性表中进行顺序查找,最坏情况下需要比较的次数为(分数:1.00)A.63B.64 C.6D.7解析:解析 顺序查找是从线性表的第个元素开始依次向后查找,如果线性表中的第一个元素就是要查找的元素,则只需要做次比较就查找成功;但如果要查找的元素是线性表中的最后一个元素,或者要查找元素不在线性表中,则需要与线性表中所有元素进行比较,这是顺序查找的最坏情况,比较次数为线性表的长度。21.有以

    42、下程序 main() int i,j,x=0; for(i=0;i2;i+) x+; for(j=0;j=3;j+) if(j%2)continue; x+; x+; printf(“x=%d/n“,x); 程序执行后的输出结果是(分数:2.00)A.x=4B.x=8 C.x=6D.x=12解析:解析 此程序考查了 for 循环和 x+。对于大循环,有两个 x+,其中循环 3 次,对于小循环,循环三次,但是运行了两次 x+,所以最后结果是 6+2=8。22.以下不能对二维数组 a 进行正确初始化的语句是(分数:2.00)A.int a23=0;B.int a3=1,2,0;C.int a23=

    43、1,2,3,4,5,6; D.int a3=1,2,3,4,5,6;解析:解析 关于二维数组的初始化,我们需要掌握如下方法:所赋初值个数与数组元素的个数相同;所赋初值行数少于数组行数时,系统将自动给后面各行的元素补初值 0;在给二维数组赋初值时可以不用行花括号对。选项 C)应该是 int a32=1,2,3,4,5,6,;23.若有定义 int a9,*p=a;,则 p+5 表示(分数:2.00)A.数组元素 a5的值B.数组元素 a5的地址 C.数组元素 a6的地址D.数组元素 a0的值加上 5解析:解析 本题考查了通过指针来引用一维数组元素的方法。题中*p=a;这一赋值语句是指针 p 指向

    44、了数组 a 的首地址,p+5 是指针 p 向后移动了 5 个 int 类型的存储单元,所以 p+5 指向了数组元素 a5。24.阅读下面程序,则程序段的功能是 #include“stdio.h“ main() int c=23,1,56,234,7,0,34,i,j,t; for(i=1;i7;i+) t=ci;j=i-1; while(j=0&tcj) cj+1=cj;j-; cj+1=t for(i=0;i7;i+) printf(“%d“,ci);putchar(/n);(分数:2.00)A.对数组元素的升序排列B.对数组元素的降序排列 C.对数组元素的倒序排列D.对数组元素的随机排列解

    45、析:解析 读懂两个循环的关系,是解这个题目的关键,本题的第一个 for 循环的作用是实现对数组元素的遍历,第二个循环的作用是排序。while(j=0&tcj),这个语句是控制排序的关键语句,它即实现了比较两个元素大小的作用,又实现了元素向后移动的作用,不断地把大的数据向前移动,直到找到一个比它小的,或到数据的上界为止。25.表达式 3.6-5/2+1.2+5%2 的值是(分数:2.00)A.4.3B.4.8C.3.3D.3.8 解析:解析 这道题要注意 2/5 的结果是 2,因为运算符两边的数值类型均为整型,故运算结果的数值类型也被认定为整型。26.以下数组定义中错误的是(分数:2.00)A.int x3=0;B.int x23=1,2,3,4,5,6; C.int x3=1,2,3,4,5,6;D.intx23=1,2,3,4,5,6;解析:解析 二维数组的初始化有以下几种形式:分行进行初始化;不分行的初始化;部分数组元素初始化;省略第一维的定义,不省略第二维的定义。选项 B)等号右边分了 3 行,大于等号左边数组的行数 2。27.有以下程序 int fun1(double a)return a*=a; int fun2(double x,double y) double a=0,b=0; a=fun1(x);b=fun1(y);return(i


    注意事项

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

    收起
    展开