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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、国家二级 C语言机试(函数和数组)模拟试卷 22及答案解析(总分:58.00,做题时间:90 分钟)一、选择题(总题数:29,分数:58.00)1.有以下程序 #include main() int c6=10,20,30,40,50,60,*p,*s; p=c; s=&c5; printf(“dn“,s-p); 程序运行后的输出结果是(分数:2.00)A.50B.6C.5D.602.以下叙述中正确的是(分数:2.00)A.一条语句只能定义一个数组B.数组说明符的一对方括号中只能使用整型常量,而不能使用表达式C.每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元D.在引用数

2、组元素时,下标表达式可以使用浮点数3.以下叙述中正确的是(分数:2.00)A.语句 int a=0;是不合法的,遗漏了数组的大小B.语句 char a2=“A“,“B“;是合法的,定义了一个包含两个字符的数组C.语句 int a8=0;是合法的D.语句 char a3;a=“AB“;是合法的,因为数组有三个字符空间的容量,可以保存两个字符4.如果定义 float a10,x;则以下叙述中正确的是(分数:2.00)A.表达式 a+1是非法的B.语句 a=&x;是非法的C.三个表达式 a1、*(a+1)、*&a1表示的意思完全不同D.表达式*&a1是非法的,应该写成*(&(a1)5.有以下程序 #

3、include main() int a=10,20,30,40,*p=a,i; for(i=0;i2!115.以下数组定义中错误的是(分数:2.00)A.int x3=0;B.int x23=1,2),3,4,5,6;C.int x3=1,2,3,4,5,6;D.int x23=1,2,3,4,5,6;16.有以下程序 #include void fun(int aN,int b) int i; for(i=0;iA.-12,-3,0,0,B.-3,-1,1,3,C.0,1,2,3,D.-3,-3,-3,-3,17.有以下程序 #include main()int b33=0,1,2,0,1

4、,2,0,1,2,i,j,t=1; for(i=0;i2!1 解析:解析:本题考查数组的使用,C 语言中数组的下标从 0开始。本题中 a是一个二维数组,两个下标的范围分别是 0-1和 0-2。选项 A中第一个下标越界,超出了范围:选项 B中第一个和第二个下标都超出了范围;选项 C中第二个下标超出范围;选项 D中,12 的值为 0!1 的值为 0,因此选项 D实际是访问a00。15.以下数组定义中错误的是(分数:2.00)A.int x3=0;B.int x23=1,2),3,4,5,6; C.int x3=1,2,3,4,5,6;D.int x23=1,2,3,4,5,6;解析:解析:二维数组

5、的初始化有以下几种形式:分行进行初始化;不分行的初始化;部分数组元素初始化;省略第一维的定义,不省略第二维的定义。在选项 B中赋值号左边定义了一个 3行 2列的二维数组,而右边用 2行 3列的数字进行赋初值。所以出现了边界的越界溢出而出错。16.有以下程序 #include void fun(int aN,int b) int i; for(i=0;iA.-12,-3,0,0,B.-3,-1,1,3, C.0,1,2,3,D.-3,-3,-3,-3,解析:解析:fun 函数的功能是求出二维数组 a中第 i行第 i个元素与第 N-1-i元素的差,赋给 bi。在主函数中,把实参二维数组 x和一维数

6、组 y传递给形参 a和 b,最后输出一维数组 y中元素的值。17.有以下程序 #include main()int b33=0,1,2,0,1,2,0,1,2,i,j,t=1; for(i=0;i=i;j+) t+=bibji/; printf(“dn“,t); 程序运行后的输出结果是(分数:2.00)A.3B.1C.9D.4 解析:解析:这道题主要考查的是二维数组的有关知识。在两层 for循环语句中,每次执行变量 t的累加时,二维数组元素 b的第二下标的值与第一下标相同的值,所以程序执行的过程为 t=1+b11+b22=1+l+2-4。18.以下定义数组的语句中错误的是(分数:2.00)A.

7、int num3=1,2),3,4,5,6;B.int num=1,2,3,4,5,6;C.int num4=1,2,3,4,5,6;D.int num24=1,2,3,4,5,6; 解析:解析:在选项 D的数组定义中,赋值号左边定义了一个 2行 4列的二维数组,而在右边定义了一个3行 2列的二维数组。19.有下列程序: main() int x32=0,i; for(i=0;i,则输出结果为(分数:2.00)A.2 0 0B.2 4 0C.2 0 4 D.2 4 6解析:解析:语句 x32=0表示将二维数组 x的所有元素赋初值 0,而循环语句for(、i=0;i3;i+)scanf(“d“,

8、xi)表示对数组元素 x00、x10、x20赋值。所以当运行程序时,输入 246CR时,数组元素 x00=2、x10=4、x20=6,因此,输出数组元素x00=2、x01=0、x10=4 的值 204。20.有以下程序 #include int fun(int(*s)4,int n,int k) int m,i; n1=s0k; for(i=1;im)m=sik; return m; main() int a44=1,2,3,4),C1l,12,13,14,21,22,23,24,31,32,33,34; printf(“dn“,fun(a,4,0); 程序的运行结果是(分数:2.00)A.3

9、1 B.34C.4D.32解析:解析:函数 fun(int(*s)4,int n,int k)的功能是返回二维数组第 k列的最大元素。在主函数中由于二维数组 a44已经初始化,所以 fun(a,4,0)的值是二维数组 a第 1列中的最大元素 31。21.有下列程序: main() int a44=1,4,3,2,8,6,5,7,3,7,2,5,4,8,6,1,i,j,k,t; for(i=0;i4;i+) for(j=0;j3;j+) for(k=j+1;k4;k+) ifiajiaki)t=aDji;aji=aki;aki=t; *按列排序* for(i=0;i4;i+)printf(“d,

10、“,aii); 程序运行后的输出结果是(分数:2.00)A.8,7,3,1,B.1,6,5,7, C.4,7,5,2,D.1,6,2,1,解析:解析:最外层的 for语句的自变量 i是列下标,而内部的两个 for语句的自变量 i和 k是行下标。所以由程序段可知,这是利用三重循环对二维数组 a44的元素按列从小到大进行排序,所以最后排完序的结果为 a44=1,4,2,1,3,6,3,2,4,7,5,5,8,8,6,7,最后一个 for语句的功能是输出数组 a44主对角线上的元素,因而输出为 1,6,5,7。22.有下列程序: main() int i,t3=9,8,7,6,5,4,3,2,1;

11、for(i=0;iA.7 5 3B.3 6 9C.7 5 1D.3 5 7 解析:解析:由于在程序中定义了二维数组 t3=9,8,7,6,5,4,3,2,1;由二维数组的存储方式按行存储,即初始化完第一行的所有列再初始化下一行的元素。可知这是一个 3行 3列的二维数组,第一行的元素为9,8,7,第二行的元素为6,5,4,第三行的元素为3,2,1。然后用 for循环输出 t20、t11、t02,它们的值分别为 3、5、7。23.有下列程序: main() int a44=1,4,3,2,8,6,5,7,3,7,2,5,4,8,6,1,i,k,t; for(i=0;i4;k+)if(aiiA.6,

12、2,1,1,B.1,1,2,6,C.2,3,4,6,D.6,4,3,2, 解析:解析:利用二重 for循环对二维数组 a44的主对角线上的元素l,6,2,1实现按列从大到小排序,所以数组 a44的值变为6,4,3,2,8,2,5,7,3,7,1,5,4,8,6,1,最后输出数组 a44第一行上的元素,所以输出结果为 6,4,3,2。24.若有定义, int w35;则以下不能正确表示该数组元素的表达式是(分数:2.00)A.*(*w+3)B.*(*(w+1)C.*(w+1)4 D.*(&w00+1)解析:解析:在 C语言中,二维数组的名字表示的是二维数组的地址,对于二维数组 int w35,可

13、以认为 w为一个一维数组,含有 3个元素,而每个元素为一个含有 5个元素的一维数组。而(w+1)为一个含有两个元素的一维数组,首先和(w+1)4结合非法,4 超出了二维数组的边界,取值也就是非法的了。25.以下错误的定义语句是(分数:2.00)A.int x43=1,2,3),1,2,3,1,2,3,1,2,3;B.int x3=0,1,1,2,3;C.int x3=1,2,3,4;D.int x4=1,2,3,1,2,3,1,2,3,1,2,3; 解析:解析:一维数组定义和初始化是允许省略行下标,不允许省略列下标。26.以下叙述中正确的是(分数:2.00)A.语句 int a43=1,2,4

14、,5;是错误的初始化形式B.语句 int a3=1,2,4,5;是错误的初始化形式C.在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵 D.语句 int a43=1,2,4,5;是错误的初始化形式解析:解析:在理解二维数组的时候,可以把一个二维数组看成是一个一维数组,每个数组元素又是包含有若干个元素的一维数组,也就是具有行列的结构,二维数组初始化也是在类型说明时给各下标变量赋以初值。二维数组可按行分段赋值,也可按行连续赋值。27.设有定义: int x23;则以下关于二维数组 x的叙述错误的是(分数:2.00)A.数组 x可以看作是由 x0和 x1两个元素组成的一维数组B.可以用 x0

15、=0;的形式为数组所有元素赋初值 0 C.元素 x0可看作是由 3个整型元素组成的一维数组D.x0和 x1是数组名,分别代表一个地址常量解析:解析:二维数组的元素在内存中占一系列连续的存储单元。数组元素在内存中的排列顺序是先存放第 0行的元素,再存放第 1行的元素称这种存放顺序为按行存放。可以把一个二维数组看成是一个一维数组,每个数组元素又是包含有若干个元素的一维数组。另外在给二维数组赋初值时可以不用含花括号对。例如,inta43=1,2,4,5;在编译时,系统将按 a数组元素在内存中排列的顺序,将花括号内的数据一一对应地赋给各个元素,若数据不足,系统将给后面的元素自动补初值 0。以上将给 a

16、数组第一行的元素和第二行的第一个元素依次赋予 1、2、4、5,其他元素的初值都为 0。28.有以下程序 #include #define N 3 void fun(int aN,int b) main() int i,j; int xNN=1,2,3,4,5,6,7,8,9),yN,i; for(i=0;iA.1,3,5,B.2,4,8,C.3,5,7D.3,6,9, 解析:解析:函数劬()的作用是求出二维数组 aN中每一行中的最大元素,所以在 main()函数中执行完 fun(x,y)后,数组 y中的元素为二维数组 xNN每一行的最大元素。29.以下语句中存在语法错误的是(分数:2.00)A.char ss20=“right?“; B.char*ss6;ss1=“right?“;C.char*ss=“right?“;D.char ss620;ss1=“right?“;解析:解析:选项 A中定义了二维数组 ss,可以用于存储字符串,但是字符串的存储不能通过赋值,仅可以初始化或者输入得到,而选项 C和 A)不同,选项 C为指针数组,对于指针变量可以保存常量字符串的地址。

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