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

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

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