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

上传人:roleaisle130 文档编号:1334723 上传时间:2019-10-17 格式:DOC 页数:14 大小:87KB
下载 相关 举报
【计算机类职业资格】国家二级(C语言)机试模拟试卷133及答案解析.doc_第1页
第1页 / 共14页
【计算机类职业资格】国家二级(C语言)机试模拟试卷133及答案解析.doc_第2页
第2页 / 共14页
【计算机类职业资格】国家二级(C语言)机试模拟试卷133及答案解析.doc_第3页
第3页 / 共14页
【计算机类职业资格】国家二级(C语言)机试模拟试卷133及答案解析.doc_第4页
第4页 / 共14页
【计算机类职业资格】国家二级(C语言)机试模拟试卷133及答案解析.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、国家二级(C 语言)机试模拟试卷 133 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.下列叙述中正确的是( )。(分数:2.00)A.算法就是程序B.设计算法时只需要考虑数据结构的设计C.设计算法时只需要考虑结果的可靠性D.以上三种说法都不对2.下列叙述中正确的是( )。(分数:2.00)A.有一个以上根结点的数据结构不一定是非线性结构B.只有一个根结点的数据结构不一定是线性结构C.循环链表是非线性结构D.双向链表是非线性结构3.下列关于二叉树的叙述中,正确的是( )。(分数:2.00)A.叶子结点总是比度为 2 的结点少一个B.叶子结点

2、总是比度为 2 的结点多一个C.叶子结点数是度为 2 的结点数的两倍D.度为 2 的结点数是度为 1 的结点数的两倍4.软件生命周期中的活动不包括( )。(分数:2.00)A.市场调研B.需求分析C.软件测试D.软件维护5.某系统总体结构图如下图所示: (分数:2.00)A.7B.6C.3D.26.程序调试的任务是( )。(分数:2.00)A.设计测试用例B.验证程序的正确性C.发现程序中的错误D.诊断和改正程序中的错误7.下列关于数据库设计的叙述中,正确的是( )。(分数:2.00)A.在需求分析阶段建立数据字典B.在概念设计阶段建立数据字典C.在逻辑设计阶段建立数据字典D.在物理设计阶段建

3、立数据字典8.数据库系统的三级模式不包括( )。(分数:2.00)A.概念模式B.内模式C.外模式D.数据模式9.有三个关系 R、S 和 T 如下: (分数:2.00)A.自然连接B.交C.投影D.并10.下列选项中属于面向对象设计方法主要特征的是( )。(分数:2.00)A.继承B.自顶向下C.模块化D.逐步求精11.以下叙述中错误的是( )。(分数:2.00)A.算法正确的程序可以有零个输入B.算法正确的程序最终一定会结束C.算法正确的程序可以有零个输出D.算法正确的程序对于相同的输入一定有相同的结果12.以下叙述中正确的是( )。(分数:2.00)A.C 语句必须在一行内写完B.C 程序

4、中的每一行只能写一条语句C.C 语言程序中的注释必须与语句写在同一行D.简单 C 语句必须以分号结束13.以下选项中关于 C 语言常量的叙述错误的是( )。(分数:2.00)A.经常被使用的变量可以定义成常量B.常量分为整型常量、实型常量、字符常量和字符串常量C.常量可分为数值型常量和非数值型常量D.所谓常量,是指在程序运行过程中,其值不能被改变的量14.以下选项中,不合法的 C 语言用户标识符是( )。(分数:2.00)A.abB.AaBcC.a 一一 bD._115.若变量均已正确定义并赋值,以下合法的 C 语言赋值语句是( )。(分数:2.00)A.x=y=5;B.x=n25;C.x+n

5、=i;D.x=5=4+l:16.设有定义: int a;float b; 执行 scanf(“2df”,&a,&b); 语句时,若从键盘输入 876 5430 则 a 和 b 的值分别是( )。(分数:2.00)A.87 和 60B.876 和 5430C.87 和 5430D.76 和 543017.有以下定义语句,编译时会出现编译错误的是( )。(分数:2.00)A.char a=x2d;B.char a=n;C.char a=a;D.char a=“aa”;18.当变量 c 的值不为 2、4、6 时,值也为”真”的表达式是( )。(分数:2.00)A.(c=2c=2&c=2&c=0)y=

6、sqrt(x); if(xB.if(x=0)y=sqrt(x); else y=sqrt(一 x);C.y=sqrt(x);D.if(x20.有以下程序: #include main() int y=10; while(y 一一); prinff(“y=dn”,y); 程序执行后的输出结果是( )。(分数:2.00)A.y=一 1B.y=0C.y=1D.while 构成无限循环21.有以下程序: #include main() int i; for(i=1;iA.5B.24C.32D.4022.有以下程序: #include main() int s; scanf(“d”,&s); while

7、(s0) switch(s) case 1:prinff(“d”,s+5); case 2:printf(“d”,s+4);break; case 3:printf(“d”,s+3);default:printf(“d”,s+1);break; scanf(“d”,&s); 运行时,若输入 1 2 3 4 5 0,则输出结果是( )。(分数:2.00)A.66656B.6566456C.66666D.666665623.以下叙述中错误的是( )。(分数:2.00)A.用户定义的函数中可以没有 return 语句B.用户定义的函数中可以有多个 return 语句,以便可以调用一次返回多个函数值C

8、.用户定义的函数中若没有 return 语句,则应当定义函数为 void 类型D.函数的 return 语句中可以没有表达式24.有以下程序: #include void fun(char*c,intd) *c=*c+1: d=d+1: printf(“e,e,”,*c,d); main() char b=a,a=A; fun(&b,a); printf(“c,cn”,b,a); 程序运行后的输出结果是( )。(分数:2.00)A.b,B,b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B25.下列选项中,能正确定义数组的语句是( )。(分数:2.00)A.int Bum02008;

9、B.int num;C.int N=2008; int nunN;D.#define N 2008 int RumN;26.以下函数实现按每行 8 个输出 w 所指数组中的数据: #include void fun(int*w,int n) int i; for(i=0;iA.if(i8=0)printf(“n”);B.if(i8=0)continue;C.if(i8=0)printf(“n”);D.if(i8=0)continue;27.有以下程序: #include void fun(char*c) while(*c) if(*c=a&*c=a&six); prinff(“dn”,+(P

10、一y); 程序运行后的输出结果是( )。(分数:2.00)A.3,4B.4,1C.2,3D.1,237.有以下程序: #include #define SUB(a)(a)一(a) main() int a=2,b=3,c=5,d; d=SUB(a+b)*c; prinff(“dn”,d); 程序运行后的输出结果是( )。(分数:2.00)A.0B.一 12C.一 20D.1038.有以下程序: #include main() int a:2,b; b=a=2c=2&c=2&c=2&c=0)y=sqrt(x); if(xB.if(x=0)y=sqrt(x); else y=sqrt(一 x);C

11、.y=sqrt(x); D.if(x解析:解析:本题重点考查的知识点是:sqrt()函数。sqrt()函数的作用是计算平方根,要求输出的参数x 必须大于等于 0。题目公式的要求是无论 x 大于等于 0 还是小于 0,y 的值都为 x 绝对值的开方。选项 C中调用了 sqrt(x)函数,而没有判断 x 的正负,则 y=sqrt(x)会出错。20.有以下程序: #include main() int y=10; while(y 一一); prinff(“y=dn”,y); 程序执行后的输出结果是( )。(分数:2.00)A.y=一 1 B.y=0C.y=1D.while 构成无限循环解析:解析:y

12、 一一表示 y 使用后再自减 1。所以最后一次 y 的值为 0,条件不成立但仍要执行自减操作,y 的值为一 1,跳出循环。打印 y 的值一 1。21.有以下程序: #include main() int i; for(i=1;iA.5B.24C.32 D.40解析:解析:本题的含义是在 1 一 40 的整数的范围中,只有当 i 的值能被 5 整除,且 i+2 的值能被 8 整除时,打印 i 的值,满足这个条件的只有 32,选择 C 选项。22.有以下程序: #include main() int s; scanf(“d”,&s); while(s0) switch(s) case 1:prin

13、ff(“d”,s+5); case 2:printf(“d”,s+4);break; case 3:printf(“d”,s+3);default:printf(“d”,s+1);break; scanf(“d”,&s); 运行时,若输入 1 2 3 4 5 0,则输出结果是( )。(分数:2.00)A.66656B.6566456 C.66666D.6666656解析:解析:switch 语句的执行流程是:首先计算 switch 后面圆括号中表达式的值,然后用此值依次与各个 case 的常量表达式比较,若圆括号中表达式的值与某个 ease 后面的常量表达式的值相等,就执行此case 后面的语

14、句,执行后遇 break 语句就退出 switch 语句;若圆括号中表达式的值与所有 case 后面的常量表达式都不等,则执行 default 后面的语句。然后退出。所以输入 1 时打印 65,输入 2 时打印 6,输入 3 时打印 64,输入 4 时打印 5,输入 5 时打印 6。23.以下叙述中错误的是( )。(分数:2.00)A.用户定义的函数中可以没有 return 语句B.用户定义的函数中可以有多个 return 语句,以便可以调用一次返回多个函数值 C.用户定义的函数中若没有 return 语句,则应当定义函数为 void 类型D.函数的 return 语句中可以没有表达式解析:解

15、析:本题重点考察函数返回值的相关知识,函数的值只能通过 return 语句返回主调函数,在函数中允许有多个 return 语句,但每次调用只能有一个 return 语句被执行,因此只能返回一个函数值。不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。因此 B 选项正确。24.有以下程序: #include void fun(char*c,intd) *c=*c+1: d=d+1: printf(“e,e,”,*c,d); main() char b=a,a=A; fun(&b,a); printf(“c,cn”,b,a); 程序运行后的输出结果是( )。(分数:2.00)

16、A.b,B,b,A B.b,B,B,AC.a,B,B,aD.a,B,a,B解析:解析:本题重点考察函数的调用,首先要了解字母对应的 ASC码。例如 A 为 65,a 为 97。即字母+1 则可得到下一个字母。其次是函数形参和实参的问题,运行过程如下:在 fun(&b,a)中,*c=a,d=65。*c+1=b,d+1=66,printf(”c,c,”*c,d);输出 b,B,因为指针 c 指向地址的值为 b,此时 b=*c=b;函数返回执行 printf(“c,cn”,b,a);输出 b,A,因此 A 选项正确。25.下列选项中,能正确定义数组的语句是( )。(分数:2.00)A.int Bum

17、02008;B.int num;C.int N=2008; int nunN;D.#define N 2008 int RumN; 解析:解析:C 语言不允许定义动态数组,定义数组的大小必须为常量表达式。A 选项错误,C 语言中数组没有此类型的定义方法;B 选项错误,定义数组应指明数组大小,如果不指明数组大小,需要给定初值的个数;C 选项错误,N 为变量,不能用来定义数组大小。因此 D 选项正确。26.以下函数实现按每行 8 个输出 w 所指数组中的数据: #include void fun(int*w,int n) int i; for(i=0;iA.if(i8=0)printf(“n”);

18、B.if(i8=0)continue;C.if(i8=0)printf(“n”); D.if(i8=0)continue;解析:解析:要按照每行 8 个输出数据的话,横线处语句的功能应该为:当 i 是 8 的倍数时(即 i8=0),输出一个换行符。因此 C 选项正确。27.有以下程序: #include void fun(char*c) while(*c) if(*c=a&*c=a&six); prinff(“dn”,+(P 一y); 程序运行后的输出结果是( )。(分数:2.00)A.3,4B.4,1C.2,3 D.1,2解析:解析:本题考查结构体数组的相关操作,dt 为结构体数组,那么指针

19、 p 指向了结构体数组的一个元素,所以 p 一x 为 1,p 一y 为 2,结果为 2,3。选项 C 正确。37.有以下程序: #include #define SUB(a)(a)一(a) main() int a=2,b=3,c=5,d; d=SUB(a+b)*c; prinff(“dn”,d); 程序运行后的输出结果是( )。(分数:2.00)A.0B.一 12C.一 20 D.10解析:解析:本题考查宏定义,宏定义只是做简单的替换,所以本题中 SUB(a+b);*c=(a+b)一(a+b)*c=一 20,所以答案为 C 选项。38.有以下程序: #include main() int a

20、:2,b; b=adata。)解析:解析:(1)题目中变量:是用来存放累加和的,因此必须初始化。 (2)题目中*p 是结构体,不能转化为 bool 型。 (3)p 是指针,只能用 p 一,不能用 p。四、程序设计题(总题数:1,分数:2.00)43.编写函数 fun,其功能是:求 ss 所指字符串中指定字符的个数,并返回此值。例如,若输入字符串123412132,输入字符为 1,则输出 3。注意:部分源程序在文件 PROG1C 中。清勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 #includestdioh #includestringh

21、#define M 81 int fun(char*ss,charc) main() char aM,ch; void NONO(); printf(“nPlease enter a string:”);gets(a); printf(“nPlease enter a char:”);ch=getchar(); printf(“nThe number of the char is:dn”,fun(a,ch); NONO(); void NONO() *本函数用于打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。* int i; FILE*rf,*wf; char aM,hM,ch

22、; rf=fopen(“indat”,“r”); wf:fopen(“outdat”,“w”); for(i=0;i10;i+) fscanf(rf,“s”,a); fscanf(rf,“s”,b); ch=*b: fprintf(wf,“c=dn”,ch,fun(a,ch); fclose(rf);fclose(wf); (分数:2.00)_正确答案:(正确答案:int fun(char*ss,char c) int i=0: for(;*ss!=0;ss+) if(*ss=c) i+*求出 ss 所指字符串中指定字符的个数* return i: )解析:解析:本题考查:for 循环语句遍历字符串,并通过 if 条件语句,判断字符串是否结束。 从字符串中查找指定字符,需要使用循环判断结构,循环语句用来遍历字符串,循环条件为字符串没有结束,即当前字符不是0,判断语句用来判断当前字符是否为指定字符。最后返回指定字符的个数。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

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