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

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

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

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

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

    1、二级 C语言笔试-481 及答案解析(总分:101.00,做题时间:90 分钟)一、选择题(总题数:40,分数:63.00)1.下列叙述中错误的是( )。A) 线性表是由 n个元素组成的一个有限序列B) 线性表是一种线性结构C) 线性表的所有结点有且仅有一个前件和后件D) 线性表可以是空表(分数:2.00)A.B.C.D.2.下列关于栈的描述正确的是 _。A) 在栈中只能插入元素而不能删除元素B) 在栈中只能删除元素而不能插人元素C) 栈是特殊的线性表,只能在一端插入或删除元素D) 栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素(分数:2.00)A.B.C.D.3.“商品”与“顾客”

    2、两个实体集之间的联系一般是( )。A) 一对一 B) 一对多 C) 多对一 D) 多对多(分数:1.00)A.B.C.D.4.对长度为 n的线性表进行顺序查找,在最坏的情况下需要比较的次数为( )。A)125 B)n/2 C)n D)n+1(分数:2.00)A.B.C.D.5.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指A) 模块间的关系 B) 系统结构部件转换成软件的过程描述C) 软件层次结构 D) 软件开发过程(分数:2.00)A.B.C.D.6.数据库技术的根本目标是要解决数据的( )。A) 存储问题 B) 共享问题 C) 安全问题 D) 保护问题(分数:2.00)

    3、A.B.C.D.7.对如图所示的二叉树进行前序遍历的结果为(分数:2.00)A.B.C.D.8.源程序的文档化不包括( )。A) 符号名的命名要有实际意义 B) 正确的文档形式C) 良好的视觉组织 D) 正确的程序注释(分数:2.00)A.B.C.D.9.下列特征中不是面向对象方法的主要特征的是( )。A) 多态性 B) 继承 C) 封装性 D) 模块化(分数:2.00)A.B.C.D.10.简单的交换排序方法是( )。A) 快速排序 B) 选择排序 C) 堆排序 D) 冒泡排序(分数:2.00)A.B.C.D.11.C语言源程序名的后缀是( )。A) .exe B) .C C) .obj D

    4、) .cp(分数:1.00)A.B.C.D.12.可以在 C语言中用做用户标识符的是_。A) voiddefine WORDB) as_b3_123IfC) for -abccasD) 2cDoSIG(分数:1.00)A.B.C.D.13.设变量已正确定义并赋值,下列正确的表达式是( )。A) x=y*5=x+z B) int(15.8%5) C) x=y+z+5,+y D) x=25%5.0(分数:2.00)A.B.C.D.14.以下程序运行后的输出结果是main( )float x=2.0,y;if(x0.0) y=0.0;else if(x10.0) y=1.0/x:else y=1.0

    5、;printf(“%f/n“,y);A) 0.000000 B) 0.250000 C) 0.500000 D) 1.000000(分数:1.00)A.B.C.D.15.若执行下列的程序时,从键盘上输入 1和 2,则输出结果是( )。#includestdio.hmain()int a,b,s;scanf(“%d%d“,main()int a1,b2,c3,sum;stunfun(a+,b+,a+b) ,c+);printf(“%d/n“,sum);执行后的输出结果是( )。A) 6 B) 7 C) 8 D) 9(分数:1.00)A.B.C.D.17.在下列选项中,没有构成死循环的是A) in

    6、t i=100; B) for(:);while(1)i=i%100+1:if(i100)break;C) int k=10000;dok+;while(k10000);D) int s=36:while(s)-s;(分数:1.00)A.B.C.D.18.有以下程序段:int k=0, a=1, b=2, c=3;k=ab? b:a; k=kc? c:k;执行该程序后,k 的值是_。A) 3 B) 2 C) 1 D) 0(分数:2.00)A.B.C.D.19.设有定义:int n=0,*p=printf(“%d/n“, s0;执行后的结果是( )。A) 输出字符 a的 ASCII码 B) 输出

    7、字符 c的 ASCII码C) 输出字符 c D) 程序出错(分数:1.00)A.B.C.D.23.在嵌套使用 if语句时,C 语言规定 else总是( )。A) 和之前与其具有相同缩进位置的 if配对B) 和之前与其最近的 if配对C) 和之前与其最近的且不带 else的 if配对D) 和之前的第一个 if配对(分数:1.00)A.B.C.D.24.有以下程序:#include stdio. hint f(int a)return a% 2; main( )int s8 = 1,3,5,2,4,6 ,i,d =0;for (i=0;f(si);i+) d+ =si;prinff( “% d /

    8、n“, d);程序运行后的输出的结果是( ).A) 9 B) 11 C) 19 D) 21(分数:1.00)A.B.C.D.25.若有定义和语句:int*pp,*p,a=20,b=10;pp=p=p=printf(%d,%d/n“,*p,*pp);则输出结果是( )。A) 20,10 B) 20,20C) 10,20 D) 10,10(分数:2.00)A.B.C.D.26.若有定义和语句:int*pp,*p, a=20,b=1O;pp= p= p= printf (“%d,%d/n“,*p,*pp);则输出结果是( )。A) 20,10 B) 20,20C) 10,20 D) 10,10(分数

    9、:1.00)A.B.C.D.27.以下程序的主函数中调用了在其前面定义的 fun函数#include stdio.hmain()double a15,k;k=fun(a);则以下选项中错误的 fun函数受部是( )。A)double fun(double a15) B)double fun(double *a)C)double fun(double a) D)double fun(double a)(分数:2.00)A.B.C.D.28.下述程序的输出结果是#includestdio.hvoid main()int a5=2,4,6,8,10;int*p=a,*q= *s=*t; *t=k;s

    10、+;t-;if(*s)f(s,t):main()char str10=“abcdefg“,*P;P=str+strlen(str)/2+1:f(p,p-2);printf(“%s/n“,str);程序运行后的输出结果是_。A) abcdefg B) gfedcba C) gbcdefa D) abedcfg(分数:2.00)A.B.C.D.32.有以下程序段typedef struct node(int data; struct node *next;) *NODE;NODE p;以下叙述中正确的是_。(A) P是指向 struct node结构变量的指针的指针(B) NODE p;语句出错(

    11、C) P是指向 struct node结构变量的指针(D) P是 struct node结构变量(分数:2.00)A.B.C.D.33.有以下程序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中的值是A) 5.21 B) 5 C) 5.0 D) 0.0(分数:2.00)A.B.C.D.34.C语言结构体类型变量在程序执行期间( )。A) 所有成员

    12、一直驻留在内存中B) 没有成员驻留在内存中C) 部分成员驻留在内存中D) 只有一个成员驻留在内存中(分数:2.00)A.B.C.D.35.设 x=011050,则 x=xfor(b=1;b=10;b+)if(a=8)break;if(a%2=1)(a+=5;continue;a-=3;printf(“%d/n“,b);程序运行后的输出结果是_。A) 3 B) 4 C) 5 D) 6(分数:1.00)A.B.C.D.37.有以下程序:#include stdio.hfloat f1 (float n )return n*n;float f2 ( float n)return 2 * n;main

    13、( )float ( * p1)(float),( * p2)(float),(*t)(float) ,y1,y2;p1 = f1;p2 = f2;y1 = p2(p1(2.0) );t =p1;p1 = p2;p2 =t;y2=p2(p1(2.0);prinff(“% 3.0f, %3. Of/n“ ,y1,y2);程序运行后的输出结果是( )。A) 8,16 B) 8,8 C) 16,16 D) 4,8(分数:1.00)A.B.C.D.38.fscanf函数的正确调用形式是( )。A) fscanf(文件指针,格式字符串,输出表列);B) fscanf(格式字符串,输出表列,文件指针);C

    14、) fscanf(格式字符串,文件指针,输入表列);D) fscanf(文件指针,格式字符串,输入表列);(分数:1.00)A.B.C.D.39.已定义以下函数:int fun(int *p)return *p;函数 fun的返回值是( )。A) 不确定的值 B) 一个整数C) 形参 p中存放的值 D) 形参 p的地址值(分数:1.00)A.B.C.D.40.在 int (*prt)3;定义中,标识符 prt( )。A) 定义不合法 B) 是一个指针数组名,每个元素都是一个指向整型变量的指针C) 是一个指针,它指向一个具有三个元素的一维数组D) 是一个指向整型变量的指针(分数:2.00)A.B

    15、.C.D.二、填空题(总题数:15,分数:38.00)41.某二叉树有 5个度为 2的结点以及 3个度为 1的结点,则该二叉树中共有 1 个结点。(分数:4.00)填空项 1:_42.42. 当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行人队运算。这种情况称为U /U。(分数:2.00)填空项 1:_43.在面向对象方法中,类之间共享属性和方法的机制称为 1。(分数:2.00)填空项 1:_44.在两种基本测试方法中, 1 测试的原则之一是保证所测模块中每一个独立路径至少执行一次。(分数:2.00)填空项 1:_45.问题处理方案的正确而完整的描述称为 1。(分数:2.00

    16、)填空项 1:_46.E-R图中,矩形表示 1。(分数:2.00)填空项 1:_47.在关系模型中,把数据看成是二维表,每一个二维表称为一个_。(分数:4.00)填空项 1:_48.有以下程序:#includestdio.hmain()int a=1,b=2,c=3,d=0;if(a=1)if(b1=2)if(c=3) d=1;else d=2;else if(c!=3) d=3;else d=4;else d=5;printf(“%d/n“,d);程序运行后的输出结果是_。(分数:4.00)填空项 1:_49.若 a是血型变量,且 a的初值为 4,则计算 a+=a-=a*a表达式后 a的值为

    17、 1。(分数:2.00)填空项 1:_50.若变量 x、y 已定义为 int类型,X 的值为 99,y 的值为 9,请将输出语句“printf( 1,x/y):”补充完整,其输出的计算结果形式为:x/y=11。(分数:4.00)填空项 1:_51.52. 下列程序的输出结果是_。#includestdio.hmain()int x3,y2,z1;if(xy)if(y0)z+0;else Z+1;primf(“%d/n“,z);(分数:2.00)填空项 1:_52.51. 下面程序执行后输出的结果是U /U。int m=13;int fun(int x, int y)int m=3;return

    18、(x*y-m);main()int a=7,b=5;printf(“%d/n“,fun(a,B) /m);(分数:2.00)填空项 1:_53.下面程序的运行结果是_。 #includestdio.h main() int a,s,n,m; a=2;s=0;n=1;m=1; while(m=4)n=n*a;s=s+n;+m; printf(“s=%d“,s); (分数:2.00)填空项 1:_54.54. 以下程序的输出结果是U /U。#include stdiohmain()int i;for(i=a;if;i+,i+)printf(“%c“,i-a+A);printf(“/n“);(分数:

    19、2.00)填空项 1:_55.有以下程序#includestdio.hmain()int c3=0,k,i;while(k=getchar()!=/n)ck-A+;for(i=0;i3;i+)printf(“%d“,ci);printf(“/n“);若程序运行时从键盘输入 ABCACC回车,则输出结果为_。(分数:2.00)填空项 1:_二级 C语言笔试-481 答案解析(总分:101.00,做题时间:90 分钟)一、选择题(总题数:40,分数:63.00)1.下列叙述中错误的是( )。A) 线性表是由 n个元素组成的一个有限序列B) 线性表是一种线性结构C) 线性表的所有结点有且仅有一个前件

    20、和后件D) 线性表可以是空表(分数:2.00)A.B.C. D.解析:解析 线性表是一种线性结构,由 n(n0)个元素组成,所以线性表可以是空表。但是在线性表中,第一个结点没有前件,最后一个结点没有后件,其他结点有且只有一个前件和后件,所以选项 C)是错误的。2.下列关于栈的描述正确的是 _。A) 在栈中只能插入元素而不能删除元素B) 在栈中只能删除元素而不能插人元素C) 栈是特殊的线性表,只能在一端插入或删除元素D) 栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素(分数:2.00)A.B.C. D.解析:解析 栈是特殊的线性表,它的一端封闭,在另一端进行插入和删除操作。3.“商品”

    21、与“顾客”两个实体集之间的联系一般是( )。A) 一对一 B) 一对多 C) 多对一 D) 多对多(分数:1.00)A.B.C.D. 解析:解析 由于一个顾客可以购买多种商品,同一种商品可以有多个顾客购买,所以商品和顾客之间是多对多的联系。4.对长度为 n的线性表进行顺序查找,在最坏的情况下需要比较的次数为( )。A)125 B)n/2 C)n D)n+1(分数:2.00)A.B.C. D.解析:解析 对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏的情况下,要查找的元素是表的最后一个元素或查找失败,这两种情

    22、况都需要将这个元素与表中的所有元素进行比较,因此比较次数为 n。5.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指A) 模块间的关系 B) 系统结构部件转换成软件的过程描述C) 软件层次结构 D) 软件开发过程(分数:2.00)A.B. C.D.解析:解析 软件设计包括软件结构设计、数据设计、接口设计和过程设计。其中,结构设计是定义软件系统各主要部件之间的关系;数据设计将分析时创建的模型转化为数据结构的定义;接口设计是描述软件内部、软件和操作系统之间及软件与人之间如何通信;过程设计则是把系统结构部件转换成软件的过程性描述。6.数据库技术的根本目标是要解决数据的( )。A)

    23、存储问题 B) 共享问题 C) 安全问题 D) 保护问题(分数:2.00)A.B. C.D.解析:解析 在数据库系统中,需要对数据进行集中、统一的管理,以达到被多个应用程序共享的目标。7.对如图所示的二叉树进行前序遍历的结果为(分数:2.00)A.B.C. D.解析:解析 二叉树前序遍历的含义是:首先访问根结点,然后按前序遍历根结点的左子树,最后按前序遍历根结点的右子树,前序遍历二叉树的过程是一个递归的过程。根据题目中给出的二叉树的结构可知前序遍历的结果是 ABDYECFXZ。8.源程序的文档化不包括( )。A) 符号名的命名要有实际意义 B) 正确的文档形式C) 良好的视觉组织 D) 正确的

    24、程序注释(分数:2.00)A.B. C.D.解析:解析 源程序的文档化主要包括 3点:符号名应具有一定实际的含义,便于理解程序功能;正确的程序注释;良好的视觉组织(利用空格、空行、缩进等技巧使程序层次清晰)。9.下列特征中不是面向对象方法的主要特征的是( )。A) 多态性 B) 继承 C) 封装性 D) 模块化(分数:2.00)A.B.C.D. 解析:解析 面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题其特点包括:分类性、多态性、封装性、模块独立性、继承和多态性等。模块化是结构化程序设计的特点。10.简单的交换排序方法是( )。

    25、A) 快速排序 B) 选择排序 C) 堆排序 D) 冒泡排序(分数:2.00)A.B.C.D. 解析:解析 所谓的交换类排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序是一种最简单的交换排序方法,它通过相邻元素的交换,逐步将线性表变成有序。11.C语言源程序名的后缀是( )。A) .exe B) .C C) .obj D) .cp(分数:1.00)A.B. C.D.解析:解析 由 C语言构成的指令序列称为 C源程序,源程序文件的后缀为“.c”。源程序经过 C编译程序编译生成后缀为“.obj”的二进制文件(称为目标文件),然后由称为“连接程序”(Link

    26、)的软件把目标文件与 C语言提供的各种库函数连接起来,生成后缀为“.exe”的可执行文件。12.可以在 C语言中用做用户标识符的是_。A) voiddefine WORDB) as_b3_123IfC) for -abccasD) 2cDoSIG(分数:1.00)A.B. C.D.解析:评析 C 语言规定,标识符只能由字母、数字和下划线三种符号组成,而且第个字符必须是字母或下划线。另外还需要注意的是关键字不能作标识符。选项 a中 void,C 中 for都为关键字,D 中 2c以字母开头。13.设变量已正确定义并赋值,下列正确的表达式是( )。A) x=y*5=x+z B) int(15.8%

    27、5) C) x=y+z+5,+y D) x=25%5.0(分数:2.00)A.B.C. D.解析:解析 在赋值表达式中,赋值符号“=”的左边只能为要赋值的变量,不能为表达式,右边可以为常量或者是表达式,故选项 A)错误,选项 C)正确:在取余运算中,运算符“%”两边都必须是整型数据,所以选项 B)、D)错误。14.以下程序运行后的输出结果是main( )float x=2.0,y;if(x0.0) y=0.0;else if(x10.0) y=1.0/x:else y=1.0;printf(“%f/n“,y);A) 0.000000 B) 0.250000 C) 0.500000 D) 1.0

    28、00000(分数:1.00)A.B.C.D. 解析:解析 本题中,x=2.0,因此执行 else y=1.0,并且以“%f”输出。15.若执行下列的程序时,从键盘上输入 1和 2,则输出结果是( )。#includestdio.hmain()int a,b,s;scanf(“%d%d“,main()int a1,b2,c3,sum;stunfun(a+,b+,a+b) ,c+);printf(“%d/n“,sum);执行后的输出结果是( )。A) 6 B) 7 C) 8 D) 9(分数:1.00)A.B.C. D.解析:解析 函数 fun(intx,inty)的功能是返回两个整型数据的和。在主

    29、函数中,变量 a,b,c的初始值分别为 1,2,3。因此逗号表达式“a+,b+,ab”的值等于 5,表达式 c+的值为 3,调用子函数的表达式为“fun(5,3);”,其返回值等 8。所以变量 sam的值等于 8。17.在下列选项中,没有构成死循环的是A) int i=100; B) for(:);while(1)i=i%100+1:if(i100)break;C) int k=10000;dok+;while(k10000);D) int s=36:while(s)-s;(分数:1.00)A.B.C.D. 解析:解析 对于选项 A,循环表达式条件永久为 1,由于小于 100的数与 100取余

    30、不超过 99,所以在循环体内表达式 i%100+1的值永远不大于 100,break 语句永远不会被执行,所以是死循环;对于选项B,括号内没有能使循环终止的条件,是死循环;对于选项 C,先执行 k+,使 k=10001,陷入死循环。对于选项 D,s 从 36开始,每循环一次就减小 1,直到 s为 0,循环结束,不会构成死循环。18.有以下程序段:int k=0, a=1, b=2, c=3;k=ab? b:a; k=kc? c:k;执行该程序后,k 的值是_。A) 3 B) 2 C) 1 D) 0(分数:2.00)A.B. C.D.解析:解析 第一个表达式得到 k=2,对于第二个表达式,因为

    31、k=23,k 仍然赋值为 k。因此最后 k值为 2。19.设有定义:int n=0,*p=printf(“%d/n“, s0;执行后的结果是( )。A) 输出字符 a的 ASCII码 B) 输出字符 c的 ASCII码C) 输出字符 c D) 程序出错(分数:1.00)A.B.C.D. 解析:解析因为字符数组 s中的数组名 s表示的是一个地址常量。所以语句“s+=2;”不能将指针在当前位置的基础上再向后移动两位。因而程序编译时出错。23.在嵌套使用 if语句时,C 语言规定 else总是( )。A) 和之前与其具有相同缩进位置的 if配对B) 和之前与其最近的 if配对C) 和之前与其最近的且

    32、不带 else的 if配对D) 和之前的第一个 if配对(分数:1.00)A.B.C. D.解析:解析 C 语言的语法规定:else 子句总是与前面最近的不带 else的 if相结合,与书写格式无关。所以选项 C) 为正确答案。24.有以下程序:#include stdio. hint f(int a)return a% 2; main( )int s8 = 1,3,5,2,4,6 ,i,d =0;for (i=0;f(si);i+) d+ =si;prinff( “% d /n“, d);程序运行后的输出的结果是( ).A) 9 B) 11 C) 19 D) 21(分数:1.00)A. B.

    33、C.D.解析:解析 在主函数 main中,f(si)为 for语句的循环终止条件,当 f函数返回非零值时,则继续执行循环,否则终止循环,输出 d的值。程序的运行步骤为:当 i=0时,f(si)返回值为 1,执行d+=1,d=1;当 i=1时,将 s1;3 传给形参变量 s,f 函数返回 a%2=1,执行 d=d+ s1=1+3=4;当 i=2时,将 s2=5传给形参变量 a,f 函数返回 a%2=1,执行 d=d+s2= 4+5=9;当 i=3时,将 a3=2传给形参变量 a,f 函数返回 a%2=0,终止循环,输出 d的值 9。25.若有定义和语句:int*pp,*p,a=20,b=10;p

    34、p=p=p=printf(%d,%d/n“,*p,*pp);则输出结果是( )。A) 20,10 B) 20,20C) 10,20 D) 10,10(分数:2.00)A.B.C.D. 解析:解析 本题考查指针变量的赋值。*pp是定义了一个指向指针的指针变量,语句 pp= p= p= printf (“%d,%d/n“,*p,*pp);则输出结果是( )。A) 20,10 B) 20,20C) 10,20 D) 10,10(分数:1.00)A.B.C.D. 解析:解析本题考查指针变量的赋值。*pp是定义了一个指向指针的指针变量,语句 pp=k=fun(a);则以下选项中错误的 fun函数受部是(

    35、 )。A)double fun(double a15) B)double fun(double *a)C)double fun(double a) D)double fun(double a)(分数:2.00)A.B.C.D. 解析:解析 由函数 fun在主函数中的调用形式可以看出,函数 fun()的函数返回值类型为 double,形参为一维数组或指针变量。28.下述程序的输出结果是#includestdio.hvoid main()int a5=2,4,6,8,10;int*p=a,*q= *s=*t; *t=k;s+;t-;if(*s)f(s,t):main()char str10=“ab

    36、cdefg“,*P;P=str+strlen(str)/2+1:f(p,p-2);printf(“%s/n“,str);程序运行后的输出结果是_。A) abcdefg B) gfedcba C) gbcdefa D) abedcfg(分数:2.00)A.B. C.D.解析:解析 本程序的作用是将字符串 str倒序。语句“p=str+strlen(str)/2+1;”用于将指针变量 p指向 e字符所在的储存单元,p-2 指向了 c字符所在的存储单元,在函数 f中将这两个存储单元的内容交换,并使得 f函数中指向 e字符的指针变量 s加 1。指向 c字符的指针变量 t减 1,然后继续将 s和 t指向

    37、的存储单元的内容进行交换,直到 s指向的存储单元的内容为空为止。32.有以下程序段typedef struct node(int data; struct node *next;) *NODE;NODE p;以下叙述中正确的是_。(A) P是指向 struct node结构变量的指针的指针(B) NODE p;语句出错(C) P是指向 struct node结构变量的指针(D) P是 struct node结构变量(分数:2.00)A.B.C. D.解析:33.有以下程序int fun1(double a)return a*=a;int fun2(double x,double y)doubl

    38、e 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(分数:2.00)A.B.C. D.解析:解析 题中变量 w的定义为 double型,函数 fun2()的定义为 int型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。34.C语言结构体类型变量在程序执行期间( )。A) 所有成员一直驻留在内存中B) 没有成员驻留在内存中C) 部分成员驻留在内存中D) 只有一个成员驻留在内存中(分数:2.00)A.

    39、B.C.D.解析:解析 C 语言结构体类型变量在程序执行期间所有成员一直驻留在内存中,35.设 x=011050,则 x=xfor(b=1;b=10;b+)if(a=8)break;if(a%2=1)(a+=5;continue;a-=3;printf(“%d/n“,b);程序运行后的输出结果是_。A) 3 B) 4 C) 5 D) 6(分数:1.00)A.B. C.D.解析:解析 本题考查 break与 continue语句。在一个循环体中,若执行到 break,则跳出循环;若执行到 continue,则开始执行下一次的循环体。在本题的 for循环中,先判断 a是否大于等于 8,若是,则跳出

    40、循环。然后判断 a是否为奇数,若是则 a加上 5,且马上执行下一次的循环。若 a小于 8且是偶数,则减去 3。第一次循环开始时,a 为 1,所以 a加 5,并开始下一次循环。第二次循环开始时,a 为 6,所以执行 a-=3;。第三次循环开始时,a 为 3,所以 a加 5且开始下一次循环。第四次循环开始时,a 为 8,所以跳出循环。而第一次循环时,b 为 1,以后每进行一次循环就累加 1,所以最后输出为 4。选项 B正确。37.有以下程序:#include stdio.hfloat f1 (float n )return n*n;float f2 ( float n)return 2 * n;m

    41、ain( )float ( * p1)(float),( * p2)(float),(*t)(float) ,y1,y2;p1 = f1;p2 = f2;y1 = p2(p1(2.0) );t =p1;p1 = p2;p2 =t;y2=p2(p1(2.0);prinff(“% 3.0f, %3. Of/n“ ,y1,y2);程序运行后的输出结果是( )。A) 8,16 B) 8,8 C) 16,16 D) 4,8(分数:1.00)A. B.C.D.解析:解析 程序中定义了三个指向函数的指针变量 p1、p2、t,函数返回值均是 float类型。在 main函数中,p1 指向了函数 f1,p2 指

    42、向了函数 f2。语句 y1=p2(p1(2.0);先调用 f1函数,将其返回值4.000000传递给 f2的形参 n,并将其函数返回值 8.000000赋值给 y1。然后在 main函数中交换 p1,p2指针变量的指向,使 p1指向了函数 f2,p2 指向了函数 f1,执行语句 y2= p2(p1(2.0);先调用函数f2,得到返回值 4.000000,将其传递给 f1函数的形参 n,并将返回值 16.000000 赋值给 y2。在输出y1,y2 时,各浮点数占 3列,小数位数为 0,即输出了:8,16。38.fscanf函数的正确调用形式是( )。A) fscanf(文件指针,格式字符串,输

    43、出表列);B) fscanf(格式字符串,输出表列,文件指针);C) fscanf(格式字符串,文件指针,输入表列);D) fscanf(文件指针,格式字符串,输入表列);(分数:1.00)A.B.C.D. 解析:解析 fscanf 的调用形式是:fscanf(文件指针,格式字符串,输入表列);39.已定义以下函数:int fun(int *p)return *p;函数 fun的返回值是( )。A) 不确定的值 B) 一个整数C) 形参 p中存放的值 D) 形参 p的地址值(分数:1.00)A.B. C.D.解析:解析 函数值的类型应当是在定义函数时指定的。在定义函数时对函数值说明的类型一般和

    44、return语句中的表达式类型一致,即函数类型决定返回值的类型。此题中定义函数类型为 int型,故函数返回值也为整型。40.在 int (*prt)3;定义中,标识符 prt( )。A) 定义不合法 B) 是一个指针数组名,每个元素都是一个指向整型变量的指针C) 是一个指针,它指向一个具有三个元素的一维数组D) 是一个指向整型变量的指针(分数:2.00)A.B.C. D.解析:解析 此题的关键是要分清指针数组与指向一维数组指针之间的不同,题中的说明语句定义了一个指针变量 prt,它指向包含三个整数元素的一维数组。要注意:*prt 两侧的圆括号不能缺少,如果写成*ptr3,则 ptr与3先结合,

    45、是数组,然后再与前面的。号结合,则*ptr3将是一个指针数组。二、填空题(总题数:15,分数:38.00)41.某二叉树有 5个度为 2的结点以及 3个度为 1的结点,则该二叉树中共有 1 个结点。(分数:4.00)填空项 1:_ (正确答案:14)解析:解析 叶子结点总是比度为 2的结点多一个。所以,具有 5个度为 2的结点的二叉树有 6个叶子结点。总结点数=6 个叶子结点+5 个度为 2的结点+3 个度为 1的结点=14 个结点。42.42. 当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行人队运算。这种情况称为U /U。(分数:2.00)填空项 1:_ (正确答案:上溢

    46、)解析:解析 入队运算是指在循环队列的队尾加入一个新元素。这个运算有两个基本操作:首先将队尾指针进一(即 rearrear +1),并当 rearm+1 时,置 rear1;然后将新元素插入队尾指针指向的位置。当循环队列非空(s1)且队尾指针等于队头指针时,说明循环队列已满,不能进行人队运算,这种情况称为“上溢”。43.在面向对象方法中,类之间共享属性和方法的机制称为 1。(分数:2.00)填空项 1:_ (正确答案:继承)解析:解析 在面向对象的程序设计方法中,某些属性和方法是可以共享的,由于类从父类中继承而来,这样提高了软件的可重用性。44.在两种基本测试方法中, 1 测试的原则之一是保证

    47、所测模块中每一个独立路径至少执行一次。(分数:2.00)填空项 1:_ (正确答案:白盒)解析:解析 按功能划分测试可分为白盒测试和黑盒测试。白盒测试的原则是保证所测试模块中每一独立路径至少执行一次;保证所测试模块所有判断的每一分支至少执行一次:保证所测试模块每一循环都在边界条件和一般条件下至少各执行一次;验证所有内部数据结构的有效性。45.问题处理方案的正确而完整的描述称为 1。(分数:2.00)填空项 1:_ (正确答案:算法)解析:解析 计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法。46.E-R图中,矩形表示 1。(分数:2.00)填空项 1:_ (正确答案:实体)解析:47.在关系模型中,把数据看成是二维表,每一个二维表称为一个_。(分数:4.00)填空项 1:_ (正确答案:关系)解析:解析 在关系模型中,把数据看成是二维表。


    注意事项

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




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

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

    收起
    展开