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

    【计算机类职业资格】国家二级(C语言)机试模拟试卷136及答案解析.doc

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

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

    【计算机类职业资格】国家二级(C语言)机试模拟试卷136及答案解析.doc

    1、国家二级(C 语言)机试模拟试卷 136 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.关于数据结构的存储原理,以下数据类型不能采用顺序存储结构的是( )。(分数:2.00)A.栈B.堆C.循环队列D.非完全二叉树2.关于数据结构,下列叙述中错误的是( )。(分数:2.00)A.二叉链表是二叉树的存储结构B.循环链表是循环队列的存储结构C.栈的存取原则是先进后出D.循环队列是队列的存储结构3.设一棵树的总节点为 24,其中度为 4,3,2,1 的节点个数分别为 2,3,3,0。则该棵树中的叶子节点数为( )。(分数:2.00)A.16B.1

    2、5C.17D.不可能有这样的树4.计算机程序设计的三种基本结构是( )。(分数:2.00)A.递归、迭代和回溯B.过程、函数和子程序C.顺序、选择和循环D.调用、返回和选择5.某系统结构图如下图所示: (分数:2.00)A.5B.4C.2D.16.用于软件测试的实例主要包括哪些内容?( )(分数:2.00)A.输入数据和测试规程B.测试程序和输出结果C.输入数据和预期输出结果D.输入数据、测试规程和输出数据7.软件设计和使用的过程中,解决软件“怎么做”的阶段是( )。(分数:2.00)A.需求分析B.软件设计C.软件测试D.可行性研究8.下列模型中,用树形结构表示实体之间联系的模型是( )。(

    3、分数:2.00)A.层次模型B.关系模型C.网状模型D.运算模型9.在数据库管理系统中,关系数据模型的三个组成部分中不包括( )。(分数:2.00)A.关系的完整性约束B.关系的数据操纵C.关系的数据结构D.关系的并发控制10.一个宾馆房间可以住至少一个旅客,则房间和旅客之间的对应关系是( )。(分数:2.00)A.一对多B.一对一C.多对一D.多对多11.以下选项中,C 语言常量合法的是( )。(分数:2.00)A.0214B.CD+C.123D.2Kb12.有以下程序: #include main() int m,n,x=1; float y=6; m=sizeof(x); n=sizeo

    4、f(y); pfintf(d,dn,m,n); 在 VC6 平台上编译运行,程序运行后的输出结果是( )。(分数:2.00)A.4,8B.4,4C.2,4D.10,613.关于程序模块化的叙述中错误的是( )。(分数:2.00)A.程序模块化有利于提高程序运行的效率B.程序模块化有利于提高程序编制的效率C.程序模块化有利于提高程序代码复用率D.程序模块化有利于提高调试程序的效率14.以下选项中不能用作用户标识符的是( )。(分数:2.00)A._3_14B.printfC.IntD.auto15.关于 C 语言的输出语句:printf(3dn,1001)的叙述中正确的是( )。(分数:2.00

    5、)A.程序运行时输出 1001B.程序运行时输出 001C.程序运行时输出 100D.指定的输出宽度不够,编译出错16.下列选项不能作为 C 语言整型常量的是( )。(分数:2.00)A.12LB.一 02C.0XfD.100U17.有以下程序: #include main() int x=1,y=0; if(!x)y+; else if(x=0) if(!x)x+; else y+; printf(dn,y); 程序运行后的输出结果是( )。(分数:2.00)A.1B.2C.0D.318.在 C 语言源程序的语句 if(W)printf(dn,k)中,以下不可以替代 W 的是( )。(分数:

    6、2.00)A.xy+1 B.T=getchar()C.a=1+1D.x+=3解析:解析:C 语言中的不等于用“!:”表示,所以 A 项的写法有误,B、C 和 D 项都是合法的表达式,所以能代替 W。19.有以下程序: #include main() int a=0,b=0; for(;a7;a+) if(a2!=0)continue; b+=a; printf(dn,b); 程序运行后的输出结果是( )。(分数:2.00)A.12 B.9C.8D.4解析:解析:continue 的意思是放弃执行循环体内之后的内容,而进行下一次循环,因此,本题中当 a是偶数的时候才执行后面的 b+=a 的语句,

    7、因此,结果是 2+4+6=12。20.若有以下程序: #include main() char x=5; x+; printf(d,dn,x 一5+20,x一5); 执行后的输出结果是( )。(分数:2.00)A.21,1 B.1,21C.20,1D.21,0解析:解析:C 语言中字符是特殊的一类整数,x+=6所以 x 一5=1。21.有以下程序: #include main() int a=3,b=0; dob+=a;while(a 一一); printf(d,dn,b,a); 执行后的输出结果是( )。(分数:2.00)A.12,0B.12,一 1C.6,0D.6,一 1 解析:解析:do

    8、while 循环是先执行循环体再做条件判断,当 while 结束时,a=0,之后再执行 a操作,所以 a=一 1:b=3+2+1=6。22.有以下程序: #include main() int x,a=1,b=1; while(1) scanf(d,&x); if(x0)a*=x;break; if(x0)b*=x;continue; printf(d,dn,a,b); 程序运行时输入:一 23 045,则输出结果是( )。(分数:2.00)A.1,6B.1,6 1,6 C.一 1,一 6D.一 2,6解析:解析:循环体中的 break 语句将立即退出循环,而 continue 将直接执行下一

    9、次循环。当输入一 2和一 3 时,执行 b*=x 语句,且不会打印,结果是 b=1*一 2*3=6,当输入 0 时,前两个 if 语句并未执行,直接打印出 a,b 的值,此时 a=1,b=6,当输入 4 时执行 break 语句,直接退出循环。23.有以下程序: #include #define N 4 void fun(int aNint,b) int i; for(i=0;iN;i+)bi=aiN 一 1 一 i一 aii; main() int xNN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,yN,i; fun(x,y); for(i=0;iN;i+

    10、)printf(d,yi);printf(n); 程序运行后的输出结果是( )。(分数:2.00)A.一 3,一 1,1,3B.一 12,一 3,0,0C.3,1,一 1,一 3 D.一 3,一 3,一 3,一 3解析:解析:仔细分析子函数的功能是以数组反对角线上的元素减去同行上对角线上的元素。24.有以下程序: #inchlde main() int x32:0,i; for(i=0;i3;i+)scanf(d,x2一 i); printf(dddn,x00,xE01,x10); 若运行时输入:246,则输出结果为( )。(分数:2.00)A.246B.604 C.642D.406解析:解析

    11、:如果 xij是一个二维数组,则 xi将指向第i1行的首地址,因此,输入数据时,x2,x1和 x0,将分别对应数组 x 的 x20,x10和 x00,其他值没有发生变化,所以结果是 604。25.有以下程序: #include int fa(int x,int y) if(x=y)return 2*x+3; else return y; int fb(int x,int y) if(x=y)return 2*y+3; else return x; main() int i,a=2,b=0; for(i=1;i=4;i+) a=fa(i,a);b=fb(i,b); printf(d,dn,a,b

    12、); 程序运行后的输出结果是( )。(分数:2.00)A.4,11B.4,4C.11,11D.11,4 解析:解析:此题是考查函数的循环调用,将 a,b 的初值代入,最后的结果是 11,4。26.有以下部分程序: #include void f(float); main() void f(float); f(01); void f(int x) printf(fn,x); 以下叙述中错误的是( )。(分数:2.00)A.f 函数中不可以出现 return 语句 B.主函数中 f(01)可以正确调用C.主函数后的其他函数可以正确调用 f 函数D.f 函数无返回值,应当定义成 void 类型解析:

    13、解析:注意到子函数在 main 之前便进行了说明,在 main 中也进行了说明,所以选项 B 和 C 正确。选项 D 对于无返回值的函数均正确,如果函数为 void 类型,则不能返回值,但可以有 return 语句,只是不能跟具体值,所以选项 A 不正确。27.有以下程序: #include main() int i=3,j=5,*p=&i,*q=&j,*r; r=&q;i+;(*q)+; printf(d,d,d,d,dn,i,j,*P,*q,*r); 执行后的输出结果是( )。(分数:2.00)A.4,6,4,6,6 B.5,3,5,3,5C.4,6,4,6,4D.4,6,4,4,6解析:

    14、解析:此题考查指针及指针的指针,(*q)是对其指向的地址空间的存储值的引用,所以(*q)+等同于 j+;同时,r 指向的具体数值也会发生变化。28.若希望 P 指向的值加 1,则以下表达式不正确的是( )。(分数:2.00)A.*p+; B.*p=*p+1;C.(*p)+;D.+*p;解析:解析:若 p 是指针,则*p 是取该地址存放的具体数值,但取值运算级别较低,所以先会执行 p+运算,再取值,所以结果是取得 p 指向的下一个存储单元的值,因此不正确。29.下列 C 语句表达式不合法的是( )。(分数:2.00)A.char*ss一Computer?;B.char ss20=Computer

    15、?;C.char*ss10;ss i=Computer?:D.char ss1020;ss1=Computer?; 解析:解析:字符数组在定义时可以同时用字符串赋初值,如果在定义以后再赋值,则需要逐个元素赋值,所以选项 B 正确,选项 D 不正确,选项 A 和 C 定义的是数组指针,所以用字符串给字符指针赋值是正确的。30.有以下程序: #include int fun() static int x=1; return 2*x+1; main() int i,s=1; fun(); s=fun(); printf(dn,s); 程序运行后的输出结果是( )。(分数:2.00)A.7 B.3C.

    16、0D.10解析:解析:静态变量只在初次定义时赋初值,且子函数的静态变量一直在内存中,当下次调用该函数时,静态变量还具有上次调用结束时的值,且不会被再次赋值,所以本题第 1 次调用结束时 x=3,当第 2 次调用时,x=2*3+1=7,选项 A 正确。31.有以下程序(注:字符 A 的 ASC码值为 65): #include main() char*s=ABC; do printf(d,*s5);s+; while(*s); 程序运行后的输出结果是( )。(分数:2.00)A.012 B.ABCC.567D.abc解析:解析:C 语言中,字符可以作为整数进行运算,其值是 ASC码值,字符指针

    17、s 指向的是字符串的首地址,s+将指向下一个字符地址,do 一 while 循环执行 655,665,675,结果是 0,1,2。32.有以下程序: #include #include main() int i,len; char b=Welcome to China!; len=strlen(b); for(i=0;ilen;i+) if(bi=) strcpy(b,b+i+1); i=0; pfintf(sn,b); 程序运行后的输出结果是( )。(分数:2.00)A.to China!B.WelcomeC.Welcome to China!D.China 解析:解析:for 循环的功能是

    18、遍历字符串的每个字符,如果碰到字符串中的空格,则用空格后面的字符串覆盖原有字符串,并重置循环变量。因此本题的答案是 China。33.关于字符串处理的叙述中正确的是( )。(分数:2.00)A.字符串复制时,目的串的存储空间必须足够大 B.两个字符串进行比较时,短的一个必定比长的一个小C.字符串定义时必须指定最后的字符串结束标识符D.两个字符串连接时,对存储空间的大小没有要求解析:解析:字符串复制时,目的串的存储空间必须足够大以包含两个字符串的存储内容,选项 A 正确,选项 D 不正确;字符串比较时,只比较第一个不同字符的 ASCII 码大小,选项 B 错;字符串定义时,结束标识符是系统自动补

    19、充的。34.有以下程序: #include float sf(int n) static float f=1; f*=n; return f; main() int i; float s=0; for(i=l;i6;i+) s+=sf(i); printffn,s); 程序计算的结果是( )。(分数:2.00)A.153 B.15C.120D.105解析:解析:静态变量只在初次定义时赋初值,且子函数的静态变量一直在内存中,当下次调用该函数时,静态变量还具有上次调用结束时的值,且不会被再次赋值,所以本题多次调用函数时,计算的内容是1!+2!+3!+4!+5!,结果是 153。35.下面结构体的定

    20、义语句中,错误的是( )。(分数:2.00)A.struct STint x;int y;int z;struct ST a;B.struct STint x;int y;int z;stmct ST a; C.struct STint x;int y;int z;a;D.stmctint x;int y;int z;a;解析:解析:结构体可以在定义的同时定义变量,如选项 C 所示,也可以不用给新的结构体类型命名,如选项 D 所示,也可以在定义之后,通过 struct 结构体名变量名的形式定义变量,所以选项 ACD 正确,但在定义结构体类型的同时定义变量时不必使用 struct 关键字,所以选

    21、项 B 错。36.有以下程序: #include main() FILE*fp;int a10=2,3,4,i,n; fp=fopen(datadat,w); for(i=0;i3;i+)fprintf(fp,d,ai); fprintf(fo,n); fclose(fp); fp=fopen(datadat,r); fscanf(fp,d,&n);fclose(fp); pfintf(dn,n); 程序的运行结果是( )。(分数:2.00)A.0234B.2340C.234 D.432解析:解析:此题是基本的文件操作,写入的是数组的元素,所以是 234n,读文件时,n是回车符,所以 n 的值

    22、是 234。37.有以下程序: #include #define FUN(x,y)(x*y) main() int m=2,n=3; printf(dn,FUN(m,m+n)*2); 程序运行后的输出结果是( )。(分数:2.00)A.10B.20C.6D.14 解析:解析:宏定义一定要先代入再计算,FUN(m,m+n)*2=(m*m+n)*2=(2*2+3)*2=14。38.有以下程序: #include void fun(int a) if(a1)a*=fun(a 一 1); pfintf(d,a); return a; main() fun(3);printf(n); 执行后的输出结果是

    23、( )。(分数:2.00)A.126 B.621C.1D.6解析:解析:此题是迭代调用,结果是 a=3*(2*(1)=6,但 printf 语句每次都要执行,而且是先从最后一层调用开始,即 a=1 最先打印,a=2 其次,a=6 最后打印。39.关于文件的叙述中正确的是( )。(分数:2.00)A.文件由数据序列组成,其类型只能是二进制文件B.文件由记录序列组成,其类型可以为二进制文件或文本文件C.文件由字符序列组成,其类型可以为二进制文件或文本文件D.文件由数据序列组成,其类型可以为二进制文件或文本文件 解析:解析:C 语言文件由数据序列组成,其类型可以为二进制文件或文本文件。40.设有定义

    24、和语句,int*pi,*pj;pi=pj=(int*)malloc(4);如果在 VC 平台上编译,则以下叙述正确的是( )。(分数:2.00)A.pi 和 pj 指向了同一个 int 型存储单元 B.pi 和 pj 指向了 2 个连续的 int 型存储单元的首地址C.pi 和 pj 分别指向了一个 int 型存储单元D.pi 和 pj 分别指向 2 个 int 型存储单元解析:解析:指针不会自动开辟内存空间,所以 malloc(4)开辟的 4 个字节的内存空间只是一块连续的存储空间,用来存放一个整型数据,pi 和 pj 是两个整型指针,都指向了这一存储空间。二、程序填空题(总题数:1,分数:

    25、2.00)41.下列给定程序中,函数 fun 的功能是:将 s 所指字符串中的所有数字字符移到所有非数字字符之前,并保持数字字符串和非数字字符串原有的次序。 例如,s 所指的字符串为“def35adh3kjsdf7”,执行后结果为“3537defadhkjsdf”。 请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANK1C 中。不得增行或删行,也不得更改程序的结构! #include void fun(char*s) int i,j=0,k=0;char t180,t280; for(i=0;si!=0;i+) if(si=0&si=9)

    26、*found* t2j=si;【1】; else t1k+=si;t2j=0;t1k=0; *found* for(i=0;ik;i+)【2】; *found* for(i=0;i【3】;i+)sk+i=t2i; void main() char s80=ba3a54j7sd567sdffs; printf(nThe original string is:sn,s); fun(s); printf(nThe result is:sn,s); (分数:2.00)_正确答案:(正确答案:1j+或 j+=1 或+j 或 j=j+1 2si=tli 3J)解析:解析:填空 1:根据函数 fun 中的内

    27、容可知。数组 tl 存储了 s 中的非数字字符,数组 t2 存储了 s中的数字字符,为了存储下一个数字字符,下标 j 要进行加 1 操作。 填空 2:将 s 串中的数字与非数字字符分开后,要先将非数字字符放入字符串 s 中,因此填入 si=tli。 填空 3:最后将数字字符加到s 串之后,并且 i 要小于数字的个数 j。三、程序修改题(总题数:1,分数:2.00)42.下列给定程序中,函数 fun 的功能是:将 p 所指字符串中的所有字符复制到 b 中,要求每复制 4 个字符之后插入一个空格。例如,若给 a 输入字符串:ABCDEFGHIJK,调用函数后,字符数组 b 中的内容为:ABCD E

    28、FGH IJK。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件 MOD11C 中,不得增行或删行,也不得更改程序的结构。#includestdiohvoid fun(char*P,char*b)int i,k=0;while(*p)i=1;while(i=4&*P)*found*bk=p;k+;p+;i+;if(*P)*found*bk+=;bk=0;main()char a80,b80;printf(Enter a string:);gets(a);printf(The original string:);puts(a);fun(a,b);printf(nThe strin

    29、g after insert space:);puts(b);printf(nn);(分数:2.00)_正确答案:(正确答案:1bk=*p; 2bk=;k+;)解析:解析:1题目中 p 是指针型变量作函数参数,因此给 bk赋值时出现错误。 2题目要求赋值 4个字符后加一个空格,所以应该是先给 bk赋值空格,然后变量 k 再加 1。 C 语言中为了表示指针变量和它所指向的变量之间的关系,在程序中用“*”,表示“指向”,例如,pointer 代表指针变量,而*pointer 是 pointer 所指向的变量。四、程序设计题(总题数:1,分数:2.00)43.编写 fun,其功能是:实现两个字符串的

    30、连接(不要使用库函数 strcat)。例如,分别输入下面两个字符串:welcome to beijing 程序运行后的输出结果是:welcome to beijing 注意:部分源程序文件PROG1C 中。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。#includestdiohvoid fun(char pl,char p2)main()char s180,s240;void File Opr();printf(Enter s1 and s2:n);scanf(ss,s1,s2);printf(s1=sn,s1):printf(s2=sn

    31、,s2);printf(Invoke fun(s1,s2):n);fun(s1,s2);printf(After invoking:n);printf(sn,s1);File Opr();void File Opr();+本函数用于打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。*int i;FILE*rf。*wf;char s180,s240;rf=fopen(indat,r);wf=fopen(outdat,w);for(i=0;i10;i+)fscanf(rf,s,s1);fscanf(rf,s,s2);fun(s1,s2);fprinTf(wf,sn,s1);fclose(rf);fclose(wf);(分数:2.00)_正确答案:(正确答案:void fun(char p1,char p2) int i,j; for(i=0;p1i!=0;i+) for(j=0;p2j!=0;j+) p1i+:p2j; p1i=0; )解析:解析:本题用两个循环完成操作,第 1 个循环的作用是求出第 1 个字符串的长度,即将 i 指到第 1个字符串的末尾。第 2 个循环的作用是将第 2 个字符串的字符连到第 1 个字符串的末尾。最后在第 1 个字符串的结尾加上字符串结束标识0。


    注意事项

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




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

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

    收起
    展开