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

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

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

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

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

    1、国家二级(C 语言)机试模拟试卷 122 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.线性表常采用的两种存储结构是( )。(分数:2.00)A.散列方法和索引方式B.链表存储结构和数组C.顺序存储结构和链式存储结构D.线性存储结构和非线性存储结构2.软件需求分析阶段的工作,可以分为四个方面:需求获取、编写需求规格说明书、需求评审和( )。(分数:2.00)A.阶段性报告B.需求分析C.需求总结D.都不正确3.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是( )。(分数:2.00)A.需求分析B.详细设计C.软件

    2、设计D.概要设计4.对建立良好的程序设计风格,下面描述正确的是( )。(分数:2.00)A.程序应简单、清晰、可读性好B.符号名的命名只要符合语法C.充分考虑程序的执行效率D.程序的注释可有可无5.下列工具中,不属于结构化分析的常用工具的是( )。(分数:2.00)A.数据流图B.数据字典C.判定树D.NS 图6.在软件生产过程中,需求信息的来源是( )。(分数:2.00)A.程序员B.项目经理C.设计人员D.软件用户7.对关系 S 和 R 进行集合运算,结果中既包含 S 中的所有元组也包含 R 中的所有元组,这样的集合运算称为( )。(分数:2.00)A.并运算B.交运算C.差运算D.积运算

    3、8.设有关键码序列(Q,G,M,Z,A,N,B,P,X,H,Y,S,T,L,K,E),采用堆排序法进行排序,经过初始建堆后关键码值 B 在序列中的序号是( )。(分数:2.00)A.1B.3C.7D.99.数据库的故障恢复一般是由( )来执行恢复。(分数:2.00)A.电脑用户B.数据库恢复机制C.数据库管理员D.系统普通用户10.下列选项中,不属于数据模型所描述的内容的是( )。(分数:2.00)A.数据类型B.数据操作C.数据结构D.数据约束11.程序设计的任务包括( )。(分数:2.00)A.编写程序代码并上机调试B.确定所用数据结构C.确定所用算法D.以上选项均正确12.下列合法的标识

    4、符是( )。(分数:2.00)A.123B.#256C.a55D.abhj1_2_313.以下程序的运行结果是( )。 #includestdioh main() int a=3,b=4,c=8,d=4,m=1,n=3; printf(“dn“,(m=ab)&(n=cd);(分数:2.00)A.0B.1C.2D.314.以下选项中,能用作数据常量的是( )。(分数:2.00)A.o18B.o11C.08e25D.25L15.有下列程序: main() int m,n,p; scanf(“m=dn=dp=d“,&m,&n,&p); printf(“dddn“,m,n,p);若想从键盘上输入数据,

    5、使变量 m 中的值为 123,n 中的值为456,p 中的值为 789,则正确的输入是( )(分数:2.00)A.m=123n=456p=789B.m=123 n=456 p=789C.m=123,n=456,p=789D.123 456 78916.以下关于 long、int 和 short 类型数据占用内存大小的叙述中正确的是( )。(分数:2.00)A.均占 4 个字节B.根据数据的大小来决定所占内存的字节数C.由用户自己定义D.由 C 语言编译系统决定17.有以下程序 #includestdioh main() int k=5,n=0; while(k0) switch(k) defa

    6、ult:break; case 1 : n+=k: case 2 : case 3 : n+=k: k-; printf(“dn“,n);程序运行后的输出结果是(分数:2.00)A.0B.4C.6D.718.有以下程序段 int j; float y; char name50; scanf(“2dfs“,&j,&y,name);当执行上述程序段,从键盘上输入 55566 7777abc 后,y 的值为( )。(分数:2.00)A.555660B.5660C.77770D.566777019.若变量己正确定义,有以下程序段: i=0; do printf(“d,“,i);while(i+); p

    7、rintf(“dn“,i);其输出结果是( )。(分数:2.00)A.0,0B.0,1C.1,1D.程序进入无限循环20.设有条件表达式:(EXP)?i+;j-,则以下表达式中(EXP)完全等价的是( )。(分数:2.00)A.(EXP=0)B.(EXP!=0)C.(EXP=1)D.(EXP!=1)21.有以下程序 #includestdioh main() int y=9; for(;y0;y-) if(y3=0)printf(“d“,-y);程序的运行结果是( )。(分数:2.00)A.741B.963C.852D.87542122.若要求从键盘读入含有空格字符的字符串,应使用函数( )。

    8、(分数:2.00)A.getc()B.gets()C.getchar()D.scanf()23.当 a=4,b=5,c=7,d=6 时,执行下面一段程序: if(ab) if(cd)x=1; else if(ac) if(bc)x=2: else x=3; else x=4: else x=5;程序执行后,x 的值为( )。(分数:2.00)A.1B.2C.3D.424.在 C 语言程序中,以下说法正确的是( )。(分数:2.00)A.函数的定义和函数的调用均不可以嵌套B.函数的定义不可嵌套,但函数的调用可以嵌套C.函数的定义可以嵌套,但函数的调用不可以嵌套D.函数的定义和函数的调用均可以嵌套

    9、25.以下程序运行后的输出结果是( )。 #includestdioh main() void reverse(int a,int n) int b10=10,9,8,7,6,5,4,3,2,1;int i,s=0; int i,t; reverse(b,10); for(i=0;in2;i+) for(i=0;i3;i+)s+=bi; t=ai;ai=an1i;an1i=t;printf(“dn“,s);(分数:2.00)A.27B.6C.25D.3026.设 y 为整型变量,a=6,a 的地址为 E2000,b=14,b 的地址为 E2001;执行语句 b=&a;(分数:2.00)A.E2

    10、000B.E2001C.6D.1427.若有以下程序段: struct st main() int n; struct st*p; int*m; p=s; ; int a=2,b=3,c=5; struct st s3=(10 1,&a,102,&c,103,&b;则以下表达式中值为 5 的是( )。(分数:2.00)A.(*p)mB.*(p+1)mC.*(p+)nD.(p+)(*m)28.在下列叙述中,错误的是( )。(分数:2.00)A.C 语言中,二维数组或多维数组是按行存放的B.赋值表达式 b12=a23是正确的C.char a1;a0=A与 int a1;a0=A等价D.数组名后的方

    11、括号内可以为常量表达式,也可以为变量29.若已包括头文件stdioh和stringh,运行下而程序的输出结果是( )。 char s110=“12345“,s210=“089“,S3=“67“; strcat(strcpy(s1,s2),s3); puts(s1);(分数:2.00)A.08967B.0894567C.089567D.08956730.下列说法正确的是( )。(分数:2.00)A.auto 和 register 将声明的对象说明为自动存储类对象,这些对象可用在函数中或函数外B.将变量其定义为 static 类型,则其初值默认为随机值C.typedef 说明符并不会为对象预留存留

    12、空间D.如果一个对象被声明为 register,则对它应用一无运算符&,意在取得其存储的地址31.以下有关宏的描述不正确的是( )。(分数:2.00)A.宏定义不做晤法检查B.双引号中出现的宏名不进行替换C.宏名无类型D.宏名必须用大写字母表示32.以下程序段的输出结果为( )。 static char a=“programme“; char *p; p=a; for(p=a;pa+8;p+=2) putchar(*p);(分数:2.00)A.programmeB.pormC.有语法错误D.prog33.下列关于 C 语言数据文件的叙述中正确的是( )。(分数:2.00)A.文件由 ASCII

    13、 码字符序列组成,C 语言只能读写文本文件B.文件由二进制数据序列组成,C 语言只能读写二进制文件C.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件34.已知 char*s,下面正确的语句是( )。(分数:2.00)A.s=“ABCDEF“;B.*s=“ABCDEF“;C.*s=“ABCDEF“;D.*s=A;35.下列程序的运行结果是( )。 #includestdioh void main() void fun(int*s,int*p) int a=2,3,4,5,k,x; static int t=3;

    14、for(k=0;k4;k+) *p=st; fun(a,&x); t-; printf(“d,”,x); (分数:2.00)A.5,4,3,2,B.2,3,4,5,C.2,2,2,2,D.5,5,5,5,36.以下函数 findmin 拟实现在数组中查找最小值并作为函数值返回,但程序中有错导致不能实现预定功能 #define MAX 2147483647 int findmin(int x,int n) int i,min; min=MAX; for(i=0;in;i+) if(minxi) min=xi; return min;造成错误的原因是( )。(分数:2.00)A.定义语句 int

    15、i,min;中 min 未赋初值B.赋值语句 min=MAN;中,不应给 min 赋 MAX 值C.语句 if(minXi)min=Xi;中判断条件设置错误D.赋值语句 min=MAX;放错了位置37.以下程序的输出结果是( )。 #includestdioh main() struct st p=aa; int x;int*y;*p; printf(“dn“,+(px); int dt4=1,2,3,4; struct st aa4=2,&dt0,3,&dt0,4, &dt0,5,&dt0,;(分数:2.00)A.1B.2C.3D.438.有以下定义和语句: struct students

    16、int num;char name20;char c; struct int gradel;int grade2; s; ; struct students w*pw; *pw=w:下列赋值语句不正确的是( )。(分数:2.00)A.wnum=1002;B.wgradel=85;C.pwnum=1002;D.wsgrade2=85;39.设有以下语句: char x=3,y=6,z; z=xy2;则 z 的二进制值是( )。(分数:2.00)A.00010100B.00011011C.00011100D.0001100040.有以下程序: #includestdioh main() FILE*

    17、pf; char*s1=“China“,*s2=“Beijing“; pf=fopen(“abcdat“,“wb+“); fwrite(s2,7,1,pf); rewind(pf); *文件位置指针回到文件开头* fwrite(s1,5,1,pf); fclose(pf);以上程序执行后 abcdat 文件的内容是( )。(分数:2.00)A.ChinaB.ChinangC.ChinaBeijingD.BeijingChina二、程序填空题(总题数:1,分数:2.00)41.给定程序中,函数 fun 的功能是:计算下式前 n 项的和作为函数值返回。 (分数:2.00)_三、程序修改题(总题数:

    18、1,分数:2.00)42.给定程序 MODI1C 中函数 fun 的功能是:从整数 1 到 55 之间,选出能被 3 整除、且有一位上的数是5 的那些数,并把这些数放在 b 所指的数组中,这些数的个数作为函数值返回。规定,函数中 a1 放个位数,a2 放十位数。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。 #includestdioh int fun(int*b) int k,a1,a2,i=0; for(k=10;k=55;k+) *found* a2=k10: a1=ka2*10; if(k3=0&a2=5)(k3=0&

    19、a1=5) bi=k;i+; *found* return k; main() int a100,k,m; m=fun(a); printf(“The result is:n“); for(k=0;km;k+)printf(“4d“,ak);printf(“n“); (分数:2.00)_四、程序设计题(总题数:1,分数:2.00)43.学生的记录由学号和成绩组成,N 名学生的数据已在主函数中放入结构体数组 S 中,请编写函数 fun,它的功能是:把分数最低的学生数据放在 b 所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。注意:部分源程序在文件 PROG1C 文件

    20、中。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 #includestdioh #defiDe N 16 typedef struct char num10; int s; STREC; int fun(STREC*a,STREC*b) main() STREC sN=“GA05“,85,“GA03“,76),“GA02“,69,“GA04“,85,“GA01“,91,“GA07“,72,“GA08“,64,“GA06“,87,“GA015“,85,“GA013“,91),“GA012“,64,“GA014“,91,“GA011“,91)

    21、,“GA017“,64,“GA018“,64,“GA016“,72; STREC hN; int i,n;FILE*out; n=fun(s,h); printf(“Thed lowest score:n“,n); for(i=0;in;i+) printf(“s 4dn“,hinum,his); printf(“n“); out=fopen(“outdat“,“W“); fprintf(out,“dn“,n); for(i=0;in;i+) fprintf(out,“4dn“,his); fclose(out);(分数:2.00)_国家二级(C 语言)机试模拟试卷 122 答案解析(总分:8

    22、6.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.线性表常采用的两种存储结构是( )。(分数:2.00)A.散列方法和索引方式B.链表存储结构和数组C.顺序存储结构和链式存储结构 D.线性存储结构和非线性存储结构解析:解析:线性表的存储通常要用两种存储结构:顺序存储结构和链式存储结构。2.软件需求分析阶段的工作,可以分为四个方面:需求获取、编写需求规格说明书、需求评审和( )。(分数:2.00)A.阶段性报告B.需求分析 C.需求总结D.都不正确解析:解析:软件需求分析阶段的工作,可以概括为四个方面:需求获取、需求分析、编写需求规格说明书和需求评审。需求获取的日的

    23、是确定对同标系统的各方面需求。涉及到的主要任务是建立获取用户需求的方法框架,并支持和监控需求获取的过程。需求分析是对获取的需求进行分析和综合,最终给出系统的解决方案和目标系统的逻辑模型。编写需求规格说明书作为需求分析的阶段成果,可以为朋户、分析人员和设计人员之间的交流提供方便,可以直接支持目标软件系统的确认,又可以作为控制软件开发进程的依据。需求评审是对需求分析阶段的工作进行复审,验证需求文档的一致性、可行性、完整性和有效性。3.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是( )。(分数:2.00)A.需求分析 B.详细设计C.软件设计D.概要设计解析:解析:软件

    24、生命周期的主要活动阶段为:可行性研究和计划制定、需求分析、软件设计、软件实现、软件测试、运行和维护。其中需求分析是对开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能,编写软件规格说明书及初步的用户手册,提交评审。4.对建立良好的程序设计风格,下面描述正确的是( )。(分数:2.00)A.程序应简单、清晰、可读性好 B.符号名的命名只要符合语法C.充分考虑程序的执行效率D.程序的注释可有可无解析:解析:程序设计应该简单易懂,语句结构应该简单直接,不应该为提高效率而把语句复杂化。5.下列工具中,不属于结构化分析的常用工具的是( )。(分数:2.00)A.数据流图B.数据字典C.

    25、判定树D.NS 图 解析:解析:结构化分析的常用工具有数据流图、数据字典、判定树和判定表。6.在软件生产过程中,需求信息的来源是( )。(分数:2.00)A.程序员B.项目经理C.设计人员D.软件用户 解析:解析:软件需求是指用户对目标软件系统在功能、性能、设计约束等方面的要求,是由用户提出的。7.对关系 S 和 R 进行集合运算,结果中既包含 S 中的所有元组也包含 R 中的所有元组,这样的集合运算称为( )。(分数:2.00)A.并运算 B.交运算C.差运算D.积运算解析:解析:关系的并运算是指由结构相同的两个关系合并,形成一个新的关系,新关系中包含两个关系中的所有元组。8.设有关键码序列

    26、(Q,G,M,Z,A,N,B,P,X,H,Y,S,T,L,K,E),采用堆排序法进行排序,经过初始建堆后关键码值 B 在序列中的序号是( )。(分数:2.00)A.1B.3 C.7D.9解析:解析:建堆的算法:首先将要排序的所有关键码放到一棵完全二叉树的各个结点中(这时的二叉树不具备堆的特性),然后,从 i=n2(n 为结点的个数)的结点 K i 开始,逐步把以 K n2 ,K n21 ,K n22 ,为根的子树成堆,直到以 K 1 为根的树排成堆,就完成了建堆过程。此题中,n=16,i=162=8,即从第 8 个结点开始,建堆完成后如下图: 9.数据库的故障恢复一般是由( )来执行恢复。(分

    27、数:2.00)A.电脑用户B.数据库恢复机制C.数据库管理员 D.系统普通用户解析:解析:数据库一旦发生故障,需要及时进行故障恢复,并由数据库管理员负责执行故障恢复。10.下列选项中,不属于数据模型所描述的内容的是( )。(分数:2.00)A.数据类型 B.数据操作C.数据结构D.数据约束解析:解析:数据模型描述的内容包含数据结构、数据操作和数据约束。11.程序设计的任务包括( )。(分数:2.00)A.编写程序代码并上机调试B.确定所用数据结构C.确定所用算法D.以上选项均正确 解析:解析:程序设计是一门技术,需要相应的理论、技术、方法和工具来支持。程序设计的任务包括选项 A)、B)、C)等

    28、方商。12.下列合法的标识符是( )。(分数:2.00)A.123B.#256C.a55D.abhj1_2_3 解析:解析:C 语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。“#”、“.”不允许出现在标识符中。13.以下程序的运行结果是( )。 #includestdioh main() int a=3,b=4,c=8,d=4,m=1,n=3; printf(“dn“,(m=ab)&(n=cd);(分数:2.00)A.0 B.1C.2D.3解析:解析:逻辑与(&)运算符的功能是:当“&”运算符两边的运算对象均为 1 时,整个表达式的值为1,否则为 0。因为

    29、 a=3b=4,即 m=0,所以整个表达式的值为 0。14.以下选项中,能用作数据常量的是( )。(分数:2.00)A.o18B.o11C.08e25D.25L 解析:解析:本题考查常量定义。数据常量可有 10 进制、8 进制、16 进制、指数法等,8 进制数字为 07,第一个字符为 0,而不是 o,因此选项 A)和 B)错误。为指数法时,指数部分须为整形,因此选项 C)错误,选项 D)中数字后加入 L 是说明此变量为长整型。15.有下列程序: main() int m,n,p; scanf(“m=dn=dp=d“,&m,&n,&p); printf(“dddn“,m,n,p);若想从键盘上输

    30、入数据,使变量 m 中的值为 123,n 中的值为456,p 中的值为 789,则正确的输入是( )(分数:2.00)A.m=123n=456p=789 B.m=123 n=456 p=789C.m=123,n=456,p=789D.123 456 789解析:解析:scanf()函数中格式控制字符串是为了输入数据用的,无论其中有什么字符,存输入数据时,按照一一对应的位置原样输入这些字符。16.以下关于 long、int 和 short 类型数据占用内存大小的叙述中正确的是( )。(分数:2.00)A.均占 4 个字节B.根据数据的大小来决定所占内存的字节数C.由用户自己定义D.由 C 语言编

    31、译系统决定 解析:解析:不同的编译系统或计算机系统对几类整型数所占用的字节数有不同的规定。long、int 和short 类型数据占用内存大小是由选择何种 C 编译系统决定的。17.有以下程序 #includestdioh main() int k=5,n=0; while(k0) switch(k) default:break; case 1 : n+=k: case 2 : case 3 : n+=k: k-; printf(“dn“,n);程序运行后的输出结果是(分数:2.00)A.0B.4C.6D.7 解析:解析:因为没有 break 语句,当 k=2 的时候,会顺序执行两条语句,k=

    32、1 的时候,会顺序执行 3 条语句。18.有以下程序段 int j; float y; char name50; scanf(“2dfs“,&j,&y,name);当执行上述程序段,从键盘上输入 55566 7777abc 后,y 的值为( )。(分数:2.00)A.555660B.5660 C.77770D.5667770解析:解析:因为在输入格式控制符中指定变量 i 的输入格式控制符为“2d”,即变量 i 所占的宽度为2,所以变量 j 只接收输入数据的前两位,从第 3 位开始直到空格之间的输入整数都会被保存到变量 y 中,因为 y 为浮点型数据,所以输出结果为选项 B)。19.若变量己正确

    33、定义,有以下程序段: i=0; do printf(“d,“,i);while(i+); printf(“dn“,i);其输出结果是( )。(分数:2.00)A.0,0B.0,1 C.1,1D.程序进入无限循环解析:解析:dowhile 循环的执行过程如下:执行 do 后面的循环体中的语句。计算 while 后一对圆括号中表达式的值。当值为非 0 时,转去执行步骤;当值为 0 时,执行步骤。退出 dowhile 循环。对于本题变量 i 的初始值等于“0”,接着执行 do 后面的循环体中的语句,输出变量 i 的值 0。再判断 while 后面括号中表达式 i+的值,其值为 0,所以循环结束。此时

    34、变量 i 的值经过自加已经变为 1,所以再次输出 i 的值“1”。20.设有条件表达式:(EXP)?i+;j-,则以下表达式中(EXP)完全等价的是( )。(分数:2.00)A.(EXP=0)B.(EXP!=0) C.(EXP=1)D.(EXP!=1)解析:解析:条件表达式的形式为:“表达式 1?表达式 2:表达式 3”。其含义为:当“表达式 1”的值为非零时,求出“表达式 2”的值,此时“表达式 2”的值就是整个条件表达式的值;当“表达式 1”的值为零时,求出“表达式 3”的值,此时“表达式 3”的值就是整个条件表达式的值。对于本题来说,当表达式 EXP 为非 0 值时条件成立,即执行语句

    35、i+;当EXP 等于 0 时,执行语句 i-;这等同于条件表达式“(EXP!=0)?i+;j+”。21.有以下程序 #includestdioh main() int y=9; for(;y0;y-) if(y3=0)printf(“d“,-y);程序的运行结果是( )。(分数:2.00)A.741B.963C.852 D.875421解析:解析:y 的初值为 9,所以在 for 循环中,当 y 的值为 9、6 或 3 时,if 语句的条件成立,执行输出语句,输出表达式-y 的值。因为自减符号在 y 的前面,所以首先 y 自减 1,然后再输出 y 的值,故输出结果为 8 5 2。22.若要求从

    36、键盘读入含有空格字符的字符串,应使用函数( )。(分数:2.00)A.getc()B.gets() C.getchar()D.scanf()解析:解析:scanf()语句中用“空格”间隔不同的字符串,空格将被全部忽略掉,所以用 scanf()函数不能输入空格;getchar()函数用于输入字符,其调用形式为:ch=getchar(),getchan()函数从终端读入一个字符作为函数值,把读入的字符赋给变量 ch。在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入 Enter 键时,读入才开始执行。gets()函数的调用形式为:gets(str adr),其中 str adr是存放输入字

    37、符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。gets 函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。getc()函数的调用形式为:ch=getc(pf)其中 pf 是文件指针。函数的功能是从 pf 指定的文件中读入一个字符,并把它作为函数值返回。23.当 a=4,b=5,c=7,d=6 时,执行下面一段程序: if(ab) if(cd)x=1; else if(ac) if(bc)x=2: else x=3; else x=4: else x=5;程序执行后,x 的值为( )。(分数:2.00)A.1B.2 C.3D.4解析:解析:本题考查 ife

    38、lse 语句。第一个 if 语句,先判断条件,ab 成立,则执行下面的语句;第二个 if 语句,先判断条件,cd 不成立,则执行其对应的 else 语句;第三个 if 语句,先判断条件,ac 成立,执行其后语句;第四个 if 语句,先判断条件,bc 成立,执行语句 x=2。24.在 C 语言程序中,以下说法正确的是( )。(分数:2.00)A.函数的定义和函数的调用均不可以嵌套B.函数的定义不可嵌套,但函数的调用可以嵌套 C.函数的定义可以嵌套,但函数的调用不可以嵌套D.函数的定义和函数的调用均可以嵌套解析:解析:本题考查函数调用的基本概念。因为函数的结果是一个未知量,而函数定义时不能使用未知

    39、量,所以函数定义不可以嵌套,但是函数调用可以嵌套。25.以下程序运行后的输出结果是( )。 #includestdioh main() void reverse(int a,int n) int b10=10,9,8,7,6,5,4,3,2,1;int i,s=0; int i,t; reverse(b,10); for(i=0;in2;i+) for(i=0;i3;i+)s+=bi; t=ai;ai=an1i;an1i=t;printf(“dn“,s);(分数:2.00)A.27B.6 C.25D.30解析:解析:本题考查函数调用时的参数传递。函数 reverse 将数组 b 进行了逆置,此

    40、时 b10=10,9,8,7,6,5,4,3,2,1,后面 for 语句的功能是将 b 中的后 3 个数累加,并将结果放在 s 中,最后将 s 输出,结果 s=1+2+3=6。26.设 y 为整型变量,a=6,a 的地址为 E2000,b=14,b 的地址为 E2001;执行语句 b=&a;(分数:2.00)A.E2000B.E2001C.6D.14 解析:解析:&是取地址运算符,y=&a 是将 a 的地址赋给 y,而 a 的地址没有发生变化,因此 y 的值为E2000。27.若有以下程序段: struct st main() int n; struct st*p; int*m; p=s; ;

    41、 int a=2,b=3,c=5; struct st s3=(10 1,&a,102,&c,103,&b;则以下表达式中值为 5 的是( )。(分数:2.00)A.(*p)mB.*(p+1)m C.*(p+)nD.(p+)(*m)解析:解析:本题考查如何通过指针引用数组元素。首先定义了一个结构体,然后定义了一个结构体变量s3,并赋了初值。在主程序中,定义了一个指向结构体变量 s 的指针 p,要使表达式的值为 5,就应该引用 s1.m 的值,使指针 p 指向 s1,+p 可以实现将 p 指针加 1,指向 s1。28.在下列叙述中,错误的是( )。(分数:2.00)A.C 语言中,二维数组或多维

    42、数组是按行存放的B.赋值表达式 b12=a23是正确的C.char a1;a0=A与 int a1;a0=A等价D.数组名后的方括号内可以为常量表达式,也可以为变量 解析:解析:本题考查数组的 4 个知识点:C 语言中,二维数组或多维数组元素排列的顺序是按行存放:不同数组的元素之间可以相互赋值:字符型数组中存放的是字符,int 型数组中存放的是字符对应的ASCII 码值,虽然在计算机内部字符常量都是作为整型量来处理的,其对应的整数值就是 ASCII 码值,但两者并不完全等价;数组名后的方括号内可以为常量,也可以为常量表达式,但不可以为变量。29.若已包括头文件stdioh和stringh,运行

    43、下而程序的输出结果是( )。 char s110=“12345“,s210=“089“,S3=“67“; strcat(strcpy(s1,s2),s3); puts(s1);(分数:2.00)A.08967 B.0894567C.089567D.089567解析:解析:本题考查字符串复制函数和字符串连接函数:字符串复制函数 strcpy(s1,s2)是把 s2 的字符串复制给 s1,执行后 s1=089;字符串连接函数 strcat(s1,s2),功能是把 s2 字符串连接到 s1 字符串的末尾,执行后 s1=08967。30.下列说法正确的是( )。(分数:2.00)A.auto 和 re

    44、gister 将声明的对象说明为自动存储类对象,这些对象可用在函数中或函数外B.将变量其定义为 static 类型,则其初值默认为随机值C.typedef 说明符并不会为对象预留存留空间 D.如果一个对象被声明为 register,则对它应用一无运算符&,意在取得其存储的地址解析:解析:这种声明也具有定义的作用,并将预留存储空间。register 说明的声明等价于 auto 说明的声明,所不同的是,register 暗示了声明的对象将被频繁地访问,将尽可能存储在寄存器中。如果一个对象被声明为 register,则将不能对它应用一元运算符&,声明为 register 但实际按照 auto 类型处

    45、理的对象的地址进行计算是非法的。static 将声明的对象说明为静态存储类。这种对象可以用在函数内部或者函数外部。在函数内部,该说明符将引起存储空间的分配,具有定义的作用。在函数外部,该说明符将引起声明对象为具有内部链接。另外,若将其定义为 static 类型,则其初值默认为 0。函数内部的 extern 声明表明,被声明的对象的存储空间定义在其他地方。在函数外部,说明声明的对象具有外部链接。typedef 说明符并不会为对象预留存留空间。31.以下有关宏的描述不正确的是( )。(分数:2.00)A.宏定义不做晤法检查B.双引号中出现的宏名不进行替换C.宏名无类型D.宏名必须用大写字母表示 解

    46、析:解析:本题考查宏的使用规则:字符替换格式:#define 标识符字符串,标识符称为宏名,无类型;双引号中出现的宏名不替换;宏名的定义通常用大写字母,但不是必须用大写;宏定义不是赋值语句,不做语法检查。32.以下程序段的输出结果为( )。 static char a=“programme“; char *p; p=a; for(p=a;pa+8;p+=2) putchar(*p);(分数:2.00)A.programmeB.porm C.有语法错误D.prog解析:解析:本程序首先定义了静态字符数组 a,然后将指针 p 指向数组 a 的首地址,第一次 for 循环,p=a,p 指向数组的第一个元素,*p 是取指针 p 所指地址的内容,输出 p;第二次 for 循环,p=p+2,则 p指向数组的第三个元素,*p 是取指针 p 所指地址的内容,输出 o;第三次 for 循环,p=p+2,则 p 指向数组的第 5 个元素,*p 是取指针 p 所指地址的内容,输出 r;第四次 for 循环,p=p+2,则 p 指向数组的第7 个元素,*p 是取指针 p 所指地址的内容,输出 m;结束循环。33.下列关于 C 语言数据文件的叙述中


    注意事项

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




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

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

    收起
    展开