2022年笔试二维数组和二维指针 .pdf

上传人:H****o 文档编号:33398070 上传时间:2022-08-10 格式:PDF 页数:8 大小:210.02KB
返回 下载 相关 举报
2022年笔试二维数组和二维指针 .pdf_第1页
第1页 / 共8页
2022年笔试二维数组和二维指针 .pdf_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《2022年笔试二维数组和二维指针 .pdf》由会员分享,可在线阅读,更多相关《2022年笔试二维数组和二维指针 .pdf(8页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、一. 二维数组和二维指针2 题号题目答案解析1 以下程序的输出结果是_。main() int i,x33=9,8,7,6,5,4,3,2,1,*p=&x11; for(i=0;i4;i+=2) printf(%d,pi); A、52 B、51 C、53 D、97本题的考查点是通过指针引用数组元素。 i=0时,输出 p0 ,也就是x11,输出是 5; i=2时,输出 p2 ,即 p2+0 ,也就是 x20,输出是 3。故本题答案为 C。1 若有以下说明和语句,请选出哪个是对c数组元素的正确引用_。int c45,(*cp)5; cp=c; A cp+1 B *(cp+3) C *(cp+1)+3

2、 *(*cp+2)本题的考查点是数组元素的引用。 cp=c这个语句是将数组c的首行元素地址赋给了指针数组cp。选项 A,cp+1是指将数组 c的首行地址加 1,即为第二行地址;选项 B,*(cp+3) 是地址, 等于数组c的首地址加 3的那个内存单元的内容,不是对数组元素的引用;选项 C,*(cp+1)+3 是地址, 等于数组 c的首地址加 1的那个内存单元中存放的值加 3,不是对数组元素的引用。故本题答案为 D。3 有以下程序main() char *p10=abc,aabdfg,dcdbe,abbd,cd; printf(%dn,strlen(p4); 执行后的结果是_。A 2 B 3 C

3、 4 D 5 char *p10 定义指针数组 p,它由 10个指向字符型数据的指针元素组成。并对前 5个数组元素进行了初始化。 p4=cd,strlen(str)是统计字符串 str 中字符的个数(不包括终止符 0),即 cd 的长度。故本题答案为 A。3 有以下程序main() char *p10=abc,aabdfg,dcdbe,abbd,cd; printf(%dn,strlen(p4); 执行后的结果是 _。A、2 B、3 C、4 D、5 char *p10 定义指针数组 p,它由 10个指向字符型数据的指针元素组成。并对前 5个数组元素进行了初始化。 p4=cd,strlen(st

4、r)是统计字符串 str 中字符的个数(不包括终止符 0),即 cd 的长度。故本题答案为 A。3 有以下程序:#include main(int argc,char *argv) int i,len=0; for(i=1;iargc;i+=2) len+=strlen(argvi); printf(%dn,len); A、14 B、12 C、8 本题的考查点是指针数组作main函数的形参。 C语言规定, main() 函数可以带有两个参数, 第一个参数为一个整型变量,它表示执行文件在执行时带的参数的个数, 第二个参数为一个字符型指针数组, 其中第一个数组元素指名师资料总结 - - -精品资料

5、欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - 经编译连接后生成的可执行文件是ex.exe ,若运行时输入以下带参数的命令行ex abcd efg h3 k44 执行后输出结果是_。D、6 向程序名, 第二个数组元素指向命令行中的第 1个参数,以后依此类推。结合本题, 不难看出本题是求第1,3个参数的长度之和。即4+2=6。故本题答案为 D。3 下面 rotate 函数的功能是: 将n行n列的矩阵 A转置为 A ,例如: |1 2 3 4 | |5 6 7 8

6、 | 当A=|9 10 11 12| |13 14 15 16| |1 5 9 13| |2 6 10 14| 则A=|3 7 11 15| |4 8 12 16| 请填空。#define N 4 void rotate(int a) int i,j,t; for(i=0;iN;i+) for(j=0;_;j+) t=aij; _; aji=t; j=j 与aij=aji将矩阵转置就是将行列数互换,即第二行第三列的数与第三行第二列的数进行互换。 所以第一个空应当填入j=i , 第二空填入 aij=aji。3 以下不能正确定义二维数组的选项是_。本题的考查点是二维数组的定义和初始化。选项 A定义

7、的数组中各元素实际上是这样的:1,0 2,0 选项 B定义的数组中各元素实际上是这样的:1,2 3,4 选项 C定义的数组中各元素实际上是这样的:1,0 2,3 选项 D错在:C中在对数组进行初始化时,如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。故本题答案为 D。3 以下程序运行后的输出结果是_。(注:如果结果中含有回车,可加一空格写在一行,例如:1 1 1 1 1 1 1 1 1 可以写成 1 1 1 1 1 1 1 1 1)1 2 3 0 5 6 0 0 9 本题的考查点是C程序设计。根据程序写出运行结果。程序开头定义了一个三行

8、三列的数组。即: 1,2,3 4,5,6 7,8,9 进入循环, for(i=0;i3;i+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - main() int i,j,a3=1,2,3,4,5,6,7,8,9; for(i=0;i3;i+) for(j=i+1;j3;j+) aji=0; for(i=0;i3;i+) for(j=0;j3;j+) printf(%d ,aij); printf(n); for(j=i+1;

9、j3;j+) aji=0; 是把 a10,a20,a21三个位置上的元素值赋为0,注意输出函数中 %d 后有空格。 所以根据输出条件,程序最后的运行结果为:1 2 3 0 5 6 0 0 9 5 有以下程序main() int a33,*p,i; p=&a00; for(i=0;i9;i+) pi=i; for(i=0;i3;i+) printf(%d,a1i); 程序运行后的输出结果是_。A、012 B、123 C、234 D、345 本题考查的是指针变量对数组的引用。本题通过for(i=0;i9;i+)pi=i; 对二维数组 a的元素依次赋值。赋值后,a的数组元素的值分别为a00=0, a

10、01=1, a02=2, a10=3, a11=4, a12=5, a20=6, a21=7, a22=8, 故本题输出的值为345。故本题答案为 D。22 以下能正确定义数组并正确赋初值的语句是_。A、int N=5,bNN; B、int a12=1,3; C、int c2=1,2,3,4; D、int d32=1,2,3,4; 本题的考查点是二维数组的初始化。可以用下面方法对二维数组初始化: 1、分行给二维数组赋初值。如 static int a34=1,2,3,4,5,6,7,8,9,10,11,12;这种赋初值方法比较直观,把第一个花括弧内的数据赋给第一行的元素, 第二个花括弧内的数据

11、赋给第二行的元素, 即按行赋初值。 2、可以将所有数据写在一个花括弧内,按数组排列的顺序对各元素赋初值。 3、可以对部分元素赋初值。 static int a34=1,5,9; 它的作用是只对各行第1列的元素赋初值,其余元素自动为0。也可以对各行中的某一元素赋初值: static int a34=1,0,6,0,0,11; 也可以只对某几行元素赋初值: static int a34=1,5,6; 4、如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。选项 A定义了数组但是没有赋值;选项 B定义的是一行两列,赋值名师资料总结 - - -精品资料欢迎下载 - -

12、- - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - 却是两行一列;选项 C在二维数组定义中,行可以不指定,但是列是要指定的。故本题答案为 D。22 有以下程序main() int a3=1,2,3,4,5,0,(*pa)3,i; pa=a; for(i=0;i3;i+) if(i2) pa1i=pa1i-1; else pa1i=1; printf(%dn,a01+a11+a12); 执行后输出结果是_。A、7 B、6 C、8 D、无确定值本题的考查点是二维数组和指针数组的应用。在

13、所给的程序中, pa指向二维数组首地址 a,接着执行下面的for 循环,当 i=0 或i=1 时,数组元素pa1i的值减 1,当 i=2 时,数组元素 pa1i的值为 1,此时得到新的二维数组a3=1,2,3,3,4,1,最终打印结果就是 2+4+1=7。故本题答案为 A。22 有以下程序main() int m3=1,4,7,2,5,8,3,6,9; int i,j,k=2; for(i=0;i3;i+) printf(%d ,mki); 执行后输出结果是_。A、4 5 6 B、2 5 8 C、3 6 9 D、7 8 9本题的考查点是二维数组的应用。 m3即为定义的一个 3行3列的二维数组,

14、因为k=2,所以输出的为第二行的数组元素,即m20,m21,m22 ,即 3 6 9 。故本题答案为 C。4 以下能正确定义二维数组的是_。A、int a3; B、int a3=2*3; C、int a3=; D、int a23=1,2,3,4本题考查的是二维数组的定义。选项 B不符合二维数组的定义规范,选项 C中不能赋空值,选项D中a23表示 a是一个 2行3列的数组,而后面赋值却赋了3行,所以 B,C,D均错误。故本题答案为 A。4 若有以下说明和语句int c45,(*p)5; p=c; 能够正确引用 c数组元素的是 _。A、p+1 B、*(p+3) C、*(p+1)+3 D、*(p0+

15、2) 本题考查的是数组元素的引用。如果定义一个指针指向二维数组的一行, 则可以移动到下一行,这就是行指针。行指针的定义格式为: 存储类型 数据类型 (* 指针 )n 这里的 n是一个整数,表示所指向的二维数组的列数。 (*p)5中p是指向一个包含 5个元素的一维数组, p的值就是该一维数组的首地址。所以当用行指针访问二维数组时,行指针每增加1,就移动一行,即指向二维数组的下一行,例如此题中的p+i 将指向数组的第 i 行。即选项 A所指的意思是指向数组 c的第 1行,并不是引用 c数组的元素; B答案中 p+3是指向数组元素的第 3行, *(p+3) 是指第三行第零个元素的地址; 选项 C由对

16、选项 A,选名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 8 页 - - - - - - - - - 项B的解释可知, 它指的是第一行第3列元素的地址;选项D中p0+2 是指第0行第 2列元素的地址,再加个* 就表示第 0行第 2列的元素, 即c02。故本题答案为 D。7 有以下程序main() int i,t3=9,8,7,6,5,4,3,2,1; for(i=0;i3;i+) printf(%d ,t2-ii); 程序执行后的输出结果是_。7 5 3 3 5 7 3

17、 6 9 7 5 1 本题考查的是二维数组的应用。将初始值放在一对大括号内,按数组元素排列的顺序对各元素赋值,二维数组中行下标可以省略,但列下标必须要指定, 由此题可以看出数组t 是一个三行三列的二维数组,执行for 循环语句 t2-ii分别为t20,t11, t02,得出输出结果为 3 5 7 。故本题答案为B。7 有以下程序main() char *p=3697,2548; int i,j; long num=0; for(i=0;i2;i+) j=0; while(pij!= 0) if(pij- 0)%2) num=10*num+pij- 0; j+=2; printf(%dn,num

18、); 程序执行后的输出结果上_。35 37 39 3975 本题考查的是指针数组。题目中定义的指针数组*p相当于一个两行四列的数组。执行for()语句i=0,j=0,pij=p00=3,满足while 循环条件,执行循环体中的if语句得 num=3 ,j=2, 此时pij=p02=9,满足循环条件,执行 while 循环体得 num=39 ,j=4 ,判断while 条件且不符合并退出while循环;再次执行for()语句i=1,j=0,pij=p10=2,满足while 条件,执行循环体中的 if 语句,但不符合 if 条件,所以 num不进行运算, j 进行加 2运算 j=2 ,此时pij

19、=p12=4,if条件还是为假, num 不进行运算, j 进行加 2运算j=4 ,再执行 while 语句,条件不符合退出循环。所以结果为39。故本题答案为 C。7 以下程序的输出结果是_。main() int a33=1,2,9,3,4,8,5,6,7,i,s=0; for(i=0;i2!1 本题的考查点是数组元素的引用。本题定义了一个2行3列的整型二维数组, 即a00到a12,所以选项 A、B、C的引用均超出了范围,错误; C语言中,数组下标可以是表达式,所以选项D的形式正确,且选项D的表达式也在引用范围内,即a00,故选项 D 正确。故本题答案为 D。13 有以下程序#include

20、#define N 4 void fun(int aN,int b) int i; for(i=0;iN;i+) bi=aii; main() int xN=1,2,3,4,5,6,7,8,9,10,yN,i; fun(x,y); for(i=0;iN;i+) printf(%d,yi); printf(n); 程序的运行结果是_。A:1, 2,3,4 B:1,0,7,0 C:1,4,5,9 D:3,4,8,10B 本题的考查点是二维数组的应用。在主函数中,定义并初始化了4行4列的二维数组 x。对于二维数组元素的赋值,可以只对部分元素赋初值,未赋初值的元素自动取0。x数组元素赋初值后各元素为:

21、 fun函数的作用是将二维数组a中主对角线元素赋给数组b,由于数组a与数组 x共用同一存储单元, 也即将数组 x中主对角线元素赋给了数组b。又因为数组 b与数组 y共用同一存储单元,所以主函数中通过语句printf(%d,yi);输出的即为数组 b中的值,所以程序运行结果为1,0,7,0,。故本题答案为 B。15 若有定义语句:int a410,*p,*q4;且0i 4, 则错A p=a B qi=ai 本题主要考查了二维数组的引用。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6

22、 页,共 8 页 - - - - - - - - - 误的赋值是 _。C p=ai D p=&a21 本题 a表示二维数组的首地址,其基类型为具有4个整型元素的指针,而 p的基类型为一个整型指针,所以其基类型不同,不能相互赋值。故本题答案为 A。17 有如下程序main() char ch25 = 6937,8254,*p2; int i,j,s = 0; for(i = 0; i 2; i+) pi = chi; for(i = 0; i 0; j += 2) s = 10*s + pij - 0; printf(%dn,s); 该程序的输出结果是_。A、69825 B、63825 C、63

23、85 D、693825 本题主要考查点是二维数组的应用。本题 ch25 = 6937,8254用于 2行5列的二维数组初始化, ch00到ch04的值分别为: 6,9,3,7,0;ch10到ch14的值分别为:8,2,5,4,0;第一个 for 循环用于将数组指针分别指向二维数组的第一行和第二行;第二个for 嵌套循环用于取出 p00, p02, p10, p12四个存储单元的元数组成一个四位数进行输出。 具体执行过程如下: i=0: j=0:s=0+(p00-0);即s=6(p00-0通过 ASCII码相减的方法将字符转换成数字) j=2:s=60+(p02-0);即 s=63; i=1:

24、j=0:s=630+(p10-0); 即s=638 j=2:s=6380+(p12-0)即s=6385;故本题答案为 C。17 若有以下定义: int t32; 能正确表示 t数组元素地址的表达式是_。A、&t32 B、t3 C、t1 D、*t2 A和B两个表达式都已越界了;*t2是目标变量, 即一个整数, 而不是地址值。本题答案为C18 以下程序的输出结果是_。 main() char w10=ABCD,EFGH,IJKL,MNOP,k; for(k=1;k3;k+) printf(%sn,wk); A、ABCD FGH KL B、ABCD EFG IJ M C、EFG JK O D、EFG

25、H IJKL 本题中定义的二维数组w,相当于四个一维字符串数组,这四个一维数组的头指针分别为w0 、w1 、w2 、w3 。for 循环输出时,输出的是以 w1 、w2 为首地址的字符串,即 EFGH 、IJKL。本题答案为 D。18 以下程序的输出结果是_。 main() int a33=1,2,3,4,5,6,i,j,s=0; for (i=1;i3;i+) for(j=0;j=i;j+)s+=aij; printf(%dn,s); A、18 B、19 C、20 D、21 本题外循环执行两次,分别是i=1 ,i=2 ,内循环,第一次 j 从0到1,s=0+a10+a11=7;第二次 j从0

26、到2,s=7+a20+a21+a22=18。本题答案为 A。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 8 页 - - - - - - - - - 19 以下程序的输出结果是_。 main() int a44=1,3,5,2,4,6,3,5,7; printf(%d%d%d%dn,a03,a12,a21,a30); A、0650 B、1470 C、5430 D、输出值不定本题考查 C语言中的二维数组的初始化。对未给出初始值的整数数组元素,被缺省初始化为零。本题答案为 A。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 8 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com