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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、国家二级(C 语言)机试模拟试卷 116 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.下面关于算法的叙述中,正确的是( )。(分数:2.00)A.算法的执行效率与数据的存储结构无关B.算法的有穷性是指算法必须能在执行有限个步骤之后终止C.算法的空间复杂度是指算法程序中指令(或语句)的条数D.以上三种描述都正确2.下列二叉树描述中,正确的是( )。(分数:2.00)A.任何一棵二叉树必须有一个度为 2 的结点B.二叉树的度可以小于 2C.非空二叉树有 0 个或 1 个根结点D.至少有 2 个根结点3.如果进栈序列为 A,B,C,D,则可能的

2、出栈序列是( )。(分数:2.00)A.C,A,D,BB.B,D,C,AC.C,D,A,BD.任意顺序4.下列各选项中,不属于序言性注释的是( )。(分数:2.00)A.程序标题B.程序设计者C.主要算法D.数据状态5.下列模式中,能够给出数据库物理存储结构与物理存取方法的是( )。(分数:2.00)A.内模式B.外模式C.概念模式D.逻辑模式6.下列叙述中,不属于软件需求规格说明书的作用的是( )。(分数:2.00)A.便于用户,开发人员进行理解和交流B.反映出用户问题的结构,可以作为软件开发工作的基础和依据C.作为确认测试和验收的依据D.便于开发人员进行需求分析7.下列不属于软件工程 3

3、个要素的是( )。(分数:2.00)A.工具B.过程C.方法D.环境8.数据库系统在其内部具有 3 级模式,用来描述数据库中全体数据的全局逻辑结构和特性的是( )。(分数:2.00)A.外模式B.概念模式C.内模式D.存储模式9.将 ER 图转换到关系模式时,实体与联系都可以表示成( )。(分数:2.00)A.属性B.关系C.记录D.码10.某二叉树中度为 2 的结点有 10 个,则该二叉树中有( )个叶子结点。(分数:2.00)A.9B.10C.11D.1211.以下叙述中正确的是( )。(分数:2.00)A.C 程序中注释部分可以出现在程序中任意合适的地方B.C 程序的书写格式是固定的,每

4、行只能写一条语句C.构成 C 程序的基本单位是函数,所有函数名都可以由用户命名D.在对 C 语言程序进行编译时,可以发现注释行中的拼写错误12.下面的程序在编译时产生错误,其出错原因是( )。 #inc1ude main() int 1_case; float printF; printf(“请输入 2 个数:“); scanf(“d f“, &1_case, &printF); printf(“d f/n“,1_case, printF); (分数:2.00)A.定义语句出错,1 case 不能作为变量名B.定义语句出错,printF 不能用作用户自定义标识符C.定义语句无错,scanf 不

5、能作为输入函数使用D.定义语句无错,printf 不能输出 1 case 的值13.以下不正确的转义字符是( )。(分数:2.00)A.fB.dC.sD.08814.下面程序的运行结果是( )。 y=5;x=14;y=(x=3*y,x+6),x1); printf(“x=d,y=d“,x,y);(分数:2.00)A.x=27, y=27B.x=12, y=13C.x=15,y=14D.x=y=2715.sizeof(char)是( )。(分数:2.00)A.一种函数调用B.一个整型表达式C.个字符型表达式D.一个不合法的表达式16.下列 4 个程序中,完全正确的是( )。(分数:2.00)A.

6、#inc1ude main(); /*programming*/ printf(“programming!n“);B.#inc1ude stdioh main() *programming* printf(“programming!n“);C.#inc1ude stdioh main() *programming*/* printf(“programming!n“);D.inc1ude stdioh main() /*programming* printf(”programming!n“);17.设变量均已正确定义,若要通过 scanf(“dcdc“,&a1,&c1,&a2,&c2);语句为变

7、量 a1 和 a2赋数值 10 和 20,为变量 c1 和 c2 赋字符 X 和 Y。下列所示的输入形式中正确的是(注:口代表空格字符)( )。(分数:2.00)A.10X20YCRB.10X20YCRC.10XCR D10XCR20YCR 20 口 YCR18.两次运行下面的程序,如果从键盘上分别输入 3 和 2,则输出结果是( )。 #inc1ude main() int x; scanf(”d”,&x); if(x+2) printf(”d”,X); else printf(“d/n“,x ); (分数:2.00)A.4 和 3B.4 和 2C.4 和 1D.3 和 219.以下叙述中不

8、正确的是( )。(分数:2.00)A.在不同的函数中可以使用相同的名字的变量B.函数中的形式参数是局部变量C.在一个函数内定义的变量只在本函数范围内有效D.在一个函数内的复合语句中定义的变量在本函数范围内有效20.运行下面的程序,输入字符串“Microsoft Visua1 Studio”,则程序的执行结果是( )。 #inc1ude main() char Chr20; scanf(“s“,Chr); printf(“sn“,Chr); (分数:2.00)A.Microsoft Visua1 StudioB.MC.MicrosofiD.MicrosoftVisuaIStudio21.若有“d

9、ouble a:”,则正确的输入语句是( )。(分数:2.00)A.scanf(“lf“,a);B.scanf(“f“,&a);C.scanf(“lf,&a)D.scanf(“1e“,a);22.if 语句的基本形式为:if(表达式)语句,其中“表达式”( )。(分数:2.00)A.可以是任意合法的表达式B.必须是逻辑表达式C.必须是逻辑表达式或关系表达式D.必须是关系表达式23.若 i、j 已定义成 int 型,则以下程序段中内循环体的总执行次数是( )。 for(1=6;i0;i ) for(j=0;j2) printf(”d”,X); else printf(“d/n“,x ); (分数

10、:2.00)A.4 和 3 B.4 和 2C.4 和 1D.3 和 2解析:解析:本题考查 ifelse 语句。首先,scanf 函数通过键盘读入 x 的值。当 x=3 时,第一个 if 语句先判断条件,取 x 的值 3 和 2 比较,然后将 x 的值加 1,if 条件成立,执行下面的 printf 语句,输出x 的值 4。当 x=2 时,第一个 if 语句先判断条件,先取 x 的值 2 和 2 比较,然后将 x 的值加 1(x 的值变为 3),if 条件不成立,执行下面的 else 语句,先输出 x 的值 3,再将 x 的值减 1。19.以下叙述中不正确的是( )。(分数:2.00)A.在不

11、同的函数中可以使用相同的名字的变量B.函数中的形式参数是局部变量C.在一个函数内定义的变量只在本函数范围内有效D.在一个函数内的复合语句中定义的变量在本函数范围内有效 解析:解析:此题考查的是变量的作用范围。选项 D)中,在一个函数的复合语句中定义的变量是局部变量,只在定义此变量的复合语句内有效,并不是在整个函数体内都有效。20.运行下面的程序,输入字符串“Microsoft Visua1 Studio”,则程序的执行结果是( )。 #inc1ude main() char Chr20; scanf(“s“,Chr); printf(“sn“,Chr); (分数:2.00)A.Microsof

12、t Visua1 StudioB.MC.Microsofi D.MicrosoftVisuaIStudio解析:解析:当从键盘输入“Microsofi Visua1Studio”时,由于“scanf”输入函数的特点是遇到空格时结束读入字符,因此,该程序只将“Microsoft”这 9 个字符送到了字符数组 str 中,并在其后自动加上结束符“/0”。21.若有“double a:”,则正确的输入语句是( )。(分数:2.00)A.scanf(“lf“,a);B.scanf(“f“,&a);C.scanf(“lf,&a) D.scanf(“1e“,a);解析:解析:scanf 函数的调用形式是:

13、scanfl”格式字符串”,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符: “输入项地址表”是要输入的变量的地址。a 是 double 型数据,格式字符串可以用“lf”,“f”是浮点型。题中定义变量 a 为双精度型变量,双精度变量的格式符为“lf”;变量的地址用取地址符“&”加变量名表示,变量 a 的地址为“&a”。22.if 语句的基本形式为:if(表达式)语句,其中“表达式”( )。(分数:2.00)A.可以是任意合法的表达式 B.必须是逻辑表达式C.必须是逻辑表达式或关系表达式D.必须是关系表达式解析:解析:本题考查 if 表达式。i(表达式)中的表达式可以为任何合法的表达

14、式,一般情况下为逻辑、条件表达式,需要注意的是,当等号(=)误写为赋值号(=)时不会报错的,但是其值恒为 1。23.若 i、j 已定义成 int 型,则以下程序段中内循环体的总执行次数是( )。 for(1=6;i0;i ) for(j=0;j0。30.已知:int c34;,则对数组元素引用正确的是( )。(分数:2.00)A.c14B.c150C.c1+00D)以上表达都错误 解析:解析:此题考查的是数组元素的引用。对于已定义的数组 aMN,数组元素的正确引用必须满足行下标小于 M,列下标小于 N,且为正整数。因此,选项 A)中列下标溢出;选项 B)中行下标出现小数;选项 C)满足要求。3

15、1.以下程序: #inc1ude #inc1ude main() char str=“abcd/n/123/xab“; printf(“d“, strlen (str); 运行后的输出结果是( )。(分数:2.00)A.10B.9C.7 D.14解析:解析:本题考查字符串的长度,需注意转义字符串,例如,“/n”表示换行,为一个长度, “/123”表示 3 位八进制数 123 表示的字符,为一个长度,“/xab“表示二位十六进制数 ab 表示的字符,也为一个长度。32.C 语言中允许用外部说明来指定变量、函数和其他标识符的特征,这里所说的外部指的是( )。(分数:2.00)A.冠以关键字 ext

16、ernB.位置在函数体外部C.作用范围是全程的D.位置在函数的外部 解析:解析:C 语言中允许用位置在函数外部的说明来指定变量、函数和其他标识符的特征。33.有以下程序: #inc1ude int fun(int x,int y) if(x=y)retum(x); else return(x+y)/2); main() int a=1,b=2,c=3; printf(“d/n“,fun(2*a,fun(b,c); 程序运行后的输出结果是( )。(分数:2.00)A.2 B.3C.4D.5解析:解析:fun(b,c)即 fun(2,3),2!=3,所以返回(2+3)/2=2;fun(2*a,2)

17、即 fun(2,2),2=2,所以返回 2。34.若有“char s33=“AAA“,“BBB“,“CCC“);”说明语句,则与它等价的语句是( )。(分数:2.00)A.char*s=“AAA“,“BBB“,“CCC“;B.char*s3=“AAA“,“BBB“,“CCC“;C.char s5=“AAA“,“BBB“,“CCC“;D.char s3=“AAA“,“BBB“,“CCC”; 解析:解析:二维字符数组在定义时可省略第一维的维数,根据初始化有 3 个字符串,所以选项 D)中数组有 3 行,与已知说明语句等价。35.计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的

18、是( )。(分数:2.00)A.C 语言程序仅可以编译执行 B.C 语言程序仅可以解释执行C.C 语言程序既可以编译执行又可以解释执行D.以上说法都不对解析:解析:C 语言作为计算机高级语言,用它编写的程序必须经过 C 语言的编译器编译后,转换为二进制的机器码来运行。36.若有如下说明,且 int 类型占两个字节,则正确的叙述为( )。 struct st int a; int b2; a.(分数:2.00)A.结构体变量 a 与结构体成员 a 同名,定义是合法的 B.程序只在执行到该结构体时才为结构体 st 分配存储单元C.程序运行时为结构体 st 分配 8 字节存储单元D.类型名 stru

19、ct st 可以通过 extern 关键字提前引用解析:解析:本题主要考查结构体的用法:结构体变量 a 与结构体成员 a 同名,定义合法;在程序编译的时候结构的定义并不会使系统为该结构分配内存空间,只有在说明结构变量时才分配内存空间;int a 占 2 个字节,int b2占 4 个字节,共 6 个;类型名“struct st”不可以通过 extern 关键字提前引用。37.有以下程序: #inc1ude int fun(int *k) int b=0; b=*k(+b: return(b); main() int a10=1,2,3,4,5,6,7,8),i; for(i=2;iA.10 1

20、2B.810C.34 D.10 28解析:解析:b 是局部变量,因此当 i=2 时,fun 的返回值值为 3,i=3 时 fun 返回值为 4。38.设有一联合体变量定义如下: union data long a; float b: int c: char d: ; union data x: 执行下列语句后,正确的联合体变量 x 的值是 ( )。 xa=111111, xb=2222; xc=21546; xd=R;(分数:2.00)A.111111B.2222C.2.1546D.R 解析:解析:本题主要考查的知识点是联合体的内存使用。联合体与结构体的定义相同,其本质区别就在于内存使用方式的

21、不同。联合体所占用的内存空间为最长的成员所占用的空间,各个成员分量全部是从低地址方向开始使用内存单元;联合体中的空间在某一时刻只能保持某一个成员的数据,所以本题执行完一系列赋值后,只得到最后执行的字符R。39.若 x=2,y=3,则 x&y 的结果是( )。(分数:2.00)A.0B.2 C.3D.5解析:解析:本题主要考查按位与(&)运算的知识点。“”是对两个运算量相应的位进行逻辑与, “”的规则与逻辑与“&“相同。x=2 的二进制为 00000010,y=3 的二进制为00000011,x&y:00000010,转化为十进制即为 2。40.已知一个文件中存放若干工人档案记录,其数据结构如下

22、: struct a char number 100; int age; float p6;); 定义一个数组:struct a number10; 假定文件已正确打开,不能正确地从文件中读入 10 名工人数据到数组 b 中的是( )。(分数:2.00)A.fread(b,sizeof(struct a),10,fp);B.for(i=0;iC.for(i=0;iD.for(i=0;i解析:解析:数据块输入/输出函数的调用形式为:fread(buffer,size,count,fp)fread 函数参数说明:“buffer”是一个指针,对 fread 来说,它是读入数据的存放地址。对 fwri

23、te 来说,是要输出数据的地址。“size”是要读写的字节数;“count”是要进行读写多少个 size 字节的数据项;“fp”是指文件型指针。选项 B)中 bi是一个数组,不是指针,需改为bi。注意:完成一次读操作(fread()后,如果没有关闭流(fc1ose(),则指针(FILE*fp)自动向后移动前一次读写的长度,不关闭流则继续下一次读操作,接着上次的输出继续输出。二、程序填空题(总题数:1,分数:2.00)41.给定程序中,函数 fun 的功能是:计算形参 x 所指数组中 N 个数的平均值(规定所有数均为正数),将所指数组中小于平均值的数据移至数组的前部,大于等于平均值的数据移至 x

24、 所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。 例如,有 10 个正数:46 30 32 40 6 17 45 15 48 26,平均值为:30500000 移动后的输出为:30 6 17 15 26 46 32 40 45 48 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1C 中。 不得增行或删行,也不得更改程序的结构! #include #include #define N 10 double fun (double *x) int i,j; double av,yN; av=0; i=0

25、; while (i 5; 1+) printf (“d “,num1i ) ; printf (“/n“) ; (分数:2.00)_正确答案:(正确答案:(1)xi/N (2)j+或 j =j+1 (3)i+或 i=i+1)解析:解析:本题中函数 fun 的功能是计算形参 x 所指数组中 N 个数的平均值(规定所有数均为正数),将所指数组中小于平均值的数据移至数组的前部,大于等于平均值的数据移至 x 所指数组的后部。在 fun函数中,首先求平均值,然后拿平均值逐个和数组元素比较,如果元素值小于平均值则保存在数组 y 中,再把大于等于平均值的元素放在数组 y 后面,最后把 v 数组内的元素拷贝

26、到 x 所指的数组中。 第一空:“for(i0; i三、程序修改题(总题数:1,分数:2.00)42.给定程序 MOD11C 中,函数 fun 的功能是:在有 n 名学生,2 门课成绩的结构体数组 std 中,计算出第 1 门课程的平均分,作为函数值返回。 例如,主函数中给出了 4 名学生的数据,则程序运行的结果为:第 1 门课程的平均分是: 76125000 请改正函数 fun 中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。 #include typedef struct char num8; double score L2

27、; STU; double fun(STU std,int n) int i; double sum ; sum += std i score 1 ; return sum/n; main () STU std = “N1001“,765,820 ,“N1002“,665,730,“N1005“,805,660, “N1006“,810/560;printf(“第 1 门课程的平均分 是: lf/n“,fun (std,4) ; (分数:2.00)_正确答案:(正确答案:(1) double sum 改为 double sum=0 (2)for(i=0; i解析:解析:本题 fun 函数的主要

28、功能是:在有 n 名学生,2 门课成绩的结构体数组 std 中,计算出第 1门课程的平均分,作为函数值返回。这里就是很基本的求平均数,只不过这里涉及到结构体,稍微要比普通的求平均数复杂一点。fun0 函数就是相加求和,注意结构体涉及的细节问题即可。 (1)第一个错误在定义单门课程所有人总分 sum 时,因为 sum 是总分,而后面的计算式也确定为“sum+=stdiscore1”。很明显地,这里的 sum 需要定义一个初始值才能正确计算,而初始值只能是为 0 计算才是正确的,所以这里应该是“double sum“改为“double sum=0:”。 第二个错误在 fun 函数的 for 循环条

29、件中。这里的for 循环是为了求各科的分数和然后计算平均分,因此 for 循环的次数和计算平均分的个数是一样的,fun 函数是计算 n 个学生第一门课的平均分,所以这里的 sum 的循环肯定也是要进行 n 次,而原程序却是“i2”,这样明显只会进行 2 次循环,显然是不对的,所以为了进行必要的分数相加,这里的“i2”应该改成“i四、程序设计题(总题数:1,分数:2.00)43.请编写函数 fun,其功能是分别统计形参 t 所指二维数组中字母 A 和 C 的个数。 注意:部分源程序存在 PROG1C 中,请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若

30、干语句。 #include #include #define M 14 void NONO () ; void fun (char (*t) M ,int*a,int*c) void get (char (*s) M ) int i,j ; si j=65+rand() 12; printf (“/n“) ; main () char aM M; int x,y; get (a) ; printf(“A=d C=d/n“,x,y); NONO(); void NONO() /*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp,*wf; int i,j,x,y

31、; char aMM; fp=fopen(“indat“,“r“) ; wf=fopen (“outdat“,“w“) ; for( i=0; i_正确答案:(正确答案:void fun ( char (*t) M , int*a ,int *c)int 1, j;* a=0; * c=0; for( i=0; i解析:解析:本题中 fun 函数实现的功能的主要功能是找出二维数组中 A 和 C 的个数,最先就能想到用条件语句进行判断和统计。解题步骤主要为:第一步,要得到所需要的二维数组,第二步,二维数组进入fun 函数中进行数据处理,fun 函数中需要 if 条件语句来进行判断,判断数组中的字

32、母是否为 A 或者 C,数组中的每个数据都需要进行判断,要注意 A 和 C 是分开统计的,所以这里需要同时统计 A 和 C,然后分别得到结果;第三步,输出得到的结果:字母 A 和字母 C 的个数。 本题首先需要一个二维数组,二维数组的大小在程序开始就进行了定义“define=14”,这个大小比较合适,然后利用 gets 函数得到数组,然后数据就可以进入 fun 函数中进行处理应用。进入 fun 函数,fun 函数首先肯定需要 for 循环语句将二维数组中的数据进行排序使用,然后需要条件语句进行判断处理,这两步是一体,见程序第 911 行,for循环保证全部使用了二维数组中数据,并且是依次使用,if 语句判断了字母是否为 A 或者 C 或者都不是,并且进行了统计相加得到了 A 的个数 a,C 的个数 c,这样循环完成后,A 和 C 的个数 a、c 就能继续返回主函数进行输出了,见程序 26 行,最终得到结果。

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