二级c语言程序设计习题及解答ch9数组

上传人:工**** 文档编号:557511402 上传时间:2022-08-29 格式:DOC 页数:16 大小:128.51KB
返回 下载 相关 举报
二级c语言程序设计习题及解答ch9数组_第1页
第1页 / 共16页
二级c语言程序设计习题及解答ch9数组_第2页
第2页 / 共16页
二级c语言程序设计习题及解答ch9数组_第3页
第3页 / 共16页
二级c语言程序设计习题及解答ch9数组_第4页
第4页 / 共16页
二级c语言程序设计习题及解答ch9数组_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《二级c语言程序设计习题及解答ch9数组》由会员分享,可在线阅读,更多相关《二级c语言程序设计习题及解答ch9数组(16页珍藏版)》请在金锄头文库上搜索。

1、第九章数组一、选择题9.1若已定义:inta=0,1,2,3,4,5,6,7,8,9,*p=a,i;其中0i=9,则对a数组元素的引用不正确的是A) ap-aB) *(&ai)C) piD) *(*(a+i)【解析】A:p开始是数组a首地址,只要p+则再减去a的首地址ap-a就能取到所有元素,B:&ai循环取其地址,*(&ai)是该地址中所存储的元素 C:p就是指针变量,相当于ai,D: *(a+i) 则正确9.2以下程序段数组所有元素输入数据,应在下划线填入的是A) a+(i+)B) &ai+1C)a+iD) &a+imain()inta10,i=0;while(i10)scanf(%d,)

2、;【解析】因为要遍历,所以排除B.C,因为D先加1再取值,丢了a0 9.3以下程序的输出结果是A) 3B)4C) 1D) 2main()inta10=1,2,3,4,5,6,7,8,9,10,*p=a;printf(%dn,*(p+2); 【解析】*p=a;p指向首地址,*(p+2)往后移动两个元素,指向39.4以下程序的输出结果是A)不确定的值B)3C) 2D) 1main()intn2=0,i,j,k=2;for(i=0;ik;i+)for(j=0;jk;j+)nj=ni+1;printf(%dn,nk);9.5以下程序的输出结果是A)17B)18C)19D)20main() int a=

3、2,4,6,8,10,y=1,x,*p; p=&a1;for(x=0;x3;x+) y+=*(p+x);printf(%dn,y);【解析】p=&a1则p指向元素为4,y+=*(p+x);相当于y=1+4+6+8=199.6以下程序的输出结果是A) 6B) 8C) 4D) 2main() int a=2,4,6,8,*p=a,i;for(i=0;i4;i+) ai=*p+;printf(%dn,a2);【解析】p=a,相当于重新把a中的内容赋给a本身,所以a2=69.7以下程序的输出结果是A) 720B)120C) 24D) 6f(intb,intn)inti,r=1;for(i=0;i=n;

4、i+) r=r*bi;return r;main()intx,a=2,3,4,5,6,7,8,9;x=f(a,3);printf(%dn,x);【解析】调用x=f(a,3);for循环4次,将前四个元素相乘,即得r=2*3*4*5;9.8以下程序中若第一个printf语句输出的是194,则第二个printf语句的输出结果是A) 212B)204C)1a4D)1a612main()inta=1,2,3,4,5,6,7,8,9,0,*p;p=a;printf(%xn,p);printf(%xn,p+9); 【解析】因为开始p的地址为194,p+9是指指针向后移动9个元素,而不是9个字节,每个int

5、占2个字节,所以共移动18个字节,1个字节占一个存储单位,%xn是16进制,将18转化成16进制是12,所以194+12=2a69.9以下程序的输出结果是A) 0987654321B)4321098765C) 5678901234D) 0987651234fun(int*s,intn1,int n2)inti,j,t;i=n1; j=n2;while(ij) t=*(s+i); *(s+i)=*(s+j); *(s+j)=t;i+; j-; main()inta10=1,2,3,4,5,6,7,8,9,0,i,*p=a;fun(p,0,3);fun(p,4,9);fun(p,0,9);for(

6、i=0;i10;i+)printf(%d,*(a+i);【解析】为了使大家清晰地看出fun(int*s,intn1,int n2)的作用,我自己完善了程序如下:#include #include fun(int *s,int n1,int n2) int i,j,t; i=n1; j=n2;while(ij) t=*(s+i); *(s+i)=*(s+j); *(s+j)=t; i+; j-; main() int a10=1,2,3,4,5,6,7,8,9,0,i,*p=a;fun(p,0,3);for(i=0;i10;i+) printf(%d,*(a+i); printf(n); fun

7、(p,4,9); for(i=0;i10;i+) printf(%d,*(a+i);printf(n);fun(p,0,9);for(i=0;i10;i+) printf(%d,*(a+i);printf(n);结果如下:其实,fun(p,0,3);就是将a中的前4个元素倒序,fun(p,4,9); 就是将a中的第5个到第10个倒序,最后fun(p,0,9);全部元素倒序。9.10以下程序的输出结果是A) 44B) 22C) 2 4D) 4 6main()inta5=2,4,6,8,10,*p,*k;p=a;k=&p;printf(%d,*(p+);printf(%dn,*k);【解析】p指向

8、a的第一个元素,printf(%d,*(p+);先输出第一个元素为2,然后p+,所以p的地址就为指向4,k=&p; k是存放p的地址的,*k=p,*k就是p所指的元素为4,所以结果为249.11当运行以下程序时输入三行,每行都是在第一列上开始,CR代表Enter键;abcdef则程序的输出结果是A)abcdefB)aC)aD)abbbccdcdefdf#include stdio.h#defineN6main() char cN;inti=0;for(i=0;iN;i+)ci=getchar();for(i=0;iN;i+)putchar(ci);【解析】回车键也是字符,所以abcd这六个字符

9、输出9.12若有定义和语句:intc45,(*cp)5;cp=c;则对C数组元素的引用正确的是A) cp+1B) *(cp+3)C) *(cp+1)+3D) *(*cp+2)【解析】cp是行指针,只表示行,若要表示元素,则需要配合列A:表示第二行 B:表示第四行的内容,但是为指出那一列 C:*(cp+1)+3只是地址不是元素值,需改为*(*(cp+1)+3)9.13若已定义:inta43=1,2,3,4,5,6,7,8,9,10,11,12,(*prt)3=a,*p=a0;则能够正确表示数组元素a12的表达式是A) *(*prt+1)2)B) *(*(p+5)C) (*prt+1)+2D) *

10、(*(a+1)+2)【解析】A:多了外层的*(),B:p是行地址,加5越界。C:少了外层的*()9.14若有定义和语句:inta43=1,2,3,4,5,6,7,8,9,10,11,12,(*prt)3=a,*p4,i;for(i=0;i4;i+)pi=ai;则下能够正确表示a数组元素的表达式是A) a43B) p00C)prt22D)(*(p+1)19.15以下程序的输出结果是A) 23B)26C) 33D) 36main() int aa33=2,4,6,i,*p=&aa00; for(i=0;i2;i+) if(i=0) aaii+1=*p+1;else +p;printf(%d,*p)

11、; printf(n);【解析】p指向第一个元素2,if(i=0) aaii+1=*p+1;给aa01赋值2+1=3打印出p的内容为2,第二次for循环+p,使p指向下一个元素即aa01=3,输出其内容为39.16以下程序的输出结果是A) 60B)68C) 99D) 108main()inta34=1,3,5,7,9,11,13,15,17,19,21,23;int(*p)4=a,i,j,k=0;for(i=0;i3;i+)for(j=0;j2;j+)k+=*(*(p+i)+j);printf(%dn,k);【解析】k+=*(*(p+i)+j);即求和:a00 +a01+ a10+ a11+ a20+ a21=1+3+11+13+17+19=609.17以下程序的输出结果是A) 1,5,9,B) 1,4,7,C) 3,5,7,D) 3,6,9,main()inti,x33=1,2,3,4,5,6,7,8,9;for(i=0;i3;i+)printf(%d,xi2-i);【解析】即输出x02 x11 x20分别为3 5 7 9.18若有定义语句int(*p)M;其中的标识符是A)M个指向整型变量的指针B)指向M个整型变量的函数指针C)一个指向具有M个整型元素的一维数组指针D)具有M个指针

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

当前位置:首页 > 高等教育 > 习题/试题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号